pax_global_header00006660000000000000000000000064141531210730014507gustar00rootroot0000000000000052 comment=868a3a9c25258033bc2859b80bea554838dbecf4 secrets-5.1/000077500000000000000000000000001415312107300130245ustar00rootroot00000000000000secrets-5.1/.githooks/000077500000000000000000000000001415312107300147315ustar00rootroot00000000000000secrets-5.1/.githooks/pre-commit000077500000000000000000000003201415312107300167260ustar00rootroot00000000000000#!/bin/bash +e # execute script for making commits black compliant in an automated manner .githooks/pre_commit_darkening.py # Error should not be raised, commit should continue regardless of success exit 0 secrets-5.1/.githooks/pre_commit_darkening.py000077500000000000000000000056631415312107300215000ustar00rootroot00000000000000#!/usr/bin/env python3 """ Module providing pre-commit modification of staged files to comply with code style as dictated by black. """ import logging import shutil import subprocess as sp import sys LOG_FORMAT = "%(name)s - %(levelname)s - %(message)s" logging.basicConfig(format=LOG_FORMAT, level="INFO") logger = logging.getLogger("Code_style_check") # Changing this needs to be considered in the context of CI testing BLACK_VERSION = "20.8b1" def darken_staged_files(): """ This function is intended as a pre-commit operation to 'darken' the commit: makes the diffs compliant with the black style. Files that have unstaged changes are ignored. """ if not shutil.which("darker"): logger.warning( "Cannot find darker. darker is used to automatically fix " "the style of the committed code (in python files). You may fail CI testing " "if your changes do not conform to the style used by " f"black. Consider installing it using 'pip install darker black=={BLACK_VERSION}'" ) sys.exit(1) # Get the current staged changes, these are what should be what end up being # staged if all else fails files_staged = ( sp.check_output("git diff --cached --name-only".split()).decode().splitlines() ) files_unstaged = ( sp.check_output("git diff --name-only".split()).decode().splitlines() ) # See if we can cleanly make the diffs 'blackened' (this would entail # darkening the files and staging them). This can either be done by # finding corresponding patches or by A wrinkle is for stage files that # have unstaged changes. Easy solution is to fail for any such files. files_for_darkening = [] for fpath in files_staged: logger.debug(f"considering fpath: {fpath}") if fpath in files_unstaged: if sp.check_output(f"darker --diff {fpath}".split()).decode(): logger.warning( f"{fpath }has unstaged changes and so will not " "be considered when fixing for automatic changes. " "It appears to need some changes. This may cause CI to fail." ) continue files_for_darkening.append(fpath) # Run darker on appropriate files and stage the changes if files_for_darkening: logger.debug(f"files_for_darkening:{files_for_darkening}") darker_files = " ".join(files_for_darkening) cmd = f"darker {darker_files}".split() logger.debug(f"cmd: {cmd}") # make files darker sp.check_output(cmd) if sp.check_output(f"git diff --name-only {darker_files}".split()): # Tell the user if any files were changed (could include non python files) logger.info("Some automatic reformatting occurred during this commit!") sp.check_output(f"git add {darker_files}".split()) if __name__ == "__main__": darken_staged_files() secrets-5.1/.githooks/test_hooks.py000066400000000000000000000052001415312107300174620ustar00rootroot00000000000000""" Testing for git hook functionality """ from pathlib import Path import os import subprocess as sp import tempfile from pre_commit_darkening import darken_staged_files SAMPLE_TEXT = """if True: print('hi')\nprint()\nif False:\n print('there')\n""" def make_sample_repo(sample_text): """ Init a repo with sample_repo.py containing 'sample_text' """ sp.check_output("git init".split()) text_file = Path("sample_repo.py") text_file.write_text(sample_text) sp.check_output(f"git add {text_file}".split()) sp.check_output("git commit -m demo".split()) return text_file def test_darken_staged_files_works(): """ A basic check that staged files are indeed darkened by darker. """ # set up a repository to test os.chdir(tempfile.mkdtemp()) text_file = make_sample_repo(SAMPLE_TEXT) # stage a change that is not compliant with black text_file.write_text(SAMPLE_TEXT.replace("print('hi')", "print('bye')")) sp.check_output(f"git add {text_file}".split()) # execute the hook functionality with current python's module namespace and PATH darken_staged_files() # commit changes (should be darkened) sp.check_output("git commit -m demo_partial_rewrite".split()) # Check that darkening occurred correctly: the modified line was changed # (and only that line) changes = sp.check_output("git diff HEAD~1 --unified=0".split()).decode() assert """print("bye")""" in changes assert "print('there')" not in changes def test_darken_staged_files_skips_files_with_unstaged_changes(): """ If patches can unambiguously be matched pre/post darkening this functionality could be dropped in favor of the more desirable behavior of always succeeding to darken the commit. Until then we will confirm the expected behavior... """ # set up a repository to test os.chdir(tempfile.mkdtemp()) text_file = make_sample_repo(SAMPLE_TEXT) # stage a change that is not compliant with black text_file.write_text(SAMPLE_TEXT.replace("print('hi')", "print('bye')")) sp.check_output(f"git add {text_file}".split()) text_file.write_text(text_file.read_text() + "\nprint('An unblackened line')\n") # execute the hook functionality with current python's module namespace and PATH darken_staged_files() # commit changes (will not be darkened but warning should be emitted) sp.check_output("git commit -m demo_partial_rewrite".split()) # Until support darkening should not have happened... test this is the case changes = sp.check_output("git diff HEAD~1 --unified=0".split()).decode() assert """print("bye")""" not in changes secrets-5.1/.gitignore000066400000000000000000000001701415312107300150120ustar00rootroot00000000000000**/__pycache__ **/*.*~ data/#*# .project .pydevproject _build .buildconfig .vscode tags.rOfNyA flatpak/.flatpak-builder/secrets-5.1/.gitlab-ci.yml000066400000000000000000000031131415312107300154560ustar00rootroot00000000000000include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' variables: DEBIAN_FRONTEND: noninteractive DEPS_DEV: "libgirepository1.0-dev libglib2.0-dev libgtk-3-dev python-gi-dev libpwquality-dev python3-all python3-dateutil python3-pycryptodome python3-pykeepass libhandy-1-dev python3-pwquality" DEPS_DEB: "git git-buildpackage appstream-util debhelper-compat dh-python meson" stages: - Code Analysis - Build cache: paths: - .apt .before_script_template: &basic-deps before_script: - rm -f /etc/apt/apt.conf.d/docker-clean - mkdir -p .apt - apt-get -o dir::cache::archives=".apt" -qq update - apt-get -o dir::cache::archives=".apt" -qq install -y --no-install-recommends ${DEPS_DEV} -o=Dpkg::Use-Pty=0 flake8 pylint mypy > /dev/null code_analysis: stage: Code Analysis <<: *basic-deps image: debian:sid script: - flake8 --max-line-length=170 --ignore=E402,W503 --show-source passwordsafe/ - mypy --ignore-missing-imports --disallow-incomplete-defs passwordsafe/ - pylint --rcfile=.pylintrc passwordsafe/*.py flatpak: stage: Build image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master variables: APP_ID: org.gnome.PasswordSafeDevel MANIFEST_PATH: "flatpak/org.gnome.PasswordSafe.json" RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" FLATPAK_MODULE: "passwordsafe" MESON_ARGS: "-Dprofile=development" BUNDLE: "org.gnome.PasswordSafeDevel.flatpak" extends: .flatpak secrets-5.1/.pylintrc000066400000000000000000000376641415312107300147110ustar00rootroot00000000000000[MASTER] # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code. extension-pkg-whitelist=pwquality # Specify a score threshold to be exceeded before program exits with error. fail-under=10.0 # Add files or directories to the blacklist. They should be base names, not # paths. ignore=.git # Add files or directories matching the regex patterns to the blacklist. The # regex matches against base names, not paths. ignore-patterns= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). init-hook="import sys; sys.path.insert(0, '.')" # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the # number of processors available to use. jobs=1 # Control the amount of potential inferred values when inferring a single # object. This can help the performance when dealing with large functions or # complex, nested conditions. limit-inference-results=100 # List of plugins (as comma separated values of python module names) to load, # usually to register additional checkers. load-plugins= # Pickle collected data for later comparisons. persistent=yes # When enabled, pylint would attempt to guess common misconfiguration and emit # user-friendly hints instead of false-positive error messages. suggestion-mode=yes # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no [MESSAGES CONTROL] # Only show warnings with the listed confidence levels. Leave empty to show # all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. confidence= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once). You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use "--disable=all --enable=classes # --disable=W". disable=missing-docstring,fixme,unsubscriptable-object,no-self-use,too-few-public-methods,duplicate-code # TODO: `unsubscriptable-object` generates false positives for python 3.9 and pylint==2.6. # https://github.com/PyCQA/pylint/issues/3882 # Re-enable it when the issue is fixed. # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). See also the "--disable" option for examples. enable=c-extension-no-member [REPORTS] # Python expression which should return a score less than or equal to 10. You # have access to the variables 'error', 'warning', 'refactor', and 'convention' # which contain the number of messages in each category, as well as 'statement' # which is the total number of statements analyzed. This score is used by the # global evaluation report (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details. #msg-template= # Set the output format. Available formats are text, parseable, colorized, json # and msvs (visual studio). You can also give a reporter class, e.g. # mypackage.mymodule.MyReporterClass. output-format=text # Tells whether to display a full report or only the messages. reports=no # Activate the evaluation score. score=yes [REFACTORING] # Maximum number of nested blocks for function / method body max-nested-blocks=5 # Complete name of functions that never returns. When checking for # inconsistent-return-statements if a never returning function is called then # it will be considered as an explicit return statement and no message will be # printed. never-returning-functions=sys.exit [BASIC] # Naming style matching correct argument names. argument-naming-style=snake_case # Regular expression matching correct argument names. Overrides argument- # naming-style. #argument-rgx= # Naming style matching correct attribute names. attr-naming-style=snake_case # Regular expression matching correct attribute names. Overrides attr-naming- # style. #attr-rgx= # Bad variable names which should always be refused, separated by a comma. bad-names=foo, bar, baz, toto, tutu, tata # Bad variable names regexes, separated by a comma. If names match any regex, # they will always be refused bad-names-rgxs= # Naming style matching correct class attribute names. class-attribute-naming-style=any # Regular expression matching correct class attribute names. Overrides class- # attribute-naming-style. #class-attribute-rgx= # Naming style matching correct class names. class-naming-style=PascalCase # Regular expression matching correct class names. Overrides class-naming- # style. #class-rgx= # Naming style matching correct constant names. const-naming-style=UPPER_CASE # Regular expression matching correct constant names. Overrides const-naming- # style. #const-rgx= # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=-1 # Naming style matching correct function names. function-naming-style=snake_case # Regular expression matching correct function names. Overrides function- # naming-style. #function-rgx= # Good variable names which should always be accepted, separated by a comma. good-names=i, j, k, ex, Run, _, db # Good variable names regexes, separated by a comma. If names match any regex, # they will always be accepted good-names-rgxs= # Include a hint for the correct naming format with invalid-name. include-naming-hint=no # Naming style matching correct inline iteration names. inlinevar-naming-style=any # Regular expression matching correct inline iteration names. Overrides # inlinevar-naming-style. #inlinevar-rgx= # Naming style matching correct method names. method-naming-style=snake_case # Regular expression matching correct method names. Overrides method-naming- # style. #method-rgx= # Naming style matching correct module names. module-naming-style=snake_case # Regular expression matching correct module names. Overrides module-naming- # style. #module-rgx= # Colon-delimited sets of names that determine each other's naming style when # the name regexes allow several styles. name-group= # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=^_ # List of decorators that produce properties, such as abc.abstractproperty. Add # to this list to register other decorators that produce valid properties. # These decorators are taken in consideration only for invalid-name. property-classes=abc.abstractproperty # Naming style matching correct variable names. variable-naming-style=snake_case # Regular expression matching correct variable names. Overrides variable- # naming-style. #variable-rgx= [FORMAT] # Expected format of line ending, e.g. empty (any line ending), LF or CRLF. expected-line-ending-format= # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' # Maximum number of characters on a single line. max-line-length=170 # Maximum number of lines in a module. max-module-lines=1000 # Allow the body of a class to be on the same line as the declaration if body # contains single statement. single-line-class-stmt=no # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no [LOGGING] # The type of string formatting that logging methods do. `old` means using % # formatting, `new` is for `{}` formatting. logging-format-style=old # Logging modules to check that the string format arguments are in logging # function parameter format. logging-modules=logging [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME, XXX, TODO # Regular expression of note tags to take in consideration. #notes-rgx= [SIMILARITIES] # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=yes # Minimum lines number of a similarity. min-similarity-lines=4 [SPELLING] # Limits count of emitted suggestions for spelling mistakes. max-spelling-suggestions=4 # Spelling dictionary name. Available dictionaries: none. To make it work, # install the python-enchant package. spelling-dict= # List of comma separated words that should not be checked. spelling-ignore-words= # A path to a file that contains the private dictionary; one word per line. spelling-private-dict-file= # Tells whether to store unknown words to the private dictionary (see the # --spelling-private-dict-file option) instead of raising a message. spelling-store-unknown-words=no [STRING] # This flag controls whether inconsistent-quotes generates a warning when the # character used as a quote delimiter is used inconsistently within a module. check-quote-consistency=no # This flag controls whether the implicit-str-concat should generate a warning # on implicit string concatenation in sequences defined over several lines. check-str-concat-over-line-jumps=no [TYPECHECK] # List of decorators that produce context managers, such as # contextlib.contextmanager. Add to this list to register other decorators that # produce valid context managers. contextmanager-decorators=contextlib.contextmanager # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E1101 when accessed. Python regular # expressions are accepted. generated-members=self.props.* # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # Tells whether to warn about missing members when the owner of the attribute # is inferred to be None. ignore-none=yes # This flag controls whether pylint should warn about no-member and similar # checks whenever an opaque object is returned when inferring. The inference # can return multiple potential results while evaluating a Python object, but # some branches might not be evaluated, which results in partial inference. In # that case, it might be useful to still emit no-member and other checks for # the rest of the inferred objects. ignore-on-opaque-inference=yes # List of class names for which member attributes should not be checked (useful # for classes with dynamically set attributes). This supports the use of # qualified names. ignored-classes=optparse.Values,thread._local,_thread._local,gi.repository.Gtk.Template.Child,gi.repository.GLib.Error # List of module names for which member attributes should not be checked # (useful for modules/projects where namespaces are manipulated during runtime # and thus existing member attributes cannot be deduced by static analysis). It # supports qualified module names, as well as Unix pattern matching. ignored-modules= # Show a hint with possible names when a member name was not found. The aspect # of finding the hint is based on edit distance. missing-member-hint=yes # The minimum edit distance a name should have in order to be considered a # similar match for a missing member name. missing-member-hint-distance=1 # The total number of similar names that should be taken in consideration when # showing a hint for a missing member. missing-member-max-choices=1 # List of decorators that change the signature of a decorated function. signature-mutators= [VARIABLES] # List of additional names supposed to be defined in builtins. Remember that # you should avoid defining new builtins when possible. additional-builtins= # Tells whether unused global variables should be treated as a violation. allow-global-unused-variables=yes # List of strings which can identify a callback function by name. A callback # name must start or end with one of those strings. callbacks=cb_, _cb # A regular expression matching the name of dummy variables (i.e. expected to # not be used). dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ # Argument names that match this expression will be ignored. Default to name # with leading underscore. ignored-argument-names=_.*|^ignored_|^unused_ # Tells whether we should check for unused import in __init__ files. init-import=no # List of qualified module names which can have objects that can redefine # builtins. redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io [CLASSES] # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__, __new__, setUp, __post_init__ # List of member names, which should be excluded from the protected access # warning. exclude-protected=_asdict, _fields, _replace, _source, _make # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=cls [DESIGN] # Maximum number of arguments for function / method. max-args=5 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Maximum number of boolean expressions in an if statement (see R0916). max-bool-expr=5 # Maximum number of branch for function / method body. max-branches=12 # Maximum number of locals for function / method body. max-locals=15 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of public methods for a class (see R0904). max-public-methods=20 # Maximum number of return / yield for function / method body. max-returns=6 # Maximum number of statements in function / method body. max-statements=50 # Minimum number of public methods for a class (see R0903). min-public-methods=2 [IMPORTS] # List of modules that can be imported at any level, not just the top level # one. allow-any-import-level= # Allow wildcard imports from modules that define __all__. allow-wildcard-with-all=no # Analyse import fallback blocks. This can be used to support both Python 2 and # 3 compatible code, which means that the block might have code that exists # only in one or another interpreter, leading to false positives when analysed. analyse-fallback-blocks=no # Deprecated modules which should not be used, separated by a comma. deprecated-modules=optparse,tkinter.tix # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled). ext-import-graph= # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled). import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled). int-import-graph= # Force import order to recognize a module as part of the standard # compatibility libraries. known-standard-library= # Force import order to recognize a module as part of a third party library. known-third-party=enchant # Couples of modules and preferred modules, separated by a comma. preferred-modules= [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "BaseException, Exception". overgeneral-exceptions=BaseException, Exception secrets-5.1/LICENSE000066400000000000000000000773301415312107300140430ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS secrets-5.1/PasswordSafe.doap000066400000000000000000000022171415312107300162740ustar00rootroot00000000000000 PasswordSafe Manage your passwords Password Safe is a password manager which makes use of the Keepass v.4 format. It integrates perfectly with the GNOME desktop and provides an easy and uncluttered interface for the management of password databases. Python Falk Alexander Seidl fseidl David Heidelberg okias secrets-5.1/README.md000066400000000000000000000111531415312107300143040ustar00rootroot00000000000000# Password Safe Password Safe is a password manager which integrates perfectly with the GNOME desktop and provides an easy and uncluttered interface for the management of password databases. ## Features: * ⭐ Create or import a KeePass v.4 safe * 🔐 Password, keyfile and composite key authentication * 📝 Create and edit groups and entries * ✨ Assign a color and additional attributes to entries * 🗑 Move and delete groups and entries * 📎 Add files to your encrypted database * 🔗 Link multiple properties together with references * 🎲 Cryptographically strong password and passphrase generator * 🛠 Database password and keyfile changing * 🔎 Search tool with local, global and fulltext filter * 🕐 Automatic database lock during inactivity and session lock * 📲 Responsive UI for both desktop and mobile # Installation ## Install via distribution package manager In distribution package manager, you can find Password Safe under name `gnome-passwordsafe`. [![Packaging status](https://repology.org/badge/vertical-allrepos/gnome-passwordsafe.svg)](https://repology.org/project/gnome-passwordsafe/versions) ## Install via Flathub ## Install Development Flatpak Download the [latest artifact](https://gitlab.gnome.org/World/PasswordSafe/-/jobs/artifacts/master/download?job=flatpak) and extract it. To install, open the flatpak package with GNOME Software and install it. If you don't have GNOME Software then run ``` flatpak install org.gnome.PasswordSafeDevel.flatpak ``` ## Building from source #### Option 1: with GNOME Builder Open GNOME Builder, click the "Clone..." button, paste the repository url. Clone the project and hit the ![](https://terminal.run/stuff/run_button.png) button to start building Password Safe. #### Option 2: with Flatpak Builder ``` # Clone Password Safe repository git clone https://gitlab.gnome.org/World/PasswordSafe.git cd PasswordSafe # Add Flathub repository flatpak remote-add flathub --if-not-exists https://dl.flathub.org/repo/flathub.flatpakrepo flatpak remote-add gnome-nightly --if-not-exists https://sdk.gnome.org/gnome-nightly.flatpakrepo # Install the required GNOME runtimes flatpak install gnome-nightly org.gnome.Platform//master org.gnome.Sdk//master # Start building flatpak-builder --repo=repo org.gnome.PasswordSafeDevel flatpak/org.gnome.PasswordSafe.json --force-clean # Create the Flatpak flatpak build-export repo org.gnome.PasswordSafeDevel flatpak build-bundle repo org.gnome.PasswordSafeDevel.flatpak org.gnome.PasswordSafeDevel # Install the Flatpak flatpak install org.gnome.PasswordSafeDevel.flatpak ``` #### Option 3: with Meson ##### Prerequisites: * python >= 3.7.9 * [pykeepass](https://github.com/libkeepass/pykeepass) >= 3.2.1 * gtk >= 3.24.1 * libhandy >= 1.0.0 * libpwquality >= 1.4.0 * meson >= 0.51.0 * git ``` git clone https://gitlab.gnome.org/World/PasswordSafe.git cd PasswordSafe meson . _build --prefix=/usr ninja -C _build sudo ninja -C _build install ``` # Translations Helping to translate Password Safe or add support to a new language is very welcome. You can find everything you need at: [l10n.gnome.org/module/PasswordSafe/](https://l10n.gnome.org/module/PasswordSafe/) # Supported encryption algorithms ### Encryption algorithms: * AES 256-bit * Twofish 256-bit * ChaCha20 256-bit ### Derivation algorithms: * Argon2 KDBX4 * AES-KDF KDBX 3.1 # Data protection Please be careful when using development versions. Create enough backups if you're using a production database with a Password Safe development version. It is possible that data loss will occur, though I give my best that this will never happen. Development versions create a backup of your database on unlocking by default. These can be found at ```$XDG_CACHE_HOME/passwordsafe/backup/``` (or `~/.var/app/org.gnome.PasswordSafe/cache/passwordsafe/backup` for Flatpak users) where every backup is named by database name and date. If you don't want this behavior you can turn it off via dconf: ``` gsettings set org.gnome.PasswordSafe development-backup-mode false ``` # Contact You can contact through chat (Matrix protocol) on [#passwordsafe:gnome.org](https://matrix.to/#/#passwordsafe:gnome.org) channel. ### Part of GNOME Circle Applications and libraries extending the GNOME ecosystem. secrets-5.1/data/000077500000000000000000000000001415312107300137355ustar00rootroot00000000000000secrets-5.1/data/about_dialog.ui.in000066400000000000000000000017211415312107300173330ustar00rootroot00000000000000 True Password Safe @VERSION@ © 2018-2021 Falk Alexander Seidl, et al. Manage your passwords @PACKAGE_URL@ Learn more about Password Safe @CONTRIBUTORS@ translator-credits Tobias Bernard Christopher Davis @APPID@ gpl-3-0 secrets-5.1/data/attachment_entry_row.ui000066400000000000000000000032361415312107300205400ustar00rootroot00000000000000 True True True AttachmentDownloadButton True True center True document-save-as-symbolic AttachmentDeleteButton True True center True user-trash-symbolic secrets-5.1/data/attachment_warning_dialog.ui000066400000000000000000000035641415312107300215000ustar00rootroot00000000000000 secrets-5.1/data/attribute_entry_row.ui000066400000000000000000000056051415312107300204150ustar00rootroot00000000000000 True 6 True vertical True True 9 error-correct-symbolic True True start end none True start center AtrName right end 14 True True True True True True Remove attribute True user-trash-symbolic secrets-5.1/data/color_button.ui000066400000000000000000000021301415312107300170010ustar00rootroot00000000000000 secrets-5.1/data/color_entry_row.ui000066400000000000000000000024541415312107300175270ustar00rootroot00000000000000 secrets-5.1/data/create_database.ui000066400000000000000000000507171415312107300173750ustar00rootroot00000000000000 secrets-5.1/data/create_database_headerbar.ui000066400000000000000000000043071415312107300213640ustar00rootroot00000000000000 True False Password Safe Create Safe True True True True False go-previous-symbolic True True create_safe_menu True False open-menu-symbolic end
_Preferences app.settings _Keyboard Shortcuts win.show-help-overlay _About Password Safe app.about
secrets-5.1/data/crypto/000077500000000000000000000000001415312107300152555ustar00rootroot00000000000000secrets-5.1/data/crypto/eff_large_wordlist.txt000066400000000000000000001713001415312107300216610ustar00rootroot00000000000000abacus abdomen abdominal abide abiding ability ablaze able abnormal abrasion abrasive abreast abridge abroad abruptly absence absentee absently absinthe absolute absolve abstain abstract absurd accent acclaim acclimate accompany account accuracy accurate accustom acetone achiness aching acid acorn acquaint acquire acre acrobat acronym acting action activate activator active activism activist activity actress acts acutely acuteness aeration aerobics aerosol aerospace afar affair affected affecting affection affidavit affiliate affirm affix afflicted affluent afford affront aflame afloat aflutter afoot afraid afterglow afterlife aftermath aftermost afternoon aged ageless agency agenda agent aggregate aghast agile agility aging agnostic agonize agonizing agony agreeable agreeably agreed agreeing agreement aground ahead ahoy aide aids aim ajar alabaster alarm albatross album alfalfa algebra algorithm alias alibi alienable alienate aliens alike alive alkaline alkalize almanac almighty almost aloe aloft aloha alone alongside aloof alphabet alright although altitude alto aluminum alumni always amaretto amaze amazingly amber ambiance ambiguity ambiguous ambition ambitious ambulance ambush amendable amendment amends amenity amiable amicably amid amigo amino amiss ammonia ammonium amnesty amniotic among amount amperage ample amplifier amplify amply amuck amulet amusable amused amusement amuser amusing anaconda anaerobic anagram anatomist anatomy anchor anchovy ancient android anemia anemic aneurism anew angelfish angelic anger angled angler angles angling angrily angriness anguished angular animal animate animating animation animator anime animosity ankle annex annotate announcer annoying annually annuity anointer another answering antacid antarctic anteater antelope antennae anthem anthill anthology antibody antics antidote antihero antiquely antiques antiquity antirust antitoxic antitrust antiviral antivirus antler antonym antsy anvil anybody anyhow anymore anyone anyplace anything anytime anyway anywhere aorta apache apostle appealing appear appease appeasing appendage appendix appetite appetizer applaud applause apple appliance applicant applied apply appointee appraisal appraiser apprehend approach approval approve apricot april apron aptitude aptly aqua aqueduct arbitrary arbitrate ardently area arena arguable arguably argue arise armadillo armband armchair armed armful armhole arming armless armoire armored armory armrest army aroma arose around arousal arrange array arrest arrival arrive arrogance arrogant arson art ascend ascension ascent ascertain ashamed ashen ashes ashy aside askew asleep asparagus aspect aspirate aspire aspirin astonish astound astride astrology astronaut astronomy astute atlantic atlas atom atonable atop atrium atrocious atrophy attach attain attempt attendant attendee attention attentive attest attic attire attitude attractor attribute atypical auction audacious audacity audible audibly audience audio audition augmented august authentic author autism autistic autograph automaker automated automatic autopilot available avalanche avatar avenge avenging avenue average aversion avert aviation aviator avid avoid await awaken award aware awhile awkward awning awoke awry axis babble babbling babied baboon backache backboard backboned backdrop backed backer backfield backfire backhand backing backlands backlash backless backlight backlit backlog backpack backpedal backrest backroom backshift backside backslid backspace backspin backstab backstage backtalk backtrack backup backward backwash backwater backyard bacon bacteria bacterium badass badge badland badly badness baffle baffling bagel bagful baggage bagged baggie bagginess bagging baggy bagpipe baguette baked bakery bakeshop baking balance balancing balcony balmy balsamic bamboo banana banish banister banjo bankable bankbook banked banker banking banknote bankroll banner bannister banshee banter barbecue barbed barbell barber barcode barge bargraph barista baritone barley barmaid barman barn barometer barrack barracuda barrel barrette barricade barrier barstool bartender barterer bash basically basics basil basin basis basket batboy batch bath baton bats battalion battered battering battery batting battle bauble bazooka blabber bladder blade blah blame blaming blanching blandness blank blaspheme blasphemy blast blatancy blatantly blazer blazing bleach bleak bleep blemish blend bless blighted blimp bling blinked blinker blinking blinks blip blissful blitz blizzard bloated bloating blob blog bloomers blooming blooper blot blouse blubber bluff bluish blunderer blunt blurb blurred blurry blurt blush blustery boaster boastful boasting boat bobbed bobbing bobble bobcat bobsled bobtail bodacious body bogged boggle bogus boil bok bolster bolt bonanza bonded bonding bondless boned bonehead boneless bonelike boney bonfire bonnet bonsai bonus bony boogeyman boogieman book boondocks booted booth bootie booting bootlace bootleg boots boozy borax boring borough borrower borrowing boss botanical botanist botany botch both bottle bottling bottom bounce bouncing bouncy bounding boundless bountiful bovine boxcar boxer boxing boxlike boxy breach breath breeches breeching breeder breeding breeze breezy brethren brewery brewing briar bribe brick bride bridged brigade bright brilliant brim bring brink brisket briskly briskness bristle brittle broadband broadcast broaden broadly broadness broadside broadways broiler broiling broken broker bronchial bronco bronze bronzing brook broom brought browbeat brownnose browse browsing bruising brunch brunette brunt brush brussels brute brutishly bubble bubbling bubbly buccaneer bucked bucket buckle buckshot buckskin bucktooth buckwheat buddhism buddhist budding buddy budget buffalo buffed buffer buffing buffoon buggy bulb bulge bulginess bulgur bulk bulldog bulldozer bullfight bullfrog bullhorn bullion bullish bullpen bullring bullseye bullwhip bully bunch bundle bungee bunion bunkbed bunkhouse bunkmate bunny bunt busboy bush busily busload bust busybody buzz cabana cabbage cabbie cabdriver cable caboose cache cackle cacti cactus caddie caddy cadet cadillac cadmium cage cahoots cake calamari calamity calcium calculate calculus caliber calibrate calm caloric calorie calzone camcorder cameo camera camisole camper campfire camping campsite campus canal canary cancel candied candle candy cane canine canister cannabis canned canning cannon cannot canola canon canopener canopy canteen canyon capable capably capacity cape capillary capital capitol capped capricorn capsize capsule caption captivate captive captivity capture caramel carat caravan carbon cardboard carded cardiac cardigan cardinal cardstock carefully caregiver careless caress caretaker cargo caring carless carload carmaker carnage carnation carnival carnivore carol carpenter carpentry carpool carport carried carrot carrousel carry cartel cartload carton cartoon cartridge cartwheel carve carving carwash cascade case cash casing casino casket cassette casually casualty catacomb catalog catalyst catalyze catapult cataract catatonic catcall catchable catcher catching catchy caterer catering catfight catfish cathedral cathouse catlike catnap catnip catsup cattail cattishly cattle catty catwalk caucasian caucus causal causation cause causing cauterize caution cautious cavalier cavalry caviar cavity cedar celery celestial celibacy celibate celtic cement census ceramics ceremony certainly certainty certified certify cesarean cesspool chafe chaffing chain chair chalice challenge chamber chamomile champion chance change channel chant chaos chaperone chaplain chapped chaps chapter character charbroil charcoal charger charging chariot charity charm charred charter charting chase chasing chaste chastise chastity chatroom chatter chatting chatty cheating cheddar cheek cheer cheese cheesy chef chemicals chemist chemo cherisher cherub chess chest chevron chevy chewable chewer chewing chewy chief chihuahua childcare childhood childish childless childlike chili chill chimp chip chirping chirpy chitchat chivalry chive chloride chlorine choice chokehold choking chomp chooser choosing choosy chop chosen chowder chowtime chrome chubby chuck chug chummy chump chunk churn chute cider cilantro cinch cinema cinnamon circle circling circular circulate circus citable citadel citation citizen citric citrus city civic civil clad claim clambake clammy clamor clamp clamshell clang clanking clapped clapper clapping clarify clarinet clarity clash clasp class clatter clause clavicle claw clay clean clear cleat cleaver cleft clench clergyman clerical clerk clever clicker client climate climatic cling clinic clinking clip clique cloak clobber clock clone cloning closable closure clothes clothing cloud clover clubbed clubbing clubhouse clump clumsily clumsy clunky clustered clutch clutter coach coagulant coastal coaster coasting coastland coastline coat coauthor cobalt cobbler cobweb cocoa coconut cod coeditor coerce coexist coffee cofounder cognition cognitive cogwheel coherence coherent cohesive coil coke cola cold coleslaw coliseum collage collapse collar collected collector collide collie collision colonial colonist colonize colony colossal colt coma come comfort comfy comic coming comma commence commend comment commerce commode commodity commodore common commotion commute commuting compacted compacter compactly compactor companion company compare compel compile comply component composed composer composite compost composure compound compress comprised computer computing comrade concave conceal conceded concept concerned concert conch concierge concise conclude concrete concur condense condiment condition condone conducive conductor conduit cone confess confetti confidant confident confider confiding configure confined confining confirm conflict conform confound confront confused confusing confusion congenial congested congrats congress conical conjoined conjure conjuror connected connector consensus consent console consoling consonant constable constant constrain constrict construct consult consumer consuming contact container contempt contend contented contently contents contest context contort contour contrite control contusion convene convent copartner cope copied copier copilot coping copious copper copy coral cork cornball cornbread corncob cornea corned corner cornfield cornflake cornhusk cornmeal cornstalk corny coronary coroner corporal corporate corral correct corridor corrode corroding corrosive corsage corset cortex cosigner cosmetics cosmic cosmos cosponsor cost cottage cotton couch cough could countable countdown counting countless country county courier covenant cover coveted coveting coyness cozily coziness cozy crabbing crabgrass crablike crabmeat cradle cradling crafter craftily craftsman craftwork crafty cramp cranberry crane cranial cranium crank crate crave craving crawfish crawlers crawling crayfish crayon crazed crazily craziness crazy creamed creamer creamlike crease creasing creatable create creation creative creature credible credibly credit creed creme creole crepe crept crescent crested cresting crestless crevice crewless crewman crewmate crib cricket cried crier crimp crimson cringe cringing crinkle crinkly crisped crisping crisply crispness crispy criteria critter croak crock crook croon crop cross crouch crouton crowbar crowd crown crucial crudely crudeness cruelly cruelness cruelty crumb crummiest crummy crumpet crumpled cruncher crunching crunchy crusader crushable crushed crusher crushing crust crux crying cryptic crystal cubbyhole cube cubical cubicle cucumber cuddle cuddly cufflink culinary culminate culpable culprit cultivate cultural culture cupbearer cupcake cupid cupped cupping curable curator curdle cure curfew curing curled curler curliness curling curly curry curse cursive cursor curtain curtly curtsy curvature curve curvy cushy cusp cussed custard custodian custody customary customer customize customs cut cycle cyclic cycling cyclist cylinder cymbal cytoplasm cytoplast dab dad daffodil dagger daily daintily dainty dairy daisy dallying dance dancing dandelion dander dandruff dandy danger dangle dangling daredevil dares daringly darkened darkening darkish darkness darkroom darling darn dart darwinism dash dastardly data datebook dating daughter daunting dawdler dawn daybed daybreak daycare daydream daylight daylong dayroom daytime dazzler dazzling deacon deafening deafness dealer dealing dealmaker dealt dean debatable debate debating debit debrief debtless debtor debug debunk decade decaf decal decathlon decay deceased deceit deceiver deceiving december decency decent deception deceptive decibel decidable decimal decimeter decipher deck declared decline decode decompose decorated decorator decoy decrease decree dedicate dedicator deduce deduct deed deem deepen deeply deepness deface defacing defame default defeat defection defective defendant defender defense defensive deferral deferred defiance defiant defile defiling define definite deflate deflation deflator deflected deflector defog deforest defraud defrost deftly defuse defy degraded degrading degrease degree dehydrate deity dejected delay delegate delegator delete deletion delicacy delicate delicious delighted delirious delirium deliverer delivery delouse delta deluge delusion deluxe demanding demeaning demeanor demise democracy democrat demote demotion demystify denatured deniable denial denim denote dense density dental dentist denture deny deodorant deodorize departed departure depict deplete depletion deplored deploy deport depose depraved depravity deprecate depress deprive depth deputize deputy derail deranged derby derived desecrate deserve deserving designate designed designer designing deskbound desktop deskwork desolate despair despise despite destiny destitute destruct detached detail detection detective detector detention detergent detest detonate detonator detoxify detract deuce devalue deviancy deviant deviate deviation deviator device devious devotedly devotee devotion devourer devouring devoutly dexterity dexterous diabetes diabetic diabolic diagnoses diagnosis diagram dial diameter diaper diaphragm diary dice dicing dictate dictation dictator difficult diffused diffuser diffusion diffusive dig dilation diligence diligent dill dilute dime diminish dimly dimmed dimmer dimness dimple diner dingbat dinghy dinginess dingo dingy dining dinner diocese dioxide diploma dipped dipper dipping directed direction directive directly directory direness dirtiness disabled disagree disallow disarm disarray disaster disband disbelief disburse discard discern discharge disclose discolor discount discourse discover discuss disdain disengage disfigure disgrace dish disinfect disjoin disk dislike disliking dislocate dislodge disloyal dismantle dismay dismiss dismount disobey disorder disown disparate disparity dispatch dispense dispersal dispersed disperser displace display displease disposal dispose disprove dispute disregard disrupt dissuade distance distant distaste distill distinct distort distract distress district distrust ditch ditto ditzy dividable divided dividend dividers dividing divinely diving divinity divisible divisibly division divisive divorcee dizziness dizzy doable docile dock doctrine document dodge dodgy doily doing dole dollar dollhouse dollop dolly dolphin domain domelike domestic dominion dominoes donated donation donator donor donut doodle doorbell doorframe doorknob doorman doormat doornail doorpost doorstep doorstop doorway doozy dork dormitory dorsal dosage dose dotted doubling douche dove down dowry doze drab dragging dragonfly dragonish dragster drainable drainage drained drainer drainpipe dramatic dramatize drank drapery drastic draw dreaded dreadful dreadlock dreamboat dreamily dreamland dreamless dreamlike dreamt dreamy drearily dreary drench dress drew dribble dried drier drift driller drilling drinkable drinking dripping drippy drivable driven driver driveway driving drizzle drizzly drone drool droop drop-down dropbox dropkick droplet dropout dropper drove drown drowsily drudge drum dry dubbed dubiously duchess duckbill ducking duckling ducktail ducky duct dude duffel dugout duh duke duller dullness duly dumping dumpling dumpster duo dupe duplex duplicate duplicity durable durably duration duress during dusk dust dutiful duty duvet dwarf dweeb dwelled dweller dwelling dwindle dwindling dynamic dynamite dynasty dyslexia dyslexic each eagle earache eardrum earflap earful earlobe early earmark earmuff earphone earpiece earplugs earring earshot earthen earthlike earthling earthly earthworm earthy earwig easeful easel easiest easily easiness easing eastbound eastcoast easter eastward eatable eaten eatery eating eats ebay ebony ebook ecard eccentric echo eclair eclipse ecologist ecology economic economist economy ecosphere ecosystem edge edginess edging edgy edition editor educated education educator eel effective effects efficient effort eggbeater egging eggnog eggplant eggshell egomaniac egotism egotistic either eject elaborate elastic elated elbow eldercare elderly eldest electable election elective elephant elevate elevating elevation elevator eleven elf eligible eligibly eliminate elite elitism elixir elk ellipse elliptic elm elongated elope eloquence eloquent elsewhere elude elusive elves email embargo embark embassy embattled embellish ember embezzle emblaze emblem embody embolism emboss embroider emcee emerald emergency emission emit emote emoticon emotion empathic empathy emperor emphases emphasis emphasize emphatic empirical employed employee employer emporium empower emptier emptiness empty emu enable enactment enamel enchanted enchilada encircle enclose enclosure encode encore encounter encourage encroach encrust encrypt endanger endeared endearing ended ending endless endnote endocrine endorphin endorse endowment endpoint endurable endurance enduring energetic energize energy enforced enforcer engaged engaging engine engorge engraved engraver engraving engross engulf enhance enigmatic enjoyable enjoyably enjoyer enjoying enjoyment enlarged enlarging enlighten enlisted enquirer enrage enrich enroll enslave ensnare ensure entail entangled entering entertain enticing entire entitle entity entomb entourage entrap entree entrench entrust entryway entwine enunciate envelope enviable enviably envious envision envoy envy enzyme epic epidemic epidermal epidermis epidural epilepsy epileptic epilogue epiphany episode equal equate equation equator equinox equipment equity equivocal eradicate erasable erased eraser erasure ergonomic errand errant erratic error erupt escalate escalator escapable escapade escapist escargot eskimo esophagus espionage espresso esquire essay essence essential establish estate esteemed estimate estimator estranged estrogen etching eternal eternity ethanol ether ethically ethics euphemism evacuate evacuee evade evaluate evaluator evaporate evasion evasive even everglade evergreen everybody everyday everyone evict evidence evident evil evoke evolution evolve exact exalted example excavate excavator exceeding exception excess exchange excitable exciting exclaim exclude excluding exclusion exclusive excretion excretory excursion excusable excusably excuse exemplary exemplify exemption exerciser exert exes exfoliate exhale exhaust exhume exile existing exit exodus exonerate exorcism exorcist expand expanse expansion expansive expectant expedited expediter expel expend expenses expensive expert expire expiring explain expletive explicit explode exploit explore exploring exponent exporter exposable expose exposure express expulsion exquisite extended extending extent extenuate exterior external extinct extortion extradite extras extrovert extrude extruding exuberant fable fabric fabulous facebook facecloth facedown faceless facelift faceplate faceted facial facility facing facsimile faction factoid factor factsheet factual faculty fade fading failing falcon fall false falsify fame familiar family famine famished fanatic fancied fanciness fancy fanfare fang fanning fantasize fantastic fantasy fascism fastball faster fasting fastness faucet favorable favorably favored favoring favorite fax feast federal fedora feeble feed feel feisty feline felt-tip feminine feminism feminist feminize femur fence fencing fender ferment fernlike ferocious ferocity ferret ferris ferry fervor fester festival festive festivity fetal fetch fever fiber fiction fiddle fiddling fidelity fidgeting fidgety fifteen fifth fiftieth fifty figment figure figurine filing filled filler filling film filter filth filtrate finale finalist finalize finally finance financial finch fineness finer finicky finished finisher finishing finite finless finlike fiscally fit five flaccid flagman flagpole flagship flagstick flagstone flail flakily flaky flame flammable flanked flanking flannels flap flaring flashback flashbulb flashcard flashily flashing flashy flask flatbed flatfoot flatly flatness flatten flattered flatterer flattery flattop flatware flatworm flavored flavorful flavoring flaxseed fled fleshed fleshy flick flier flight flinch fling flint flip flirt float flock flogging flop floral florist floss flounder flyable flyaway flyer flying flyover flypaper foam foe fog foil folic folk follicle follow fondling fondly fondness fondue font food fool footage football footbath footboard footer footgear foothill foothold footing footless footman footnote footpad footpath footprint footrest footsie footsore footwear footwork fossil foster founder founding fountain fox foyer fraction fracture fragile fragility fragment fragrance fragrant frail frame framing frantic fraternal frayed fraying frays freckled freckles freebase freebee freebie freedom freefall freehand freeing freeload freely freemason freeness freestyle freeware freeway freewill freezable freezing freight french frenzied frenzy frequency frequent fresh fretful fretted friction friday fridge fried friend frighten frightful frigidity frigidly frill fringe frisbee frisk fritter frivolous frolic from front frostbite frosted frostily frosting frostlike frosty froth frown frozen fructose frugality frugally fruit frustrate frying gab gaffe gag gainfully gaining gains gala gallantly galleria gallery galley gallon gallows gallstone galore galvanize gambling game gaming gamma gander gangly gangrene gangway gap garage garbage garden gargle garland garlic garment garnet garnish garter gas gatherer gathering gating gauging gauntlet gauze gave gawk gazing gear gecko geek geiger gem gender generic generous genetics genre gentile gentleman gently gents geography geologic geologist geology geometric geometry geranium gerbil geriatric germicide germinate germless germproof gestate gestation gesture getaway getting getup giant gibberish giblet giddily giddiness giddy gift gigabyte gigahertz gigantic giggle giggling giggly gigolo gilled gills gimmick girdle giveaway given giver giving gizmo gizzard glacial glacier glade gladiator gladly glamorous glamour glance glancing glandular glare glaring glass glaucoma glazing gleaming gleeful glider gliding glimmer glimpse glisten glitch glitter glitzy gloater gloating gloomily gloomy glorified glorifier glorify glorious glory gloss glove glowing glowworm glucose glue gluten glutinous glutton gnarly gnat goal goatskin goes goggles going goldfish goldmine goldsmith golf goliath gonad gondola gone gong good gooey goofball goofiness goofy google goon gopher gore gorged gorgeous gory gosling gossip gothic gotten gout gown grab graceful graceless gracious gradation graded grader gradient grading gradually graduate graffiti grafted grafting grain granddad grandkid grandly grandma grandpa grandson granite granny granola grant granular grape graph grapple grappling grasp grass gratified gratify grating gratitude gratuity gravel graveness graves graveyard gravitate gravity gravy gray grazing greasily greedily greedless greedy green greeter greeting grew greyhound grid grief grievance grieving grievous grill grimace grimacing grime griminess grimy grinch grinning grip gristle grit groggily groggy groin groom groove grooving groovy grope ground grouped grout grove grower growing growl grub grudge grudging grueling gruffly grumble grumbling grumbly grumpily grunge grunt guacamole guidable guidance guide guiding guileless guise gulf gullible gully gulp gumball gumdrop gumminess gumming gummy gurgle gurgling guru gush gusto gusty gutless guts gutter guy guzzler gyration habitable habitant habitat habitual hacked hacker hacking hacksaw had haggler haiku half halogen halt halved halves hamburger hamlet hammock hamper hamster hamstring handbag handball handbook handbrake handcart handclap handclasp handcraft handcuff handed handful handgrip handgun handheld handiness handiwork handlebar handled handler handling handmade handoff handpick handprint handrail handsaw handset handsfree handshake handstand handwash handwork handwoven handwrite handyman hangnail hangout hangover hangup hankering hankie hanky haphazard happening happier happiest happily happiness happy harbor hardcopy hardcore hardcover harddisk hardened hardener hardening hardhat hardhead hardiness hardly hardness hardship hardware hardwired hardwood hardy harmful harmless harmonica harmonics harmonize harmony harness harpist harsh harvest hash hassle haste hastily hastiness hasty hatbox hatchback hatchery hatchet hatching hatchling hate hatless hatred haunt haven hazard hazelnut hazily haziness hazing hazy headache headband headboard headcount headdress headed header headfirst headgear heading headlamp headless headlock headphone headpiece headrest headroom headscarf headset headsman headstand headstone headway headwear heap heat heave heavily heaviness heaving hedge hedging heftiness hefty helium helmet helper helpful helping helpless helpline hemlock hemstitch hence henchman henna herald herbal herbicide herbs heritage hermit heroics heroism herring herself hertz hesitancy hesitant hesitate hexagon hexagram hubcap huddle huddling huff hug hula hulk hull human humble humbling humbly humid humiliate humility humming hummus humongous humorist humorless humorous humpback humped humvee hunchback hundredth hunger hungrily hungry hunk hunter hunting huntress huntsman hurdle hurled hurler hurling hurray hurricane hurried hurry hurt husband hush husked huskiness hut hybrid hydrant hydrated hydration hydrogen hydroxide hyperlink hypertext hyphen hypnoses hypnosis hypnotic hypnotism hypnotist hypnotize hypocrisy hypocrite ibuprofen ice iciness icing icky icon icy idealism idealist idealize ideally idealness identical identify identity ideology idiocy idiom idly igloo ignition ignore iguana illicitly illusion illusive image imaginary imagines imaging imbecile imitate imitation immature immerse immersion imminent immobile immodest immorally immortal immovable immovably immunity immunize impaired impale impart impatient impeach impeding impending imperfect imperial impish implant implement implicate implicit implode implosion implosive imply impolite important importer impose imposing impotence impotency impotent impound imprecise imprint imprison impromptu improper improve improving improvise imprudent impulse impulsive impure impurity iodine iodize ion ipad iphone ipod irate irk iron irregular irrigate irritable irritably irritant irritate islamic islamist isolated isolating isolation isotope issue issuing italicize italics item itinerary itunes ivory ivy jab jackal jacket jackknife jackpot jailbird jailbreak jailer jailhouse jalapeno jam janitor january jargon jarring jasmine jaundice jaunt java jawed jawless jawline jaws jaybird jaywalker jazz jeep jeeringly jellied jelly jersey jester jet jiffy jigsaw jimmy jingle jingling jinx jitters jittery job jockey jockstrap jogger jogging john joining jokester jokingly jolliness jolly jolt jot jovial joyfully joylessly joyous joyride joystick jubilance jubilant judge judgingly judicial judiciary judo juggle juggling jugular juice juiciness juicy jujitsu jukebox july jumble jumbo jump junction juncture june junior juniper junkie junkman junkyard jurist juror jury justice justifier justify justly justness juvenile kabob kangaroo karaoke karate karma kebab keenly keenness keep keg kelp kennel kept kerchief kerosene kettle kick kiln kilobyte kilogram kilometer kilowatt kilt kimono kindle kindling kindly kindness kindred kinetic kinfolk king kinship kinsman kinswoman kissable kisser kissing kitchen kite kitten kitty kiwi kleenex knapsack knee knelt knickers knoll koala kooky kosher krypton kudos kung labored laborer laboring laborious labrador ladder ladies ladle ladybug ladylike lagged lagging lagoon lair lake lance landed landfall landfill landing landlady landless landline landlord landmark landmass landmine landowner landscape landside landslide language lankiness lanky lantern lapdog lapel lapped lapping laptop lard large lark lash lasso last latch late lather latitude latrine latter latticed launch launder laundry laurel lavender lavish laxative lazily laziness lazy lecturer left legacy legal legend legged leggings legible legibly legislate lego legroom legume legwarmer legwork lemon lend length lens lent leotard lesser letdown lethargic lethargy letter lettuce level leverage levers levitate levitator liability liable liberty librarian library licking licorice lid life lifter lifting liftoff ligament likely likeness likewise liking lilac lilly lily limb limeade limelight limes limit limping limpness line lingo linguini linguist lining linked linoleum linseed lint lion lip liquefy liqueur liquid lisp list litigate litigator litmus litter little livable lived lively liver livestock lividly living lizard lubricant lubricate lucid luckily luckiness luckless lucrative ludicrous lugged lukewarm lullaby lumber luminance luminous lumpiness lumping lumpish lunacy lunar lunchbox luncheon lunchroom lunchtime lung lurch lure luridness lurk lushly lushness luster lustfully lustily lustiness lustrous lusty luxurious luxury lying lyrically lyricism lyricist lyrics macarena macaroni macaw mace machine machinist magazine magenta maggot magical magician magma magnesium magnetic magnetism magnetize magnifier magnify magnitude magnolia mahogany maimed majestic majesty majorette majority makeover maker makeshift making malformed malt mama mammal mammary mammogram manager managing manatee mandarin mandate mandatory mandolin manger mangle mango mangy manhandle manhole manhood manhunt manicotti manicure manifesto manila mankind manlike manliness manly manmade manned mannish manor manpower mantis mantra manual many map marathon marauding marbled marbles marbling march mardi margarine margarita margin marigold marina marine marital maritime marlin marmalade maroon married marrow marry marshland marshy marsupial marvelous marxism mascot masculine mashed mashing massager masses massive mastiff matador matchbook matchbox matcher matching matchless material maternal maternity math mating matriarch matrimony matrix matron matted matter maturely maturing maturity mauve maverick maximize maximum maybe mayday mayflower moaner moaning mobile mobility mobilize mobster mocha mocker mockup modified modify modular modulator module moisten moistness moisture molar molasses mold molecular molecule molehill mollusk mom monastery monday monetary monetize moneybags moneyless moneywise mongoose mongrel monitor monkhood monogamy monogram monologue monopoly monorail monotone monotype monoxide monsieur monsoon monstrous monthly monument moocher moodiness moody mooing moonbeam mooned moonlight moonlike moonlit moonrise moonscape moonshine moonstone moonwalk mop morale morality morally morbidity morbidly morphine morphing morse mortality mortally mortician mortified mortify mortuary mosaic mossy most mothball mothproof motion motivate motivator motive motocross motor motto mountable mountain mounted mounting mourner mournful mouse mousiness moustache mousy mouth movable move movie moving mower mowing much muck mud mug mulberry mulch mule mulled mullets multiple multiply multitask multitude mumble mumbling mumbo mummified mummify mummy mumps munchkin mundane municipal muppet mural murkiness murky murmuring muscular museum mushily mushiness mushroom mushy music musket muskiness musky mustang mustard muster mustiness musty mutable mutate mutation mute mutilated mutilator mutiny mutt mutual muzzle myself myspace mystified mystify myth nacho nag nail name naming nanny nanometer nape napkin napped napping nappy narrow nastily nastiness national native nativity natural nature naturist nautical navigate navigator navy nearby nearest nearly nearness neatly neatness nebula nebulizer nectar negate negation negative neglector negligee negligent negotiate nemeses nemesis neon nephew nerd nervous nervy nest net neurology neuron neurosis neurotic neuter neutron never next nibble nickname nicotine niece nifty nimble nimbly nineteen ninetieth ninja nintendo ninth nuclear nuclei nucleus nugget nullify number numbing numbly numbness numeral numerate numerator numeric numerous nuptials nursery nursing nurture nutcase nutlike nutmeg nutrient nutshell nuttiness nutty nuzzle nylon oaf oak oasis oat obedience obedient obituary object obligate obliged oblivion oblivious oblong obnoxious oboe obscure obscurity observant observer observing obsessed obsession obsessive obsolete obstacle obstinate obstruct obtain obtrusive obtuse obvious occultist occupancy occupant occupier occupy ocean ocelot octagon octane october octopus ogle oil oink ointment okay old olive olympics omega omen ominous omission omit omnivore onboard oncoming ongoing onion online onlooker only onscreen onset onshore onslaught onstage onto onward onyx oops ooze oozy opacity opal open operable operate operating operation operative operator opium opossum opponent oppose opposing opposite oppressed oppressor opt opulently osmosis other otter ouch ought ounce outage outback outbid outboard outbound outbreak outburst outcast outclass outcome outdated outdoors outer outfield outfit outflank outgoing outgrow outhouse outing outlast outlet outline outlook outlying outmatch outmost outnumber outplayed outpost outpour output outrage outrank outreach outright outscore outsell outshine outshoot outsider outskirts outsmart outsource outspoken outtakes outthink outward outweigh outwit oval ovary oven overact overall overarch overbid overbill overbite overblown overboard overbook overbuilt overcast overcoat overcome overcook overcrowd overdraft overdrawn overdress overdrive overdue overeager overeater overexert overfed overfeed overfill overflow overfull overgrown overhand overhang overhaul overhead overhear overheat overhung overjoyed overkill overlabor overlaid overlap overlay overload overlook overlord overlying overnight overpass overpay overplant overplay overpower overprice overrate overreach overreact override overripe overrule overrun overshoot overshot oversight oversized oversleep oversold overspend overstate overstay overstep overstock overstuff oversweet overtake overthrow overtime overtly overtone overture overturn overuse overvalue overview overwrite owl oxford oxidant oxidation oxidize oxidizing oxygen oxymoron oyster ozone paced pacemaker pacific pacifier pacifism pacifist pacify padded padding paddle paddling padlock pagan pager paging pajamas palace palatable palm palpable palpitate paltry pampered pamperer pampers pamphlet panama pancake pancreas panda pandemic pang panhandle panic panning panorama panoramic panther pantomime pantry pants pantyhose paparazzi papaya paper paprika papyrus parabola parachute parade paradox paragraph parakeet paralegal paralyses paralysis paralyze paramedic parameter paramount parasail parasite parasitic parcel parched parchment pardon parish parka parking parkway parlor parmesan parole parrot parsley parsnip partake parted parting partition partly partner partridge party passable passably passage passcode passenger passerby passing passion passive passivism passover passport password pasta pasted pastel pastime pastor pastrami pasture pasty patchwork patchy paternal paternity path patience patient patio patriarch patriot patrol patronage patronize pauper pavement paver pavestone pavilion paving pawing payable payback paycheck payday payee payer paying payment payphone payroll pebble pebbly pecan pectin peculiar peddling pediatric pedicure pedigree pedometer pegboard pelican pellet pelt pelvis penalize penalty pencil pendant pending penholder penknife pennant penniless penny penpal pension pentagon pentagram pep perceive percent perch percolate perennial perfected perfectly perfume periscope perish perjurer perjury perkiness perky perm peroxide perpetual perplexed persecute persevere persuaded persuader pesky peso pessimism pessimist pester pesticide petal petite petition petri petroleum petted petticoat pettiness petty petunia phantom phobia phoenix phonebook phoney phonics phoniness phony phosphate photo phrase phrasing placard placate placidly plank planner plant plasma plaster plastic plated platform plating platinum platonic platter platypus plausible plausibly playable playback player playful playgroup playhouse playing playlist playmaker playmate playoff playpen playroom playset plaything playtime plaza pleading pleat pledge plentiful plenty plethora plexiglas pliable plod plop plot plow ploy pluck plug plunder plunging plural plus plutonium plywood poach pod poem poet pogo pointed pointer pointing pointless pointy poise poison poker poking polar police policy polio polish politely polka polo polyester polygon polygraph polymer poncho pond pony popcorn pope poplar popper poppy popsicle populace popular populate porcupine pork porous porridge portable portal portfolio porthole portion portly portside poser posh posing possible possibly possum postage postal postbox postcard posted poster posting postnasal posture postwar pouch pounce pouncing pound pouring pout powdered powdering powdery power powwow pox praising prance prancing pranker prankish prankster prayer praying preacher preaching preachy preamble precinct precise precision precook precut predator predefine predict preface prefix preflight preformed pregame pregnancy pregnant preheated prelaunch prelaw prelude premiere premises premium prenatal preoccupy preorder prepaid prepay preplan preppy preschool prescribe preseason preset preshow president presoak press presume presuming preteen pretended pretender pretense pretext pretty pretzel prevail prevalent prevent preview previous prewar prewashed prideful pried primal primarily primary primate primer primp princess print prior prism prison prissy pristine privacy private privatize prize proactive probable probably probation probe probing probiotic problem procedure process proclaim procreate procurer prodigal prodigy produce product profane profanity professed professor profile profound profusely progeny prognosis program progress projector prologue prolonged promenade prominent promoter promotion prompter promptly prone prong pronounce pronto proofing proofread proofs propeller properly property proponent proposal propose props prorate protector protegee proton prototype protozoan protract protrude proud provable proved proven provided provider providing province proving provoke provoking provolone prowess prowler prowling proximity proxy prozac prude prudishly prune pruning pry psychic public publisher pucker pueblo pug pull pulmonary pulp pulsate pulse pulverize puma pumice pummel punch punctual punctuate punctured pungent punisher punk pupil puppet puppy purchase pureblood purebred purely pureness purgatory purge purging purifier purify purist puritan purity purple purplish purposely purr purse pursuable pursuant pursuit purveyor pushcart pushchair pusher pushiness pushing pushover pushpin pushup pushy putdown putt puzzle puzzling pyramid pyromania python quack quadrant quail quaintly quake quaking qualified qualifier qualify quality qualm quantum quarrel quarry quartered quarterly quarters quartet quench query quicken quickly quickness quicksand quickstep quiet quill quilt quintet quintuple quirk quit quiver quizzical quotable quotation quote rabid race racing racism rack racoon radar radial radiance radiantly radiated radiation radiator radio radish raffle raft rage ragged raging ragweed raider railcar railing railroad railway raisin rake raking rally ramble rambling ramp ramrod ranch rancidity random ranged ranger ranging ranked ranking ransack ranting rants rare rarity rascal rash rasping ravage raven ravine raving ravioli ravishing reabsorb reach reacquire reaction reactive reactor reaffirm ream reanalyze reappear reapply reappoint reapprove rearrange rearview reason reassign reassure reattach reawake rebalance rebate rebel rebirth reboot reborn rebound rebuff rebuild rebuilt reburial rebuttal recall recant recapture recast recede recent recess recharger recipient recital recite reckless reclaim recliner reclining recluse reclusive recognize recoil recollect recolor reconcile reconfirm reconvene recopy record recount recoup recovery recreate rectal rectangle rectified rectify recycled recycler recycling reemerge reenact reenter reentry reexamine referable referee reference refill refinance refined refinery refining refinish reflected reflector reflex reflux refocus refold reforest reformat reformed reformer reformist refract refrain refreeze refresh refried refueling refund refurbish refurnish refusal refuse refusing refutable refute regain regalia regally reggae regime region register registrar registry regress regretful regroup regular regulate regulator rehab reheat rehire rehydrate reimburse reissue reiterate rejoice rejoicing rejoin rekindle relapse relapsing relatable related relation relative relax relay relearn release relenting reliable reliably reliance reliant relic relieve relieving relight relish relive reload relocate relock reluctant rely remake remark remarry rematch remedial remedy remember reminder remindful remission remix remnant remodeler remold remorse remote removable removal removed remover removing rename renderer rendering rendition renegade renewable renewably renewal renewed renounce renovate renovator rentable rental rented renter reoccupy reoccur reopen reorder repackage repacking repaint repair repave repaying repayment repeal repeated repeater repent rephrase replace replay replica reply reporter repose repossess repost repressed reprimand reprint reprise reproach reprocess reproduce reprogram reps reptile reptilian repugnant repulsion repulsive repurpose reputable reputably request require requisite reroute rerun resale resample rescuer reseal research reselect reseller resemble resend resent reset reshape reshoot reshuffle residence residency resident residual residue resigned resilient resistant resisting resize resolute resolved resonant resonate resort resource respect resubmit result resume resupply resurface resurrect retail retainer retaining retake retaliate retention rethink retinal retired retiree retiring retold retool retorted retouch retrace retract retrain retread retreat retrial retrieval retriever retry return retying retype reunion reunite reusable reuse reveal reveler revenge revenue reverb revered reverence reverend reversal reverse reversing reversion revert revisable revise revision revisit revivable revival reviver reviving revocable revoke revolt revolver revolving reward rewash rewind rewire reword rework rewrap rewrite rhyme ribbon ribcage rice riches richly richness rickety ricotta riddance ridden ride riding rifling rift rigging rigid rigor rimless rimmed rind rink rinse rinsing riot ripcord ripeness ripening ripping ripple rippling riptide rise rising risk risotto ritalin ritzy rival riverbank riverbed riverboat riverside riveter riveting roamer roaming roast robbing robe robin robotics robust rockband rocker rocket rockfish rockiness rocking rocklike rockslide rockstar rocky rogue roman romp rope roping roster rosy rotten rotting rotunda roulette rounding roundish roundness roundup roundworm routine routing rover roving royal rubbed rubber rubbing rubble rubdown ruby ruckus rudder rug ruined rule rumble rumbling rummage rumor runaround rundown runner running runny runt runway rupture rural ruse rush rust rut sabbath sabotage sacrament sacred sacrifice sadden saddlebag saddled saddling sadly sadness safari safeguard safehouse safely safeness saffron saga sage sagging saggy said saint sake salad salami salaried salary saline salon saloon salsa salt salutary salute salvage salvaging salvation same sample sampling sanction sanctity sanctuary sandal sandbag sandbank sandbar sandblast sandbox sanded sandfish sanding sandlot sandpaper sandpit sandstone sandstorm sandworm sandy sanitary sanitizer sank santa sapling sappiness sappy sarcasm sarcastic sardine sash sasquatch sassy satchel satiable satin satirical satisfied satisfy saturate saturday sauciness saucy sauna savage savanna saved savings savior savor saxophone say scabbed scabby scalded scalding scale scaling scallion scallop scalping scam scandal scanner scanning scant scapegoat scarce scarcity scarecrow scared scarf scarily scariness scarring scary scavenger scenic schedule schematic scheme scheming schilling schnapps scholar science scientist scion scoff scolding scone scoop scooter scope scorch scorebook scorecard scored scoreless scorer scoring scorn scorpion scotch scoundrel scoured scouring scouting scouts scowling scrabble scraggly scrambled scrambler scrap scratch scrawny screen scribble scribe scribing scrimmage script scroll scrooge scrounger scrubbed scrubber scruffy scrunch scrutiny scuba scuff sculptor sculpture scurvy scuttle secluded secluding seclusion second secrecy secret sectional sector secular securely security sedan sedate sedation sedative sediment seduce seducing segment seismic seizing seldom selected selection selective selector self seltzer semantic semester semicolon semifinal seminar semisoft semisweet senate senator send senior senorita sensation sensitive sensitize sensually sensuous sepia september septic septum sequel sequence sequester series sermon serotonin serpent serrated serve service serving sesame sessions setback setting settle settling setup sevenfold seventeen seventh seventy severity shabby shack shaded shadily shadiness shading shadow shady shaft shakable shakily shakiness shaking shaky shale shallot shallow shame shampoo shamrock shank shanty shape shaping share sharpener sharper sharpie sharply sharpness shawl sheath shed sheep sheet shelf shell shelter shelve shelving sherry shield shifter shifting shiftless shifty shimmer shimmy shindig shine shingle shininess shining shiny ship shirt shivering shock shone shoplift shopper shopping shoptalk shore shortage shortcake shortcut shorten shorter shorthand shortlist shortly shortness shorts shortwave shorty shout shove showbiz showcase showdown shower showgirl showing showman shown showoff showpiece showplace showroom showy shrank shrapnel shredder shredding shrewdly shriek shrill shrimp shrine shrink shrivel shrouded shrubbery shrubs shrug shrunk shucking shudder shuffle shuffling shun shush shut shy siamese siberian sibling siding sierra siesta sift sighing silenced silencer silent silica silicon silk silliness silly silo silt silver similarly simile simmering simple simplify simply sincere sincerity singer singing single singular sinister sinless sinner sinuous sip siren sister sitcom sitter sitting situated situation sixfold sixteen sixth sixties sixtieth sixtyfold sizable sizably size sizing sizzle sizzling skater skating skedaddle skeletal skeleton skeptic sketch skewed skewer skid skied skier skies skiing skilled skillet skillful skimmed skimmer skimming skimpily skincare skinhead skinless skinning skinny skintight skipper skipping skirmish skirt skittle skydiver skylight skyline skype skyrocket skyward slab slacked slacker slacking slackness slacks slain slam slander slang slapping slapstick slashed slashing slate slather slaw sled sleek sleep sleet sleeve slept sliceable sliced slicer slicing slick slider slideshow sliding slighted slighting slightly slimness slimy slinging slingshot slinky slip slit sliver slobbery slogan sloped sloping sloppily sloppy slot slouching slouchy sludge slug slum slurp slush sly small smartly smartness smasher smashing smashup smell smelting smile smilingly smirk smite smith smitten smock smog smoked smokeless smokiness smoking smoky smolder smooth smother smudge smudgy smuggler smuggling smugly smugness snack snagged snaking snap snare snarl snazzy sneak sneer sneeze sneezing snide sniff snippet snipping snitch snooper snooze snore snoring snorkel snort snout snowbird snowboard snowbound snowcap snowdrift snowdrop snowfall snowfield snowflake snowiness snowless snowman snowplow snowshoe snowstorm snowsuit snowy snub snuff snuggle snugly snugness speak spearfish spearhead spearman spearmint species specimen specked speckled specks spectacle spectator spectrum speculate speech speed spellbind speller spelling spendable spender spending spent spew sphere spherical sphinx spider spied spiffy spill spilt spinach spinal spindle spinner spinning spinout spinster spiny spiral spirited spiritism spirits spiritual splashed splashing splashy splatter spleen splendid splendor splice splicing splinter splotchy splurge spoilage spoiled spoiler spoiling spoils spoken spokesman sponge spongy sponsor spoof spookily spooky spool spoon spore sporting sports sporty spotless spotlight spotted spotter spotting spotty spousal spouse spout sprain sprang sprawl spray spree sprig spring sprinkled sprinkler sprint sprite sprout spruce sprung spry spud spur sputter spyglass squabble squad squall squander squash squatted squatter squatting squeak squealer squealing squeamish squeegee squeeze squeezing squid squiggle squiggly squint squire squirt squishier squishy stability stabilize stable stack stadium staff stage staging stagnant stagnate stainable stained staining stainless stalemate staleness stalling stallion stamina stammer stamp stand stank staple stapling starboard starch stardom stardust starfish stargazer staring stark starless starlet starlight starlit starring starry starship starter starting startle startling startup starved starving stash state static statistic statue stature status statute statutory staunch stays steadfast steadier steadily steadying steam steed steep steerable steering steersman stegosaur stellar stem stench stencil step stereo sterile sterility sterilize sterling sternness sternum stew stick stiffen stiffly stiffness stifle stifling stillness stilt stimulant stimulate stimuli stimulus stinger stingily stinging stingray stingy stinking stinky stipend stipulate stir stitch stock stoic stoke stole stomp stonewall stoneware stonework stoning stony stood stooge stool stoop stoplight stoppable stoppage stopped stopper stopping stopwatch storable storage storeroom storewide storm stout stove stowaway stowing straddle straggler strained strainer straining strangely stranger strangle strategic strategy stratus straw stray streak stream street strength strenuous strep stress stretch strewn stricken strict stride strife strike striking strive striving strobe strode stroller strongbox strongly strongman struck structure strudel struggle strum strung strut stubbed stubble stubbly stubborn stucco stuck student studied studio study stuffed stuffing stuffy stumble stumbling stump stung stunned stunner stunning stunt stupor sturdily sturdy styling stylishly stylist stylized stylus suave subarctic subatomic subdivide subdued subduing subfloor subgroup subheader subject sublease sublet sublevel sublime submarine submerge submersed submitter subpanel subpar subplot subprime subscribe subscript subsector subside subsiding subsidize subsidy subsoil subsonic substance subsystem subtext subtitle subtly subtotal subtract subtype suburb subway subwoofer subzero succulent such suction sudden sudoku suds sufferer suffering suffice suffix suffocate suffrage sugar suggest suing suitable suitably suitcase suitor sulfate sulfide sulfite sulfur sulk sullen sulphate sulphuric sultry superbowl superglue superhero superior superjet superman supermom supernova supervise supper supplier supply support supremacy supreme surcharge surely sureness surface surfacing surfboard surfer surgery surgical surging surname surpass surplus surprise surreal surrender surrogate surround survey survival survive surviving survivor sushi suspect suspend suspense sustained sustainer swab swaddling swagger swampland swan swapping swarm sway swear sweat sweep swell swept swerve swifter swiftly swiftness swimmable swimmer swimming swimsuit swimwear swinger swinging swipe swirl switch swivel swizzle swooned swoop swoosh swore sworn swung sycamore sympathy symphonic symphony symptom synapse syndrome synergy synopses synopsis synthesis synthetic syrup system t-shirt tabasco tabby tableful tables tablet tableware tabloid tackiness tacking tackle tackling tacky taco tactful tactical tactics tactile tactless tadpole taekwondo tag tainted take taking talcum talisman tall talon tamale tameness tamer tamper tank tanned tannery tanning tantrum tapeless tapered tapering tapestry tapioca tapping taps tarantula target tarmac tarnish tarot tartar tartly tartness task tassel taste tastiness tasting tasty tattered tattle tattling tattoo taunt tavern thank that thaw theater theatrics thee theft theme theology theorize thermal thermos thesaurus these thesis thespian thicken thicket thickness thieving thievish thigh thimble thing think thinly thinner thinness thinning thirstily thirsting thirsty thirteen thirty thong thorn those thousand thrash thread threaten threefold thrift thrill thrive thriving throat throbbing throng throttle throwaway throwback thrower throwing thud thumb thumping thursday thus thwarting thyself tiara tibia tidal tidbit tidiness tidings tidy tiger tighten tightly tightness tightrope tightwad tigress tile tiling till tilt timid timing timothy tinderbox tinfoil tingle tingling tingly tinker tinkling tinsel tinsmith tint tinwork tiny tipoff tipped tipper tipping tiptoeing tiptop tiring tissue trace tracing track traction tractor trade trading tradition traffic tragedy trailing trailside train traitor trance tranquil transfer transform translate transpire transport transpose trapdoor trapeze trapezoid trapped trapper trapping traps trash travel traverse travesty tray treachery treading treadmill treason treat treble tree trekker tremble trembling tremor trench trend trespass triage trial triangle tribesman tribunal tribune tributary tribute triceps trickery trickily tricking trickle trickster tricky tricolor tricycle trident tried trifle trifocals trillion trilogy trimester trimmer trimming trimness trinity trio tripod tripping triumph trivial trodden trolling trombone trophy tropical tropics trouble troubling trough trousers trout trowel truce truck truffle trump trunks trustable trustee trustful trusting trustless truth try tubby tubeless tubular tucking tuesday tug tuition tulip tumble tumbling tummy turban turbine turbofan turbojet turbulent turf turkey turmoil turret turtle tusk tutor tutu tux tweak tweed tweet tweezers twelve twentieth twenty twerp twice twiddle twiddling twig twilight twine twins twirl twistable twisted twister twisting twisty twitch twitter tycoon tying tyke udder ultimate ultimatum ultra umbilical umbrella umpire unabashed unable unadorned unadvised unafraid unaired unaligned unaltered unarmored unashamed unaudited unawake unaware unbaked unbalance unbeaten unbend unbent unbiased unbitten unblended unblessed unblock unbolted unbounded unboxed unbraided unbridle unbroken unbuckled unbundle unburned unbutton uncanny uncapped uncaring uncertain unchain unchanged uncharted uncheck uncivil unclad unclaimed unclamped unclasp uncle unclip uncloak unclog unclothed uncoated uncoiled uncolored uncombed uncommon uncooked uncork uncorrupt uncounted uncouple uncouth uncover uncross uncrown uncrushed uncured uncurious uncurled uncut undamaged undated undaunted undead undecided undefined underage underarm undercoat undercook undercut underdog underdone underfed underfeed underfoot undergo undergrad underhand underline underling undermine undermost underpaid underpass underpay underrate undertake undertone undertook undertow underuse underwear underwent underwire undesired undiluted undivided undocked undoing undone undrafted undress undrilled undusted undying unearned unearth unease uneasily uneasy uneatable uneaten unedited unelected unending unengaged unenvied unequal unethical uneven unexpired unexposed unfailing unfair unfasten unfazed unfeeling unfiled unfilled unfitted unfitting unfixable unfixed unflawed unfocused unfold unfounded unframed unfreeze unfrosted unfrozen unfunded unglazed ungloved unglue ungodly ungraded ungreased unguarded unguided unhappily unhappy unharmed unhealthy unheard unhearing unheated unhelpful unhidden unhinge unhitched unholy unhook unicorn unicycle unified unifier uniformed uniformly unify unimpeded uninjured uninstall uninsured uninvited union uniquely unisexual unison unissued unit universal universe unjustly unkempt unkind unknotted unknowing unknown unlaced unlatch unlawful unleaded unlearned unleash unless unleveled unlighted unlikable unlimited unlined unlinked unlisted unlit unlivable unloaded unloader unlocked unlocking unlovable unloved unlovely unloving unluckily unlucky unmade unmanaged unmanned unmapped unmarked unmasked unmasking unmatched unmindful unmixable unmixed unmolded unmoral unmovable unmoved unmoving unnamable unnamed unnatural unneeded unnerve unnerving unnoticed unopened unopposed unpack unpadded unpaid unpainted unpaired unpaved unpeeled unpicked unpiloted unpinned unplanned unplanted unpleased unpledged unplowed unplug unpopular unproven unquote unranked unrated unraveled unreached unread unreal unreeling unrefined unrelated unrented unrest unretired unrevised unrigged unripe unrivaled unroasted unrobed unroll unruffled unruly unrushed unsaddle unsafe unsaid unsalted unsaved unsavory unscathed unscented unscrew unsealed unseated unsecured unseeing unseemly unseen unselect unselfish unsent unsettled unshackle unshaken unshaved unshaven unsheathe unshipped unsightly unsigned unskilled unsliced unsmooth unsnap unsocial unsoiled unsold unsolved unsorted unspoiled unspoken unstable unstaffed unstamped unsteady unsterile unstirred unstitch unstopped unstuck unstuffed unstylish unsubtle unsubtly unsuited unsure unsworn untagged untainted untaken untamed untangled untapped untaxed unthawed unthread untidy untie until untimed untimely untitled untoasted untold untouched untracked untrained untreated untried untrimmed untrue untruth unturned untwist untying unusable unused unusual unvalued unvaried unvarying unveiled unveiling unvented unviable unvisited unvocal unwanted unwarlike unwary unwashed unwatched unweave unwed unwelcome unwell unwieldy unwilling unwind unwired unwitting unwomanly unworldly unworn unworried unworthy unwound unwoven unwrapped unwritten unzip upbeat upchuck upcoming upcountry update upfront upgrade upheaval upheld uphill uphold uplifted uplifting upload upon upper upright uprising upriver uproar uproot upscale upside upstage upstairs upstart upstate upstream upstroke upswing uptake uptight uptown upturned upward upwind uranium urban urchin urethane urgency urgent urging urologist urology usable usage useable used uselessly user usher usual utensil utility utilize utmost utopia utter vacancy vacant vacate vacation vagabond vagrancy vagrantly vaguely vagueness valiant valid valium valley valuables value vanilla vanish vanity vanquish vantage vaporizer variable variably varied variety various varmint varnish varsity varying vascular vaseline vastly vastness veal vegan veggie vehicular velcro velocity velvet vendetta vending vendor veneering vengeful venomous ventricle venture venue venus verbalize verbally verbose verdict verify verse version versus vertebrae vertical vertigo very vessel vest veteran veto vexingly viability viable vibes vice vicinity victory video viewable viewer viewing viewless viewpoint vigorous village villain vindicate vineyard vintage violate violation violator violet violin viper viral virtual virtuous virus visa viscosity viscous viselike visible visibly vision visiting visitor visor vista vitality vitalize vitally vitamins vivacious vividly vividness vixen vocalist vocalize vocally vocation voice voicing void volatile volley voltage volumes voter voting voucher vowed vowel voyage wackiness wad wafer waffle waged wager wages waggle wagon wake waking walk walmart walnut walrus waltz wand wannabe wanted wanting wasabi washable washbasin washboard washbowl washcloth washday washed washer washhouse washing washout washroom washstand washtub wasp wasting watch water waviness waving wavy whacking whacky wham wharf wheat whenever whiff whimsical whinny whiny whisking whoever whole whomever whoopee whooping whoops why wick widely widen widget widow width wieldable wielder wife wifi wikipedia wildcard wildcat wilder wildfire wildfowl wildland wildlife wildly wildness willed willfully willing willow willpower wilt wimp wince wincing wind wing winking winner winnings winter wipe wired wireless wiring wiry wisdom wise wish wisplike wispy wistful wizard wobble wobbling wobbly wok wolf wolverine womanhood womankind womanless womanlike womanly womb woof wooing wool woozy word work worried worrier worrisome worry worsening worshiper worst wound woven wow wrangle wrath wreath wreckage wrecker wrecking wrench wriggle wriggly wrinkle wrinkly wrist writing written wrongdoer wronged wrongful wrongly wrongness wrought xbox xerox yahoo yam yanking yapping yard yarn yeah yearbook yearling yearly yearning yeast yelling yelp yen yesterday yiddish yield yin yippee yo-yo yodel yoga yogurt yonder yoyo yummy zap zealous zebra zen zeppelin zero zestfully zesty zigzagged zipfile zipping zippy zips zit zodiac zombie zone zoning zookeeper zoologist zoology zoom secrets-5.1/data/database.kdbx000066400000000000000000000023201415312107300163500ustar00rootroot00000000000000٢gK+oL$31۵ ZȼxV^MޠFBς&lY .'^1 B$UUIDcmߌ)DK IMPBS r6ޟf1{f?߂={ʵ]sV Hȏ&|dqĬшCcsSndE)GO`b^&C`Xāb 'koU/*DDa+Ayb|c蝾UY `(̓r *xr.C DfgR\o v.xl+D9Α ""( D}Ϳ&Bޯuj߾ iK6Cb9ѝ;+Q;HZ`"KķVAQ tePuLVڑQUu)߁zxmRPە#o6'- ^n5,Wˣ@ Y*U 7GD2xQ(UŰ`@%@y"@㓻fR[$rf secrets-5.1/data/database_settings_dialog.ui000066400000000000000000001411111415312107300212760ustar00rootroot00000000000000 False center 400 400 vertical True True True False True True False dbsd_stack True False 18 18 18 18 True False True False 200 True False start 10 10 10 10 vertical True False start start 15 Details True False False 6 12 True True False end False Path right middle 0 1 True False end File Size right middle 0 2 True False end Safe Name right middle 0 0 True False start - end 1 0 True False end KeePass Version right middle 0 3 True False end Creation Date right middle 0 4 True False end Encryption Algorithm right middle 0 5 True False end Derivation Algorithm right middle 0 6 True False start - end True char 2 1 1 True False start - end 1 2 True False start - end 1 3 True False start - end 1 4 True False start - end 1 5 True False start - end 1 6 True False start start 30 15 Stats True False False 6 12 True True False end False Number of Groups right middle 0 1 True False end Passwords right middle 0 2 True False end Number of Entries right middle 0 0 True False start - end 1 0 True False start - end 1 1 True False start - end 1 2 general_page General preferences-system-details-symbolic True False 10 10 10 10 vertical True False start start 15 Password True False 6 12 True False end _New True new_password_entry right 0 1 new_entry True True True False security-high-symbolic Generate Password Generate Password password 1 1 True False end C_onfirm right True confirm_password_entry 0 2 True True True False user-not-tracked-symbolic password 1 2 True False end _Current True current_password_entry right 0 0 True True True False password 1 0 True False True 5 discrete 1 3 True False start start 30 15 Keyfile True False 44 True False True vertical 50 50 True True True center center True False document-open-symbolic True False 5 _Select current keyfile center True 5 True select_keyfile_button True False media-playlist-consecutive-symbolic True False True vertical 50 50 True True True center center True False security-high-symbolic True False 5 _Generate new keyfile center True 5 True generate_keyfile_button _Apply Changes True True True end end 30 True True auth_page Authentication 1 security-high-symbolic True False 10 10 True vertical True False start start 15 Encryption Algorithm True False True False chacha20 200 35 True True True False start ChaCha20: 256-bit twofish 200 35 True True True False start Twofish: 256-bit aes256 200 35 True True True False start AES: 256-bit True False start start 30 15 Key Derivation Function True False True False argon2 200 35 True True True False start Argon2 (KeePass 4) aeskdf 200 35 True True True False start AES-KDF (KeePass 3.1) Apply Changes True True True end end 30 True secrets-5.1/data/entry_page.ui000066400000000000000000000475431415312107300164460ustar00rootroot00000000000000 secrets-5.1/data/entry_row.ui000066400000000000000000000142401415312107300163250ustar00rootroot00000000000000 entry_event_box 3 secrets-5.1/data/group_page.ui000066400000000000000000000130211415312107300164210ustar00rootroot00000000000000 secrets-5.1/data/group_row.ui000066400000000000000000000064301415312107300163220ustar00rootroot00000000000000 group_event_box 3 secrets-5.1/data/gtk/000077500000000000000000000000001415312107300145225ustar00rootroot00000000000000secrets-5.1/data/gtk/help-overlay.ui000066400000000000000000000134471415312107300175010ustar00rootroot00000000000000 True True shortcuts 10 True Application True Create safe app.new True Open safe app.open True Open preferences app.settings True Show Shortcuts win.show-help-overlay True Quit app.quit True Safe True Lock safe app.db.lock True Save safe app.db.save True Open search <Primary>F True Create entry app.db.add_entry True Create group app.db.add_group True Entry True Copy password <Primary><Shift>C True Copy username <Primary><Shift>B True Go back Escape secrets-5.1/data/icon_widget.ui000066400000000000000000000010501415312107300165630ustar00rootroot00000000000000 True True True 6 6 6 6 secrets-5.1/data/icons/000077500000000000000000000000001415312107300150505ustar00rootroot00000000000000secrets-5.1/data/icons/currency-symbolic.svg000066400000000000000000000062561415312107300212530ustar00rootroot00000000000000 image/svg+xml secrets-5.1/data/icons/hicolor/000077500000000000000000000000001415312107300165075ustar00rootroot00000000000000secrets-5.1/data/icons/hicolor/scalable/000077500000000000000000000000001415312107300202555ustar00rootroot00000000000000secrets-5.1/data/icons/hicolor/scalable/apps/000077500000000000000000000000001415312107300212205ustar00rootroot00000000000000secrets-5.1/data/icons/hicolor/scalable/apps/org.gnome.PasswordSafe.Devel.svg000066400000000000000000000232671415312107300273040ustar00rootroot00000000000000 secrets-5.1/data/icons/hicolor/scalable/apps/org.gnome.PasswordSafe.svg000066400000000000000000000121461415312107300262400ustar00rootroot00000000000000 secrets-5.1/data/icons/hicolor/symbolic/000077500000000000000000000000001415312107300203305ustar00rootroot00000000000000secrets-5.1/data/icons/hicolor/symbolic/apps/000077500000000000000000000000001415312107300212735ustar00rootroot00000000000000secrets-5.1/data/icons/hicolor/symbolic/apps/org.gnome.PasswordSafe-symbolic.svg000066400000000000000000000023501415312107300301260ustar00rootroot00000000000000 secrets-5.1/data/icons/meson.build000066400000000000000000000015221415312107300172120ustar00rootroot00000000000000datadir = join_paths('share', 'icons') icondir = join_paths('hicolor', 'scalable', 'apps') if get_option('profile') == 'development' install_data ( join_paths(icondir, 'org.gnome.PasswordSafe.Devel.svg'), install_dir: join_paths(datadir, icondir), rename: 'org.gnome.PasswordSafeDevel.svg' ) else install_data ( join_paths(icondir, 'org.gnome.PasswordSafe.svg'), install_dir: join_paths(datadir, icondir) ) endif icondir = join_paths('hicolor', 'symbolic', 'apps') if get_option('profile') == 'development' install_data ( join_paths(icondir, 'org.gnome.PasswordSafe-symbolic.svg'), install_dir: join_paths(datadir, icondir), rename: 'org.gnome.PasswordSafeDevel-symbolic.svg' ) else install_data ( join_paths(icondir, 'org.gnome.PasswordSafe-symbolic.svg'), install_dir: join_paths(datadir, icondir) ) endif secrets-5.1/data/images/000077500000000000000000000000001415312107300152025ustar00rootroot00000000000000secrets-5.1/data/images/welcome.png000066400000000000000000004261231415312107300173530ustar00rootroot00000000000000PNG  IHDRL<bKGD pHYs B(xtIME_tEXtAuthorJJ Ying NtEXtCopyrightCC0-1.0u IDATx{uW]:\}|. \jj0HDAQ ZPR ('E9}ZUk@"* JByZ[EET(K{kqXk͵Pwu{1s@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ p`\G;u($ @=LD@$" @4'^ @ o '?w+}5{ۯpLP!@ KP3XXIAgB=z$ " {VOA ?_JîH#}=zgvqw@ ܭ'@ @j97 4>0TdۑH>e~Hg3=PFRA06 b@ Ewox IR ''&l04m1M1W BpLK' ;uϧ< &U ُ҉sl ާ5³:@ >ƈ6$/DhP! ^ҫTU ZLy9VjB,9wG;n5kd}`i;pg wJ,ҍp/h[ntwH q"^'/?6F_ AxnGx4 @4 {Bb($WdHz)hfcݝJ4ϚgV V$a"Xoc'Jx)IYq"Hς =p \ٟ@ fJc!|"(&ȝ2B~qA?5#<"@ɶ[Dʧ$X%5y5bׅ~EV@wx' x G}]@ d-7x K@} x3)rU4zEZu`Z4cn5¬W`>ZKx5s)Cěg6mj*l4'Xw«AU@^曦3%s|3$΀{0gVt] q\,ZA&":$H` j"WEa z D!|z ݖ'wԤ-2Gc )-K{}: |M#{$S?1.N+@Cf35du VTw"˜lĦ5Z)'RR}UrqF\H%#?]7-kYMa%6pt*]`sZ@ Gt? _LHb*@J-oe2L-`&2j6؊ 'LWtrǶ[_i+9IР2WxkV2 CU'[tQ(~'^}> z\w&p"_L98N\[]#@Y02RNX0U^ ~/ >WGE >JOq+n rU]JP\+Z;"X)F"JE3а4 *Gf'ԑ6xҎS.f{2h[pCT9mKݺ]A$3%Bvg؇kpj @ #o+=Wx(kH>`|iN&3%`\ДGP[.IX]|p%܊̐ye^pߝjF&pMZ35ORjFj<$avh uHŜROx tvJ_p2~IwCt>ލw] -?x(UNX9%n`@&Rlmĺ͊^;-VdtZ;7N SQׯfEXGsN9ZLYQ Vr4z]ަ&&R;Y!몮 gm DuO|L@ oo/w4!rpR gMUy,OZ[ fdrՍgaȮʆ(3IeNfk}i챰:ddw䮆[MxZ SEᆣz_UT& < >s _u7S%ۮTzN@ o#Nt ljA7%`ő(yОcwZV[T,\3Ed&9ͬ+yFal dmj'lt4zf[HLt,K* 6MUqk댛=WX [CQK]=5xIx5~ = .'"KhQ&^$[JgZwk,٫T9v̒\5a,ĺXXZ؜C%Kcy2v9BYl}M؍ed *ҫ95 UOsۮܬ݀t]r==oޛ| @wK'^VlI*a+Ej,PUw*FAb] 2I\;-. 2/}oELg4U5FeYK:;]&,|bnkJ Uzb+v,heEܹH\@_/_&c"L/לvFhF4VX4vs k vTۙ7M{e7\]4?JG[;:Lgyb.| \$c<KG7]AU%XPλy,a8/  o~/#Eia{nWN~K+@s?1Az@ 7pd GVT-{h&8y-.ܩ]'".,YeC*T^6A.^flI:Fe!2 b, SX4KjJ,mRdk`mn?2 sq}r Hnb3,6bpj"7N@$/6@/xLH@ 7P׿vbTYטsFӣ4n%mɑu"mZ"Mp8Mt*傫pbE-pTNV*7üs':":wZWu6.vAcXb-QUeHw\HO%,7? s{@ 7o~۷ \EoY[ ohrpm FRh o[)l e-8nt9>yA^ijf+kٌNH3&G$#ΆW3g޻=r~*<Ꝩɵaڏ4U47*v{)N%jB@_ @ /~;2WdۑAdhO,ֳPA_K԰ѳٍsr/Xfq&Z0D+vhbt19m#uy;XEjȧ#Ƣ?MV%P$7qlޓwLj4?ό;Àn'}V@ {/Ƌ~;.pmTpYȥ[kl} M3C"91\_eG4;k]u'CŶY4Ճظi6.4݈Fԁ 55z|lMydJ\r t*4'̐ <,sMybq9A yO:Ho o~;2Wbi HI'dum—(\aL{čhG֚L&۹VۏKk%4bUosh[[LACwaKO3)# YMy+za/:Z̉j<*ZBa5ׅf,('Q+j]5D;\1댉7AxM?6^pr:mux)=*NJkGLdrLRUUUA (e_5WNX94P\<'#] t>S]1XQZj.ik|Bu-D&Vf{$IOND8Z){֒m a m7Ax?Ÿx Ax,OF*h &̺"x3Wc㳭 *rUC\ *ͭhj@oF`NbdU^9\eۄvA-Q|+qS:#Giln"cKw<1Llrv2Yml"0H`q_@ ſ_>1 }`&GpD~,$T`%T4+e1EVNv8#ub%V}蛼z#@Pc_@Z>Xt!ӐNNsj,1L1){K77IMu2]Ӥ5B -0Tz%'?&Ho ~?KWxg8e9[F7ةBDlZ\EMHV%XH6%ZOجWP٪Wh\U$a`,b硻;hkSf6G-OUrUżM6")'H6N^q`ALe?IPM^GKr+d2UGOț_8y&&:v_ΪAidDB%:Ze=^RR_+s95Ge p7@ G=~J/JdwaKf 낖zʥ Т&$TW2raa0h9jk%d=a0T+Kx')ME3഼Smsmmq_[e+*sFl=q 8R4 vTTUԲDȫ|yspKX#ƼlmeAcՌ[l z!o@ޏF<~J/" LNEjX rE4"Bpm2QCVTjE" @Ve DF]|'4bU6,@OvQnNpڴ݊sqG(rVwHD {V%=Yw:gzTjQSdp'B۬fl=uFw>UY:-[7^m/x5Az@ oRdni+%CfkjMQJY :9.ٗ$J5k o:pmVn7lYܓm58p=] .),4F:k\]Tf,^K$K F>_ȽJTQ։R\'LR;j~w#3Y3Bm֪'g6>Vx=^@ ~mWS4PB甕\$n\509_*Ғ!UZ["+ST Vy*-`V`+.D8@G)Cbzj$4HlhfמE+ fI7~' IDATS7GZݩFX'"U$ s%vFBiBfMx~V:C`evàj x @ p%Ce7#yBƤ@^UYW'U))@NƗVΕ1]Kr^eZy-- aFf 6kdѸҍ ^Ґh Lf5 0UdCfEe 1pӑMf6w>m >D$753 { M$TDs˴e X=r6{Z:/}rnp=^O@ 9JcNJM斦r U78!)WhU{Zc“'6DI"&2bgՖ'0}emULVdV Y&4ܴ(ШUe-MmYWy\71}J25e5$Mx._'Vvp" y΃H+nAz@ Ԉg<ʳXc*Kiƍi UZ=0MF1F#Z%kn޳y,PiQ˰`3Kר^:+1/1X57iГ&}b:dPS),.'S1ϖig}% Zh[Af("H&?G"3t:"iμfanFsr]D6]Ohd @޿u|+U*gQrU=TFomycӐ)Lz!n"!^=["h\i<3a`#آlt`i&بF-Ca&5]󧦭i[ixG"./l=1sj:nO&KX_G]_yɴ<7nqad7%D @ AK0kۮ|0VvelzxҚ/#ȏhGK2F1]Kf}\ a971oG.ZV7Ӭ`0Yҝ~s4 [ҥN\mrh1\^Go5;smc#>5ޘiAe$1:K.T]!-mx$}ԑ_yZZm\ zwo&>@ FTx< g8]@n0!lZ.Q4xաVĬ6Gk*Mj*_NUi־0Xxbt? ZVj 0]e+/,4Gsk˲⁑̋`11|pஒ;9G))ʖ*\ t)}9KWI7Z~en˫cA\u+pF7A+_x<:eyh7}%0B*{UM IJ@edSUU*\3 S]Dջ1`B5Z9jSXއݘK?RGQIdۀ)Ho4q=T{RJOe+=*q-Oar_%iyg&n.Dg76.TyNK>{f6nwZ@Cx{㻣  @m:C`#AH˗T}wƦ!_"\vɽyҐxf2%fJSʕͲ fLscLϓqtB41I,,'z/V]փe~d'$(K:0io'9-?e*c 2k+ %I}s`#~|/^lJ2/̎iZ xwxk@ |Dp4|~nu ^*$UT$&y=Dըfl3aZZn UL]hm#Pi\f;%)J S+6irJ1 5Ƭ.ӼW Wha]2d`d6^P[#HU_udT!p/L͵џ>GytF2^ V=b-?HmK\/඗dž!Ax:x~~u^F* wKtovcS#9~y1xk&MUfLDsE5 did$:M.ۭ9S+ n'AYJ8ֵAмPC쎏0ڗlp5'-h=m^ְ)&y B!6:RLsYI&EGii)AW3skVӭ 1)ef}/f9i WFf0لňet¨ <$>@ 7v_Coݑtم謝Seɦb9%TEcK-/Y5r2uoʮzT|M+IPDٟj:T?}3M9se:OUN\U˙VpQ', ]32 t .6axjԹSё-oj"WY]=ֻ&4o:sξyf'VM{LH\{YؤA6wy!:Nb+z^u^hṕJE"/]gM79#k=;o%*@ »gDCx`t 3~Fzᣀ' <I%!H촘P*rykJ@T[c֞(QkL!;M^Fa뼖NߋNUܔXƃDʴf4l#'f̵ܶ6n鱖R\ougRT;:j*2x")y΃:k@<;n _I 44TFGBXҕɃKbUyZ#;H2,p “sCR> #p3gJsBf-!YB+ruQttץ:jʆINHz&ߵwZR=l{Z|hmevD8P'UW y?3z49.i*Zj"du.#7Ms`"2DS!޽@ '+5x퍧%@ puggOj/Hഏ9jZNpU0d%.{VN n;4Ԡt\2mwU<I|e8_JiZ&cT;Yd{>UJpEj8ñ&⾺nѠr [NVb, hQVŽN NwVQcu=Zmg<~&WkzpW|'"Ɋ5+y].[@ OggJ/aQi0D uښtV06-o[ũy @*8 c!uq̲xLκΖ8@g f! &̄W5-мe8*n)ұAE2%e 7&U˵!k@)XF-ڪn}NIiʜM^fyInԊj͚}Zܡ2=oO4==A]77INX[YT)!kf*p{woURBT$ BM4z[oYZHW:5t` $m *.W@Y2-VV9oNLuhd"K6]-Wf}fګ gWsՃԼ%4.4b{gTH&BU8wVUxUʜr[}MK]dvXW{-_q3fNr]Y ;ͪ_q%贀 {{K!^qV;]n5YVܵO 15M4ֽ ˑ&n)_ڰohPh^NL^mU}T:h81Om+2|P&l\%}Ҽ.W:S9t$#gpl:i6"9g]G<7Lٳ.@;f`b.rQ3s[瑽iZGꐵOW{)!А6͇L'f1 PBVz֤ 5OM#PUrÂ+ Bɫ"~¨"H2v_?& å&Ι oaHX;ٙ:CY8rvZ{ 5e50.d(͔R,&xX.MUJNN)at=eC,P~tvU,~Q~k8O/}c7B"OFݜd@/{5~^VjF/}5ηoyc7ҧV[Y\5|]o{˭cʷF?[x/ku5A>[[Hq7Dx\oi|?}!UOnUO{鍿BZ][ybc N=?e^ 4`JX)INh;̉ q!lG"/=Rw=83d}wW\pxKBg&m?z\oW.@S88/,>.塀]F ݝWsQm?WڹZC1mQj.w%ݮxa+ˮ~ ẓ?]KS`Z?Sw?O~z_}r8~5#ؽ_iy;xC 6]q`cw,"Rs'8O?u ;G[fk衟y<wn_׉q|ا=Wq^qq1@9|~uo{xI>};~?~<_I|͓Zm"AoУTmշT[uէcRGW=?=z#Ů&{Q<)&wotج_鏧_e=3 g.ٷ<gi?>c?Z}O}ܟ/'I({~w:.&~znb|4 _܏ >4Uv9֤LT&(E_&ѱb5a>>!,'CPU<ғWSl[m&lQ;E39bz}LzH"O:*T0'wZ9"p>!q {$A|+:9UR>1YV IDAT"Dۮ(5-p~ p5*s慾*iC+[ Y^wz$].t"%x%U0Wmy'(QXT/#JVۥ#Z bԋZq8@ӃID;U-ϬnCM/vZf<Xuqb4#/`; O5%l0[LN%[.=:sr?yl;ƪkSjԑՆWz]VmNݺ݃u;h۽nmuswŽ^v/Aw;l:vIV-^^{{+~ & ;tzv oO`ӎoGvhF:JxCý(:X,ʙĭK[\?%_vAW\G}"Inp%igs!ת_\o?pn;Φo?un~U{px~sb6`cVF;~yl4Fj777slݥI\rնHvS4W<]v3NǷF*zu]ׯָ{O͇]w:wvZch7iV@;:E6SunΫT-j$tmzaJIM 5Sӓ# HٴtZ5ݩS\~N:lonժ]% W"{]V&s# \% j:$x>q zcA<n.gنʊJc%MԘFͪ3}Oʓ5Shi^kKT_뒩&‰jhI0T|32J5FYK}4eX nY~5CTT].Wld6|(9RsUa͛%uR U'rmL2J ]Ui~c0|+M "G҂ӗ )iGEfdx6IЕ[CЍgЌ#0# ([Byl6XΓ~=~/A[fJlRJlU͍UjRR"SbDv&Q7:i4^^M/ѩo^î[}îk6mZ~nnMujmm#TvX@6]ۣo#c}G ꛁ2A}7}/}rfk:Rd7| Z+دVIЂZ}uka>Xs}xص@nB?AϤP4GrԴhm4l[ml 5iBZH腶RwIDln䥗5Ǐnksiy4{=f$nnlv[[[<}}^{h)5Id"Ѝ PJFLp4z"$Vi i4wϢwҰ}Iɼ캦!:qxFѭUIc"8k5_{߻B7}o5D6A<%h`]ʰٲPmMUd w{XKrӤp0h7`;5:gv6pى-\zb 'ocggK\4MhX3Mmup`q^;m8x 8x 8swq.vwq{SPh[`݂C8!ح[@}19TgC 2|í8kln\G0.%G=qݘnm+5!Z5 66 NHڮú[;D<ӗDJ`b~_mcqpYtpԏHVs6ni5qhS~55 (%"zq 8AL٠oV҉8vir2\r4;66&ql3>lAFoCC4}Az~,ZA]ev?'V~ӗ^<˜jN2R-,HbU8~Hc[U[ny x㦑hk $mjm@E-ƜU*h=lhHE<$sࡩ6GxVӑeS-TGmΑ^*TMjʄJ_AiHW)Ҭ/bU'TY7V~0aq3D'QXts"i6eon*=sߘ]:A#?l+Κ5ŝ0X[N~fjKW.;KOmllass[uº[qAu88 8wqEu".`wXR@wkk!pxzwځL)m26 L@?E+L@JٝFjh fBº^ ][|hwwn|gqpYh^rvvqskiEv IX%xvwpI\z <{',/^@ }עo!&"is0w+dq0o>7pgW^:=+& ]BةS8y .9u)N?cǰUC4 LL}2})j_.QL4@|-<7WxW $9,x/Z|@ѝƯ9۬3f(drL|,ϾJ[Z>КC;"t 逜t72,񋠩R/tSu72 +4UZtv ^#ٚ&lLy{ؓQZ+u#? 1]ݓ3a'^b+g.f3纥3qΡW+|U&"D]+Dna)'v&R3V%1(6z$m{;\coƅ5ஃ}ù=\ q.];voEho8#!^i2_P %_1l?'…}+D۵Mj4hp ma-\\8]ŇΝwsp}v6 YKDZlo\A wv-uzHMYHP']ꬦA'`w 4W~5icik ;ǏS8u4N?c[ǰ6V RSfVâ*(;vMjY HoTzÄ_ɻ,@rl1'`&T}변k*ZoΒ@ogʅ=Yϩ̐(,11e#kQmKOVR$0¢Y?K6Kpr@Yr>X/OHNH ]͂1L $c;A'yvj@„ҟx3-v ~r4׆N\x*KƷk9Ls$P^"O'p9 fw""@vW+\NnqNV+05.vd muv»{w>ݻE\_pavq ]/==*};hK}7ȕ~ dWhV:~ۧ.Kӧ}| xb;qC3X}cmc6+`cmJ8qዸ߷8w$þznuҜ ~=6 px(~(c0 Z˟0d9ԘCNw]9kE.ajv ԩsgF|7xz|x`6` _62ʶka[U< @`C0&~0&c=|F57#``-Gῇ/lVkm ӘeB%b;U1@6 7x<> G|C<Ըɜt8$+tq1XYn7X쮰nvú[mZ4$Vwe" 7^~ON  i,ی N>&E\X" <㣚ΓYFU4Լ۲"bIT `̉X1wH hF#!`/Iwi֗AK{Pk+ޜsX1$ӄcsM7RīzRby Z1Qn&|c\ʚ3\4dw/:Y&2:`kMHRI68F?ƀSq|0{=x}:錇O=ƯN3!1OKcpPGmv޷+;naϱW/cwjF61<g_#!>?ACb^$ Ƃm"Gi|O?} };A!cO,5CnL 205-@fq)1@vn_|~|x~WXh%ح4j"{&m#sڶ [GOGp{༃{b zLXJt6~mX6XMt "y2O~ڗĚy",T2xHD_7'wà_lksLsQG=OB;1;J!~f |am\(&$"*ҌˡZM$ lȁ1/crGȗy)W2TKBX٘=&3O#Ş[S)Չf9X3ڜG,g. RzZ<'#C\RjcS&)s(A>J~oHHxT U#QS;,jeu._,a0_a!Y(?2zLoh/A 5\uQ u6$eǰ!<ͱ'#ޜNxw:p==#>=Dm 1FC*@YVtƶh[lo/9^c=֛ڶ[pgX~o.)H͆+H>GF03N=>~|-:љc<0qi=0i2[ya1hHƤIH6ib;Ͽ>:^~p=V ,-LuRR"̫5hZjfk C1O3؃r~tqD?p!~֍!Xc`Ȥ50M`]5]ۡm[Ac x>ܢ*ڥ _MuDKS&Z@/{?|og_enVcT"匀[e"ͨL /6'3Dٚ,II1&$(bYjq'Z6L˘Dѓ4#X+@$XoaPr9 ~:C],'*@y l7,"c;O@RC#;#\$*ciH *LDنC*Ws`EhKi*Ґci`y0d)˙Tsi 3DXvfbZ`X(QZV'*>0|g nw 8 7z9f OOx{8xpD8CuhA)jn` `͈Mu&p8]DK60`k/}kxWpssn6ke4U^!3DQ>` Lcх~Fpޏu)m9x0g7\`4Dh0iam36Md#phmJ,a'"眙/9*,~^7~_gF,x"X7H&biw`[-^[/@ĢdC* *6?ڋ*jSH]ǴfW#kQ`$&GB-d=_< e2+W5¼LE-a9$d(|B1'$Upbzh:?eq՘0֙Fh/Olt)}Zhm@ۛ[+_Ë_ ֫m,Y"zyR!3IRvаuưbTrcRzD!JvJ1}60AHLm%Cq T{>"~7M +>6FdT+y{Z\\2B)В>D(9}{Q 5,"֤D(w̫ hf~?S,)Υf¥,殱gSB9/Q9T,`T"8KGgBs"Ŵ YW( ]#z2z's ODYJ0Γ93<yFu^r/)r(9BnJ78;Cضbt}4 #GMjix"<3hL{x8#p< 40qr2r9WւLYaa}uݳ{>x{\ճXom`a`J ?՞ IDATtO? ޼ GM{x #B0}&I<"=F7FXeI{*5HA ܴ`7=Nj_?dZ$]C%19Hkq&!˼SxĨ00 LrD4)6-j ]SUД% P(Wy"yv8ȧ5@A拧"*Pe8.o3x鞁j{2(p8aF,2NFTfMiZI) l?,ǫ3'5 r)&sC|t^pE3X|4=o@gV1yJ;ufD74%DFE+ k31PɆNP&0UZJ!HS,%&Ttsq& zS_Ti,s2MjA_BE4".j_Y_ V||h5LB߇PhdLVp&냉N,n]ChM~̤]q=S?<錧s?4xx?٠vz]vIY>TXLR.L۬ЭXﯱ=/cv׸c`Z11.kgf0a;ɏ~???'UCa <ck%œO w!FpHĺdJ`F1Dfl jW@]n_˯^|=vC46Thx$Bz6M!*:P{#W~]Lc\l4iʲ(崌A:"5{Ȕt}xS Sx{y/@gn܀ 9 c6& e).FӉЈ͟x)=!s(0J!fFQ >1ng;byK3X8 ᥁lnyvnzM) xŦ)w蟞~c@8-j蝄+<"6kxcs>_`q B1:WZ%OX~liAmt+`w|_qpusfz]&rDU!<I. Z ]H0tfm;--r ~[^i^ )a>;cʗr"bBCKʒ1CTV{3x߿g?b)-Z4V#D *H|ֻ'|QQ40Zj"3ZEĬ]%Ԛ&%YՀu&5(Crȋ~ufi)P$eb+\#9˧?::Z+ R 9}f*&&vCh-iC$@ddwWlzMG9yC?y'o#㤂CFÈ FKk8cxzӟg''I=$ d 7Cеz c(8$9CbC9e yDR# c5?_嗱]Vhl]&MLy$D<@g "嚿]hib!9ݻtvBVP)Ŭijs~f)xH[%;RM%K_SLC/a U GLu.}u PWt)B;MZ֒/%:QAk u[fnXTq1ʉSP[YКɨ\ ) ec1iwwx;Gvx аCG:30 v̂i7W<{ؼ׸c`Zktd#;ɰ1bt Ƈ78}So_c<p{b=T%9*Ї8Bbg Q50E4693p>9\e-ciuI1]SƬ\a{Gu*ɵlԀ򧼲Mk\Ɩ KV!#-ȉebj5GF\-R<1_|G ?o~zJof7߃H&RU˦@lbq3LJa-'*DQjBF%L9+GD286#C-Z9O,+%ǢMe UJfoYNmV[b!.|(S %VBRm|q |fGZ+џ2Z62%BX@8˪ƒ۹X뵱NҞNpvSy>Oz g*_ jEuK2 _Q5R%}8*e6AN?FҴ'3H'ZtjY X^0+V2{a31~ip){0zɍ!xc:x4xbB ]Y lAfaϱzq-Ϯpsfmע1 ,5.XO h+ь#NoN?"&z OMnb!L8ɂfGP.8¡8#ޏd GчX"e|22s$1 Ƒcw4V7{fQY_ƥ4Ke3B,|t\j%թ RN"R><|kJEJ)-I ֩%IbU ")>/}z*1-:ҞNŘ唭O|`vݛ DMqpJT %9$d-Ɋ^Y:VV~z>R9˱j(H0Y1w1e$*cY/>o8P̴~n?QJ0;eHD3ΕϤR!kket:r+Y(e(cj)4EQ@,2ڲ+XibS)z3a t5~ρ$k (kB[=:KX5vv'Ɩlq?AI)O sc}psw=z1z=acK;qD~qauNٲihWX%f_cw{-k+k瘱X"= qx<F,/N# <)/d1t.砞8ELJ eS?xYNžENg3e_OBbd%LyNnJOiJ,-5:YvQwĐf"RiIGTs\y/(?*X: .2Z.&(LDQ&X6|i傗g0N/*j/ ,UZX(KEQZ3h_dcs\MV -2e T0Kqw}qΕkAA&XCW>]LAU@y)RVŘy86YOerWCR8i! XbX51 }H7ީ*G}H 3w<:y}@<6zv=0X1B` YYmo3l~vnvmp^ak[EC>61ĤFa[¶08<޼x 8GML;#nj2%LES`Ŀ m5`=3|\djJ >CH&B2bʘ ܏xxaƣ%.c =(0 -` ]챹EgX?+\_mq]cufИ%vl~hM5طe3>y0 vЮAv3 E*ޙYG66}eFLp!/ks3#L]؍<YbDa0OxzxO#-hDFRRRvW,^dfE _IUeQbQ?Ȍ`=|aj21zz#vdlcʛ|rhR fAunba{~o~z?# 50?= 6N93s XKz,at:j-@ ^3οk$Z>kty @1%i 2d-PIҭkfR60IQ1G6昰g 8;P'm`+Wa$X*zp\RMz.u=I:#X-oךTh>gpܓrW>*9L ټbAZՁ'q'_T11lm]k[MS=!Mdx96N0%:L3<$]^+3y'; 05]wW`swճ[twWqsn D5IO?z`3p xx1hqj7G!`ι`!iaRlmct-2?Fn|q0KK|IvUJlv?w;\=m?/ձ@)#T "2oQvcABFOkQ &(L 'p)ɤ|-b&*b%b0&\bb W,J!'M=EX6c Y `-V9<´ÜGKEIՐU. t1WP$&SH-U(Q(F3E\eř2PR Cod E0AP~ju QP I JHKX%C|MLQV@Sa(V˟eY~&IZC +}&`SQʧ"Y-3K2ީ`]C`Ge-yU5Bxvnʦ< d E&ZJ800$fw>-hP5K(S~8\ۑ1kEޢB{w 6wX&nþk Vbe֢5%4$`o aؠ3yxwb,m@C5<[Fi,Vm]Ci`H'mnLj `%vnYbDKv.z  ޼۟д&ɤ2k-T4 W* *8aޡW)1($G T"k']8X>r]hGFKT1Y3S)3r)\jǸvcb Zrn (ۗTO&1藗CU3oO DC3(Gy|e~ZX]L1U"ƒRck ՞]E6ǭb]mLd.uWu;}pLG lf4q7~ ,<}?"n IDATu.(x/H V+tn&:juok\wmM`Dfwe-&~Z3ȰD -= <'< :u|_x@aԚDw6M_O+TBNss( efg}J8҈T/YX: [oqu]$P^g,ЧQ8e&NfZΩl׍A8Ӓ 0Wh[Z\$lDb5H x(랶@k ka|ûImbg'ab~:m-dlIRf 7ow:YIpvI&`IR !pd9T!`ٗPIBQO`,+GcxQ [R03oHdIg.:Q.4ieYs~n%e֠]Y΂,r j-00û-̪E4L ǴK xNO,/G>XLY.:Sx Ӣ[kZXa;-7kWvm]ci,VMUnk5 Ơi &IY!I`RG 'CXXD8u4:0x86 !i,5̻7N5΂l'@6E GH\Qil{O<5sBf\ "%&n>(Wf7* cmTL`rU3ɉ2 sP_Du㥄MywJAIl~NVdGeSLܙ] Akk`,{:̵V`ʛ kH[!XVɐ֟<Xѣ=ƴSԲ6 I\>ct!i[l lb}n;ܤ]a6X7ukѵ vbu-$e@(;@![`NQ\.1Îb aĹ@M 0 <$DRUo-Ŋc.ސ}I6KpLm 0'm+ ʇԳ%bܘ5έqdy_eZgas|˘F\[/k Ovyj*LLyךI[w5 /_o| 37e &K̿e3 w p Tɫz65,2bOYPJY^j e5c>e"cgzzJ)ЗAqba!\043 C<u9.J1 ` 8/q΃2rD DQY4q !Jmy\k>e sY *xAb1눥g-/{93Rj"RYaqdu, SW7BόxaNlzGR0'9CX &cFSA*Ip)>peWWm6-vv~a۶X7mdtukVk-I@sueYek2oqZ }'k&PfD9aR0SlHI0E$L`N1ڍp_o'{ba Ў+?*wWWdsb3R/g`f_n<4Z|/eb8jFGMLy0, =]M̐K} 8xbg^69Q13LLF 9Й ev p5,ib^- -F"B9F &BU&䅑ҤnXhz髚Y s舸3!пT:AFHU"s%U.^:L*5f!+:A ҙJDByB#䘮>P9M m~"%" }2\s]ҢTz%%9/%Bp7iIhIݷe$XFV %R ¶9!T?%)Q #At8F}@njǀcQ.<'"]Ԭq '4hmmVXu-7[lq]ja4l3U&f7d9D@MuVV\$aB k 'נl; dcAւ$$=b&W>OY`r͗&#b\OYU3J7ɠ!ZҴf2L2U;(W<:d٢W;j*zP䤪:I*&yT5p<"~;{_3@[nLJMKlIp6Qa*Ab *0r {O*DBX/,4[0j!ϊ!acd鄹YJ%/BB&LZJ0@.XHIMl_uFJ'?a(,4-]fVI1_LvРKʢz/lYLK<- Q}[~uZˋV:eS +p=o\9ޝ 15"x0xay1w5CG(h HAC-a(( haIastKewu^+[ WYAo~HMdR!_Z.Si4%5Ze14!#D&|v09oO]o)&a 50T^˕:ʣFr)Ҩ{VYh׹9$NJ +tjYKʵ$+r;IbR@`6|Az1dS 3 XYFllan*ɬڢe*re^-,\@6KMIvoRa["gX=GȥA} yo%*c!iҐ:B͕M5sy WX_M/"jk'dTxdJ<8Χأq *FӘp,e{FN8{cp=Z]C0d54[¦-aiqpYanYE`MάvgM~T&# }\F?#Àޏp܈pv#w0!6- I-룦S `>%/Li`w19!~knЁIvcGUYX+"S˂N!a1%q]|?9-~IXi\3ʋ B !W u@N'l\\c^+C.iKiT5顸ǹ8嵩:tŵhT~&dr qtFe ?V1UזզXvX΢!*!$Cr1ǣi4F84إt1x (zfعR8ğ)ׇٴv=у``2Xv!f`vkѵM0`IҸ"]4ާ(]8؏3{GacpÈ81Ϡa>6Q4Z0aB"Qx2%T$.%jb` pЀMwcz5SȬTBMo3I$]R2C,kVzNjF>?;2 x$]i[%e$񓝿!EmgD, )/k .1u)RHz%W) YC'Zrl/)̭-kpg폊d7*¹̞= Դ63 4iak\RʼX'/鶛YB DY @.FzLYEs1bU)F[' >LޥY}y9At@sZ >jk+ زmL'47@5٬\R*? AjIfN"rԵde\ C,9H}s֖VԒ*P7Cvd7LO{=`ftF~tG SEps$s?xU l aضmcn Vخ-n*s1_")T+҄#V71pSYݧ~qqx9~X7cA.i'CXǂO`| #! ^0 ش`ۀZY !4Zcpupz5[9o%y6KJc26X!5Q-W$"G!οN$X耋J3T <%Hb|J;RDL "⚓K xD<D.p`_O}E}QWeT!TD%,UeG\V,33 YxN}bg!lacB(#s/slYKpNcRAX:˽Ϊ?[W-[5(C62і(Y ,7lIC 3TfW=:^)/ۧx)b9Y eN$ġfIi>2Wc֕D!M1cF|a HPޔlcH<¦+*)+HX1gEJr.!!XZR^LzlM*b6`ki\+|. T_f2Q yXc2q/k9 EL$n)%C^3]FEgf6Q!5(F;1IbiA4y g )Z5<^S_!@ho0уȣ988{5U;Zǔm IDATӢE6`1Xw`NK@3FX1mE+kbU<BNk8 88Fُx<x88=8~F;{$k0b޻ڶgB_UcyYڗs;8(' 8j6iԑ}b;//-MB|Ic7cNZH X'9ǵ硪X hjs5.52Y0`DyExp)Hi(if9?v?pҠcҘ r.WǨ..OO`mcJ*N'ȌI;I r %OC-5-I}>TL>zP6eea9ha4E 4%)M GEJ}?Nn))~MIӊ^ie)4 0b̠´etK /E JRC(3-|3ŧf#A0˟?*iMqH2Xd4%pBL%H'2cP:^%AZfd6OU2V#G Koz';u_G_;/^|G[41GqCL3)0~DI[`1n`ITǹ$B_Ƥx.;ǃ^QlpuákyO>vu *PS;`Sv\ۃ+GwGgpl?`* )P!!m2]Ջ$$7K9([LP%6j\&ЫT7/pD _ 7gEJt|ٶf"yߗ&s-y$%|NgFV3f|g9$4OUc'K$bA)iy0٬zRD$#'L ?+oxD%/f~>(fdz9*35n\(7˜'xРWd} f@<GlY+ 0.$ݗx/braZL$YLٚTJv ]i6Gi^ %R3LZK1JR/P7ek?dwxMWr_?Mf?@g[EcE,=HLfp9-eVs-d8L(i5^4JL\TFIf|p3,Nya  nqCqQA9"dIIYZ4Nroqi%+ocoDE`|*JLMceJ">^YchL1M;饖jɉyAs<³'n<$2ZtuݮzӢ,;SR0B44`R Ys`7FvE5ʿM+(%Φ8vND[q1n,ju) ;` î`78u 6lz[hXf8hLP2G[38f:(G6C =u€V^@ (FNc o8AkބF$O:'nENeБl~v̩wb 4ZL wIdGwnMYg@)2*cu9;NP<SO".u_S8;͘^X866Q=V)bTOYq5FPȗ `IF7F&wn ip91@MOKIਖ਼1Bc NhԷS0nNj3TĹB3yI&>O%XJMVJC) ggY9(oNZ? Ec4bܘϡК$zGv8O84k5}P5 zIf=FnLknK9 O^ c@nH0}O=ܳ޽ڬF(zb{"tM ]X'仞ÝJ\[4u 3r XU%pR8"tpX@} j\pD͑r5K'˝eWk*iyz{24OM$g9$g$Ǖ&SqX.bI'_l#2oqҍ>Jʼna{Jfz ~說@[xÉygb w yD/a3Id1L~04{ vAW׿;ߏ_/C/>4USFD-=r-PD91c&2؜tQFvp:NMS@%M; gمkŎL V Hi3+22%Vy1 ynEoķT,n +DAGpZHi}CPjxm^ʠ:U^†ը~h6 *Slg{ރzsjh5nZl0 z**ߜ6F{x^s\75ΡoD='[U TZaܸQh/lK)#VE)=EG[_N9-/-ݜ2k={h6)c1k4&pΦoqf Ib'$-'D(syldKKmz2;z@ qs0G)fBq)ARo̙<>13 @W?~ >o~7_fzxУrBK #aJO$ vS^@c&$'1C`#c0Ɣ-Z3Reb?(~}'ӏ1pY[T XgJ(vŐ^:D04ZM Fi&#NaJ/Oz9(0o:rp + <5HyĘg4ĸ|j!J4%#+HLIE(#4X4RjALPJ(S("M[#Ӎ(dehA~1j_ıfZxu«.T֢q}cwwEL wo85gwЀ\r_O_3uhB*0p1Sf>~> (J@yIJ L OСX)*9:O?g,~Ӡuチa-NphR5`U/u=*0 ֟#3Frjdp"yBiHvtQ94%@*d9K2'b%ٳ,HLyK})vV,>ɚA$jG*En=RJ/ ,]b\]I3K_}޷R{Ό?'@J4dؔnAԉiL^ZCr,:ML5o0}'>w/o3s~(/-v3MV2CɌӢJ E!9wiT6^qrfHy:f~sdʒe43l$V̸2n̦  EjzJ(gYgGq]QD`ϗ%GECMZgvEIO~fd#ʅilٓd# o4i$Nҕx?>  F4V f(G(us88_ qvZa{\b.|l)tX(4́XT2hz``=h쀃8 >~ЇES78Pco hkPe dhn0ȍ >  &T &M` Z\O=zwxIdȵ0UUm@fv26*DYq={ =}ujRgwpz...pd{G+mJsF=vw  Q2G6Y1M$/kWSBL}^oK |օHXl~;O꘣ A4Jmw;d 20b lK3xiIR75b}}!dWo~% fi A ԍ9c)S"w{9oi%:-q!1 clS &Wɟm?/~ᛟ /pxaMy.33 gY *`]" 7c*P֠ IFQ僰ʶЙElD4H"ޤQޖ s1'#yFSb|@Pe <_ZP+5Qp`%qdvE(`^59ů TN0曕LØa`nSKҀ&!V(W6Zg+opl5DQ" - E&H!/"/ mC^`5Guh[_"ZԇC=٦kvw3&h#㰐M W.JPQ>| GwPl6F"<bB,V`u 8;#+ &EJS/O޳+\jcW_]ۋs_c?Yκ(nؔMQ]yqlaSB7M]@*)$iklq3 iq樓Ǭ*KAbnє}|M$ݑLD#P-(W>em0gd^.H8sFx޷Ce b SeM*bg'DZ,B˥.& H E,@=i3/gCO{Hމs0|pw XxEbA Z),]އi?#йh*zesN-r!2y%m3^|H5o#?S /Wֿ\A?-#tK`E1U]]X?1ײgȑp|.mЎMpxJ靉E9z]bYln2sD)ld'^)6iQmB*lG'O*<-K@k7t`h Os;k vX&:9Fk-Z;0](h}bht}] 6 l~d)[Lɐ^m L:po&0 V0$3PT.rE IDAT+lb{q{X@VpKXAa`١g^)rlO@D eP+<|p^xOۻ>+oVci`gx1qT)8kv=1684Mm7@IyRu∄EQY$L_֎&<^iO$9N}"u'9Q;.Rh^$Mt)rŔCF')# 2Ϟ y69|i_9xQ&4h)~#:JDrÐ$-(Lh"N2bdMod5? ;__Os/geX#,g.J}dfHY2^%0C&;eKzs49AT<S4m %v"ř!cRoQFvMJ0B&F +5C'dL@Rzb*Dvnz蹜!owH:\h\8c5T6G8'5vngm,s”C! ß$Z[)5VFUiVժDY( 3nBbRlʒ.bl!FLbmnEZtγ ^p{u¶-\ۢ;uW7mm0 oRS# S"9ƬySPu @@(^==1v USnn;c_׸c_#`PM5S{ OӸ'Q=G{Ǘx{\zs;x= <  8MӡЄ$4mǗ7x|y@78lJ`֝| _bA {S(I>(Pb><[L[xs}DT9XKp"k& g;]M>h/rztBb8GPo> WׯSo'ZTEo`UZ0]&iVE,KƑ6's>5NYn9eⲍ/<d4OX9ִ4{w^xZ o4ŏVN7J&QPLW]5H+a)Y h 5 ]7xҵءcA;: G`.Tє8mc.0Q+S%wUrƗ (a*EXJ+( Zea?7@X]-rt iVNHȴֆcvIaE hM?&q,0z]&im14-\݂mZX׃G 2HyP1V S`J6@(PJ*^WXoV8ڮq||j]0a3o㐃s}aw8 |1nc*<=%akgP'o nj\p}CwOw={:IjwB7xK\]00y%)Ld8@H(w'7 I5yO9sK}8IݐIXbܚ.Q{&S޿cmLpIbB06L^FD c9SWWA[ 83ߙZ쁞YՓ:JϨg^4sNW.RD9 |@;No|o~6yCOTKc>r.iMo+tӜ=f @vą) dA?g X.BF+k1jc,Y4!etKTOQEY{ -ŐI0%.ynDM-iH &rv92"~X`=U@k,3O=ﺏy>>uӓ C7JtNa84xxKY|E Ho tl;pRS //ˠ0e}Iy9LebVGH}'bӼ1g'$4{df*},DrDXx_>I^7^amB6f\똂<!&X5$-[ 9vNS~GK@ѿ/0+ X+ ŅsOb Ɯ$cRsFI /i(46.&? d{:Eȴ4mPv,X0d*gqJ(I&3X ""u e/x[=^˗/),~i M Ebﲗy wsckWg-g-^u%E<0ס>)52JXGB' M.,*1Moq(lhlJme ֕FU't$u%J*dRn1s&4cXOPvmBCZZn@_vZ0u=rm ۵]wpC ^Ơ`ƃ$NLiUB+rrl`kV(*eUxF\rdfdpuviv{]a_,!0aԥ1{Q!km y~yx87xrGkJ O^Ǜo^z@QqzAP%Y-ldDj3ATSY\ 99e2*\I:_0͢u2%Lxisz߈V- -%7*DSߵ7?+~ zA%ݿ4frzYcb5ˋl4Y:v;yaǜ^Z*4(f _ gxdORb֖1N .>Oc?f1&6e54օOė?`` Œ_a)u_˷d^8ǑTYkgZ lܰ@9g tftd{P{=Nq/̃ ER')7C( $"rKLJ!M Bם 1r7elu'JEф6Ɠ א{[G}?7俎We#ƃ]k4UpP jwsuE LgJJVFac46QqTlWU:Dy;jr\!ъ`wSh{7 NwuMCc׵8tzۃvZgE,To1C߷C=X\okvA+UjUa]X cL͔4!~,u/ø>FoP7=G3ӚAIUU5)zp<}瞹{89.4\jyvǣ]AwP4W]kL(4 egk+KN`q`NyLNIm446$GY%Sqd/rNw 7@ij,S)d$8˔&7e: ̷^ڧZgxGN(1j4R_b"4Z\M}#`r _ +_we^c>lgsHB,;ځ8Jb'G>t {9ͺl+5TๆxZ(h֠#4N\2sӦZǔ-gr<&r,d)o2d&(tĘ1f&Ӕ"oJ2Ʀ!*+0u൷mЌ6r|7=v]Y] : 7XY(2|VPhEpZ[5:/FU882M^y_4^5S4ZcS(lKmipTilەfU`U1iA{qK)0o/'bƂa.K;UqYwcnmۢ;tC;^ , XhчD 8^.p.9y'cU+j$ [fF^KDYXW%VEhi2m y[>=쀺n٣@wנozE/~@kw=(p:݇Sgx9|'+e}G{~wxz7nx?`4l{FGkQ^QTTYJ%Bxs؈RR`A =- e`N 4#SN5T B6!V瘟EĄF\f`RFk2RbYEJ1$l>2УnV3F}3說}3^BRy.dz`4kN{;KzK2>uĩ g.'7A%3T+<["{ i8Ѻ7FpZ <$碣Q :g.B{ 2 I~atR>2N SJ (Jkeњ `uc`t}Oa(Ư &cبY}_7mîm\u[G?x)C?[gցOP#̎<ȲWW$ۜ+\k ɔVhmpTt#-YOnY)NL] xٔlO -vV,ݦswݺu=*FWM]K"6p] :p\|^.A:rKKX]EJW(5ʵVG5*US@U`ןIL `qhZvkt7 C\H{o1pzTVҔZɳc<|p=<dzO݋ %RapuY;5^ytW/ofYXT&U ]QY,Q&K Iȳq:e;f7{fNiLfĊKdٰ<h>̧ГY<Fɦ?ʧuc !H$ b ^^%1왜3XV!#"gK_O?1a0ohXbԣL; c(pX(ߙ?w}?[̵F#y dɥRGDK $F*{l' xҐɇB:ʴj1la\os^788MAeܑ @EW+m1HkDL]5\%tA:]](Q60^3Sޡ<VkF;7mŮph:/_n?DkhX1ǹl*@#9L p1ÙzJ3G)MLP(PPkq0 ^^y`f 2t`rilGdJ~1/[3WufevlvZ-ж@} X߄`rVgvabv`f(v v*~"% ^,*T V#fA]\WU Uz.4Q4 R!kYY-K IDAT]áFsSߵuX_Jgz z} SZvg'x1P|vݵ>kn ]zG؃9] Pڀt4k)^fp`krl(ŴNG‚I\r!^|}?<]<5rF%XtKAśRL$W|2E,x.8$I´7(eiC,D>;=zG3Ls7gH\s7v>-)$He7s'7+@#7>| gMo+Dg’KY+2 s3*wtI?c/ X @,,9IfZ,~4mn FC~n097[(5G#stI/QA"nhۑэx؍\Mۣn}uu5-ui.e :g80*gRqQ_Xy61Va @t5 (0G@wq.p4tR0(Sf(E#LȦ vCY:vnepioLk;\-vm0t-\]3ݾËզ_u7C`At2;NGitr=c"Ū@`w0EkLӘQBR:UT.D!cm]ˢŒjb'Y,K+d\8@8/-m>NB07 ա nVdAtuЖ6fj:0&|^,4E+.%<SpQb|cn{Q>7MCӢi;m.C 'Ff׏MvH3P`gANu^A_SZF4 i R-㐺p6خKt7BxbC$ F)gtn׍uoq}sZߡ:] u` tFoTr+7O i&IQT(7[TG'XnQlWAൺEY(PifViiK֢AئX( X fK+<<;OᓧŝyW޼+vxj7;v; P5=H3tQBi10PPʠZ>z[L-8 0)029$tHql*K͞6kK"&̳%'..d~لr.x' $$Mi4E\"&YI}M4DB3/݉J69g|w> x4L0L$ӢƳq('k1`rV4r9 {R(q1.2o!]o <3WR[c#˼NRddEa"%L17#<Xσosi''z'Y̓FX4O?SVX,#5ь7y &W|N&V`)b"J;.1>` uM;84 mkѵݨuvXY#9( f )8F; v;Jxt`mjFGO]8:L:ݲ)^Leה)ghwT옓9 / '0ܴ.=kܴ=.7n}LX߂tՍ]0V i 2` =*) STNOQ<ڢXaVtU(  0J>A$~=3:kv=}v_ݾ P 5m*Bk4E,Lš5Jު3gGx1w5E Χ>\^x ^W;<٣a;kT*0VBi 0EvUUA+-֚&Yhd% %@1YLX&W>381ˍI6)0,$,qB^]J" whĢ$M۔iyi !ιK,j, "QD N"Qmr~ ?gq Kh0IBjJ fza9.e !;k~2b:=iqg3OyL/?Rˋ9R+s^&BfɛblT%+;2cA0Ҧ.J R2~'% 61Hɸ}E[w:Ƴmm3}J `r g ك^'u+FqdRt i`g\$ef(o֤p(UNUb8beP@׃ICxߠvZ4gglO70 lG80Yp +GX+Y{Gxpqf]z%[oE8nj,<lxYS~Z  _`681 gm`PH dL6Dݷn=#33by"vV?Hv㢲8Vɓ3o} 6iYpHѻg#~ x:0_0^ a:]]/`ױe9uH=np}'dkYN&`ivuM WhKVrDԅ?M,ך6"nI̵h~Ӡ$l($p*čZ-(W7.ݠXѤ;Tss_%#LIYiҵ@iFnNsyt*H*_Oȱ+>o(>bQf2bB52"pM]cu"}.('ꟑ~rMRSaa]uFt}6#بMa.Chɂ9۴GcYA"V4m[Wjј`!]Q; 5=~ןq{ӡ=.ӌ =޼{)Ç'>t?3x:3&[a;B;2;onq(;}U+,Ŗ1d8s3)o>ǜ~SiY%h@XEU-jt]L66AkvڭHHIb<&mMbjx@wj>\F1Lݏc'͓40o3_g?]ZU^iYe%աV'J.6FsաX?Ct  >r<%8߄jk5*u:OŰ=@Q]Xꫡ߸{sj*#q,[Zꐜ)=d KF@9̤b"sIMg%r\*IdQ1WUkW>ݗx`V]H‡VwkBa<9-1Kc:eAXu Vb.Yyjһaqj@l<-< ֨# l1EY{)܀ {ೞ÷_{|~ǫ=nw8v`q,(wRz#ɔ!Cy b*$fL4"]0,x7.x7-0.8/ty#~.r.Y + ,rפJQ-|g zk8{ q3AG9ִ""]9tM4`9<.w{|->7/;@瀝ct@DŽW÷w/z_pG3|xۇg<$b2F:0e?.Op}Ja|]cR2# qstp0 #>lwO'wObLOgxz#N8> v7t*f]ZI]녩ؿl4UzH *PLbC,*]:']յ&=!My,Mhm|X.hSՖZFsD@&E;n8yj[hlx &0dБ2uh6\"fC/mAZjzNI*O?[i5*ToW=LfQx WF<תU&d@Ps|FKDZmFK&Q⽷6A)9fsfmUz/5Zi>fT J猺<5HAjLahuWPXĤvSX2Lv^B4R r1nlzX@"X c9q{:X;/ q2Ì0i-~awC[-! V`bo/5+No?k"yf8Eߎ<ʲ[)CsqҬ"rmfFeID?j 5idLĠG)`_A]բҔpüZ6?\`FpumKfPUHN[5BfZlG&:$W9.Y-K*m Z62s~T\*jGG-_%N0疴+Ui2V)uxf\ 8ci1y,pXGM8Cs*,p~X~!fieYȬ ;]ȕg(ucg_KpNfކ]K @#aBS X[#odMэZ 6q^mޘ(OMaVY aDZW'Tdl!;VP&ʵ"qSfiLQ seh+F-ˢH|#oY]EwxvhjotDۧs*LaXLFj YOۿ?EƗ:|+^rv\Kc~y;򉠴K<*"4b>H3:28Cgppx#;]'L.~ \/F3UP5k_M|c!sPzbJU7%62ZhJ\{;MY0"[(`M_Cꥵ+E_͢!=!·IXqfwfI0F5"% (\O*Y.{I$9צfSH4ރ\ag +:`73[C'-V.I*ZGd|j Q 4q<_<^|8-x|x~FNQ{c8 d:9' 5p{7z{;4e56Z kH pȢDL\1p^3Ԓkg{$ 6V⊈)V}U\#DS3F2腬J-r-=u,mr~g@POC1{f^QFqP߄*N0urdIך[1JJ+EIl69 35,ci`fbJYJش3Z+^"'u(ڜ},LlTf}yWO.k'jYTiULhU(O%ѕ'͚@ cLFQ挓 "xP4hsj/Gc-%}-;r`X'\Xϯ`+lc so5^}R2jnV),IsYg:V ڤT9"om%ʌCBrP#DJ Em-׍.TkWq+WM6gc$mN&7,DAkrgŋqp9áwu 5ke#JCMDVԿsIn 5mD *a%UpcZ֬ѕ%^yѝmӄe^Iݥ-]l*SW !K8x"t&`Jk^%?2 2 Xd8 ^$ɀ/it23O@w%!Q* =x4᫧_=Ox{WGdQ"zV>wk`D WHK^`ߣwdݔK_7V6V9ܮ)k@=)#@J0ZJT_0НܦsPͅ]N q yv<]k_kӆd Z\צA 7n<5j+ߵ≁~*WbB)HQbQ'^+TD(deDNŗP76ϟ1-_!6_U6'`K#no|SșRitUqU.TZ$ 5IYsi3@U {O.aY̴gjs@;!zX-N:Ɖjk,@05i4h@p{qoٍ u&*]RCv0&*pժt J҂ܗ1a!D, br  5)ZlcQ,)eAXFwn@nU"! ]7"hCd k J+sf894UJ*<2 Xs6]&A v+6Ѳ5H]1\.3&|0/.x4⫧v/e"k=_a_F/(M49"&❸Ju1.| ((I;Io(6H3.$i h>*;0UN&D0,8K;kZsxYnys3_ITNW3'H D05Ssrjca>%:0VDžDz~p.REb^'u=ԯ'%Nw;WvZS$؂?ixʱ]YO6+\oߗ=WY-HF"Ԧ4>jKY\82%.{N*ؘw D vk0BaU|誤ŋ\!+\iib~$h qvwg,b`R wQQcML-iʌѕ; [ N@gJG9üdw`t.on+z2ԆXୃcNš k8aϏ, _>-4{<݈?? }8]|11%ιcSUr*(UKO_CI&%7fқTLAf IDAT؊MPD!pq(ȸ 㵐Uqzˊ` V p1 ,u X(0MuyEXVpIy,l'wg :"86G7ru v/qxWvp] I2bQrH cjKAҸaXYLU>/xˤǒѭb4G[erXm31_KpZs[ u̴}N:FVTThWRjo^nkԸJ j7k7 ڦf7f3 w[w~ޘ6uf6mJ妖S r͉0995k iXI(*q6Q>.93`S_ՈFx84m*ՇTNZhIżȢ\9,Dzfaq訢G1uGxTwa5VN&ޥ5@w3BafGL+ro.Ҁ6N aiF2I*S,L֒8¯J;Z)t;9v =g ͻ%}0 w.X.&l-$"v;x#` `a V@[8]aާ<,x~¿g_:p0 aO 9>,ZU[]@iKE/H2k59Vj~DB\ܬ EgFe)Mĕ4z0H,)/!kB ,TY̞0FxY9z*b~uU9 tXeP³Xa{v/^`wzt5d#n=SU@3XۼzM7v6J٦򖵹57$Ǖ8"g+ x1~u+2c,+¬u5\'T \3 @kySԘqZ.RꈷԩCNmͻ}-AiK/ &zX99/]άoWBcVXiw ѶdM+ɎvS wݟKۼVGPN:WܴbN`f2~S2MS͸ąUȹp9ol6z:CCʟOQcx`65&y>3%`2yQZОOÌQ"/va81Va&E$9ZL.ye d!vQFN]]wntvw@LEhb# EK=vف O[Ы\vud!$vZxc0ȄKve``ZHv΢w&;C`Lke x:/x0oɏ. Ng 8iy`xpKRNMMf))Rkdq :X^/cf.gAX=PjRmCGfQJX\ȑ7&LE/a:ބSC&v]>D/85ȦHZ*H=*ʹb-pnOZ]0; [/^`^>ZXxCeiˢQDjPJ$^SurP ;hqQɃU6mk-+Pr+=rAM{+;ԉw.2]b !Z;rƜ](|H8Z?1~;:uii4_KVSL7y\5V[ʕ/yxqeT6џnwK~@4^"]JrveL TiѶ}IWkhH-\ IBz^rKkȎ*GM>T-e=/+9ݧqP0qpF\ A48`F14K3u"RG].e:hd:.v`]]rG;Y+H״!HX{`o'҆ `0Q%撖J,<V&&=3{`cL1XteY>W|8F| >|8\`e(Ă(c\כˣ646Fk6Vm`ߣ;osV3-n@b~0"ShxrT!RML,뷬y&_'l<&1)S4dy/q0V94,\#ƕ4tM$_`a)C(]bu1F򊙢ŀD`wѿtC )7K6$Hu ؠ56D.(9&iMMpf6MKFy-!kdDlq{pF=K2U$ 73i7\Zr 8JwjӜF}%p3iu 粯Jb1? oGBI@T]REoMmhN*Qw昆_?g<?lC9Be'+1Z]-\LZ|uo%/l=P:e܎jg-sM L@m2DK$q> ÌaEep1a04aF(Q3S$ w-Y5O2EB/ZnH;u=KVX^c$XkKEr=wQ Ig.,J0 IL)Bdaf%"eXkhY1ӂ~#|3`JVa8fY\چ>$nDyI.-00p0v7707G0Vv^`vY? #k)*sHYq\9ր{7/1+u/XRk2r-.'tя 򾰺 "H&U kH,8 #;t/{{@EVיrY5 P.J2 ѫ%P3c%G#r[]S3%{O4yj1:rD tk-F˵dLyP ntz"ӫfd["V$FD&jxY_(&Yc5.BrKsѵcQ)_C6p,\V2% Qy}g%Jט\FRَ(@k" j8jf=Q'sX_A6qي#VOjDD) /ѕ鿰$O`ƺJ,ָx\qӰ2! Oa8(ٮ4OQ3F xEJ rr1#ia#Sjv"1Hs:vr +QcזeEp܋+;&6\xaO+v)6Nմz2Xa" 8ϰa<؈nwZy*`X8z*wa%gܧ͔Q#'E[F倄J4Õ>`G`xQ\gUfv[Z<'P[ñ!SQ6 r [tw7paA]'s$ak }6=ة8]OZNI8ϰge4RXh*&J^A!lb HZ9}!V%XlVQcqymw a#7w vm1h+Y:p%J-]e9j #*L50Խ5.xyVqp^<hIZDOy85Cg/^Zqe_Luukѿ~$R0WS]- 4IJ?7J~4?g!IA広2flx沧rza='<tw弍_VF e1YPeQ}:4U']6\$5m&G5ȳ*(]n9(etEF!'2LI\&vߝ'<\F5M_lR9DcHxGґzس)5ѵ)ͮfAY4_`I7=nFgД S/, <)#S\RԬc4;3x\JpfL:M61e%Pĕ {Mz LN9Ι.ѓXHAmT=y0[j$ CHn>0?xvӤY }L'0i⎗lW#ī@etAL}-~,~j.I׎NR_R8/TA H )8(5ě7I3Z^LCʄth |rN ǀcr~AO(Ht`_v MzLb(ڿo.#=nDC݁!ƒPWGWj[7YFK8XnAFxPs";MA} j/:VgfL!ah4vfsR*A 3efKcXJŐvw3ܕ>>u篎s |}q4F׃ڂ ˍ/+kPJ夑c4fi<Ii!SM #Y^/,5``sVWZŪ*E qm-ۗ0XY+ N5jY"dƴu5(|GՊgpwO>"5rdz@>i,]-`0:H*z}H\lSɁ/M7.//<#N&3F=@}wg A䦄U VIe2QYKM2SZÚv/ѽqxq:z8ŔưZn,lOp 81){πWdiLm# *.|Î vֶ)X09j9kn;l:!(jJhٺ`~0?͛n0H"E NЧjn4=T* uঀ4g粿i?4 X]P_Z-+P&l4a9_m%"- E|Ed$ϣ Z{"*X IDATu &̀E¶~qlF}Qv+j}iMR?Jș<R[N4+`F nñlljI ]dv~5ҰB@IE\,LvZеMсb/EҠ2Mz0VJZ:EPƒ͂S'eЪg ^Vv#ZMz:B';41K6d+ &,vR@iZ]ےTP464n7% OA1"U6U*B-SLe0J٣+CҲ6% XGf, ^VdҘ,9͖J 83 O8& 5z ANX74L+d_-//$İC.n ݸDanMzd{ 2!!Yt܉"c@N4'`7Cv;ې 'fHw-!HĪf31iR,ZGV%^i-UNZbY\Ya(,H&TV7޼Wf7D*cU#@+JVJ{%r8H\Zl !N Hࢶ˰m1ku;Pgjp=]/LN# 9R9 vy pRO I"嘤6 1|I^Cd.Lp XX`,L]IW@U_G~:b7 5ŐnaA'as_1Sɷxu/0!ZD\Ó=LSR aSMVXTc$4yw2zY 5QhwgG\O8Nbwufꖘ1lRscs+ff&iBJ "`]Jň]J?Lj))(kvp,a,H`DGͦ%gXO)^NT]5_uИMyUMlыsfSx}z#z^2vW 4C}+UēGTF'LD"BiKKaLk1FZḐk C &ng|ek3%؊5%6YqP{5" ;sꢶq6slXSJ1 H ̗71|AܸtqipLP+^M)QkCcvf7.Ƕ(R1lC2[j*{5hf#p{"t.x(7q3F;azsٸ[-.U0DHF`*\pwmP#</G6!ӓL@v6EUN4/|4NQ;.m`>֓M//~+%׍ ~!٧$Uu2T8> gn̖诗p` n׏Jx:{SB nl1-J }߾sfƖ$@.xM rvOΨvӊg+\/}WN R@2d,Z`PP+d>yA2i}/Mi67S81M vMU!D-SQɢ8#按3vXM> K!pP&vQXn&p$Ml`qr@H83ӊb=k$cueFGD4}sT]DTfH(줶yi]b ĽF!p؃;YuqJ  M=xS *001"L-l gм+0Zw첅iMє72Wu cF$.dr T[Ҟzhb}C!/nbgٺ ~i?cJU +I޸կWŌ Pn\5ky: n?fWOz9cd9Cn;6gZ5^'kL,J@!9#)sO#atVs^H "E2(ZUoz/9#ss-oW&t:!U6b5$%[-G6:Hi\Ǡ" aFH;YYpxqpqx#gyBwCJIRT DrMp3* j٢S6h{=p6^aaZw B*0CdԈ d-f{f*3zb](jTCMӍhz͛HD|鰯E*1h\9X1+g$qW*5u(t6oc`hލꥢԢ⅖ t&t>u$;ty[0qFϋQJD\JcO}ErNS1/ygv1E8T?`@>I&MA_`9wslE  ҈>Y<5H Hx8{?:k_%FNj7x/31M[= 3dG'm5NAhƦR y@S$v0'”s [kz n7P/1FfU 몜̰3njg=-ZTs= 䅊`N]M&vI hH՝x@'47[GSlzP㵤cW"ӚUlwȪ  &.r l ] ۘYel-dt:!AMCZI3IΥjPҌR aBb=ptqtyp8;Njq*%k9ڤ#$"J7K4, "$&4v3~]{{dVdX 3rmP\CxU@9ۡ6Q5v jCRw逸?`n\ ^0!&{=- Т F}mo';3n2,lbGv HEkf T; RwVBb,Uf2EŐ9w͸8ӊKՒq\MsU㴐mD\TNl/h(erIMkXkET sxɍA 1 KƈSTgHFW5#qH9)gWdV6[ʬ"i`{/3I!GU3hC瑄CoN+tDX7 Ԁ77:pDMgZTG"@48LꆋKD/+ْ2D߫"Mh7*)'dt=0rI1)sbN]RW ^C_- ]ऑ" 7A % B(gGhRtS$l`$(~F2־#m4#զSL̒vblB׆ \U2iTov]B@7ic;f4|ݦRe&C|@"QS[ :sjr½ D.ϿgX勯%. ;gy=PCzpQ>fC6.TCI7kSeuOBE_. 3] ]2.^42'Qʶ͸o\9CAqgͰ8 a"`6 4!E=2!ԇmsa2Íjp݀MʰJf5{Ut{Ovf9+ȫnuT) x A1A2 tS@,V,EL1U`b1Al!L1"ZոٲS(fA0cYMvl?h])/xZUߵFٗ3({rTv8^5G^8K9t:FكxіmH*Q@]l@ {H LHaafľin uchZTa5@'lIc?^12Q3eb%0i{93ä6="pf^׋O -C8rߗ;04Nvyvkg '_[4!%iPimKUGVU2^$}աQod;{Eտo/ nT#7W%0mLKI#fF> if&X^+bLzô r@z|ur}|:BN |IW4d^* Wub}Y͇\,O< p!cH avv{L r#i҄n-Wg/[Q[gt$cݚR2YZfPQ,F]њ[!{9CS_+]YQ#D:vϲ :=Mc2Cw@_uՒ'MsS(4J"s7c{<@Ԑ@4d ^gOxxEHѓ)Cgƈ2]]2e䖯p$,-O|N>K{d xoL,,( Ҍ#ߦݢ~,P.[Bp))M]&:ηnhi*0UC-{7 3TлrF̡fD~Av3*fմBxuI jXS9õy5g9ce-JEld r 5刁ḫjm\W IgS/`R2F;01b1UAoVZ&`^E4krB^K( >vX(ĬU(/ MVɕt(lKy㥘Y"&Pauw U0i[ZZRcv|ASHB͢-)u!t_P6ҀYR4݁1LR`bĚz2!,3'ֲgV+HB-CAѤ mj*}#6E5fҼCL{=谇vRJ[ m$gSMWez9†,jm*0K?p6gr-g20oב%oG}Xuv gt*gJU`YUC^R.:5>8[1eռ&>X6`_DqdF=K.LdP"w`9Y_v&mf-"N//uy|f=i>㡫׊*Xhv[ħz_?E!H:Ptڰ>-b%9 EQOܭzĘ /M!-Y4%έZP v]EG+Qjȡ r 99#K09۔AVK`pu 5  xM_ǜ]Unl`KњT Fͼb!SQ)5B f D3I'Vd QuFcrgvLQ 1h{c%Up][ [iJWť YR|":]s+r1K>* Vqe)! tܮnvp#vږ6Mi15R]= G:ҏRq. .D$! c Z2x`iBgtZOZ"bXEr4ktsX L3~߁f.)a2cZ,pDL)XGTEMݰg-=J]3ٿ)3_fnnRtP52V@fv MNÔELI++wH>yдU0 }Vc(ca> vO2ZҰ}  E)c\&YaAO]Kxʓʢ; }on %xߧG<G x! IDAT?p[C# J+ya _7 Nk]Ug3KrruGc^o;mr~y]Zoy۟"xHHzU(M?|;[Iq!ܶʺFų拖y_T$03aaFAP"2aYi"U fQ͐f U&G*i( kKȽfY{` @)h'+"$k:N mbRBarM0D9L` ]pc z2VXs;X7+YjlcYO'b`pGGQ&:J۔jH~O,2tSuRnk]MeP9 Cx b 5C.ƄHL2A5KNg>rEvϨ3R<4}^'RܑޟJ ZW?RtOV23zm닸OtF5o~7eo$!R@CLgRꁦ+y2=꣥oXӐ^$]7JؖO"XMDa  I._ aì^K`P|J$ dv7d 8YV_T B^ *DH4G"`/`ZMAHQ)hN_&jX9D8$b&v!Ll"DXD^ˊ`=8N8- NyW#hVmnuHekT BAMIsL {/䇓0:QbՓB,d1!& "նR^seBRuMg _,6v]2O=BP" )gcŒ -گEIV 5XZP;}Ci+ 1DM|`СJwcڨc } K$wt0 kRcojσɪkb)jt)bl%&gW}\'䷄$/vd `ƀrsr!ZJVy}mm)'t`ytmf>s5 ^0`96AmO!n?!>ΡUpm~nwD#q{A:]&b^ħ'ޗQcxPl& maBԬE"o<^q+~awfu%لF+Zf VɂdT؝ ="ݵXs52-ֲ͌% Rr6)`(5y%j(Z)i]d3HR1aƜe NǓ>5/Y#:,8OԐ6mVge,wпS]hdnhX' l•zᣉT+Y{!UGWFkh:$* C_/ %^"k?dرyRU~ B)@4*$Cn!$cuH,[>'_%kה}"9VSJYid{iٓ=1~6+4LW@0E4o#E,F~qmlYaɲgTx)!uwc9 !ow C \,5>G^0`9Nś,B7Ccz \׷fJw7zj[gc"((CJ򒷾ӿ_>LKQ 5fWEքit|$5A.oo79jͤ[\ea2+p\YR]Qb (~W+ؘ6de}3ºEp2AVپj ̸bƉY?GȔuCPKBOɜQ@IuZ5vsJ֘1IT[h)%WjMu=Hƴ}IՖ?Z)9a}3LE3ccYpZU)jZNq^5yV}Č]\퍑:+5ְ@Q 8 2H_rdV`ǂj/%xս4|U6l8VL:o ! ~Sy>*[P (gs˰S'5c;Z~0Bdzx 2*%x(=sԑ9 @ob=r9rs>5%:VZ\^gtO|+cJ['x7q@t8뵷㡣gG{aъ";x'\Z;>nq]=aNj֏NqzЏ={uEUJ7\/ySHeh Xrf4uؠJS[z Ə}zQ|YmyTTΐhm$ KEEmTs9tQ1}6oNp=T3y'HZGU @Jbm[mtz"(XVzUĊ,ccx>Ly03aֻ^`$Un)agLo”J+0Q` <6 f$ `?PL;!̸sH"XO82e&e*aoAmmXvk- lXA_o+cE6E1%- RS+6r"WUY+b23G9)t&< WNwSțݽ)C[.8Q|"w8 .2P:u uglћfHoPY@#;|yŻ?%3We uPFߴN.OzmO𓾦9.% ю[ӠebqE'H!x$oǟ|'xO=7" 0F9 (]fo]ygoeDlF&^&O^NIk z샯{RË,tX4LNY+0G/J7h$v'")_ܸm B'~9?c%~[|H޷ќŇ0f)ʶ#lO$(>#gefTܭ2 =Vl .@j˚K >ù L`챦8Vq˅e%$4jl"i,l``}M;E5M)XC]JMIY)˫e ;얏*l#դ*ĄF>M1BHYAmsE˲bYۃsd%w.*HGԍeT |l^iTc;[/^ Ũ壽Yd!h8F{"ΘJc4EO(>~;n~Ox}[v&n=a+kAZ3HB!el M=JXΔKZ$}!O+'F@^ A`;4X*ꕺs/قwMK6U:ՐKnJ%z >oʷo]O?K y-O黫FXkn-|HZ^ۥE1zzBoFo&B)`Q7i:Nq 7TYh%nN p}tNK[}e ѷ|?ݿ_g@S D$^[J%Vg]ڨ tpLDYЉ:}S58ڇ xHpra`rS>4,L++d1[c6W :ډ9 =d _ *q.Rej0OX݄4a?7໳F&io~@y-iH9饘xf"p"n«krƒVjz0VfHZ0>nP0<^'(e~Ψ%ۉ!ul /%SjBAeVef,Z`Ηz/RѯzY* ˑ4t@U'>8:[اHͶ"`[ZW'B4/Mvw{y3Wˆ}3v=$wLg~>+{`̮}W'|^ K`SA١^i ĎoNU짰<%v{f*S̠f2_w?GR~^D.DxuĽxFWAduqlOKhCcBceR/ MUGBxï{ vcK%s;U wcX4L̾p[[VB " ǿmO3y?}<`|- ?iܤ$%׃\ndwQL~G~%bĴ0VM?zvY.ىLL`L"u\ XB`H LX3ak wnWf1\ uD]8BF>%N 4a7M'&;'HBվLv)@{[pu̸:12֌-LJE嬻@c?g~,5ޢar DV7wk@ךXn .n(jTiSjtgMrT 1|շ@Yׇ~a~ջ?fL/ގ%:Uj !m2k4W<#tz}=`nYXxH, O9|/דO|@^?Gπ̰)Ѭی[|}F>ߡS0TXx~G_#|#FмAZڮ.CE''9hr"} *Ȑ.Umq2=g~J%G^4ɿȿ^47? Ο2 kMGh* ]u=Jw.SߗV2 un=nٰ=IW{2 A@>'o &E$ #"t$ Ǧ=8UbQCXQvB[(GywNlõMԚ+*UèkBB: 9@8D`vIʔʖTe@4?>=e¸d9fܾ^ϝ=.>puigzF7gL_#n8~xlߡauU1zQ[oPOQcwR %ԏX_|>c; ; ' )mo{a'>Ab cw7 E,AԫI䌎k(ptusF_T[(&`'qUG]Э;!ئOU#R%* vB2!pV/ Ā(Jsu܌it dFhAe]0A0.E-L 9a?Oqpaw-n]w_ƔZ]39#Ν<Αqg<䲈KZ$ pE4V:7~tѝYe#NyNͬV z1cAb[9jg+ex$yTD>W?v?~Sn k<9C$&bZ1%ubʻ\Pۨ04;??^szI{obrb|jD \]Sӣ ͏-rdrT8r.9i"zS.|Gn]~z1p{)iɚt<J'?@ h80X6oͻ%U>H$I43[4JHeM E WL f⊂d-cւ遫*-J4ْ\8&QMdbDl#]~7ᰛ#~x[JYsW+4и"lu^*b%X8}mE] IDATWn3wVj` k ˢ{ 3]'5첹DOMRw=)0,[),w[(W 7`9 -JZ[Cl@_!XN|#`|kx/}`7; XjCMP@~_Kԙ>MoA zxZ7_/|̓Zʄ P ]V'@yH Gy |vZu45>wKn)r-9NHQ׋NXm'9OU=;foLt;t=(3Z:4I}-5ƻ`v5nӾ yڕsL?8x:g%ܘ!]5ݪdIۿed 1Zvhd&,~˪V3ܘ]MhhQصbBJ.zs1iob"oxO}ޠ7lq7b_wฮy,ڵiZ%Ti^ˋ!q_`t-a}'{?1(By$ />f`A &)!aX"BZoC_" |8&٥GAGn=^ NҖ5l,ty.駓5EH?H{u<[_'ߛ-6 nqu<EmB:nFT{]F669℉4oon}>n}xӞeT7G(*5yP%B%%feh- Gv+< !DÈr>ה5*6@΄70V%f5_LP KO WYi]ќňH&=i7j,/wnj"{_#Cb'G6ϼU%F"Ÿ;@lg:ũزT2f%.lYĮ D&+\-um-G6;ҲjVY0+u5 8C ǀC".礠0ń3n\Ly9 7qce}-T7Ĉ `X k2C NEp=e<{ܹmD4LBێ$ 4A~̉˦P&#d&[Z?pe=#ni'߁@߯uZB~` xm'yFaÜr kY1S q* x/+ԌV |< ?"8@P늝Y7QAXob m;g)Da?A@ d_+1ITBniz"jd+U@^$vPY<#$ZKW@OB_~'W[_"[Ja\bוA c-}7 d_L;7VFWL(c)J3QƠ(DQlcHG4|zDrC  ~" u6ӍtgCu c02\ ct/0pDq?% _G]{Y~-=0Tn≦)y.4(%(H bl_Ґ OzӨ0SȥQ@rszuj{8 w\ []K1Bup/I W("'}(OO q@A{g;p!";5?Z<Ƙ&pNb-oBUB+8%hn 4"A`G21v3bILK кNW fP)Y<|b#(_v18-Av"ԮK>fJp̸} %X2P H)f\ހj~&|!E")̺[ ?i3{@i LJ4{n+8FCt̋!DyR&e,Rն?onf L=Nw&]*] x^ew9uVwJ'nu[V#M}Y\,,we|ۦ_]*nK+0 LIu'a2DQN5L;!i&xǛ`Nax˟Q^z%>~vR\qOc 6wb FX Ll>R%co :PMqD?Ս>I'7eEr7y'bDnŘY:Q9_ު AԀ?PFyQ==Xr4-14,(mL6MزWiCFT=#,\%lF {PiMd7]3IXK%a'e4q!Qmp.ڒP{a9mbl<%LSꦴ&S&e;%5T[8VE*) >f>xc CU RH`|I2زEY7ANƍ山.RZ@iL;w-~`ׁ[bd}Ā/YIY]L;w xA˄iM4CIikȕSi'|ɟ׼~C _[mLhl-:.|ٳ)k ~ozwr'|}WU| ˞͛2%5oL+l}IKǡ jv+]ASzw8OL{W@7K`jV1E~6p^%٥٠ϲM/'I1*D vmheD.M' U_^X۞]GkuBm?NUXxqC4 %32T- 4nzjB1| {="aS8@(4Fb 6 -Bԑ%Xd[aVr!2~.@2fKexpNA qBcb̚ҰhR~6GLl/Hܧ sۮBi㸓&+XաߡiWlj 5ւCiFiǒ˂☞MF2<`Pζ"69CNXg@@>%"+<v9^eu|#x2Э &PDdtdC ~Vx #ߔאOǿ ;hX|*Ц?1ckH5yا~o7pc2yXvWz /CG=DI%?-\FXzyY@͛_ۓ {fFl -s%Z6u &AnHc%="r:;׼Kx?H7PH:%+PNg,C '4̤[تT8dc&.L h0D8pv7Fntv;q<4]G4f F/OWbix=U >Y$VPPcvf7,w,Ŵ=hr K7pҫl@X\8;X\N9in4S fвi35-32 MW^]z/ml'>$~~_f[ImMĮ:<PC6yQY@>@>vC;_ -5&u&|<iI׊"P5O]h£}_s۾B_p,yy3Uת8b-tc9zOY{G3\HcJ8 $۶ى;ĺz: #2Wƶ6'GPyƲ&#va/jEhwGhuMSFdTgphfeW$'jԄP"`7V#[sC%VMq_C{SpY،dU1+r0'o"1uZCP 2o-f@j{5J.&7KbLsotKD62t]ЎSU{- IrȸlB!=&,zmbQVK*RP, hA2K SpU+TeJYo hߛf -Y% 2 NB^DvU kq)RUYd667O| Zjk@v}КIä@dG4"z z} ]>7]'B27\% MK۩h<9 S /}{O@^…](z04 Ƣ7;Yf0AӘKIgLC'OS5fwjL>w#i@838@Sqk۞20w=~ +HWpT9M$I *[2ѥjƿAKCD[= ԘPt!#S^@b`fœ]ax73v2 Z%$.hr d^"A=D}Ϧ  7;kr6vwzZÚq+ּrɘJF*\ V~BG2iUvjaiك^{7n.UpBu A(Nw7b TiQ>/2[*Â4/l4[PLS;qj!\Wѭ'zi]߾;}o46K SMV)(k}nDn75WUȷAUHNƌ^j;+&4&"'eUn~o>Ԏ_ԇwǾt QjW g:榯91di 7}/ ^K͘G\~{e؆:m(!.FWnNt3#_luqXٺ >04$8=؊OW[R}cRA56^{kx zM.BoPlρcaq3Q{"a{-5K ;Vӣ4& IDATM.lWo-xe UX:XL]W9XvC āXWj9h=wrpJĚ4.bG yW{0j#z--JZ~1 5܊>Ij̤F_Zncf@Nմ@2/eYu^ Ӥ/B3 -EzP3znoM#2N'mj&`!쒱&`ɤteO"Cғ I.jԠy1' Coox_{R|!8 15+*)ː>Лy)O=ý}vz5G-a;NsDBpxݶ7c7l:!~rt bǪ1\e!xMS "+0FGlt=5܄+Q5DrgkV3e3iQAֳv8&I6ޘ:K'x eS'.iZxrz7\Uc>NX`A:0*ZImO%[d.j鉧͙<>ID%qt%WF[-)&xR7'md`nǑؚGuVnoœT0OiPannitÆ/@BŢ&uX2^3c6nΨ͵4'6dŵ/7VIмv@{csݍzn ,4+qtݡJRI505&7535% *YA7=0_=y6W^*y/xSrBT˖i32.pɗf7~? [ɘGGbjid㹒BoLƀ>[y)_w_^"F2j.7`We mDO(7?_ѧ>+0M/鴺ą]]74;k8o=cxV :=E@Ar%}FEa"`:^-*dƶ45F7jN`4NX"4NmG/Q7dd6"@U SmBYAoV[?0:U$報ADln /59x3/[3ELiK=I]' V/La O+TX Up\/܌b\ccG Ibs BU HĈB&- wyƶT-(=kq5л*=8]e]Q֬U[VkUZ@%c@T?cyuޣ.;ȲGe̓|%aț -(GqflnczkCKa0`= &OIcČlsH0MSBLb^pFZI'|']>7׿/{}p_vM%mhz06#g! v?}o:|c$|y9HyGM6XF~V̠W+< 1Лwq7]~_x%PL3%L O#O&y@3pgfkY D40$?:,3e̵#bv]Kz^n &0nʴIٷn5 3ߦRgp{,Ԙf&R2f lDQr{BΩdY⺋;^&ꔸ=Q3MZF|ej-IsObBś4#&l1KJX2P_{b{CtA My1Qc8 |MPSԐ\p֊Z,k7ٺ+"WkC(ެaJ\+dYYݴ M;  v{ng,Kx G36YHV\aqb !0_k.` .^ˢ9yf~ߏGO^(ckq+.Wֽ4{{xx njQAaue^qydI \2R^r+丢Jj% MJ`6}@eYPyNʔ )~򪹻 XW8.'y _Ģ%phI jb 4@=hמp2)FOԠY0a?MXve4/X2cZT0YK)&JAOAd owc," a#n1opId VxsY`w>N 0%;6uk_K j$y |ROn~q{ÏtyO%czu/Nex1|o9ݗg#oPo $⣌BCҊzb8}oKB4{L-3dM"::N&Z;x6tTL%0w댈j`^u IOZv6E_24۴C0lZD}p}@ cXC&d8Mg] łpsmĝR35`ri 7l&f-i Y9,#TXك%hvsьݵ`J+8=qa1um5dMbH%Ƃ-i $q 5R3yL30OyB &jUC:gkd!i[EN`L0{߃Y: ,n%x8Ms)ݷ`>Hk!} _M,>3wЛcYVHl~.FWJmPrӏO[._ 3&A)W01Ly $f?r?a4Hmh3NM`(.8D>9["%FΜ S2n 8gY!-V!׳jSF- )cz~A%u͑JK<[PEB.uIT c*I];UZnz8`R0Ƃmjқ)$L )a7ilXLGR74;6)B؄']GŞ6)CX\dǡo%Ǣ-iǠUf͸<(=*uT[KF)&kRKR}(T3J &Ԕ yJXubTfTqggxUJ op ~|Xok^ BjP#O^X ~ͨSBI {#  S32f8<#ûsI)=![z[Qx `7g኱s;w1> c7p;}lGpĉ\A*hQnǗqt#{t@<Ҽ\|BxV*9^i /0Q~!h8B}M=C u 2y$nhdL]4'<0Ӧ)L"ϕ6NG`șE7;f odLҼ51n_*ZLFQ$QDd}: гOjJmeUodCcӕ^N]-QKg26:vQl86{\yìw]7Y'7M&u.F,tMdXA+4BkXsE6ˣ뮚ИcF^W -{ ڤF%#3̬TEd'rMt<-%3%ĐP$$ 馵cyKlH,,)ȵ$Zvv;; L(̡+Iw6X~Q[^R>E![y?/ g|K}?%"514Disճlu/' ~͇ɏ}ZCYMFk527wu?rÜ䞐.EQq\YdxO3~; „w4vG;jn}n54Y”99KPٳ^ˡ݈Q <1.왥>%u}dhܵVRE5aTf9󚎷vMEӨ:c ZN/v@>je-Š 0$vZ`'elƞR1.jBط͆4xN1ZKGߡRZ>70!3NMěqq2= 9`Hx6cҳufH;Nre p,s; Fg(s=-!L 1vV:s렣TljIܖVr,v+f> Y!6T7 LljUc%H zQ}CCAbG9uZ0ڡ?Fq@ܴۓO XM +E#!95K]myv܍Lng(2+SXEcE+3tA>U}*Zat1q8^jLskR ZPE0ۂR50#w2ne.x3]bvZAe=^ fHPK)\!k%DV-MOLD1f\\] 0#3PKht[}׊$jž *Hjj XEVha[?'z1n0 !iPkP;^9`׷;xmt9i-[{^Dl/і q]3;M/'ȔUP*8DQ\ƌζ9X1+hi еS0XͼmO S3NC5ćI0?֪7uoꦵ<(CǏ l`Qz[4Q{v遙h 8"06^kf+t7` )L=+nNQL^b.K ,^KTW݉T'rOt<4u&gD/ЍV [ۓbj+EԠXƮ\l4d V$[2r-(^$!b.LV"}Ia lZ$OZ`x5@O&i^q.'jyP1$WzzEK89aZib˄y(3xD-dRZ?Yٚg&Iq+B#L?|1C/བnF6y@X z7G?a{05jv͠Jy{vzD x?g{fx7'1V^P 2_[ lm2 COkkp<0ml-nº={H͠Ԭbrsjd]a-Y2>}La*Ԧ 逗C3PXh,bl(s@ޞ c;k0ȏG4 5{tzoO YfgV#ڊ[봩ޔ%݇vġO<8.40~@lhBv~p,ٺbMi7Qd+n\cn+%GڐH\Uud9>/ni1&&k5%"8]f{jUpY+.KAU#r5Vפ vqBK~7a|dҊ23։nOH[U$آ֊9L"傩VLUxJ4f4xJ$NrhLT]pg{? Ǚ'H unE "F@j|)~h&jlƴA+2{JRr F!*Ӕ]kzKjik0k2MzIzFI:z :MWceLG:_=Vf...4x4cIB„e&&,mվ"(Kd.6  0DZ&ܚ-F-FRDڣZBҳW}Uܣgٲu xǬafۇW9[Ey=n,LT]6'M0[&mNtUȾǙzn I;{ߟR33^p IDATC)(sԮ-3xN݄~²0'+,TTRͬVL"YnUYJ4A&4υ)#H 8 &op |{Oؑ~Ȳ]@/z;-83g5/L&]Ni}ѐF5欮wnj9hnn" $"Tm5?Q1b* rTCnVs[m1xk\=0FD@UEyXTF*KMȦ6p$Qm`ؾW(P1 3}Od ϝ0O4ؾs ҅DaDC$qn:1f_XMdKbhx] H)Zj3y5!^W]Li]pۀﺮ&_(YP H2iuŴ4FZss.neJ 6״dBfz]}Y:C-mv5n]2:nr Zi&,Kni3,U&PQR ZK5Ps3̅)J#|=n|`= ~#nd#Bpn3ؽr_؍={l+> %+}l_<&k%SdaX\uֿgz\{iVyB0Wx_c^QV/d2!DZ~  ' 8AJΖa f4B`4-;^Y+ZqX+^ϯsA΂uZRIĤ@h9sO43v;j-{KpZqRPkׂZ1^ ZITx4=BnOg{|~yQA/}O= =ݦ;޽~ /l\f5g`:vg=ZZܓWV&fm.7GC9C 3ZZ5ز*ݠVQ-ƕUâ Tcr'5iv@`Wjt5fVJsϓV lx NC #+n_Ma⦱ɴۋLgD;%()a\J! /@6:!HA"H,ch(T!/A[2ʎ{~203)0[1jfMS:˃cڌi쀷`+j^5}!k-0ޢhO`A3k" C>$dz*cAh&!0 h͒iyu43#X#Ӳk\Rђ$/$ՊFJEZ3ȫעB7=T xJڟD=Q!Ebrk7hrzY 쵿W`C3e'í^45#퀶O&[PjfbSlTָ%/^{Rj5-![-Q )Q[5.uɚTL-@śYODMgȲY;qZ̞e C!LUr%٭YA:*Ha O#k?~3c(i¯M?5%0QJR)Wff6\R7KcVfgt#'+nctAj kco0[-}. vIRQfM@ϛ^T !Bi~_˾c3hbp#2^cjTaIy3'މM`#pcU]eJXe[Y ᆓ,qմ~qs 9#<[פ fR;p4gx/M66WuG+vCZT%x=qP%-`Nld kS[ )NU\R}+@eOM*A` ( U S\UmC*C+xNPK;xFHs\erY F(h97vh`wut WI]MK4;8^),!zM,"=LwK]RD='\'n9+3Ζ)4K_p#A /N#"C۴A#W9iDy' DۂJ0 ukuԦ j^41.ڢ'.g0`Rصl]T=1z"5u[mq򒝽niGwgST&bfL$D&WD a"` !!&" B%"U=T"R |T!֜jFCU$l%aDZED!l͇WU.Ky;o/ʄ_'½DX8 - c5k252s}ٻ&-v ݕ`:ji _ Wd4t$ `7cxMDYjyP bZ^=X@%F*I{@Հ`b`!Ƶ9U˄MXk:hkr]7l.q7mÖ ʢcv,Xѻ5jhPzjMF̫RPIC Mk]֐kVsITш#vPz7bԖ3BI/'4a Wk ڂW]L% ז%a&)MMé!cosgoԥ13X_JⵥMXq(r=6$~|Pb}gӪW[cbsCrr]Z5ZpX1\7;竱xͫg *jH4DcKK[ " ڢv ן|җݔAJ}>vy{0OɿD4x=S@lW4>R&5*4A@59#bd9 Ϧm,]65`%沔&ip CŚjXZKhF=>Gqct=0C*C2vlAˋ ]Jo1Z;w1]0.kv3ϸk?bY0OIc4˸9$jPcb9Dav{lettWpژF=u˖SЫXZM\(R_[6k56[LkcwmUv@( z՘$ˆ_KYa;ڔRĘD0&Y]-a11?CDv oCLB2tU Ma" ړdK n7Tv4]_UzZJoJ+St乺hj`JєcQW#2b k״jA%ģa1Y-䮃 !zSq]$ ܝ1"1=ڞq~µݻ/fܵ_pmòHxYڤj) sm] ,X ֱӔ D!7Y!WVhsE=;X=~BS}0X~8Kg*HnQ}ՇUp]Nxm~]m[㥎,D$]}QT۸_+}5KPȮOU0Lj9>GeRą G^dB'}ј:U}~H$c1_7Z Of"at6OneF *`uCHJT]#FPdhGFkWFepmAf /b@jI+Ή uo*PSuX) X3̸w! O|H&uz߉A(/ؑ^s'NW8 n#LkGS'NxxdXc][6'6Go -۸.z6F? W鼀"զ  "*nĴ, !XHQDQԶ7Y_,yقá`Y/)'f5 eC[4|f5#ͻ0]ac"^,{p Dw5{܂={t5T}'ѷ R#F,ތ(`iNvǎY?VX}g@Q4[Tix=4[xy݋LB^D<)Wk~(n"H${|Շ` Hi{a[ЉT4CċAQܪv5ѩjDHwFF+]Ў-NgךruDCQ '.q*L.Fc+Kr08]X8cyaܻ0=090C1{^L=,(K1e'K{qi9{\RG8h٩gN  E71xu7PkT) []ưfUͣblk3Cw+u׎f8M0آij%UXNz#*>H@TlCJZF%DIxs??o׽M_' ?QŬI3|/Ww^^ {WDѠ%淵M÷{vGݶ]KV몯R=?7u[-]э۽L^`hcwih6L)P\'(A!{~q8cCA)-ސvZƴATĴ^ ӴZ/NR;W-xbZ כ]j$o CclZ/=>NjՉN Ŏ375=?*>Ax,[SvkP{W/}i?D"x^ݛΠPjU}جXɌNUjzW4ϸcŚuG5~heN^4ߪ8qR#[Wt&/qu/ eX=PpXr`%0aa¡ la,gr(e)(lcPB *}nzr̺аs?F0]Eve>.+2z {rݶpt{UPq ZqlpT8"Mڐbydc"FSc!$ܫ Aifdn6t&c-zL^F@Zؤ{8gRikp#}zIa ?5)+bx G g/̗[[꒓݉*9 3tV ҈}3Mц>xz*`\ɮ0seJCǁqdwbݾvfV\Նulo_4#kčyl֑AMm|ae{qY bWF4$JG񬑭QuSqbOtVnRDESe!'[bXf%;Eڣ?5n"H$߾~wQ"*J=AxGE-?2uU{ 'V 2=cxRyx)s}PiC7`'ɖPlSf_ii45QWg7ю@:i[/@x9H\b$} Qi |]GB'+vZB6kI;V{U5I : *FG[SwkW/B5 8م 4"\GUch*un"l&?g;_oqB BX*_H$$?&MUVDy4g"{ܞ A['=fc~J[ K3E;o|XE}kCݪ˖C-ӼdIh1NjEp5\ƬSLX(C%'Fd@ܡ/O M:Tڨڳ^+d0/HLտ,+ھ71{D[VnbbBx[jr+BxGe-agِ+}괰N'H^\2났 Ыxy/H$$?|?ؚ|PyP4ihPv͊nkF‚%*5Wݲ6<̪< ?'+48ӎSv;$&e׉}օ6W0d4{7O],uzkXшvZ}YZ;ꔶC~]e $"CAv{I4>0ŗtDӓą>ok)c76= -lwe~UЫ\7^%M$D/O|_`@t+hj}`i+kUBSDiwx.3NwtYtjr>J&~#wėI}.|~$껢 MVa$\xU4'BKZVc +muG8!޶Qqtµ+ܺ4^lAA稳R;.݉`f 4I:yDucdj U\7^&D" |iO_bMuRakWZ4XI:Qfc̅-C0w=Nvw) 4M& gQŜW #!<_a N鉮;U|v }Xܢ֙/lEPQkm &D" /'~WWzp A6Oo(T#]n "2t44x`;%y.=ڔc T=fW>?s/" BrzsRO0ۆ&5ĮnWb|8T kcdPu{̜fwyk;p^{\.\='f)כ=ԅ&ؼ ؈ 76H¾aWp՝7T~t>⓸]QDC[U<7P]O&M$D_H/'~uh=(UCyrEZuB~[z= CWES@:;[ 6'WeXEbC߼IƐ,l6<҂]#gpS ()UUJ$D_+_oUl=P6&w)x>)_Y0v!N~ٕ8ysoYm(@%5"K܆;Wp\LMvcFs[8 plcS 8A|2Tuhwpj BZpqXZVla b\M]aGtgO'.ֻZ5d梻er~R+#Jn [xC j֜_u;'0{{ VNoYINl NڶW̺xT5GM18[Z4MǨK#w"%D%wク7~[\o%[X}~_ў*T*}IS׹kUĥ{0LϙSo.vIu&ETɸ=\( Pr,g ppr8`9,(e)X Kˡ`Y,KA)R cS-\{'ɑ FxksV\7\^W\7\\UܹZqz 7/7ܺprÝ Vܹ^qqz;;놋uպj n+#ڮ- sz~`E]G"vSGtޝƓ qx}ۋaj;!Td%cHH$$-(;rڲm%mkj>Md'n%sDTw5iAT)I90>!UcֻrX's @ P h9:d;5e)8,X caBIfŤg΄ H$$ښ+^\msՆ[ 1G#w+.vyp\Wum)٭S 'ArRtNc3 Q̮ o!6=ahǤ+3YBdx8>FCDx=LH$$m? |ǽEj]՗{GikWWv5*pMAlkyY6Y D*4Eř"}`άċ)̓Kp8(U|XPSxKAYpa'CaQ L#a!xIU[XKAjkX^7\^s7/7ܼXqrW+n:ٽJn;+7\W\Zk튮n3G=oRIIg/}C"YȄ2-ď+[t|b_RZ'mG.|WD"H$rA淾.h%hNr۔c^.nʦ얙a_%vQB]L8I}۷PwT^^r@Y ܥ#ܷf[ X(4]AIMk [lDqxEEm^M}y͋\xΊg.6ܼ0kꮓkSs/7ܾpuAvͺPFt(&;K_?Y<-n7b-w W]myNtR<|B6#O\D"H$%_A7;m/ȽKz:d4# KX0HH)C-IҿN`.`f0ajwRspPY~5ak8@b* 0Jap!y 0c!']yH~չ.;ݩ IDATQlj[u{.yg.Vr&,'[xUKlV  Έp  Lg^wcܲRJ1U#ϼ맓&D" ~?ly rO@vh揧a b4NBWxmV6'H4ՇbnY(+SAxeLuELBTT`ib`]%(h>&$LF^o '=.*XjW[cdqjpV Wȓ$D"H~_}~S< 9][呾LdwQ;w#8WU̻"&BA@J e46R Vh(e,]sGq{G="mvo k+~"hP ,4'F"@{ FeF *Mɮ%3W![.+\WܹxNœW<}iV㶡*紅.ȳ>d;GiWv-~FŒz/M Nrc -[J1[~ǒ)G=u"b'`ņEs DP[6V_G;_s?XD"H$}wDŵ#B\#gЕ`{D[2 Pl{+K 󴊩T؇bݧ[u?o!(FDlLf'X$AL5{ ׂ%eklgKXn}+#ԛ Up\}l8  *n^TH$$^wɇ L) eg8WF@'2GWڀY08jz*1%T&T$ȮOEo^?M/#R˾!c'sGANx 66bUD}_*h+V BXy;+jmyweœgc>R\\ Y^Vpy\o|>n"H$~ c3)KO-?ɔI['" 1^&S\T`jnSE^Q=[:yDV-Sr6; w+"SjA+ JcRF(M]ae5|Z[OxDbjz [CÝ 7/7<}񈺭f5$+HAt#W7jhbuJZݟMljUPf < >W/Ȇ"󈫏E1 hD}G/7Pex! "I\Rօ˫7oD"H$}.?'^(LL ayam#[F",w]3uH4HcT(hSp{tI-“aĄjO+'I(;U0KWuT( U@T CИ;8e%:3rնjdw[Gձb}pj$WWn 4w* =*>p7N.̕XP 쪪H_^7@Dlhl, XQR"E eEaB=JDnsLkZ2m*MG ?w&D" s 7=+._^_0P" c ԅ ؉U`nq)Tp@ +%4%0)J4MU:wt7ڜ7ìP@C$(z|@jkc'>TT!b * a7A+K45A 6ԭa*_?6\7*.n RH+f{ԄhC8h(4X#S I$uTQvCn싡miѵHFJ".A?;)9+! x?#ooOH$$Uz3|a|䁉&6I+xFxׁ4 `YMQ{) jLS=ڊFE-M wLEE'f)%</f Ҍ/,Pߚm kPV\oi  VƐV4bI}ywP~ijI+cz hVmxʂٯg.0eN#^a/lAT#}-26.&ŷBrh'D" s??z( L bg$BF.Ņ3M5.L[Sρ7w9SzQW2)DNXۈrQbSW1ɿFb0^fdW ɮۆmCZ@sEW6St)xQn?aYcƥk-Dn!{[zm-pƅ=QRu K+R>+k4(Fk&F:~bڽ"~>UhCH3'9qUOgUhư4C, TI4ߗz{E[źnض㊫mEݎh5v5툲#-ٸng`./h\U]H20ն}Şg+,EVK}4^ǂ '=郆 w!Q1,>/Ld{+dT!%Z̖G߫v9>CWz'Y7nw[v*bQE4JZ)T4?R֗=ɉD"xD*e>f0}PaՅy+L7 LW,ɢA '>m(Q$X,_U,Uĕ]jKCqE"".EwIE}sz8ᬰBܾAj5¶a6A}[ͯ6VRNٺ]24EB1B /hYbMj%ҿL3J BSǞ]m i4,>d`FD<*o7H$Ix?o3DRG Ӈ3Ȼhuw"AfMԑa[DIqr * i^ܠڼ0.{ch Q^tN,}`ocsB-bV>р@Mրڠm3nGvWۨA]B gEvwҌ@&K\P`#D }!^߭ 1V-aQlᏡa_6Wx'uzQ1{9 6&-ʏLK$5K/P?I_ (L7&_J%TR6&(:] ϮRK9@q;î C}f`﹀|-W6YlDiDwkH Bjl؜ (csڋ﫝4:A ")l #w ^]lv'D(, #7<>7Z̦B#LdZ2!,n*\׼LD"H| ro("%|~rQ=SF6PGBY!j𻮵WK/Uhk ;(Tg:b-o]yTʼnyW i̧[WXZ)+^^+AS*v5,rRh)ՇԸ,@)`Wv)sWT^&y#{ۙ'-,1Z0Ho J V/܌{Xos[JuArPͪ."XE(cy-+D"7 OXXCR2Vdp9)-xBxs=t֪`6Uku Ybi"Edi%/KV=V#=@nHniJAvJxMD3YɝHz120ȕa4'b !lH # (NfRh\-nw8@JAeRP<^,~6HZ0جD[L^1bƆg!_`j.u?`;¨JxTU _9ەH$$B1E六ɯ$WZCNx[uk^nWxu"v& "6vk='\3~WÓ _э cbt28H r,hd7S9񂶔-Kq(֔F=l "0 3W}#NL ,f5r%Fue(P;Y^+T_95H$$M{/m}|&>wcUp[ u[m6WuUHihլngj'N0(ʜdiP$byz@ 5Ң #z/Bԭ^7}P*.ZΠ/X0 cJ%eʸa涆?Дp1z]du]f QU IDAT5lNJ i+Zsj3A_j aGjLx% 0vWS#zʬIΆow1o^]|-Rx1«n#%$<`:)?  K>6~SFZ7+Zgۋ>ӺH$DL?"*~2+Vy[+m늶=IAswUaha P=\,#̡Im~ 6iCmQVZ7b@-rmU4o>F,^t򋉸R3?F0ګN`Fl5V'V4o1G%ZdRESybJ4E*NlCnLI nϕ>Q7:~wT?W~ND" p{GU{.CuR mn 'uRe;;k$tVu~X?^6hK n|>4^b=9΀Q bo9H9,g (ghngrfUW}sy-ʌ]-qe\,pFcO#w*G:k'FwP75w))Lև2^,H$$ |wn_2}j}Ѥ^D-u;iH[4Sg*pxi~yhW|bG?W>z{Ev{^>3Wƀ U" #eOx.q0}zMvLc@ % -л +>N͉D"H$Mp?jQ_ 9>R}j;@,AiN:e B!n7g2wm^9wTGAHh0‹]=ӫ%ע֦5]{y0qpAq[7L^@IvQ:s$D"H$&-qWàQk_>gK: `~ ')|W+ڀ(`׊{ͱA=lѮ6+˹+~]v KAx, g˂q'(8wjWMڛ^M$D9;ުv܀Q>@*AYPbIGB^:QlDž:+:}u"~e:^oJ7`K>S\ y ꏏPǡ~!!W,D"H$&~}+HV՗BbU|I}ٴPLvUxY\پb:Itv0U U^`J~%'dYl ' Z'ϓlڇ(S.T]ީxOLYH$D" oF|`xO}EC~_G@iHҏ@;eaFdS:g8퓘H;*cfj WcK U5qk&"6v~RHL"KՃH$DǗz;r = zíW _꙽UiCmE!8=as]ŎMgR : ٢nw Q jPQ@/Iq3< o$D"H$MO>θ/XwBRZwQL0J7}1$tS_s6բm^4Lƻ{pG$[SR(x)ԠЪ@m"?^HUQk>H$D֛O`y{ %9 fgU u(Z' ;u)&CV;5`Z;z1PP\ϊK %Р h観ezUD"H$M|z5%*DDʼP0R"DVrnևzPn'_ITXi=t]oHe6H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$o{p@ v*Paݓ͋IENDB`secrets-5.1/data/main_window.ui000066400000000000000000000136501415312107300166140ustar00rootroot00000000000000
_Preferences app.settings _Keyboard Shortcuts win.show-help-overlay _About Password Safe app.about
secrets-5.1/data/meson.build000066400000000000000000000051771415312107300161110ustar00rootroot00000000000000gnome = import('gnome') message('Compiling resources') gnome.compile_resources( meson.project_name(), meson.project_name() + '.gresource.xml', gresource_bundle: true, source_dir: '.', install_dir: DATA_DIR, install: true, dependencies: configure_file ( input: 'about_dialog.ui.in', output: 'about_dialog.ui', configuration: conf ) ) # Installing the schema file install_data( project_id + '.gschema.xml', install_dir: 'share/glib-2.0/schemas' ) # Install mimetype file install_data( project_id + '.xml', install_dir: 'share/mime/packages' ) desktop_conf = configuration_data() application_id = 'org.gnome.PasswordSafe' if get_option('profile') == 'development' application_id = 'org.gnome.PasswordSafeDevel' endif desktop_conf.set('ICON', application_id) desktop = i18n.merge_file( 'desktop', input: configure_file( input: files('org.gnome.PasswordSafe.desktop.in.in'), output: 'org.gnome.PasswordSafe.desktop.in', configuration: desktop_conf ), output: '@0@.desktop'.format(application_id), po_dir: join_paths(meson.source_root(), 'po'), type: 'desktop', install: true, install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'applications') ) # Validating the desktop file desktop_file_validate = find_program('desktop-file-validate', required:false) if desktop_file_validate.found() test ( 'Validate desktop file', desktop_file_validate, args: join_paths(meson.current_build_dir (), application_id + '.desktop') ) endif appdata_conf = configuration_data() application_id = 'org.gnome.PasswordSafe' if get_option('profile') == 'development' application_id = 'org.gnome.PasswordSafeDevel' endif appdata_conf.set('APPID', application_id) appdata = i18n.merge_file( 'appdata', input: configure_file( input: files('org.gnome.PasswordSafe.appdata.xml.in.in'), output: 'org.gnome.PasswordSafe.appdata.xml.in', configuration: appdata_conf ), output: application_id + '.appdata.xml', install: true, install_dir: join_paths(join_paths('share'), 'metainfo'), po_dir: join_paths(meson.source_root(), 'po') ) # Validating the appdata file appstreamcli = find_program('appstream-util', required: false) if appstreamcli.found() test ( 'Validate appdata file', appstreamcli, args: ['validate-relax', '--nonet', join_paths(meson.current_build_dir (), application_id + '.appdata.xml')] ) endif # Validating schemas compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif subdir('icons') secrets-5.1/data/notes_dialog.ui000066400000000000000000000101761415312107300167500ustar00rootroot00000000000000 False 500 450 vertical true True False True _Copy True True True True True True True end True False system-search-symbolic end True False vertical True False True True 26 edit-find-symbolic False False 100 True True True True True True word 5 5 5 5 True secrets-5.1/data/notification.ui000066400000000000000000000016451415312107300167700ustar00rootroot00000000000000 secrets-5.1/data/org.gnome.PasswordSafe.appdata.xml.in.in000066400000000000000000000174221415312107300234030ustar00rootroot00000000000000 @APPID@ Password Safe @APPID@.desktop GPL-3.0 CC0-1.0 Manage your passwords

Password Safe is a password manager which makes use of the KeePass v.4 format. It integrates perfectly with the GNOME desktop and provides an easy and uncluttered interface for the management of password databases.

Maintenance release of 5.x series.

Bugfixes:

  • Fixed icon under the Wayland environment
  • Improved application stability

Translations:

  • Updated multiple translations

New Features:

  • Copy username button with an associated Ctrl-Shift-B shortcut
  • Mnemonics support
  • Menu to create new entries and groups
  • Customization: 10 new icons and one more color to customize entries

Improvements:

  • Notifications are no longer system-wide
  • General system stability improvements to enhance the user's experience

Maintenance release of 4.x series.

Improvements:

  • Improved translations
  • Clarify that we don't use Backspace to travel between groups and entries, but ESC.

Bugfix:

  • Fixes crash when creating new Safe in password compare function
  • Fixes crash when opening file on remote filesystem
  • When keyfile is moved or removed, application now won't corrupt database and instead won't save.

Known bugs:

  • When application isn't able to save due to a missing keyfile, even over the fact, it says "Database saved" it is not saved. This is correctly fixed in upcoming 5.0.

We'd like to present you PasswordSafe with new features, many bugfixes and huge refactoring in the background.

New Features:

  • Password Generator has it's own persistent configuration
  • Added new shortcut CTRL-Q which quits the application
  • The save dialog now allows to cancel the operation

Improvements:

  • Improved compatibility with Linux phones (Librem 5, PinePhone and others)
  • Many performance optimizations, especially for large databases
  • Search was improved and settings has been moved into global Settings dialog
  • Improved Preferences window
  • Some visual polishing has been done
  • Huge part of the code-base has been refactored

Bugfix:

  • Multiple crashes has been fixed

Password Safe 3.99.2 is a maintenance release.

  • Fix a crash if certain attributes are empty
  • Fix search not returning results issue

Password Safe 3.99.1 is a maintenance release.

  • Updated pykeepass support to 3.2

Password Safe 3.99 brings small feature additions and bug fixes.

  • Added attachment support
  • Added undo/redo support in input fields
  • Updated pykeepass support to 3.1
  • Fixed various issues

Password Safe 3.32 brings usability optimizations and some feature additions.

  • Added references for linking of properties between multiple entries
  • Added entry and group metadata dialog
  • Added notes editor dialog with search utility
  • Added entry duplication feature
  • Reworked entry and group moving utility
  • Improved editing mode performance
  • Fixed various issues

Password Safe 3.30 brings the basic set of features you expect from a modern password manager.

  • Create or import a KeePass v.4 safe
  • Password, keyfile and composite key authentication
  • Create and edit groups and entries
  • Assign a color and additional attributes to entries
  • Move and delete groups and entries
  • Cryptographically strong password and passphrase generator
  • Database password and keyfile changing
  • Search tool with local, global and fulltext filter
  • Automatic database lock during inactivity and session lock
  • Responsive UI for both desktop and mobile
Utility https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/browser.png https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/entry.png https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/start.png https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/unlock.png https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/search.png https://gitlab.gnome.org/World/PasswordSafe/raw/master/screenshots/edit.png passwordsafe https://gitlab.gnome.org/World/PasswordSafe https://l10n.gnome.org/module/PasswordSafe/ https://gitlab.gnome.org/World/PasswordSafe/-/issues fseidl@gnome.org Falk Alexander Seidl xsmall ModernToolkit HiDpiIcon workstation mobile
secrets-5.1/data/org.gnome.PasswordSafe.desktop.in.in000066400000000000000000000011161415312107300226340ustar00rootroot00000000000000[Desktop Entry] Name=Password Safe Comment=A password manager for GNOME # Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=@ICON@ Exec=gnome-passwordsafe %U Terminal=false Type=Application Categories=Utility;GTK;GNOME; MimeType=application/x-keepass2; # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! Keywords=keepass;encrypt;secure; # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; secrets-5.1/data/org.gnome.PasswordSafe.gschema.xml000066400000000000000000000155111415312107300223630ustar00rootroot00000000000000 false Use dark GTK theme Use the dark variant of your GTK+ theme. Please note that not every GTK+ theme has a dark variant. true Reopen last opened database Automatically open the unlock screen of the last opened database, otherwise show the welcome screen. false Save every change automatically Save every change you made instantly into the database. Please note that you cannot revert changes if Autosave is enabled. 5 Lock database after X minutes Automatically lock your database after a given amount of minutes to improve the security. 30 Clear clipboard after X seconds After copying the password clear the clipboard for security reasons. false Display passwords in plain text Show the passwords in the entry fields by default. [1050, 600] Window size Remember the window size. "" Last opened database Path to the last opened database. [] Last opened databases A list of the last opened databases. true Remember composite key Remember last used composite key for database unlocking. [] Last used composite key Path to last used key for composite database unlocking. true Remember unlock method Remember last used unlock method for future database unlocking. false Backup the database on unlock If an error occurs while saving the database, a backup can be found at ~/.cache/passwordsafe/backups "last_added" Sorting order of groups and entries Order of the rows in the groups and entries view. "password" Last used unlock method Used to store the last used unlock method and to enable a faster unlock process. true Use full-text search Performs a search across all values of entries. false Current group search Only search entries in the current group. true Use uppercases when generating a password Use uppercase characters A-Z when generating a random password. true Use lowercases when generating a password Use lowercase characters a-z when generating a random password. false Use numbers when generating a password Use numbers 0-9 characters when generating a random password. false Use symbols when generating a password Use non-alphanumeric ASCII symbols when generating a random password. 16 Password length when generating a password Number of single characters when generating a password. 8 Number of words when generating a passphrase Number of words to use when generating a passphrase. "-" Separator when generating a passphrase Word separator to use when generating a passphrase. secrets-5.1/data/org.gnome.PasswordSafe.xml000066400000000000000000000004001415312107300207440ustar00rootroot00000000000000 KeePass 2 Database secrets-5.1/data/password_entry_row.ui000066400000000000000000000074161415312107300202560ustar00rootroot00000000000000 secrets-5.1/data/password_generator_popover.ui000066400000000000000000000250441415312107300217630ustar00rootroot00000000000000 3 999 8 1 10 8 999999 16 1 10 secrets-5.1/data/passwordsafe.css000066400000000000000000000071431415312107300171550ustar00rootroot00000000000000/* Pathbar button styles */ #PathbarButton, #PathbarButtonDynamic { padding-left: 0.5rem; padding-right: 0.5rem; border: 0; transition: 0.3s; } #PathbarButton:hover,#PathbarButtonDynamic:hover { box-shadow: none; transition-property: none; border-top: none; box-shadow: 0px -2px 0px alpha(currentColor,0.5) inset; transition: box-shadow 0.3s; border-radius: 0px; background: transparent; } .PathbarButtonActive { box-shadow: none; transition-property: none; border-top: none; box-shadow: 0px -2px 0px @theme_selected_bg_color inset; border-radius: 0px; background: transparent; } .PathbarButtonActive:hover { color: @theme_selected_bg_color; } /* Entry and group browser page styles */ clamp.medium > #BrowserListBox, clamp.large > #BrowserListBox { /* Margins are also hardcoded on search.py _show_results() */ margin: 18px 0 18px 0; border: 1px solid @borders; border-radius: 8px; box-shadow: 0px 4px 5px 0px alpha(@borders,0.5); } clamp.small > #BrowserListBox { border-bottom: 1px solid @borders; box-shadow: 0px 0px 5px 0px alpha(@borders,0.5); } #BGPlatform { background-color: @theme_bg_color; } .row { border-bottom: solid 1px alpha(@borders,0.5); } #entry_subtitle_label { color: alpha(currentColor,0.5); } #empty_group_image { color: alpha(currentColor,0.5); } #empty_group_label { color: alpha(currentColor,0.5); } /* Entry color button styles */ .NoneColorButton { background: #deddda; border: 0px solid; } .BlueColorButton { background: #1c71d8; border: 0px solid; } .GreenColorButton { background: #2ec27e; border: 0px solid; } .YellowColorButton { background-color: #f6d32d; } .OrangeColorButton { background: #e66100; border: 0px solid; } .RedColorButton { background: #c01c28; border: 0px solid; } .PurpleColorButton { background: #813d9c; border: 0px solid; } .BrownColorButton { background: #865e3c; border: 0px solid; } .ColorButton { border-radius: 25px; } .ColorButton:hover { box-shadow: none; opacity: 0.5; } .ColorButton:selected { box-shadow: 0px 0px 4px 1px alpha(@borders, 0.5); } .NoneColorButtonList { background-color: #deddda; } .BlueColorButtonList { background-color: #1c71d8; } .GreenColorButtonList { background-color: #2ec27e; } .YellowColorButtonList { background-color: #f6d32d; } .OrangeColorButtonList { background-color: #e66100; } .RedColorButtonList { background-color: #c01c28; } .PurpleColorButtonList { background-color: #813d9c; } .BrownColorButtonList { background-color: #865e3c; } .BrightIcon { color: white; } .DarkIcon { color: black; } .circular-icon { border-radius: 32px; } /* Entry icon styles */ .EntryIconFlowBox > flowboxchild { border-radius: 8px; } /* Password strength level bar styles */ levelbar block.weak { background-color: #f66151; border-style: solid; border-color: black; } levelbar block.medium { background-color: #ffd096; border-style: solid; border-color: black; } levelbar block.strong { background-color: #a4dfb9; border-style: solid; border-color: black; } levelbar block.secure { background-color: #33d17a; border-style: solid; border-color: black; } /* Password Entry */ .passwordEntry { font-family: code; } /* Link Widgets */ #LinkLabel { color: @theme_selected_bg_color; } /* TODO This is a hack to make a button circular */ /* there is a gtk3 bug making the circular class*/ /* turn the icon black. */ .RoundButton { border-radius: 25px; } /* This is needed to make the corners of the notes field rounded. */ .codeview { border-radius: 8px; } .codeview > text { background: none; border-radius: 8px; border: 1px solid @borders; } .italic { font-style: italic; } secrets-5.1/data/passwordsafe.gresource.xml000066400000000000000000000055041415312107300211610ustar00rootroot00000000000000 database.kdbx passwordsafe.css about_dialog.ui attachment_warning_dialog.ui color_button.ui color_entry_row.ui create_database.ui create_database_headerbar.ui database_settings_dialog.ui entry_page.ui entry_row.ui group_row.ui group_page.ui icon_widget.ui gtk/help-overlay.ui unlock_database.ui unlocked_database.ui unlocked_headerbar.ui main_window.ui notes_dialog.ui notification.ui password_entry_row.ui password_generator_popover.ui properties_dialog.ui references_dialog.ui save_dialog.ui search.ui selection_ui.ui settings_dialog.ui quit_dialog.ui recent_files_page.ui welcome_page.ui attachment_entry_row.ui attribute_entry_row.ui crypto/eff_large_wordlist.txt images/welcome.png icons/currency-symbolic.svg secrets-5.1/data/properties_dialog.ui000066400000000000000000000170761415312107300200220ustar00rootroot00000000000000 360 120 True vertical True Properties True True 300 True start 18 18 12 12 True vertical True False 6 12 True end False UUID right middle 0 0 True end False Accessed right middle 0 1 True end Modified right middle 0 2 True start - True char True 1 0 True end Created right middle 0 3 True start - end 1 1 True start - end 1 2 True start - end 1 3 secrets-5.1/data/quit_dialog.ui000066400000000000000000000056431415312107300166050ustar00rootroot00000000000000 secrets-5.1/data/recent_files_page.ui000066400000000000000000000051601415312107300177340ustar00rootroot00000000000000 secrets-5.1/data/references_dialog.ui000066400000000000000000000546051415312107300177460ustar00rootroot00000000000000 False bottom True False 8 8 8 8 6 14 True False Code 0 0 True False Property 1 0 True False T 0 1 True False Title 1 1 True False U 0 2 True False Username 1 2 True False P 0 3 True False A 0 4 True False N 0 5 True False I 0 6 True False Password 1 3 True False URL 1 4 True False Notes 1 5 True False UUID 1 6 False True False 8 8 8 8 vertical T True True True Title U True True True Username P True True True Password A True True True URL N True True True Notes 440 200 True vertical True True References True True True False start True False 12 12 12 12 vertical True False start start 6 6 Syntax True False start The placeholder syntax for field references is the following: True True False True False {REF:< True False LinkLabel True False Show Field Codes Property end True False >@< True False LinkLabel True False Show Field Codes Identifier end True False >:< True False LinkLabel True False UUID end True False >} True False start start 30 6 Reference True False True True True prop_selection_popover True False 2 True False Property True False pan-down-symbolic True True True False False edit-copy-symbolic False bottom True False 8 8 8 8 vertical True False Each entry has a unique identifier called UUID. It can be found in the properties of the entry. True secrets-5.1/data/save_dialog.ui000066400000000000000000000040451415312107300165540ustar00rootroot00000000000000 secrets-5.1/data/search.ui000066400000000000000000000124601415312107300155440ustar00rootroot00000000000000 True True True True app.go_back True go-previous-symbolic True True True True True edit-find-symbolic False False True True True True vertical 8 empty_group_image True end True True 70 folder-saved-search-symbolic empty_group_label True start True True Enter search term True True True vertical 8 empty_group_image True end True True 70 folder-saved-search-symbolic empty_group_label True start True True No search results True never True True True BrowserListBox True start none secrets-5.1/data/selection_ui.ui000066400000000000000000000042221415312107300167560ustar00rootroot00000000000000 secrets-5.1/data/settings_dialog.ui000066400000000000000000000402601415312107300174550ustar00rootroot00000000000000 secrets-5.1/data/unlock_database.ui000066400000000000000000000471771415312107300174330ustar00rootroot00000000000000
_New Safe app.new _Open Safe app.open
_Preferences app.settings _Keyboard Shortcuts win.show-help-overlay _About Password Safe app.about
True False Password Safe Open Safe True True False True True True True False go-previous-symbolic True True True primary_menu True False open-menu-symbolic end True 18 18 18 18 300 True False True True vertical 25 crossfade True False end True vertical True False 100 dialog-password-symbolic True False Safe is Locked middle True False Enter password to unlock True True False True 10 True True True False user-not-tracked-symbolic password True True True Unlock end True False changes-allow-symbolic password_unlock Password input-dialpad-symbolic True False center end True vertical True False 100 dialog-password-symbolic True False Safe is Locked middle True False 5 5 Select keyfile to unlock True 250 True False center 10 True True True end end True True True False _Open Keyfile True True True True Unlock start start True True True False changes-allow-symbolic keyfile_unlock Keyfile mail-attachment-symbolic True False end True True vertical True False 100 dialog-password-symbolic True False Safe is Locked middle True False Enter password and select keyfile to unlock True True False True 10 True True end True True False password user-not-tracked-symbolic True True True Unlock True False changes-allow-symbolic True True True end True True False document-open-symbolic composite_unlock Composite insert-link-symbolic True False center start True unlock_database_stack
secrets-5.1/data/unlocked_database.ui000066400000000000000000000064601415312107300177320ustar00rootroot00000000000000 True vertical True True True True True end slide-up False True end True True BrowserListBox True start none True True True vertical 8 empty_group_image True end True True 70 folder-symbolic empty_group_label True start True True Empty group secrets-5.1/data/unlocked_headerbar.ui000066400000000000000000000250351415312107300201020ustar00rootroot00000000000000
horizontal-buttons document-save-symbolic _Save app.db.save_dirty system-lock-screen-symbolic app.db.lock _Lock
So_rting _A-Z app.sort-order a-z _Z-A app.sort-order z-a _Last Added app.sort-order last_added
_New Safe app.new _Open Safe app.open Sa_fe Settings app.db.settings
_Preferences app.settings _Keyboard Shortcuts win.show-help-overlay _About Password Safe app.about
Select _All app.selection.all Select _None app.selection.none
D_uplicate app.entry.duplicate _References app.entry.references _Properties app.element.properties
_Delete app.element.delete
_Properties app.element.properties
_Delete app.element.delete
New _Entry app.db.add_entry New _Group app.db.add_group
secrets-5.1/data/welcome_page.ui000066400000000000000000000047051415312107300167310ustar00rootroot00000000000000 secrets-5.1/flatpak/000077500000000000000000000000001415312107300144465ustar00rootroot00000000000000secrets-5.1/flatpak/org.gnome.PasswordSafe.json000066400000000000000000000033661415312107300216440ustar00rootroot00000000000000{ "app-id": "org.gnome.PasswordSafeDevel", "runtime" : "org.gnome.Platform", "runtime-version" : "master", "sdk" : "org.gnome.Sdk", "tags" : [ "devel", "development", "nightly" ], "desktop-file-name-prefix": "(Development) ", "command" : "gnome-passwordsafe", "finish-args" : [ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--filesystem=xdg-run/gvfs", "--metadata=X-DConf=migrate-path=/org/gnome/PasswordSafeDevel/", "--talk-name=org.gtk.vfs", "--talk-name=org.gtk.vfs.*" ], "cleanup" : [ "/include", "/lib/pkgconfig", "/lib/cmake", "/lib/debug", "/share/pkgconfig", "/share/aclocal", "/man", "/share/man", "/share/gtk-doc", "*.la", "*.a" ], "modules" : [ "python3-setuptools_scm.json", "python3-wheel.json", "python3-pykeepass.json", { "name" : "libpwquality", "buildsystem" : "autotools", "config-opts": [ "--with-python-binary=python3" ], "sources" : [ { "type" : "git", "url" : "https://github.com/libpwquality/libpwquality.git" } ] }, { "name" : "passwordsafe", "buildsystem" : "meson", "builddir" : true, "config-opts": [ "-Dprofile=development" ], "sources" : [ { "type" : "git", "url" : "https://gitlab.gnome.org/World/PasswordSafe.git" } ] } ] } secrets-5.1/flatpak/python3-pykeepass.json000066400000000000000000000147061415312107300207570ustar00rootroot00000000000000{ "name": "python3-pykeepass", "buildsystem": "simple", "build-commands": [ "pip3 install --no-index --no-build-isolation --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} pykeepass" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz", "sha256": "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/a4/db/fffec68299e6d7bad3d504147f9094830b704527a7fc098b721d38cc7fa7/pyasn1-0.4.8.tar.gz", "sha256": "aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/21/9f/b251f7f8a76dec1d6651be194dfba8fb8d7781d10ab3987190de8391d08e/six-1.14.0.tar.gz", "sha256": "236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/7d/22/b1a857262871f048a58b1ea555183dae6a9255bb77a8e131266ea24bee01/pysmb-1.1.28.zip", "sha256": "58e4cae8057282968fbe47ae9a2c321d7e779df82fe2436d1f32304008f68474" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/82/75/f2a4c0c94c85e2693c229142eb448840fba0f9230111faa889d1f541d12d/colorama-0.4.3.tar.gz", "sha256": "e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/2a/f4/dd7f09f4635962b0283bd8020d686e5ced9e4f05259cab8d7926c696bee1/pycryptodome-3.9.4.tar.gz", "sha256": "a168e73879619b467072509a223282a02c8047d932a48b74fbd498f27224aa04" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/e4/19/8dfeef50623892577dc05245093e090bb2bab4c8aed5cad5b03208959563/lxml-4.4.2.tar.gz", "sha256": "eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/be/ed/5bbc91f03fa4c839c4c7360375da77f9659af5f7086b7a7bdda65771c8e0/python-dateutil-2.8.1.tar.gz", "sha256": "73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/91/fa/5274ba70e4d1f0b72f49d2f87028fff0b958d709df0a94eb4cd5d0723a6e/easypysmb-1.4.3.tar.gz", "sha256": "3e84a71140cf654fba1ab4b78aae2f1c29b48735074704480f42a7d0eca938ea" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/e4/96/f1bf2369f29794971f836b8eff5e3bdb653043f1b61d104eae21b1de3ccb/argon2-cffi-19.2.0.tar.gz", "sha256": "ffaa623eea77b497ffbdd1a51e941b33d3bf552c60f14dbee274c4070677bda3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz", "sha256": "a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/b0/3c/8dcd6883d009f7cae0f3157fb53e9afb05a0d3d33b3db1268ec2e6f4a56b/Mako-1.1.0.tar.gz", "sha256": "a36919599a9b7dc5d86a7a8988f23a9a3a3d083070023bab23d64f7f1d1e0a4b" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/30/2f/e2e6bad1b80f744cf5c2a6d622e3dee698b43e6c040f980ae0ac0edd5e54/construct-2.10.54.tar.gz", "sha256": "3c130a67f05610557dd1b27e062a7165f92b517f9ed50db880ebe068696fd712" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz", "sha256": "b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/f5/79/9d9206688385d1e7a5ff925e7aab1d685636256e34a409037aa7adbbe611/pycryptodomex-3.9.8.tar.gz", "sha256": "48cc2cfc251f04a6142badeb666d1ff49ca6fdfc303fd72579f62b768aaa52b9" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/18/98/62d02832a43d011fd44b2177939eb0a064de273ec39270375015ec527183/pykeepass-3.2.1.tar.gz", "sha256": "b3e07eb2dd3aeb1dfa1a2d2d17be77066ee560c1e770f1c72d7ea5608117d284" } ], "modules": [ { "name": "libxml2", "config-opts": ["--without-python"], "sources": [ { "type": "archive", "url": "https://github.com/GNOME/libxml2/archive/v2.9.9.tar.gz", "sha256": "d673f0284cec867ee00872a8152e0c3c09852f17fd9aa93f07579a37534f0bfe" } ] }, { "name": "libxslt", "sources": [ { "type": "archive", "url": "https://github.com/GNOME/libxslt/archive/v1.1.33.tar.gz", "sha256": "cb4bca0adbabf218948550bdf1f1b20120e7ae8322c7d599be4b58908946aad8" } ] }, { "name": "python3-cffi", "buildsystem": "simple", "build-commands": [ "pip3 install --no-index --no-build-isolation --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} cffi" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz", "sha256": "a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3" }, { "type": "file", "url": "https://files.pythonhosted.org/packages/2d/bf/960e5a422db3ac1a5e612cb35ca436c3fc985ed4b7ed13a1b4879006f450/cffi-1.13.2.tar.gz", "sha256": "599a1e8ff057ac530c9ad1778293c665cb81a791421f46922d80a86473c13346" } ] } ] } secrets-5.1/flatpak/python3-setuptools_scm.json000066400000000000000000000010141415312107300220220ustar00rootroot00000000000000{ "name": "python3-setuptools_scm", "buildsystem": "simple", "build-commands": [ "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} setuptools_scm" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/54/85/514ba3ca2a022bddd68819f187ae826986051d130ec5b972076e4f58a9f3/setuptools_scm-3.2.0.tar.gz", "sha256": "52ab47715fa0fc7d8e6cd15168d1a69ba995feb1505131c3e814eb7087b57358" } ] } secrets-5.1/flatpak/python3-wheel.json000066400000000000000000000007621415312107300200540ustar00rootroot00000000000000{ "name": "python3-wheel", "buildsystem": "simple", "build-commands": [ "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} wheel" ], "sources": [ { "type": "file", "url": "https://files.pythonhosted.org/packages/59/b0/11710a598e1e148fb7cbf9220fd2a0b82c98e94efbdecb299cb25e7f0b39/wheel-0.33.6.tar.gz", "sha256": "10c9da68765315ed98850f8e048347c3eb06dd81822dc2ab1d4fde9dc9702646" } ] } secrets-5.1/meson.build000066400000000000000000000053331415312107300151720ustar00rootroot00000000000000project('passwordsafe', version: '5.1', meson_version: '>= 0.51.0' ) i18n = import('i18n') python = import('python') project_id = 'org.gnome.PasswordSafe' contributors = '\n'.join([ 'Falk Alexander Seidl <fseidl@gnome.org>', 'Uta Lemke', 'David Heidelberg', 'Jean Felder', 'Maximiliano Sandoval', 'Sebastian Spaeth', 'Christopher Davis', ]) message('Looking for dependencies') python_bin = python.find_installation('python3', modules:['pykeepass']) if not python_bin.found() error('No valid python3 binary found') else message('Found python3 binary') endif if not python_bin.language_version().version_compare('>= 3.7') error('Python 3.7 or newer is required.') endif dependency('glib-2.0') dependency('gobject-introspection-1.0', version: '>=1.35.9') dependency('gtk+-3.0', version: '>=3.24.1') dependency('libhandy-1', version: '>=1.0.0') dependency('pwquality') env = environment() python_dir = python_bin.get_install_dir() LIBEXEC_DIR = join_paths(get_option('prefix'), get_option('libexecdir')) EXTENSION_DIR = join_paths(get_option('prefix'), get_option('libdir'), meson.project_name()) DATA_DIR = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) bindir = join_paths(get_option('prefix'), get_option('bindir')) # Profiles if get_option('profile') == 'development' profile = 'Devel' name_suffix = ' (Development)' else profile = '' name_suffix = '' endif conf = configuration_data() conf.set('PACKAGE_URL', 'https://gitlab.gnome.org/World/PasswordSafe') conf.set('DATA_DIR', DATA_DIR) conf.set('EXTENSION_DIR', EXTENSION_DIR) conf.set('LOCALE_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale')) conf.set('PYTHON_DIR', python_dir) conf.set('PYTHON_EXEC_DIR', join_paths(get_option('prefix'), python_bin.get_path('stdlib'))) conf.set('PYTHON', python_bin.path()) conf.set('libexecdir', LIBEXEC_DIR) if get_option('profile') == 'development' conf.set('VERSION', ''.join([run_command(['git', 'describe', '--long', '--tags']).stdout(), get_option('profile')])) else conf.set('VERSION', meson.project_version()) endif conf.set('CONTRIBUTORS', contributors) conf.set_quoted('PROFILE', profile) application_id = 'org.gnome.PasswordSafe' if get_option('profile') == 'development' application_id = 'org.gnome.PasswordSafeDevel' endif conf.set('APPID', application_id) subdir('data') subdir('po') install_subdir( 'passwordsafe', exclude_directories: ['.mypy_cache', ' __pycache__'], install_dir: python_dir ) message('Preparing init file') configure_file( input: 'passwordsafe.in', output: 'gnome-passwordsafe', configuration: conf, install_dir: bindir ) meson.add_install_script('meson_post_install.py') secrets-5.1/meson_options.txt000066400000000000000000000001561415312107300164630ustar00rootroot00000000000000option( 'profile', type: 'combo', choices: [ 'default', 'development' ], value: 'default' ) secrets-5.1/meson_post_install.py000066400000000000000000000007171415312107300173170ustar00rootroot00000000000000#!/usr/bin/env python3 from os import environ, path from subprocess import call prefix = environ.get('MESON_INSTALL_PREFIX', '/usr/local') datadir = path.join(prefix, 'share') destdir = environ.get('DESTDIR', '') if not destdir: print('Updating icon cache...') call(['gtk-update-icon-cache', '-qtf', path.join(datadir, 'icons', 'hicolor')]) print("Installing new Schemas") call(['glib-compile-schemas', path.join(datadir, 'glib-2.0/schemas')]) secrets-5.1/passwordsafe.in000077500000000000000000000030121415312107300160540ustar00rootroot00000000000000#!@PYTHON@ import sys import os import locale import gettext import gi gi.require_version('Gtk', '3.0') gi.require_version("Handy", "1") from gi.repository import Gio, Gtk localedir = '@LOCALE_DIR@' pkgdatadir = '@DATA_DIR@' extensiondir = '@EXTENSION_DIR@' def install_excepthook(): """ Make sure we exit when an unhandled exception occurs. """ old_hook = sys.excepthook def new_hook(etype, evalue, etb): old_hook(etype, evalue, etb) app = Gio.Application.get_default() if app is not None: app.quit() sys.exit() sys.excepthook = new_hook if __name__ == "__main__": install_excepthook() try: locale.bindtextdomain('passwordsafe', localedir) locale.textdomain('passwordsafe') except AttributeError as e: # Python built without gettext support doesn't have bindtextdomain() and textdomain() print("Couldn't bind the gettext translation domain. Some translations won't work.\n{}".format(e)) gettext.bindtextdomain('passwordsafe', localedir) gettext.textdomain('passwordsafe') resource = Gio.resource_load(os.path.join(pkgdatadir, 'passwordsafe.gresource')) Gio.Resource._register(resource) from passwordsafe.application import Application if @PROFILE@ == 'Devel': Application.development_mode = True Application.application_id = 'org.gnome.PasswordSafeDevel' else: Application.development_mode = False app = Application() exit_status = app.run(sys.argv) sys.exit(exit_status) secrets-5.1/passwordsafe/000077500000000000000000000000001415312107300155255ustar00rootroot00000000000000secrets-5.1/passwordsafe/application.py000066400000000000000000000234521415312107300204100ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import typing from gettext import gettext as _ from typing import Any from gi.repository import Gio, GLib, Gtk, Handy import passwordsafe.config_manager as config from passwordsafe.main_window import MainWindow from passwordsafe.quit_dialog import QuitDialog from passwordsafe.save_dialog import SaveDialog from passwordsafe.settings_dialog import SettingsDialog if typing.TYPE_CHECKING: from passwordsafe.database_manager import DatabaseManager from passwordsafe.unlocked_database import UnlockedDatabase class Application(Gtk.Application): _save_handler_ids: dict[UnlockedDatabase, int] = {} window: MainWindow = None file_list: list[Gio.File] = [] development_mode = False application_id = "org.gnome.PasswordSafe" settings = Gio.Settings.new(application_id) def __init__(self, *args, **_kwargs): app_flags = Gio.ApplicationFlags.HANDLES_OPEN super().__init__(*args, application_id=self.application_id, flags=app_flags) self.set_resource_base_path("/org/gnome/PasswordSafe") # debug level logging option self.add_main_option("debug", ord("d"), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "Enable debug logging", None) def do_startup(self): # pylint: disable=arguments-differ Gtk.Application.do_startup(self) GLib.set_application_name('Password Safe') GLib.set_prgname(self.application_id) Handy.init() self.connect("open", self.file_open_handler) self.connect("shutdown", self._on_shutdown_action) self.assemble_application_menu() def do_handle_local_options( # pylint: disable=arguments-differ self, options: GLib.VariantDict ) -> int: """ :returns int: If you have handled your options and want to exit the process, return a non-negative option, 0 for success, and a positive value for failure. To continue, return -1 to let the default option processing continue. """ # convert GVariantDict -> GVariant -> dict options = options.end().unpack() # set up logging depending on the verbosity level loglevel = logging.INFO if self.development_mode or 'debug' in options: loglevel = logging.DEBUG # Don't clutter our log output with debug msg of the # pykeepass module it is very noisy. pykeepass_logger = logging.getLogger("pykeepass") pykeepass_logger.setLevel(logging.INFO) logging.basicConfig(format="%(asctime)s | %(levelname)s | %(message)s", datefmt='%d-%m-%y %H:%M:%S', level=loglevel) return -1 def do_activate(self): # pylint: disable=arguments-differ if self.window: # Window exists already eg if we invoke us a 2nd time. # Just present the existing one. self.window.present() return self.window = MainWindow( application=self, title="Password Safe", icon_name=self.application_id) self.add_menubutton_popover_actions() self.window.add_row_popover_actions() self.window.add_database_menubutton_popover_actions() self.window.add_selection_actions() self.add_global_accelerators() self.window.present() def assemble_application_menu(self): settings_action = Gio.SimpleAction.new("settings", None) settings_action.connect("activate", self.on_settings_menu_clicked) about_action = Gio.SimpleAction.new("about", None) about_action.connect("activate", self.on_about_menu_clicked) quit_action = Gio.SimpleAction.new("quit", None) quit_action.connect("activate", self.on_quit) self.add_action(settings_action) self.add_action(about_action) self.add_action(quit_action) def on_settings_menu_clicked(self, action, param): SettingsDialog(self.window).on_settings_menu_clicked(action, param) def on_about_menu_clicked(self, _action: Gio.SimpleAction, _param: None) -> None: """Invoked when we click "about" in the main menu""" builder = Gtk.Builder.new_from_resource( "/org/gnome/PasswordSafe/about_dialog.ui" ) about_dialog = builder.get_object("about_dialog") about_dialog.set_transient_for(self.window) about_dialog.show() def on_quit(self, _action: Gio.SimpleAction | None = None, _data: Any = None) -> None: unsaved_databases_list = [] self.window.databases_to_save.clear() for database in self.window.opened_databases: if (database.database_manager.is_dirty and not database.database_manager.save_running): unsaved_databases_list.append(database) if config.get_save_automatically(): if not unsaved_databases_list: GLib.idle_add(self.quit) for database in unsaved_databases_list: self._save_handler_ids[database] = database.database_manager.connect( "save-notification", self._on_automatic_save_callback, database, unsaved_databases_list, ) database.save_database(True) return if len(unsaved_databases_list) == 1: database = unsaved_databases_list[0] save_dialog = SaveDialog(self.window) save_dialog.connect("response", self._on_save_dialog_response, database) save_dialog.show() elif len(unsaved_databases_list) > 1: # Multiple unsaved files, ask which to save quit_dialog = QuitDialog(self.window, unsaved_databases_list) quit_dialog.connect("response", self._on_quit_dialog_response) quit_dialog.show() else: GLib.idle_add(self.quit) def _on_quit_dialog_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: dialog.close() if response != Gtk.ResponseType.OK: self.window.databases_to_save.clear() return for database in self.window.databases_to_save: database.save_database() GLib.idle_add(self.quit) def _on_save_dialog_save_notification( self, _db_manager: DatabaseManager, value: bool, database: UnlockedDatabase ) -> None: database.database_manager.disconnect(self._save_handler_ids[database]) self._save_handler_ids.pop(database) if value: GLib.idle_add(self.quit) else: self.window.send_notification(_("Unable to Quit: Could not save Safe")) def _on_save_dialog_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType, database: UnlockedDatabase) -> None: dialog.close() if response == Gtk.ResponseType.YES: # Save self._save_handler_ids[database] = database.database_manager.connect( "save-notification", self._on_save_dialog_save_notification, database ) database.database_manager.save_database(True) elif response == Gtk.ResponseType.NO: # Discard GLib.idle_add(self.quit) def _on_automatic_save_callback( self, _db_manager: DatabaseManager, saved: bool, database: UnlockedDatabase, unsaved_database_list: list[UnlockedDatabase], ) -> None: """Makes sure all safes that were scheduled for autmatic save are correctly saved. Quits when all safes are saved.""" database.database_manager.disconnect(self._save_handler_ids[database]) self._save_handler_ids.pop(database) if saved and database in unsaved_database_list: unsaved_database_list.remove(database) if not unsaved_database_list: GLib.idle_add(self.quit) def _on_shutdown_action(self, _action: Gio.SimpleAction) -> None: """Activated on shutdown signal. Cleans all remaining processes.""" self.window.save_window_size() for database in self.window.opened_databases: database.cleanup() def add_menubutton_popover_actions(self): new_action = Gio.SimpleAction.new("new", None) new_action.connect("activate", self.window.create_filechooser) self.add_action(new_action) open_action = Gio.SimpleAction.new("open", None) open_action.connect("activate", self.window.open_filechooser) self.add_action(open_action) def file_open_handler(self, _application, g_file_list, _amount, _ukwn): for g_file in g_file_list: self.file_list.append(g_file) if self.window is not None: self.window.start_database_opening_routine(g_file.get_path()) self.do_activate() def add_global_accelerators(self): self.window.add_global_accelerator_actions() self.set_accels_for_action("app.settings", ["comma"]) self.set_accels_for_action("app.open", ["o"]) self.set_accels_for_action("app.new", ["n"]) self.set_accels_for_action("app.db.save", ["s"]) self.set_accels_for_action("app.db.lock", ["l"]) self.set_accels_for_action("app.db.add_entry", ["n"]) self.set_accels_for_action("app.db.add_group", ["g"]) self.set_accels_for_action("app.undo", ["z"]) self.set_accels_for_action("app.redo", ["y"]) self.set_accels_for_action("app.go_back", ["Escape"]) self.set_accels_for_action("app.quit", ["q"]) secrets-5.1/passwordsafe/attachment_warning_dialog.py000066400000000000000000000042271415312107300233000ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import os import typing from gi.repository import Gdk, Gio, GLib, Gtk if typing.TYPE_CHECKING: from pykeepass.attachment import Attachment from passwordsafe.entry_page import EntryPage @Gtk.Template(resource_path="/org/gnome/PasswordSafe/attachment_warning_dialog.ui") class AttachmentWarningDialog(Gtk.MessageDialog): __gtype_name__ = "AttachmentWarningDialog" def __init__(self, entry_page: EntryPage, attachment: Attachment) -> None: """Dialog to confirm opening an attachment :param entry_page: entry page """ super().__init__() self.__unlocked_database = entry_page.unlocked_database self.__attachment = attachment # Setup Widgets self.set_modal(True) self.set_transient_for(self.__unlocked_database.window) @Gtk.Template.Callback() def _on_warning_dialog_back_button_clicked(self, _button): self.close() @Gtk.Template.Callback() def _on_warning_dialog_proceed_button_clicked(self, _button): attachment = self.__attachment u_db = self.__unlocked_database self.close() self.__open_tmp_file( u_db.database_manager.db.binaries[attachment.id], attachment.filename ) def __open_tmp_file(self, bytes_buffer, filename): try: cache_dir = os.path.join( GLib.get_user_cache_dir(), "passwordsafe", "tmp" ) file_path = os.path.join(cache_dir, filename) if not os.path.exists(cache_dir): os.makedirs(cache_dir) gfile = Gio.File.new_for_path(file_path) output_stream = gfile.replace( None, False, Gio.FileCreateFlags.PRIVATE | Gio.FileCreateFlags.REPLACE_DESTINATION, None ) output_stream.write_bytes(GLib.Bytes.new(bytes_buffer)) output_stream.close() Gtk.show_uri_on_window(None, gfile.get_uri(), Gdk.CURRENT_TIME) except GLib.Error as err: logging.debug("Could not load attachment %s: %s", filename, err) secrets-5.1/passwordsafe/color_widget.py000066400000000000000000000066061415312107300205700ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from enum import Enum from gi.repository import Gdk, GObject, Gtk if typing.TYPE_CHECKING: from passwordsafe.database_manager import DatabaseManager from passwordsafe.safe_element import SafeEntry from passwordsafe.unlocked_database import UnlockedDatabase class Color(Enum): NONE = "NoneColorButton" BLUE = "BlueColorButton" GREEN = "GreenColorButton" YELLOW = "YellowColorButton" ORANGE = "OrangeColorButton" RED = "RedColorButton" PURPLE = "PurpleColorButton" BROWN = "BrownColorButton" @Gtk.Template(resource_path="/org/gnome/PasswordSafe/color_button.ui") class ColorButton(Gtk.FlowBoxChild): __gtype_name__ = "ColorButton" _selected_image = Gtk.Template.Child() selected = GObject.Property( type=bool, default=False, flags=GObject.ParamFlags.READWRITE) def __init__(self, color: Color, selected: bool): """RadioButton to select the color of an entry :param Color color: color of the button :param bool selected: True if the color is selected """ super().__init__() self._color: Color = color self.get_style_context().add_class(self._color.value) if self._color in [Color.NONE, Color.YELLOW]: image_class: str = "DarkIcon" else: image_class = "BrightIcon" self._selected_image.get_style_context().add_class(image_class) self.bind_property("selected", self._selected_image, "visible") self.props.selected = selected @property def color(self) -> str: """"Color of the widget.""" return self._color.value @Gtk.Template.Callback() def _on_enter_event(self, _widget: Gtk.EventBox, _event: Gdk.Event) -> None: self.set_state_flags(Gtk.StateFlags.PRELIGHT, False) @Gtk.Template.Callback() def _on_leave_event(self, _widget: Gtk.EventBox, _event: Gdk.Event) -> None: self.unset_state_flags(Gtk.StateFlags.PRELIGHT) @Gtk.Template(resource_path="/org/gnome/PasswordSafe/color_entry_row.ui") class ColorEntryRow(Gtk.Box): __gtype_name__ = "ColorEntryRow" _flowbox = Gtk.Template.Child() def __init__( self, unlocked_database: UnlockedDatabase, safe_entry: SafeEntry): """Widget to select the color of an entry :param UnlockedDatabase unlocked_database: unlocked database :param SafeEntry safe_entry: the safe entry """ super().__init__() self._unlocked_database: UnlockedDatabase = unlocked_database self._db_manager: DatabaseManager = unlocked_database.database_manager self._safe_entry: SafeEntry = safe_entry for color in Color: active: bool = (safe_entry.props.color == color.value) color_button: ColorButton = ColorButton(color, active) self._flowbox.insert(color_button, -1) if active: self._flowbox.select_child(color_button) @Gtk.Template.Callback() def _on_color_activated( self, _flowbox: Gtk.FlowBox, selected_child: Gtk.FlowBoxChild) -> None: if selected_child.props.selected: return for child in self._flowbox.get_children(): selected: bool = (child == selected_child) child.props.selected = selected self._safe_entry.props.color = selected_child.color secrets-5.1/passwordsafe/config_manager.py000066400000000000000000000132111415312107300210340ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only import logging from enum import IntEnum from typing import cast from gi.repository import Gio, GLib from passwordsafe.sorting import SortingHat setting = Gio.Settings.new("org.gnome.PasswordSafe") CLEAR_CLIPBOARD = "clear-clipboard" DARK_THEME = "dark-theme" DB_LOCK_TIMEOUT = "database-lock-timeout" SHOW_START_SCREEN = "first-start-screen" LAST_OPENED_DB = "last-opened-database" SAVE_AUTOMATICALLY = "save-automatically" SHOW_PASSWORDS = "show-password-fields" WINDOW_SIZE = "window-size" SORT_ORDER = "sort-order" LAST_OPENED_LIST = "last-opened-list" REMEMBER_COMPOSITE_KEY = "remember-composite-key" LAST_USED_COMPOSITE_KEY = "last-used-composite-key" REMEMBER_UNLOCK_METHOD = "remember-unlock-method" UNLOCK_METHOD = "unlock-method" DEV_BACKUP_MODE = "development-backup-mode" GENERATOR_USE_UPPERCASE = "generator-use-uppercase" GENERATOR_USE_LOWERCASE = "generator-use-lowercase" GENERATOR_USE_NUMBERS = "generator-use-numbers" GENERATOR_USE_SYMBOLS = "generator-use-symbols" GENERATOR_LENGTH = "generator-length" GENERATOR_WORDS = "generator-words" GENERATOR_SEPARATOR = "generator-separator" class UnlockMethod(IntEnum): """Enum for database unlock methods""" PASSWORD = 0 KEYFILE = 1 COMPOSITE = 2 def get_generator_use_uppercase() -> bool: return setting.get_boolean(GENERATOR_USE_UPPERCASE) def set_generator_use_uppercase(value: bool) -> None: setting.set_boolean(GENERATOR_USE_UPPERCASE, value) def get_generator_use_lowercase() -> bool: return setting.get_boolean(GENERATOR_USE_LOWERCASE) def set_generator_use_lowercase(value: bool) -> None: setting.set_boolean(GENERATOR_USE_LOWERCASE, value) def get_generator_use_numbers() -> bool: return setting.get_boolean(GENERATOR_USE_NUMBERS) def set_generator_use_numbers(value: bool) -> None: setting.set_boolean(GENERATOR_USE_NUMBERS, value) def get_generator_use_symbols() -> bool: return setting.get_boolean(GENERATOR_USE_SYMBOLS) def set_generator_use_symbols(value: bool) -> None: setting.set_boolean(GENERATOR_USE_SYMBOLS, value) def get_generator_length() -> int: return setting.get_int(GENERATOR_LENGTH) def set_generator_length(value: int) -> None: setting.set_int(GENERATOR_LENGTH, value) def get_generator_words() -> int: return setting.get_int(GENERATOR_WORDS) def set_generator_words(value: int) -> None: setting.set_int(GENERATOR_WORDS, value) def get_generator_separator() -> str: return setting.get_string(GENERATOR_SEPARATOR) def set_generator_separator(value: str) -> None: setting.set_string(GENERATOR_SEPARATOR, value) def get_clear_clipboard(): return setting.get_int(CLEAR_CLIPBOARD) def set_clear_clipboard(value): setting.set_int(CLEAR_CLIPBOARD, value) def get_dark_theme(): return setting.get_boolean(DARK_THEME) def set_dark_theme(value): setting.set_boolean(DARK_THEME, value) def get_database_lock_timeout(): return setting.get_int(DB_LOCK_TIMEOUT) def set_database_lock_timeout(value): setting.set_int(DB_LOCK_TIMEOUT, value) def get_first_start_screen(): return setting.get_boolean(SHOW_START_SCREEN) def set_first_start_screen(value): setting.set_boolean(SHOW_START_SCREEN, value) def get_last_opened_database(): return setting.get_string(LAST_OPENED_DB) def set_last_opened_database(value): setting.set_string(LAST_OPENED_DB, value) def get_save_automatically(): return setting.get_boolean(SAVE_AUTOMATICALLY) def set_save_automatically(value): setting.set_boolean(SAVE_AUTOMATICALLY, value) def get_show_password_fields(): return setting.get_boolean(SHOW_PASSWORDS) def set_show_password_fields(value): setting.set_boolean(SHOW_PASSWORDS, value) def get_window_size(): return setting.get_value(WINDOW_SIZE) def set_window_size(lis): g_variant = GLib.Variant('ai', lis) setting.set_value(WINDOW_SIZE, g_variant) def get_sort_order() -> SortingHat.SortOrder: """Returns the sort order as Enum of type SortingHat.SortOrder""" value = cast(SortingHat.SortOrder, setting.get_enum(SORT_ORDER)) return value def get_last_opened_list(): return setting.get_value(LAST_OPENED_LIST) def set_last_opened_list(opened_list): g_variant = GLib.Variant('as', opened_list) setting.set_value(LAST_OPENED_LIST, g_variant) def get_remember_composite_key(): return setting.get_boolean(REMEMBER_COMPOSITE_KEY) def set_remember_composite_key(value): setting.set_boolean(REMEMBER_COMPOSITE_KEY, value) def get_last_used_composite_key(): return setting.get_value(LAST_USED_COMPOSITE_KEY) def set_last_used_composite_key(composite_list): g_variant = GLib.Variant("aas", composite_list) setting.set_value(LAST_USED_COMPOSITE_KEY, g_variant) def get_remember_unlock_method(): return setting.get_boolean(REMEMBER_UNLOCK_METHOD) def set_remember_unlock_method(value): setting.set_boolean(REMEMBER_UNLOCK_METHOD, value) def get_unlock_method(): """Get unlock method :returns: last unlock method used :rtype: UnlockMethod """ value = setting.get_enum(UNLOCK_METHOD) if value == UnlockMethod.PASSWORD: return "password" if value == UnlockMethod.KEYFILE: return "keyfile" if value == UnlockMethod.COMPOSITE: return "composite" logging.warning("Retrieving unknown unlock method.") return None def set_unlock_method(value): """Set Unlock Method :param UnlockMethod value: unlock method used """ setting.set_enum(UNLOCK_METHOD, value) def get_development_backup_mode(): return setting.get_boolean(DEV_BACKUP_MODE) def set_development_backup_mode(value): setting.set_boolean(DEV_BACKUP_MODE, value) secrets-5.1/passwordsafe/container_page.py000066400000000000000000000010361415312107300210550ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from gi.repository import Gtk class ContainerPage(Gtk.Box): def __init__(self, headerbar, development_mode): super().__init__() self.show_all() self.development_mode = development_mode self.headerbar = headerbar self.set_name("BGPlatform") def set_headerbar(self, headerbar): self.headerbar = headerbar if self.development_mode is True: context = self.headerbar.get_style_context() context.add_class("devel") secrets-5.1/passwordsafe/create_database.py000066400000000000000000000177221415312107300211770ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only """ GUI Page and function in order to create a new Safe""" import logging import threading from gettext import gettext as _ from gi.repository import GLib, Gtk from passwordsafe.unlock_database import KeyFileFilter, UnlockDatabase from passwordsafe.utils import generate_keyfile @Gtk.Template( resource_path="/org/gnome/PasswordSafe/create_database.ui") class CreateDatabase(Gtk.Stack): """Creates a new Safe when invoked""" # TODO Add an accelerator for Escape that # calls on_headerbar_back_button_clicked(). # Can be done on GTK 4 with GtkShortcutController. __gtype_name__ = "CreateDatabase" password_creation_input = Gtk.Template.Child() password_check_button = Gtk.Template.Child() password_check_input = Gtk.Template.Child() password_repeat_button = Gtk.Template.Child() password_repeat_input1 = Gtk.Template.Child() password_repeat_input2 = Gtk.Template.Child() generate_keyfile_button = Gtk.Template.Child() open_safe_button = Gtk.Template.Child() composite = False _filechooser = None def __init__(self, window, widget, dbm, back_button): super().__init__() self.database_manager = dbm self.window = window self.parent_widget = widget self.back_button = back_button def success_page(self): self.set_visible_child_name("safe-successfully-create") # TODO This should be improved upon. Widgets should not # modify widgets outside of their scope. And __init__() # should not request a back button either. self.back_button.hide() self.open_safe_button.grab_focus() def keyfile_generation_page(self): self.set_visible_child_name("keyfile-creation") def on_headerbar_back_button_clicked(self, _widget): """Back button: Always goes back to the page in which you select the authentication method. In the case we are already in that page we kill this page.""" if self.get_visible_child_name() == "select_auth_method": self.window.set_headerbar() self.window.close_tab(self.parent_widget) self.parent_widget.remove(self) else: self.set_visible_child_name("select_auth_method") self.clear_input_fields() self.composite = False @Gtk.Template.Callback() def on_auth_chooser_row_activated( self, _widget: Gtk.ListBox, row: Gtk.ListBoxRow ) -> None: if row.get_name() == "password": self.set_visible_child_name("password-creation") elif row.get_name() == "keyfile": self.set_visible_child_name("keyfile-creation") elif row.get_name() == "composite": self.composite = True self.set_visible_child_name("password-creation") @Gtk.Template.Callback() def on_password_creation_button_clicked(self, _widget: Gtk.Button) -> None: self.database_manager.set_password_try( self.password_creation_input.get_text()) self.set_visible_child_name("check-password") @Gtk.Template.Callback() def on_password_check_button_clicked(self, _widget: Gtk.Button) -> None: password_check = self.password_check_input.get_text() if self.database_manager.compare_passwords(password_check): self.database_manager.password = password_check save_thread = threading.Thread(target=self.save_pwc_database_thread) save_thread.daemon = True save_thread.start() else: self.set_visible_child_name("passwords-dont-match") @Gtk.Template.Callback() def on_password_repeat_button_clicked(self, _widget: Gtk.Button) -> None: passwd: str = self.password_repeat_input1.get_text() self.database_manager.set_password_try(passwd) conf_passwd: str = self.password_repeat_input2.get_text() if self.database_manager.compare_passwords(conf_passwd): self.database_manager.password = conf_passwd save_thread = threading.Thread(target=self.save_pwr_database_thread) save_thread.daemon = True save_thread.start() else: self.window.send_notification(_("Passwords do not match")) self.clear_input_fields() self.password_repeat_input1.get_style_context().add_class("error") self.password_repeat_input2.get_style_context().add_class("error") @Gtk.Template.Callback() def on_generate_keyfile_button_clicked(self, _widget: Gtk.Button) -> None: """cb invoked when we create a new keyfile for a newly created Safe""" keyfile_dlg = Gtk.FileChooserNative.new( _("Choose location for keyfile"), self.window, Gtk.FileChooserAction.SAVE, _("_Generate"), None) keyfile_dlg.set_modal(True) keyfile_dlg.add_filter(KeyFileFilter()) # We need to hold a reference, otherwise the app crashes. self._filechooser = keyfile_dlg keyfile_dlg.connect("response", self._on_filechooser_response) keyfile_dlg.show() def _on_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: self.generate_keyfile_button.set_sensitive(False) self.generate_keyfile_button.set_label(_("Generating…")) keyfile = dialog.get_file() keyfile_path = keyfile.get_path() logging.debug("New keyfile location: %s", keyfile_path) def callback(): if self.composite is False: self.database_manager.password = None self.database_manager.set_database_keyfile(keyfile_path) self.database_manager.save_database() self.success_page() GLib.idle_add(generate_keyfile, keyfile, callback) @Gtk.Template.Callback() def on_finish_button_clicked(self, _widget: Gtk.Button) -> None: self.parent_widget.remove(self) UnlockDatabase( self.window, self.parent_widget, self.database_manager.database_path) @Gtk.Template.Callback() def on_password_repeat_input_activate(self, _widget: Gtk.Entry) -> None: self.password_repeat_button.clicked() def save_pwc_database_thread(self): GLib.idle_add(self.show_pwc_loading) if self.composite: GLib.idle_add(self.keyfile_generation_page) else: self.database_manager.save_database() GLib.idle_add(self.success_page) def show_pwc_loading(self): password_check_button = self.password_check_button password_check_button.remove(password_check_button.get_children()[0]) spinner = Gtk.Spinner() spinner.start() spinner.show() password_check_button.add(spinner) password_check_button.set_sensitive(False) self.password_check_input.set_sensitive(False) def save_pwr_database_thread(self): GLib.idle_add(self.show_pwr_loading) if self.composite: GLib.idle_add(self.keyfile_generation_page) else: self.database_manager.save_database() GLib.idle_add(self.success_page) def show_pwr_loading(self): password_repeat_button = self.password_repeat_button password_repeat_button.remove(password_repeat_button.get_children()[0]) spinner = Gtk.Spinner() spinner.start() spinner.show() password_repeat_button.add(spinner) password_repeat_button.set_sensitive(False) self.password_repeat_input1.set_sensitive(False) self.password_repeat_input2.set_sensitive(False) def clear_input_fields(self) -> None: """Empty all Entry textfields""" self.password_creation_input.set_text("") self.password_check_input.set_text("") self.password_repeat_input1.set_text("") self.password_repeat_input2.set_text("") secrets-5.1/passwordsafe/custom_keypress_handler.py000066400000000000000000000066051415312107300230420ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gi.repository import Gdk, Gtk import passwordsafe.pathbar_button if typing.TYPE_CHECKING: from passwordsafe.main_window import MainWindow class CustomKeypressHandler: def __init__(self, u_d): self.unlocked_database = u_d # # Special Keys (e.g. type-to-search) # def register_custom_events(self): self.unlocked_database.window.connect("key-press-event", self.on_special_key_pressed) self.unlocked_database.window.connect("button-release-event", self._on_button_released) def on_special_key_pressed(self, window: MainWindow, eventkey: Gdk.EventKey) -> bool: # pylint: disable=too-many-return-statements # pylint: disable=too-many-branches if not self._current_view_accessible(): return Gdk.EVENT_PROPAGATE edit_page = self.unlocked_database.in_edit_page # Handle undo and redo on entries. if ( edit_page and eventkey.state & Gdk.ModifierType.CONTROL_MASK == Gdk.ModifierType.CONTROL_MASK ): keyval_name = Gdk.keyval_name(eventkey.keyval) if isinstance(window.get_focus(), Gtk.TextView): textbuffer = window.get_focus().get_buffer() if isinstance(textbuffer, passwordsafe.history_buffer.HistoryTextBuffer): if keyval_name == 'y': textbuffer.logic.do_redo() return Gdk.EVENT_PROPAGATE if keyval_name == "z": textbuffer.logic.do_undo() return Gdk.EVENT_PROPAGATE if isinstance(window.get_focus(), Gtk.Entry): textbuffer = window.get_focus().get_buffer() if isinstance(textbuffer, passwordsafe.history_buffer.HistoryEntryBuffer): if keyval_name == 'y': textbuffer.logic.do_redo() return Gdk.EVENT_PROPAGATE if keyval_name == "z": textbuffer.logic.do_undo() return Gdk.EVENT_PROPAGATE elif (not edit_page # MOD1 usually corresponds to Alt and eventkey.state & Gdk.ModifierType.MOD1_MASK == 0 and eventkey.string.isalnum()): self.unlocked_database.props.search_active = True return Gdk.EVENT_PROPAGATE def _current_view_accessible(self): """Check that the current view is accessible: * selection mode is not active * search mode is not active * current database is not locked """ db_view = self.unlocked_database if (not db_view.window.tab_visible(db_view.parent_widget) or db_view.props.database_locked or db_view.props.selection_mode or db_view.search_active): return False return True def _on_button_released( self, _window: MainWindow, event: Gtk.Event) -> bool: """Go to the parent group with the back button. :param Gtk.Widget window: the main window :param Gtk.Event event: the event """ # Mouse button 8 is the back button. if event.button == 8: self.unlocked_database.go_back() return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE secrets-5.1/passwordsafe/database_manager.py000066400000000000000000000264451415312107300213500ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import hashlib import logging from datetime import datetime from gettext import gettext as _ from uuid import UUID from gi.repository import Gio, GObject from pykeepass import PyKeePass from pykeepass.entry import Entry from pykeepass.group import Group from passwordsafe.safe_element import SafeElement, SafeEntry, SafeGroup from passwordsafe.utils import format_time class DatabaseManager(GObject.GObject): # pylint: disable=too-many-public-methods """Implements database functionality that is independent of the UI Useful attributes: .database_path: str containing the filepath of the database Group objects are of type `pykeepass.group.Group` Entry objects are of type `pykeepass.entry.Entry` Instances of both have useful attributes: .uuid: a `uuid.UUID` object """ # self.db contains a `PyKeePass` database password_try = "" keyfile_hash = NotImplemented _is_dirty = False # Does the database need saving? save_running = False locked = GObject.Property( type=bool, default=False, flags=GObject.ParamFlags.READWRITE) def __init__( self, database_path: str, password: str | None = None, keyfile: str | None = None, ) -> None: super().__init__() # password remains accessible as self.db.password self.db = PyKeePass(database_path, password, keyfile) self.database_path = database_path # # Database Modifications # # Add new group to database def add_group_to_database(self, name, icon, notes, parent_group): new_location = parent_group.uuid group = self.db.add_group(parent_group, name, icon=icon, notes=notes) self.set_element_mtime(parent_group) safe_group = SafeGroup(self, group) self.emit("element-added", safe_group, new_location) return safe_group # Add new entry to database def add_entry_to_database( self, group: Group, name: str | None = "", username: str | None = "", password: str | None = "", ) -> SafeEntry: force: bool = self.check_entry_in_group_exists("", group) entry = self.db.add_entry( group, name, username, password, url=None, notes=None, expiry_time=None, tags=None, icon="0", force_creation=force, ) self.set_element_mtime(group) safe_entry = SafeEntry(self, entry) self.emit("element-added", safe_entry, safe_entry.parentgroup.uuid) return safe_entry # Delete an entry def delete_from_database(self, entity: Entry | Group) -> None: """Delete an Entry or a Group from the database. :param entity: Entity or Group to delete """ if isinstance(entity, Entry): self.db.delete_entry(entity) else: self.db.delete_group(entity) self.emit("element-removed", entity.uuid) if entity.parentgroup is not None: self.set_element_mtime(entity.parentgroup) def duplicate_entry(self, entry: Entry) -> None: """Duplicate an entry :param Entry entry: entry to duplicate """ title: str = entry.title or "" username: str = entry.username or "" password: str = entry.password or "" # NOTE: With clone is meant a duplicated object, not the process # of cloning/duplication; "the" clone clone_entry: Entry = self.db.add_entry( entry.parentgroup, title + " - " + _("Clone"), username, password, url=entry.url, notes=entry.notes, expiry_time=entry.expiry_time, tags=entry.tags, icon=entry.icon, force_creation=True) # Add custom properties for key in entry.custom_properties: value: str = entry.custom_properties[key] or "" clone_entry.set_custom_property(key, value) safe_entry = SafeEntry(self, clone_entry) self.emit("element-added", safe_entry, safe_entry.parentgroup.uuid) if entry.parentgroup is not None: self.set_element_mtime(entry.parentgroup) # Write all changes to database def save_database(self, notification=False): if self.save_running is False and self.is_dirty: self.save_running = True # TODO This could be simplified a lot # if a copy of the keyfile was stored in memory. # This would require careful checks for functionality that # modifies the keyfile. if self.db.keyfile: gfile = Gio.File.new_for_path(self.db.keyfile) exists = gfile.query_exists() if not exists: self.save_running = False logging.error("Could not find keyfile") if notification: self.emit("save-notification", False) return try: self.db.save() logging.debug("Saved database") self.is_dirty = False except Exception: # pylint: disable=broad-except logging.error("Error occurred while saving database") if notification: self.emit("save-notification", not self.is_dirty) self.save_running = False @property def password(self) -> str: """Get the current password or '' if not set""" return self.db.password or "" @password.setter def password(self, new_password: str | None) -> None: """Set database password (None if a keyfile is used)""" self.db.password = new_password self.is_dirty = True # Set database keyfile def set_database_keyfile(self, new_keyfile): self.db.keyfile = new_keyfile self.is_dirty = True # # Entry Modifications # # Move an entry to another group def move_entry(self, uuid, destination_group_object): entry = self.db.find_entries(uuid=uuid, first=True) # pylint: disable=no-member old_location = entry.parentgroup.uuid new_location = destination_group_object.uuid if old_location == new_location: return # TODO: we will crash if uuid does not exist self.db.move_entry(entry, destination_group_object) # pylint: disable=no-member if entry.parentgroup: self.set_element_mtime(entry.parentgroup) self.set_element_mtime(destination_group_object) safe_entry = SafeEntry(self, entry) self.emit("element-moved", safe_entry, old_location, new_location) def set_element_atime(self, element): # TODO Move to safe_element method. element.atime = datetime.now() def set_element_mtime(self, element): # TODO Move to safe_element method. element.mtime = datetime.now() # Move an group def move_group(self, group: Group, dest_group: Group) -> None: old_location = group.parentgroup.uuid new_location = dest_group.uuid if old_location == new_location: return self.db.move_group(group, dest_group) if group.parentgroup is not None: self.set_element_mtime(group.parentgroup) self.set_element_mtime(dest_group) safe_group = SafeGroup(self, group) self.emit("element-moved", safe_group, old_location, new_location) # # Read Database # # Check if entry with title in group exists def check_entry_in_group_exists(self, title, group): entry = self.db.find_entries(title=title, group=group, recursive=False, history=False, first=True) if entry is None: return False return True # # Properties # def get_element_creation_date(self, element: SafeElement) -> str: """Returns a string of the Entry|Groups creation time or ''""" elem = element.element return format_time(elem.ctime) def get_element_acessed_date(self, element: SafeElement) -> str: """Returns a string of the Entry|Groups access time or ''""" elem = element.element return format_time(elem.atime) def get_element_modified_date(self, element: SafeElement) -> str: """Returns a string of the Entry|Groups modification time or ''""" elem = element.element return format_time(elem.mtime) # # Database creation methods # # Set the first password entered by the user (for comparing reasons) def set_password_try(self, password): self.password_try = password def compare_passwords(self, password2: str) -> bool: """Compare the first password entered by the user with the second one It also does not allow empty passwords. :returns: True if passwords match and are non-empty. """ if password2 and self.password_try == password2: return True return False def create_keyfile_hash(self, keyfile_path): """Create keyfile hash and returns it""" hasher = hashlib.sha512() with open(keyfile_path, 'rb') as file: buffer = 0 while buffer != b'': buffer = file.read(1024) hasher.update(buffer) return hasher.hexdigest() # Set keyfile hash def set_keyfile_hash(self, keyfile_path): self.keyfile_hash = self.create_keyfile_hash(keyfile_path) def parent_checker(self, current_group, moved_group): """Returns True if moved_group is an ancestor of current_group""" # recursively invoke ourself until we reach the root group if current_group.is_root_group: return False if current_group.uuid == moved_group.uuid: return True return self.parent_checker(current_group.parentgroup, moved_group) @property def version(self): """returns the database version""" return self.db.version @property def is_dirty(self) -> bool: return self._is_dirty @is_dirty.setter def is_dirty(self, value: bool) -> None: """ Enables the save_dirty action whenever the Safe is in a dirty state. This makes the save menu button sensitive. """ app = Gio.Application.get_default() save_action = app.lookup_action("db.save_dirty") save_action.set_enabled(value) self._is_dirty = value @GObject.Signal(arg_types=(bool,)) def save_notification(self, _saved): return @GObject.Signal(arg_types=(SafeElement, object,)) def element_added(self, _element: SafeElement, _parent_uuid: UUID) -> None: """Signal emitted when a new element was added to the database it carries the UUID in string format of the parent group to which the entrie was added.""" self.is_dirty = True logging.debug("Added new element to safe") @GObject.Signal(arg_types=(object,)) def element_removed(self, element_uuid: UUID) -> None: self.is_dirty = True logging.debug("Element %s removed from safe", element_uuid) @GObject.Signal(arg_types=(SafeElement, object, object)) def element_moved( self, _moved_element: SafeElement, _old_location_uuid: UUID, _new_location_uuid: UUID ) -> None: self.is_dirty = True logging.debug("Element moved safe") secrets-5.1/passwordsafe/database_settings_dialog.py000066400000000000000000000453061415312107300231120ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import ntpath import os import threading import time from gettext import gettext as _ from gi.repository import Gdk, GLib, Gtk, Handy import passwordsafe.config_manager as config import passwordsafe.password_generator from passwordsafe.utils import generate_keyfile class DatabaseSettingsDialog: # pylint: disable=too-many-instance-attributes new_password: str | None = None new_keyfile_path = NotImplemented entries_number = NotImplemented groups_number = NotImplemented passwords_number = NotImplemented new_encryption_algorithm = NotImplemented new_derivation_algorithm = NotImplemented _filechooser = None def __init__(self, unlocked_database): self.unlocked_database = unlocked_database self.database_manager = unlocked_database.database_manager self.builder = Gtk.Builder() self.builder.add_from_resource("/org/gnome/PasswordSafe/database_settings_dialog.ui") self.window = self.builder.get_object("database_settings_window") self.auth_apply_button = self.builder.get_object("auth_apply_button") self.stack = self.builder.get_object("dbsd_stack") self.encryption_apply_button = self.builder.get_object("encryption_apply_button") self.select_keyfile_button = self.builder.get_object("select_keyfile_button") self.generate_keyfile_button = self.builder.get_object("generate_keyfile_button") self.__setup_widgets() self.__setup_signals() # # Dialog Creation # def __setup_signals(self) -> None: self.auth_apply_button.connect("clicked", self.on_auth_apply_button_clicked) self.encryption_apply_button.connect( "clicked", self.on_encryption_apply_button_clicked ) self.window.connect("key-press-event", self.__on_key_press_event) # Password Section self.builder.get_object("current_password_entry").connect("changed", self.on_password_entry_changed) self.builder.get_object("new_password_entry").connect("changed", self.on_password_entry_changed) self.builder.get_object("new_password_entry").connect("icon-press", self.on_generate_password) self.builder.get_object("confirm_password_entry").connect("changed", self.on_password_entry_changed) self.builder.get_object("confirm_password_entry").connect("icon-press", self.on_show_password) self.generate_keyfile_button.connect("clicked", self.on_keyfile_generator_button_clicked) self.select_keyfile_button.connect("clicked", self.on_keyfile_select_button_clicked) self.database_manager.connect( "notify::locked", self.__on_locked ) def __setup_widgets(self) -> None: self.stack.set_visible_child(self.stack.get_child_by_name("auth_page")) self.auth_apply_button.set_sensitive(False) self.encryption_apply_button.set_sensitive(False) if self.database_manager.keyfile_hash is NotImplemented: self.generate_keyfile_button.set_sensitive(True) self.select_keyfile_button.set_sensitive(False) else: self.generate_keyfile_button.set_sensitive(False) # Password Level Bar level_bar = self.builder.get_object("password_level_bar") level_bar.add_offset_value("weak", 1.0) level_bar.add_offset_value("medium", 3.0) level_bar.add_offset_value("strong", 4.0) level_bar.add_offset_value("secure", 5.0) # Dialog self.window.set_modal(True) self.window.set_transient_for(self.unlocked_database.window) self.set_detail_values() stats_thread = threading.Thread(target=self.start_stats_thread) stats_thread.daemon = True stats_thread.start() def present(self): self.window.present() # # Password Section # def on_password_entry_changed(self, entry: Gtk.Entry) -> None: """CB if password entry (existing or new) has changed""" self.unlocked_database.start_database_lock_timer() current_password = self.builder.get_object("current_password_entry").get_text() new_password_entry = self.builder.get_object("new_password_entry") new_password = new_password_entry.get_text() conf_password_entry = self.builder.get_object("confirm_password_entry") conf_password = conf_password_entry.get_text() self.new_password = None # Update the quality level bar if entry.get_name() == "new_entry" and new_password: level = passwordsafe.password_generator.strength(new_password) self.builder.get_object("password_level_bar").set_value(level or 0) if new_password != conf_password: self.auth_apply_button.set_sensitive(False) new_password_entry.get_style_context().add_class("error") conf_password_entry.get_style_context().add_class("error") return new_password_entry.get_style_context().remove_class("error") conf_password_entry.get_style_context().remove_class("error") if (self.database_manager.password != current_password or (not new_password or not conf_password)): # 1) existing db password != current one entered # 2) Nothing entered for new and/or confirmed password self.auth_apply_button.set_sensitive(False) return self.auth_apply_button.set_sensitive(True) self.new_password = new_password def on_generate_password(self, _widget, _position, _eventbutton): new_password_entry = self.builder.get_object("new_password_entry") confirm_password_entry = self.builder.get_object("confirm_password_entry") use_lowercase = config.get_generator_use_lowercase() use_uppercase = config.get_generator_use_uppercase() use_numbers = config.get_generator_use_numbers() use_symbols = config.get_generator_use_symbols() length = config.get_generator_length() generated_password = passwordsafe.password_generator.generate(length, use_uppercase, use_lowercase, use_numbers, use_symbols) new_password_entry.set_text(generated_password) confirm_password_entry.set_text(generated_password) new_password_entry.set_visibility(True) confirm_password_entry.set_visibility(True) def on_show_password(self, _widget, _position, _eventbutton): new_password_entry = self.builder.get_object("new_password_entry") confirm_password_entry = self.builder.get_object("confirm_password_entry") if new_password_entry.get_visibility() is True: new_password_entry.set_visibility(False) confirm_password_entry.set_visibility(False) else: new_password_entry.set_visibility(True) confirm_password_entry.set_visibility(True) # # Keyfile Section # def on_keyfile_select_button_clicked(self, button: Gtk.Button) -> None: self.unlocked_database.start_database_lock_timer() select_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for choosing current used keyfile _("Choose current keyfile"), self.window, Gtk.FileChooserAction.OPEN, _("_Open"), None) select_dialog.set_modal(True) ffilter = Gtk.FileFilter() ffilter.set_name(_("Keyfile")) ffilter.add_mime_type("application/octet-stream") ffilter.add_mime_type("application/x-keepass2") ffilter.add_mime_type("text/plain") ffilter.add_mime_type("application/x-iwork-keynote-sffkey") select_dialog.add_filter(ffilter) # We need to hold a reference, otherwise the app crashes. self._filechooser = select_dialog select_dialog.connect("response", self._on_select_filechooser_response, button) select_dialog.show() def _on_select_filechooser_response(self, select_dialog: Gtk.Dialog, response: Gtk.ResponseType, button: Gtk.Button) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: selected_keyfile = select_dialog.get_file().get_path() keyfile_hash: str = self.database_manager.create_keyfile_hash( selected_keyfile ) if ( keyfile_hash == self.database_manager.keyfile_hash or self.database_manager.keyfile_hash is NotImplemented ): self.generate_keyfile_button.set_sensitive(True) if keyfile_hash == self.database_manager.keyfile_hash: self.new_keyfile_path = selected_keyfile button.set_sensitive(False) button.remove(button.get_children()[0]) button.add(Gtk.Image.new_from_icon_name("object-select-symbolic", Gtk.IconSize.BUTTON)) button.show_all() else: button.remove(button.get_children()[0]) button.add(Gtk.Image.new_from_icon_name("edit-delete-symbolic", Gtk.IconSize.BUTTON)) button.show_all() def on_keyfile_generator_button_clicked(self, _button: Gtk.Button) -> None: self.unlocked_database.start_database_lock_timer() save_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for generating a new keyfile _("Choose location for keyfile"), self.window, Gtk.FileChooserAction.SAVE, _("_Generate"), None) save_dialog.set_current_name(_("Keyfile")) save_dialog.set_modal(True) ffilter = Gtk.FileFilter() ffilter.set_name(_("Keyfile")) ffilter.add_mime_type("application/octet-stream") ffilter.add_mime_type("application/x-keepass2") ffilter.add_mime_type("text/plain") ffilter.add_mime_type("application/x-iwork-keynote-sffkey") # We need to hold a reference, otherwise the app crashes. self._filechooser = save_dialog save_dialog.add_filter(ffilter) save_dialog.connect("response", self._on_filechooser_response) save_dialog.show() def _on_filechooser_response(self, save_dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: self.generate_keyfile_button.set_sensitive(False) spinner = Gtk.Spinner() spinner.start() self.generate_keyfile_button.remove(self.generate_keyfile_button.get_children()[0]) self.generate_keyfile_button.add(spinner) self.generate_keyfile_button.show_all() keyfile = save_dialog.get_file() self.new_keyfile_path = keyfile.get_path() def callback(): if self.new_password is not None: self.database_manager.password = self.new_password self.database_manager.set_database_keyfile(self.new_keyfile_path) self.database_manager.save_database() self.keyfile_generated() GLib.idle_add(generate_keyfile, keyfile, callback) def keyfile_generated(self): self.generate_keyfile_button.remove(self.generate_keyfile_button.get_children()[0]) self.generate_keyfile_button.add(Gtk.Image.new_from_icon_name("object-select-symbolic", Gtk.IconSize.BUTTON)) self.generate_keyfile_button.set_sensitive(True) self.generate_keyfile_button.show_all() self.auth_apply_button.set_sensitive(True) # # Apply Buttons # def on_auth_apply_button_clicked(self, button): if self.new_password is not None: if self.new_keyfile_path is NotImplemented and self.database_manager.keyfile_hash is not NotImplemented: self.database_manager.set_database_keyfile(None) self.database_manager.keyfile_hash = NotImplemented self.database_manager.password = self.new_password if self.new_keyfile_path is not NotImplemented: if self.new_password is None: self.database_manager.password = None self.database_manager.set_database_keyfile(str(self.new_keyfile_path)) self.database_manager.keyfile_hash = self.database_manager.create_keyfile_hash(str(self.new_keyfile_path)) # Insensitive entries and buttons self.builder.get_object("stack_switcher").set_sensitive(False) self.builder.get_object("current_password_entry").set_sensitive(False) self.builder.get_object("new_password_entry").set_sensitive(False) self.builder.get_object("confirm_password_entry").set_sensitive(False) self.builder.get_object("select_keyfile_button").set_sensitive(False) self.generate_keyfile_button.set_sensitive(False) button.set_label(_("Apply…")) button.set_sensitive(False) save_thread = threading.Thread(target=self.auth_save_process) save_thread.daemon = True save_thread.start() def auth_save_process(self): self.database_manager.save_database() GLib.idle_add(self.auth_save_process_finished) def auth_save_process_finished(self): # Restore all widgets current_password_entry = self.builder.get_object("current_password_entry") new_password_entry = self.builder.get_object("new_password_entry") confirm_password_entry = self.builder.get_object("confirm_password_entry") select_keyfile_button = self.builder.get_object("select_keyfile_button") self.builder.get_object("stack_switcher").set_sensitive(True) current_password_entry.set_sensitive(True) new_password_entry.set_sensitive(True) confirm_password_entry.set_sensitive(True) current_password_entry.set_text("") new_password_entry.set_text("") confirm_password_entry.set_text("") if self.database_manager.keyfile_hash is NotImplemented: select_keyfile_button.set_sensitive(False) self.generate_keyfile_button.set_sensitive(True) else: select_keyfile_button.set_sensitive(True) select_keyfile_button.remove(select_keyfile_button.get_children()[0]) select_keyfile_button.add(Gtk.Image.new_from_icon_name("document-open-symbolic", Gtk.IconSize.BUTTON)) select_keyfile_button.show_all() self.generate_keyfile_button.remove(self.generate_keyfile_button.get_children()[0]) self.generate_keyfile_button.add(Gtk.Image.new_from_icon_name("security-high-symbolic", Gtk.IconSize.BUTTON)) self.generate_keyfile_button.show_all() self.new_password = None self.new_keyfile_path = NotImplemented self.auth_apply_button.set_label(_("Apply Changes")) self.auth_apply_button.set_sensitive(False) def on_encryption_apply_button_clicked(self, _button): if self.new_encryption_algorithm is not NotImplemented: self.database_manager.db.encryption_algorithm = self.new_encryption_algorithm if self.new_derivation_algorithm is not NotImplemented: self.database_manager.db.version = self.new_derivation_algorithm self.encryption_apply_button.set_sensitive(False) self.encryption_apply_button.set_label(_("Apply…")) save_thread = threading.Thread(target=self.enc_save_thread) save_thread.daemon = True save_thread.start() def enc_save_thread(self): self.database_manager.save_database() GLib.idle_add(self.enc_save_process_finished) def enc_save_process_finished(self): self.encryption_apply_button.set_label(_("Apply Changes")) # # General Section # def set_detail_values(self): # Name self.builder.get_object("label_name").set_text(os.path.splitext(ntpath.basename(self.database_manager.database_path))[0]) # Path label_path = self.builder.get_object("label_path") path = self.database_manager.database_path if "/home/" in path: label_path.set_text("~/" + os.path.relpath(path)) else: label_path.set_text(path) # Size size = os.path.getsize(path) / 1000 self.builder.get_object("label_size").set_text(str(size) + " kB") # Version version = self.database_manager.db.version self.builder.get_object("label_version").set_text(str(version[0]) + "." + str(version[1])) # Date date = time.ctime(os.path.getctime(path)) self.builder.get_object("label_date").set_text(date) # Encryption Algorithm enc_alg = _("Unknown") if self.database_manager.db.encryption_algorithm == "aes256": # NOTE: AES is a proper name enc_alg = _("AES 256-bit") elif self.database_manager.db.encryption_algorithm == "chacha20": # NOTE: ChaCha20 is a proper name enc_alg = _("ChaCha20 256-bit") elif self.database_manager.db.encryption_algorithm == "twofish": # NOTE: Twofish is a proper name enc_alg = _("Twofish 256-bit") self.builder.get_object("label_enc_alg").set_text(enc_alg) # Derivation Algorithm der_alg = "Argon2" if version == (3, 1): der_alg = "AES-KDF" self.builder.get_object("label_der_alg").set_text(der_alg) def set_stats_values(self): # Number of Entries if self.builder.get_object("label_number_entries") is not None: self.builder.get_object("label_number_entries").set_text(str(self.entries_number)) # Number of Groups if self.builder.get_object("label_number_groups") is not None: self.builder.get_object("label_number_groups").set_text(str(self.groups_number)) # Number of Passwords if self.builder.get_object("label_number_passwords") is not None: self.builder.get_object("label_number_passwords").set_text(str(self.passwords_number)) def start_stats_thread(self): self.entries_number = len(self.database_manager.db.entries) self.groups_number = len(self.database_manager.db.groups) self.passwords_number = 0 for entry in self.database_manager.db.entries: if entry.password is not None and entry.password != "": self.passwords_number = self.passwords_number + 1 GLib.idle_add(self.set_stats_values) # # Encryption Section # def __on_locked(self, database_manager, _value): locked = database_manager.props.locked if locked: self.window.close() def __on_key_press_event(self, _window: Handy.Window, event: Gtk.Event) -> bool: if event.keyval == Gdk.KEY_Escape: self.window.close() return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE secrets-5.1/passwordsafe/entry_page.py000066400000000000000000000407411415312107300202420ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gettext import gettext as _ from gi.repository import Gio, GLib, GObject, Gtk from passwordsafe.attachment_warning_dialog import AttachmentWarningDialog from passwordsafe.color_widget import ColorEntryRow from passwordsafe.history_buffer import HistoryEntryBuffer, HistoryTextBuffer from passwordsafe.notes_dialog import NotesDialog from passwordsafe.password_entry_row import PasswordEntryRow from passwordsafe.safe_element import ICONS if typing.TYPE_CHECKING: from passwordsafe.safe_element import SafeEntry if typing.TYPE_CHECKING: from pykeepass.attachment import Attachment @Gtk.Template(resource_path="/org/gnome/PasswordSafe/entry_page.ui") class EntryPage(Gtk.ScrolledWindow): # pylint: disable=too-many-public-methods __gtype_name__ = "EntryPage" _filechooser = None name_property_value_entry = Gtk.Template.Child() username_property_value_entry = Gtk.Template.Child() password_property_box = Gtk.Template.Child() url_property_box = Gtk.Template.Child() url_property_value_entry = Gtk.Template.Child() notes_property_box = Gtk.Template.Child() notes_property_value_entry = Gtk.Template.Child() color_property_box = Gtk.Template.Child() icon_entry_box = Gtk.Template.Child() attachment_property_box = Gtk.Template.Child() attachment_list_box = Gtk.Template.Child() attributes_key_entry = Gtk.Template.Child() attribute_list_box = Gtk.Template.Child() attributes_property_box = Gtk.Template.Child() attributes_value_entry = Gtk.Template.Child() show_all_row = Gtk.Template.Child() attribute_property_row_list: list[Gtk.ListBoxRow] = [] def __init__(self, u_d, add_all): super().__init__() self.unlocked_database = u_d self.toggeable_widget_list = [self.url_property_box, self.notes_property_box, self.attachment_property_box, self.attributes_property_box] self.insert_entry_properties_into_listbox(add_all) safe_entry: SafeEntry = self.unlocked_database.current_element safe_entry.connect("updated", self._on_safe_entry_updated) def insert_entry_properties_into_listbox(self, add_all): # pylint: disable=too-many-locals # pylint: disable=too-many-branches # pylint: disable=too-many-statements safe_entry: SafeEntry = self.unlocked_database.current_element # Create the name_property_row self.name_property_value_entry.set_buffer(HistoryEntryBuffer([])) safe_entry.bind_property( "name", self.name_property_value_entry, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL ) self.name_property_value_entry.grab_focus() # Username self.username_property_value_entry.set_buffer(HistoryEntryBuffer([])) safe_entry.bind_property( "username", self.username_property_value_entry, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) self.unlocked_database.bind_accelerator( self.username_property_value_entry, "b", signal="copy-clipboard") value = safe_entry.username != "" # Password self.password_property_box.add(PasswordEntryRow( self.unlocked_database)) # Url self.url_property_value_entry.set_buffer(HistoryEntryBuffer([])) safe_entry.bind_property( "url", self.url_property_value_entry, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) self.show_row(self.url_property_box, safe_entry.url, add_all) # Notes self.notes_property_value_entry.get_style_context().add_class("codeview") textbuffer = HistoryTextBuffer([]) safe_entry.bind_property( "notes", textbuffer, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) self.notes_property_value_entry.set_buffer(textbuffer) self.show_row(self.notes_property_box, safe_entry.notes, add_all) # Color self.color_property_box.add(ColorEntryRow( self.unlocked_database, safe_entry)) # Icons icon_builder = Gtk.Builder() entry_icon = safe_entry.props.icon for icon_nr, icon in ICONS.items(): if not icon.visible: continue icon_builder.add_from_resource( "/org/gnome/PasswordSafe/icon_widget.ui") btn = icon_builder.get_object("icon_button") img = icon_builder.get_object("image") img.props.icon_name = icon.name if entry_icon == icon: self.icon_entry_box.select_child(btn) btn.set_name(icon_nr) self.icon_entry_box.add(btn) self.icon_entry_box.connect( "selected-children-changed", self.on_entry_icon_button_toggled ) # Attachments for attachment in safe_entry.attachments: self.add_attachment_row(attachment) self.show_row(self.attachment_property_box, safe_entry.attachments, add_all) # Attributes self.show_row(self.attributes_property_box, safe_entry.attributes, add_all) for key, value in safe_entry.attributes.items(): self.add_attribute_property_row(key, value) for widget in self.toggeable_widget_list: if not widget.get_visible(): self.show_all_row.set_visible(True) break def add_attribute_property_row(self, key, value): """Add an attribute to the attributes list view. :param str key: property name :param str value: property value """ builder = Gtk.Builder() builder.add_from_resource("/org/gnome/PasswordSafe/attribute_entry_row.ui") attribute_row = builder.get_object("attribute_row") attribute_property_name_label = builder.get_object("attribute_property_name_label") attribute_key_edit_button = builder.get_object("attribute_key_edit_button") attribute_value_entry = builder.get_object("attribute_value_entry") attribute_value_entry.set_buffer(HistoryEntryBuffer([])) attribute_remove_button = builder.get_object("attribute_remove_button") attribute_property_name_label.set_text(key) if value is not None: attribute_value_entry.set_text(value) attribute_remove_button.connect("clicked", self.on_attribute_remove_button_clicked, key) attribute_key_edit_button.connect("clicked", self.on_attribute_key_edit_button_clicked) attribute_value_entry.connect("changed", self.on_attributes_value_entry_changed, key) self.attribute_list_box.add(attribute_row) attribute_row.show_all() self.attribute_property_row_list.append(attribute_row) # # Events # @Gtk.Template.Callback() def on_show_all_properties_button_clicked(self, _widget): self.unlocked_database.start_database_lock_timer() for widget in self.toggeable_widget_list: widget.set_visible(True) self.show_all_row.set_visible(False) @Gtk.Template.Callback() def on_notes_detach_button_clicked(self, _button): self.unlocked_database.start_database_lock_timer() safe_entry = self.unlocked_database.current_element NotesDialog(self.unlocked_database, safe_entry).present() def on_entry_icon_button_toggled(self, flowbox): if not flowbox.get_selected_children(): return selected_row = flowbox.get_selected_children()[0] icon = selected_row.get_name() safe_entry = self.unlocked_database.current_element safe_entry.props.icon = icon @Gtk.Template.Callback() def on_link_secondary_button_clicked(self, widget, _position, _eventbutton): self.unlocked_database.start_database_lock_timer() Gtk.show_uri_on_window(self.unlocked_database.window, widget.get_text(), Gtk.get_current_event_time()) # # Additional Attributes # @Gtk.Template.Callback() def on_attributes_add_button_clicked(self, _widget): safe_entry: SafeEntry = self.unlocked_database.current_element key = self.attributes_key_entry.get_text() value = self.attributes_value_entry.get_text() if key == "" or key is None: self.attributes_key_entry.get_style_context().add_class("error") return if safe_entry.has_attribute(key): self.attributes_key_entry.get_style_context().add_class("error") self.unlocked_database.window.send_notification( _("Attribute key already exists")) return self.attributes_key_entry.get_style_context().remove_class("error") self.attributes_key_entry.set_text("") self.attributes_value_entry.set_text("") safe_entry.set_attribute(key, value) self.add_attribute_property_row(key, value) def on_attribute_remove_button_clicked(self, button, key): safe_entry: SafeEntry = self.unlocked_database.current_element attribute_row = button.get_parent().get_parent() safe_entry.delete_attribute(key) self.attribute_list_box.remove(attribute_row) def on_attributes_value_entry_changed(self, widget, key): safe_entry = self.unlocked_database.current_element safe_entry.set_attribute(key, widget.get_text()) def on_attribute_key_edit_button_clicked(self, button): safe_entry: SafeEntry = self.unlocked_database.current_element parent = button.get_parent() parent = button.get_parent().get_parent().get_parent() key = button.get_children()[0].get_label() key_entry = Gtk.Entry() key_entry.set_visible(True) key_entry.connect( "activate", self.on_key_entry_activated, safe_entry, key, button, parent) key_entry.set_text(key) attribute_entry_box = button.get_parent() attribute_entry_box.remove(button) attribute_entry_box.add(key_entry) attribute_entry_box.reorder_child(key_entry, 0) key_entry.grab_focus() def on_key_entry_activated( self, widget: Gtk.Entry, safe_entry: SafeEntry, key: str, button: Gtk.Button, parent: Gtk.Box) -> None: # pylint: disable=too-many-arguments new_key: str = widget.props.text if not new_key: widget.get_style_context().add_class("error") return if new_key == key: attribute_entry_box = widget.get_parent() attribute_entry_box.remove(widget) attribute_entry_box.add(button) attribute_entry_box.reorder_child(button, 0) return if safe_entry.has_attribute(new_key): widget.get_style_context().add_class("error") self.unlocked_database.window.send_notification( _("Attribute key already exists")) return safe_entry.set_attribute(new_key, safe_entry.props.attributes[key]) safe_entry.delete_attribute(key) button.get_children()[0].set_text(new_key) parent.set_name(new_key) attribute_entry_box = widget.get_parent() attribute_entry_box.remove(widget) attribute_entry_box.add(button) attribute_entry_box.reorder_child(button, 0) # # Attachment Handling # @Gtk.Template.Callback() def on_attachment_list_box_activated(self, _widget, list_box_row): if list_box_row.get_name() == "AddAttachmentRow": self.on_add_attachment_row_clicked() else: safe_entry: SafeEntry = self.unlocked_database.current_element attachment = safe_entry.get_attachment(list_box_row.get_name()) self.on_attachment_row_clicked(attachment) def on_add_attachment_row_clicked(self): self.unlocked_database.start_database_lock_timer() select_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for selecting attachment file _("Select attachment"), self.unlocked_database.window, Gtk.FileChooserAction.OPEN, _("_Add"), None) select_dialog.set_modal(True) select_dialog.set_select_multiple(True) # We need to hold a reference, otherwise the app crashes. self._filechooser = select_dialog select_dialog.connect("response", self._on_select_filechooser_response) select_dialog.show() def _on_select_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: safe_entry: SafeEntry = self.unlocked_database.current_element for attachment in dialog.get_files(): uri = attachment.get_uri() attachment = Gio.File.new_for_uri(uri) byte_buffer = attachment.load_bytes()[0].get_data() filename = attachment.get_basename() new_attachment = safe_entry.add_attachment(byte_buffer, filename) self.add_attachment_row(new_attachment) def add_attachment_row(self, attachment): builder = Gtk.Builder() builder.add_from_resource("/org/gnome/PasswordSafe/attachment_entry_row.ui") attachment_row = builder.get_object("attachment_row") attachment_row.set_name(str(attachment.id)) attachment_row.set_title(attachment.filename) builder.get_object("attachment_download_button").connect( "clicked", self.on_attachment_download_button_clicked, attachment ) builder.get_object("attachment_delete_button").connect( "clicked", self.on_attachment_delete_button_clicked, attachment, attachment_row, ) self.attachment_list_box.insert(attachment_row, len(self.attachment_list_box) - 1) def on_attachment_row_clicked(self, attachment): AttachmentWarningDialog(self, attachment).present() def on_attachment_download_button_clicked(self, _button, attachment): save_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for downloading an attachment _("Save attachment"), self.unlocked_database.window, Gtk.FileChooserAction.SAVE, _("_Save"), None) save_dialog.set_current_name(attachment.filename) save_dialog.set_modal(True) self._filechooser = save_dialog save_dialog.connect("response", self._on_save_filechooser_response, attachment) save_dialog.show() def _on_save_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType, attachment: Attachment) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: safe_entry: SafeEntry = self.unlocked_database.current_element bytes_buffer = safe_entry.get_attachment_content(attachment) self.save_to_disk(dialog.get_file().get_path(), bytes_buffer) def on_attachment_delete_button_clicked( self, _button, attachment_to_delete, attachment_row): safe_entry: SafeEntry = self.unlocked_database.current_element safe_entry.delete_attachment(attachment_to_delete) self.attachment_list_box.remove(attachment_row) # # Helper # def save_to_disk(self, filepath, byte_buffer): file = Gio.File.new_for_path(filepath) stream = Gio.File.replace( file, None, False, Gio.FileCreateFlags.PRIVATE | Gio.FileCreateFlags.REPLACE_DESTINATION, None) Gio.OutputStream.write_bytes(stream, GLib.Bytes.new(byte_buffer), None) stream.close() @Gtk.Template.Callback() def _on_copy_secondary_button_clicked( self, widget, _position=None, _eventbutton=None): self.unlocked_database.send_to_clipboard( widget.get_text(), _("Username copied to clipboard"), ) def show_row(self, row: Gtk.ListBoxRow, non_empty: bool, add_all: bool) -> None: if non_empty or add_all: row.set_visible(True) else: row.set_visible(False) def _on_safe_entry_updated(self, _safe_entry: SafeEntry) -> None: self.unlocked_database.start_database_lock_timer() secrets-5.1/passwordsafe/entry_row.py000066400000000000000000000122041415312107300201260ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gettext import gettext as _ from gi.repository import GObject, Gtk from passwordsafe.color_widget import Color if typing.TYPE_CHECKING: from passwordsafe.safe_element import SafeEntry from passwordsafe.unlocked_database import UnlockedDatabase # pylint: disable=ungrouped-imports @Gtk.Template(resource_path="/org/gnome/PasswordSafe/entry_row.ui") class EntryRow(Gtk.ListBoxRow): # pylint: disable=too-many-instance-attributes __gtype_name__ = "EntryRow" selection_checkbox = Gtk.Template.Child() _entry_icon = Gtk.Template.Child() _entry_name_label = Gtk.Template.Child() _entry_username_label = Gtk.Template.Child() _entry_box_gesture = Gtk.Template.Child() type = "EntryRow" def __init__(self, database: UnlockedDatabase, safe_entry: SafeEntry) -> None: super().__init__() self.get_style_context().add_class("row") self._safe_entry: SafeEntry = safe_entry self.unlocked_database = database self.db_manager = database.database_manager self.assemble_entry_row() def assemble_entry_row(self): self._safe_entry.bind_property( "icon-name", self._entry_icon, "icon-name", GObject.BindingFlags.SYNC_CREATE) self._safe_entry.connect("notify::name", self._on_entry_name_changed) self._on_entry_name_changed(self._safe_entry, None) self._safe_entry.connect("notify::username", self._on_entry_username_changed) self._on_entry_username_changed(self._safe_entry, None) self._safe_entry.connect("notify::color", self._on_entry_color_changed) self._on_entry_color_changed(self._safe_entry, None) self._entry_box_gesture.connect("pressed", self._on_entry_row_button_pressed) # Selection Mode Checkboxes self.unlocked_database.bind_property( "selection_mode", self.selection_checkbox, "visible", GObject.BindingFlags.SYNC_CREATE, ) def _on_entry_row_button_pressed( self, _gesture: Gtk.GestureMultiPress, _n_press: int, _event_x: float, _event_y: float) -> None: # pylint: disable=too-many-arguments db_view: UnlockedDatabase = self.unlocked_database db_view.start_database_lock_timer() if not db_view.props.search_active: if db_view.props.selection_mode: active = self.selection_checkbox.props.active self.selection_checkbox.props.active = not active else: db_view.props.selection_mode = True self.selection_checkbox.props.active = True @property def safe_entry(self) -> SafeEntry: return self._safe_entry @Gtk.Template.Callback() def on_selection_checkbox_toggled(self, _widget): if self.selection_checkbox.props.active: self.unlocked_database.selection_ui.add_entry(self) else: self.unlocked_database.selection_ui.remove_entry(self) @Gtk.Template.Callback() def on_entry_copy_pass_button_clicked(self, _button): self.unlocked_database.send_to_clipboard( self._safe_entry.props.password, _("Password copied to clipboard"), ) @Gtk.Template.Callback() def on_entry_copy_user_button_clicked(self, _button): self.unlocked_database.send_to_clipboard( self._safe_entry.props.username, _("Username copied to clipboard"), ) def _on_entry_name_changed( self, _safe_entry: SafeEntry, _value: GObject.ParamSpec) -> None: entry_name = self._safe_entry.props.name style_context = self._entry_name_label.get_style_context() if entry_name: style_context.remove_class("italic") self._entry_name_label.props.label = entry_name else: style_context.add_class("italic") self._entry_name_label.props.label = _("Title not specified") def _on_entry_username_changed( self, _safe_entry: SafeEntry, _value: GObject.ParamSpec) -> None: entry_username = self._safe_entry.props.username style_context = self._entry_username_label.get_style_context() if entry_username: style_context.remove_class("italic") self._entry_username_label.props.label = entry_username else: style_context.add_class("italic") self._entry_username_label.props.label = _("No username specified") def _on_entry_color_changed( self, _safe_entry: SafeEntry, _value: GObject.ParamSpec) -> None: image_style = self._entry_icon.get_style_context() # Clear current style image_style.remove_class("DarkIcon") image_style.remove_class("BrightIcon") for color in Color: image_style.remove_class(color.value + "List") color = self._safe_entry.props.color image_style.add_class(color + "List") if color not in [Color.NONE.value, Color.YELLOW.value]: image_style.add_class("BrightIcon") else: image_style.add_class("DarkIcon") secrets-5.1/passwordsafe/group_page.py000066400000000000000000000035311415312107300202310ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gi.repository import GObject, Gtk from passwordsafe.history_buffer import HistoryEntryBuffer, HistoryTextBuffer from passwordsafe.notes_dialog import NotesDialog if typing.TYPE_CHECKING: from passwordsafe.safe_element import SafeGroup @Gtk.Template(resource_path="/org/gnome/PasswordSafe/group_page.ui") class GroupPage(Gtk.ScrolledWindow): __gtype_name__ = "GroupPage" name_property_value_entry = Gtk.Template.Child() notes_property_value_entry = Gtk.Template.Child() def __init__(self, unlocked_database): super().__init__() self.unlocked_database = unlocked_database safe_group = self.unlocked_database.current_element notes_buffer = HistoryTextBuffer([]) # Setup Widgets self.name_property_value_entry.set_buffer(HistoryEntryBuffer([])) self.name_property_value_entry.grab_focus() self.notes_property_value_entry.set_buffer(notes_buffer) # Connect Signals safe_group.connect("updated", self._on_safe_group_updated) safe_group.bind_property( "name", self.name_property_value_entry, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL ) safe_group.bind_property( "notes", notes_buffer, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL ) @Gtk.Template.Callback() def on_notes_detach_button_clicked(self, _button): self.unlocked_database.start_database_lock_timer() safe_group = self.unlocked_database.current_element NotesDialog(self.unlocked_database, safe_group).present() def _on_safe_group_updated(self, _safe_group: SafeGroup) -> None: self.unlocked_database.start_database_lock_timer() secrets-5.1/passwordsafe/group_row.py000066400000000000000000000066561415312107300201370ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gettext import gettext as _ from gi.repository import GObject, Gtk from passwordsafe.safe_element import SafeGroup if typing.TYPE_CHECKING: from passwordsafe.unlocked_database import UnlockedDatabase @Gtk.Template(resource_path="/org/gnome/PasswordSafe/group_row.ui") class GroupRow(Gtk.ListBoxRow): __gtype_name__ = "GroupRow" _entry_box_gesture = Gtk.Template.Child() name_label = Gtk.Template.Child() selection_checkbox = Gtk.Template.Child() edit_button = Gtk.Template.Child() _entry_box_gesture = Gtk.Template.Child() type = "GroupRow" def __init__(self, unlocked_database, safe_group): super().__init__() self.get_style_context().add_class("row") assert isinstance(safe_group, SafeGroup) self.unlocked_database = unlocked_database self.safe_group = safe_group self.assemble_group_row() def assemble_group_row(self): self._entry_box_gesture.connect( "pressed", self._on_group_row_button_pressed) # # Name Label self.safe_group.connect("notify::name", self._on_group_name_changed) self._on_group_name_changed(self.safe_group, None) # Selection Mode Checkboxes self.unlocked_database.bind_property( "selection_mode", self.selection_checkbox, "visible", GObject.BindingFlags.SYNC_CREATE, ) # Edit Button self.unlocked_database.bind_property( "selection_mode", self.edit_button, "sensitive", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN, ) def _on_group_row_button_pressed( self, _gesture: Gtk.GestureMultiPress, _n_press: int, _event_x: float, _event_y: float) -> None: # pylint: disable=too-many-arguments db_view: UnlockedDatabase = self.unlocked_database db_view.start_database_lock_timer() if not db_view.props.search_active: if db_view.props.selection_mode: active = self.selection_checkbox.props.active self.selection_checkbox.props.active = not active else: db_view.props.selection_mode = True self.selection_checkbox.props.active = True @Gtk.Template.Callback() def on_selection_checkbox_toggled(self, _widget): if self.selection_checkbox.get_active(): self.unlocked_database.selection_ui.add_group(self) else: self.unlocked_database.selection_ui.remove_group(self) @Gtk.Template.Callback() def on_group_edit_button_clicked(self, _button: Gtk.Button) -> None: """Edit button in a GroupRow was clicked button: The edit button in the GroupRow""" self.unlocked_database.start_database_lock_timer() # Reset the lock timer self.unlocked_database.show_edit_page(self.safe_group) def _on_group_name_changed( self, _safe_group: SafeGroup, _value: GObject.ParamSpec) -> None: group_name = self.safe_group.name style_context = self.name_label.get_style_context() if group_name: style_context.remove_class("italic") self.name_label.props.label = group_name else: style_context.add_class("italic") self.name_label.props.label = _("Title not specified") secrets-5.1/passwordsafe/history_buffer.py000066400000000000000000000050341415312107300211330ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from gi.repository import Gtk class HistoryEntryBuffer(Gtk.EntryBuffer): logic = NotImplemented # TODO Use proper undo and Redo with GTK4 def __init__(self, history): Gtk.EntryBuffer.__init__(self) self.logic = Logic(self, history) self.connect("inserted-text", self.logic.on_buffer_changed) self.connect("deleted-text", self.logic.on_buffer_changed, None) class HistoryTextBuffer(Gtk.TextBuffer): logic = NotImplemented def __init__(self, history): Gtk.TextBuffer.__init__(self) self.logic = Logic(self, history) self.connect("changed", self.logic.on_buffer_changed, None, None, None) class Logic(): textbuffer = NotImplemented history = NotImplemented index = NotImplemented increase = True buffer_index = 0 def __init__(self, textbuffer, history): self.textbuffer = textbuffer self.history = history def on_buffer_changed(self, textbuffer, _position, _chars, _n_chars): if self.increase is True: self.index = NotImplemented if isinstance(textbuffer, HistoryEntryBuffer): self.history.append(textbuffer.get_text()) elif isinstance(textbuffer, HistoryTextBuffer): self.history.append(textbuffer.get_text( textbuffer.get_start_iter(), textbuffer.get_end_iter(), False)) else: self.buffer_index += 1 if self.buffer_index == 2: self.increase = True self.buffer_index = 0 def do_undo(self): # whether we are currently in an undo operation, ie self.index exists in_undo = False if self.index is NotImplemented: self.index = len(self.history) - 1 in_undo = True if self.index <= 0 or self.index > len(self.history): return self.increase = False if in_undo is False: self.index -= 1 self.history.append(self.history[self.index]) text = self.history[self.index - 1] if text is not None: self.textbuffer.set_text(text, len(text)) def do_redo(self): if self.index == len(self.history) or self.index is NotImplemented or self.index + 2 > len(self.history) or self.index + 1 < 0: return self.increase = False self.index += 1 text = self.history[self.index] if text is not None: self.textbuffer.set_text(text, len(text)) secrets-5.1/passwordsafe/main_window.py000066400000000000000000000600051415312107300204130ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import os import threading from gettext import gettext as _ from gi.repository import Gdk, Gio, GLib, GObject, Gtk, Handy import passwordsafe.config_manager from passwordsafe.container_page import ContainerPage from passwordsafe.create_database import CreateDatabase from passwordsafe.database_manager import DatabaseManager from passwordsafe.notification import Notification from passwordsafe.recent_files_page import RecentFilesPage from passwordsafe.save_dialog import SaveDialog from passwordsafe.unlock_database import UnlockDatabase from passwordsafe.unlocked_database import UnlockedDatabase from passwordsafe.welcome_page import WelcomePage @Gtk.Template(resource_path="/org/gnome/PasswordSafe/main_window.ui") class MainWindow(Handy.ApplicationWindow): # pylint: disable=too-many-instance-attributes # pylint: disable=too-many-public-methods __gtype_name__ = "MainWindow" database_manager = NotImplemented opened_databases: list[UnlockedDatabase] = [] databases_to_save: list[UnlockedDatabase] = [] _filechooser = None _notification = Notification() container = Gtk.Template.Child() _headerbar = Gtk.Template.Child() _main_overlay = Gtk.Template.Child() _main_view = Gtk.Template.Child() _spinner = Gtk.Template.Child() _title_stack = Gtk.Template.Child() mobile_layout = GObject.Property( type=bool, default=False, flags=GObject.ParamFlags.READWRITE) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.application = self.get_application() self.welcome_page = WelcomePage() self.recent_files_page = RecentFilesPage() self._main_view.add(self.welcome_page) self._main_view.add(self.recent_files_page) self._main_overlay.add_overlay(self._notification) self.assemble_window() if Gio.Application.get_default().development_mode is True: passwordsafe.config_manager.set_development_backup_mode(True) def send_notification(self, notification: str) -> None: self._notification.send_notification(notification) def set_headerbar(self, headerbar: Handy.HeaderBar | None = None) -> None: if headerbar is None: self._title_stack.set_visible_child(self._headerbar) return if headerbar not in self._title_stack.get_children(): self._title_stack.add(headerbar) self._title_stack.set_visible_child(headerbar) def assemble_window(self) -> None: window_size = passwordsafe.config_manager.get_window_size() self.resize(window_size[0], window_size[1]) self.create_headerbar() self.load_custom_css() self.apply_theme() self.invoke_initial_screen() # # Headerbar # def create_headerbar(self): self.set_headerbar() if Gio.Application.get_default().development_mode is True: context = self.get_style_context() context.add_class("devel") # # Styles # def load_custom_css(self) -> None: """Load passwordsafe.css and enable it""" screen = Gdk.Screen.get_default() css_provider = Gtk.CssProvider() css_provider.load_from_resource("org/gnome/PasswordSafe/passwordsafe.css") context = self.get_style_context() context.add_provider_for_screen( screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def apply_theme(self) -> None: """Set the bright/dark theme depending on the configuration""" gtk_settings = Gtk.Settings.get_default() gtk_settings.set_property( "gtk-application-prefer-dark-theme", passwordsafe.config_manager.get_dark_theme()) # # Responsive Listener # def do_size_allocate(self, allocation: Gdk.Rectangle) -> None: # pylint: disable=arguments-differ """Handler for resizing event. It is used to check if the layout needs to be updated. :param GdkEvent event: event """ new_mobile_layout = allocation.width < 700 if new_mobile_layout != self.props.mobile_layout: self.props.mobile_layout = new_mobile_layout Handy.ApplicationWindow.do_size_allocate(self, allocation) # # First Start Screen # def invoke_initial_screen(self) -> None: """Present the first start screen if required or autoload files If the configuration is set to automatically load the last opened safe, this function does that. If it is not set to autoload, it presents a list of recently loaded files (or displays the empty welcome page if there are no recently loaded files). """ if self.application.file_list: # file_list is appended to when we invoke the app with # files as cmd line parameters. (it is also appended to # whenever we open a file via app.open action). If it is # populated, simply load those files and don't show any # screens. for g_file in self.application.file_list: self.start_database_opening_routine(g_file.get_path()) return if passwordsafe.config_manager.get_first_start_screen(): # simply load the last opened file filepath = None file: Gio.File = Gio.File.new_for_uri( passwordsafe.config_manager.get_last_opened_database() ) if Gio.File.query_exists(file): filepath = file.get_path() logging.debug("Opening last opened database: %s", filepath) self.start_database_opening_routine(filepath) return # Display the screen with last opened files (or welcome page) self.display_recent_files_list() def display_recent_files_list(self) -> None: """Shows the list of recently opened files or invokes welcome page""" if not passwordsafe.config_manager.get_last_opened_list(): logging.debug("No recent files saved") self.display_welcome_page() return recent_files_page = RecentFilesPage() if recent_files_page.is_empty: logging.debug("No recent files") self.display_welcome_page() return self._main_view.set_visible_child(self.recent_files_page) def display_welcome_page(self) -> None: """Shown when there is no autoloading and no recent files to display""" self._main_view.set_visible_child(self.welcome_page) self._title_stack.set_visible_child_name("recent_files_headerbar") # # Open Database Methods # @Gtk.Template.Callback() def open_filechooser(self, _widget, _user_data=None): """Callback function to open a safe. This callback can be called from an action activate event or a clicked event from a button. In the latter case, no user_data is set. Having None as a default value allows to handle both events reliably. """ # pylint: disable=too-many-locals filechooser_opening_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for opening an existing keepass safe kdbx file _("Choose a Keepass safe"), self, Gtk.FileChooserAction.OPEN, None, None) supported_mime_types = [ "application/x-keepass2", "application/octet-stream" ] filter_text = Gtk.FileFilter() # NOTE: KeePass + version number is a proper name, do not translate filter_text.set_name(_("KeePass 3.1/4 Database")) for mime_type in supported_mime_types: filter_text.add_mime_type(mime_type) filechooser_opening_dialog.add_filter(filter_text) # We need to hold a reference, otherwise the app crashes. self._filechooser = filechooser_opening_dialog filechooser_opening_dialog.connect("response", self._on_open_filechooser_response, supported_mime_types) filechooser_opening_dialog.show() def _on_open_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType, supported_mime_types: list[str]) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: db_filename = dialog.get_file().get_path() logging.debug("File selected: %s", db_filename) db_gfile = Gio.File.new_for_path(db_filename) try: db_file_info = db_gfile.query_info( # https://gitlab.gnome.org/GNOME/gvfs/-/issues/529 # we can remove standard::content-type when the fix # is merged in distros' gvfs version. "standard::content-type,standard::fast-content-type", Gio.FileQueryInfoFlags.NONE, None ) except GLib.Error as error: self.notify(_("Could not open file")) logging.debug( "Unable to query info for file %s: %s", db_filename, error.message ) return file_content_type = db_file_info.get_attribute_as_string("standard::fast-content-type") file_mime_type = Gio.content_type_get_mime_type(file_content_type) if file_mime_type not in supported_mime_types: self.notify(_("Could not open file: Mime type not supported")) return database_already_opened = False for database in self.opened_databases: if database.database_manager.database_path == db_filename: database_already_opened = True page_num = self.container.page_num(database.parent_widget) self.container.set_current_page(page_num) self.notify(_("Safe already opened")) if database_already_opened is False: self.start_database_opening_routine(db_filename) elif response == Gtk.ResponseType.CANCEL: logging.debug("File selection canceled") def start_database_opening_routine(self, filepath: str) -> None: """Start opening a safe file""" builder = Gtk.Builder() builder.add_from_resource( "/org/gnome/PasswordSafe/create_database_headerbar.ui") headerbar = builder.get_object("headerbar") tab_title: str = os.path.basename(filepath) UnlockDatabase(self, self.create_tab(tab_title, headerbar), filepath) self._main_view.set_visible_child(self.container) # # Create Database Methods # @Gtk.Template.Callback() def create_filechooser(self, _widget, _user_data=None): """Callback function to create a new safe. This callback can be called from an action activate event or a clicked event from a button. In the latter case, no user_data is set. Having None as a default value allows to handle both events reliably. """ filechooser_creation_dialog = Gtk.FileChooserNative.new( # NOTE: Filechooser title for creating a new keepass safe kdbx file _("Choose location for Keepass safe"), self, Gtk.FileChooserAction.SAVE, _("_Create"), None, ) filechooser_creation_dialog.set_current_name(_("Safe") + ".kdbx") filechooser_creation_dialog.set_modal(True) filter_text = Gtk.FileFilter() # NOTE: KeePass + version number is a proper name, do not translate filter_text.set_name(_("KeePass 3.1/4 Database")) filter_text.add_mime_type("application/x-keepass2") filechooser_creation_dialog.add_filter(filter_text) # We need to hold a reference, otherwise the app crashes. self._filechooser = filechooser_creation_dialog filechooser_creation_dialog.connect("response", self._on_create_filechooser_response) filechooser_creation_dialog.show() def _on_create_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: filepath = dialog.get_file().get_path() self._spinner.start() self._main_view.set_visible_child(self._spinner) creation_thread = threading.Thread( target=self.create_new_database, args=[filepath] ) creation_thread.daemon = True creation_thread.start() def create_new_database(self, filepath: str) -> None: """invoked in a separate thread to create a new safe.""" # Copy our stock database file to `filepath` stock_db_file: Gio.File = Gio.File.new_for_uri( "resource:///org/gnome/PasswordSafe/database.kdbx") new_db_file: Gio.File = Gio.File.new_for_path(filepath) stock_db_file.copy(new_db_file, Gio.FileCopyFlags.OVERWRITE) tab_title: str = os.path.basename(filepath) self.database_manager = DatabaseManager(filepath, "liufhre86ewoiwejmrcu8owe") GLib.idle_add(self.start_database_creation_routine, tab_title) def start_database_creation_routine(self, tab_title): self._main_view.set_visible_child(self.container) self._spinner.stop() builder = Gtk.Builder() builder.add_from_resource( "/org/gnome/PasswordSafe/create_database_headerbar.ui") headerbar = builder.get_object("headerbar") parent_widget = self.create_tab(tab_title, headerbar) back_button = builder.get_object("back_button") create_database = CreateDatabase( self, parent_widget, self.database_manager, back_button) self.set_headerbar(headerbar) parent_widget.add(create_database) back_button.connect("clicked", create_database.on_headerbar_back_button_clicked) # # Tab Manager # def create_tab(self, title, headerbar): page_instance = ContainerPage(headerbar, Gio.Application.get_default().development_mode) tab_hbox = Gtk.Box.new(False, 0) tab_label = Gtk.Label.new(title) tab_hbox.add(tab_label) close_image = Gtk.Image.new_from_icon_name("window-close-symbolic", Gtk.IconSize.BUTTON) close_button = Gtk.Button() close_button.set_relief(Gtk.ReliefStyle.NONE) close_button.set_focus_on_click(False) close_button.connect("clicked", self.on_tab_close_button_clicked, page_instance) close_button.add(close_image) tab_hbox.add(close_button) tab_hbox.show_all() self.container.append_page(page_instance, tab_hbox) self.container.set_current_page(self.container.page_num(page_instance)) self.update_tab_bar_visibility() return page_instance def update_tab_bar_visibility(self): if self.container.get_n_pages() > 1: self.container.set_show_tabs(True) else: self.container.set_show_tabs(False) if not self.container.get_n_pages(): self.display_recent_files_list() elif not self.container.is_visible(): self._main_view.set_visible_child(self.container) def close_tab(self, child_widget, database=None): """Remove a tab from the container. If database is defined, it is removed from the list of opened_databases :param GtkWidget child_widget: tab to close :param UnlockedDatabase database: database to remove """ page_num = self.container.page_num(child_widget) self.container.remove_page(page_num) self.update_tab_bar_visibility() if database: self.opened_databases.remove(database) # # Events # def on_tab_close_button_clicked(self, _sender, widget): page_num = self.container.page_num(widget) for database in self.opened_databases: if database.window.container.page_num(database.parent_widget) == page_num: if database.database_manager.is_dirty: if passwordsafe.config_manager.get_save_automatically(): database.cleanup() database.save_database() else: save_dialog = SaveDialog(self) save_dialog.connect("response", self._on_save_dialog_response, [widget, database]) save_dialog.show() else: database.cleanup() self.close_tab(widget, database) return self.close_tab(widget) def _on_save_dialog_response(self, dialog, response, args): widget, database = args dialog.close() if response == Gtk.ResponseType.YES: database.cleanup() self.close_tab(widget, database) database.save_database() elif response == Gtk.ResponseType.NO: database.cleanup() self.close_tab(widget, database) # # Application Quit Dialog # def save_window_size(self): logging.debug("Saving window geometry.") window_size = [self.get_size().width, self.get_size().height] passwordsafe.config_manager.set_window_size(window_size) def do_delete_event(self, _event: Gdk.EventAny) -> bool: # pylint:disable=arguments-differ """This is invoked when the window close button is pressed. Only the app.quit action is called. This action cleans up stuff and will invoke the on_application_shutdown() method. The true value returned ensures that the destroy method is not called yet. """ self.application.activate_action("quit") return True # # Gio Actions # # Find current displayed tab for executing the action def find_action_db(self) -> UnlockedDatabase | None: action_db = None for database in self.opened_databases: if ( self.tab_visible(database.parent_widget) and not database.database_manager.props.locked ): action_db = database return action_db # Entry/Group Row Popover Actions def add_row_popover_actions(self): actions = [ ("element.delete", "on_element_delete_menu_button_clicked"), ("entry.duplicate", "on_entry_duplicate_menu_button_clicked"), ("entry.references", "on_entry_references_menu_button_clicked"), ("element.properties", "on_element_properties_menu_button_clicked"), ("group.edit", "on_group_edit_menu_button_clicked"), ("group.delete", "on_group_delete_menu_button_clicked") ] for action, name in actions: simple_action = Gio.SimpleAction.new(action, None) simple_action.connect("activate", self.execute_gio_action, name) self.application.add_action(simple_action) # MenuButton Popover Actions def add_database_menubutton_popover_actions(self): actions = [ ("db.add_entry", "on_add_entry_action", None), ("db.add_group", "on_add_group_action", None), ("db.settings", "on_database_settings_entry_clicked", None), ("sort", "on_sort_menu_button_entry_clicked", None), ] for action, name, arg in actions: simple_action = Gio.SimpleAction.new(action, None) simple_action.connect( "activate", self.execute_gio_action, name, arg) self.application.add_action(simple_action) sort_action = self.application.settings.create_action( "sort-order" ) sort_action.connect( "notify::state", self.execute_gio_action, "sort-order", None ) self.application.add_action(sort_action) # Selection Mode Actions def add_selection_actions(self): selection_all_action = Gio.SimpleAction.new("selection.all", None) selection_all_action.connect("activate", self.execute_gio_action, "on_selection_popover_button_clicked", "all") self.application.add_action(selection_all_action) selection_none_action = Gio.SimpleAction.new("selection.none", None) selection_none_action.connect("activate", self.execute_gio_action, "on_selection_popover_button_clicked", "none") self.application.add_action(selection_none_action) # Gio Action Handler def execute_gio_action(self, action, param, name, arg=None): action_db = self.find_action_db() if action_db is None: return action_db.start_database_lock_timer() if name == "on_element_delete_menu_button_clicked": action_db.on_element_delete_menu_button_clicked(action, param) elif name == "on_entry_duplicate_menu_button_clicked": action_db.on_entry_duplicate_menu_button_clicked(action, param) elif name == "on_entry_references_menu_button_clicked": action_db.show_references_dialog(action, param) elif name == "on_element_properties_menu_button_clicked": action_db.show_properties_dialog(action, param) elif name == "on_group_edit_menu_button_clicked": action_db.on_group_edit_menu_button_clicked(action, param) elif name == "on_group_delete_menu_button_clicked": action_db.on_group_delete_menu_button_clicked(action, param) elif name == "on_database_add_entry_clicked": action_db.on_database_add_entry_clicked(action) elif name == "on_add_group_action": action_db.on_add_group_action(action) elif name == "on_database_settings_entry_clicked": action_db.on_database_settings_entry_clicked(action, param) elif name == "on_selection_popover_button_clicked": action_db.selection_ui.on_selection_popover_button_clicked(action, param, arg) # Add Global Accelerator Actions # The save_dirty action differs to save in that it is set as disabled # by default, and it is used by the main menu to determine if the button # should be set to sensitive. def add_global_accelerator_actions(self): actions = [ ("db.save", "save", None), ("db.save_dirty", "save_dirty", None), ("db.lock", "lock", None), ("db.add_entry", "add_action", "entry"), ("db.add_group", "add_action", "group"), ("go_back", "go_back", None), ] for action, name, arg in actions: simple_action = Gio.SimpleAction.new(action, None) if name == "save_dirty": simple_action.set_enabled(False) simple_action.connect( "activate", self.execute_accel_action, name, arg) self.application.add_action(simple_action) # Accelerator Action Handler def execute_accel_action(self, action, _param, name, arg=None): action_db = self.find_action_db() if action_db is None: return if name in ["save", "save_dirty"]: action_db.save_safe() elif name == "lock": action_db.lock_safe() elif name == "go_back": action_db.go_back() elif name == "add_action": if ( action_db.props.database_locked or action_db.props.selection_mode or action_db.in_edit_page or action_db.props.search_active ): return if arg == "entry": action_db.on_add_entry_action(action) elif arg == "group": action_db.on_add_group_action(action) # # Tools # def tab_visible(self, tab): """Checks that the tab is visible :returns: True if the tab is visible :rtype: bool """ current_page = self.container.get_current_page() return self.container.page_num(tab) == current_page secrets-5.1/passwordsafe/notes_dialog.py000066400000000000000000000113141415312107300205460ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gi.repository import Gdk, GObject, Gtk, Handy class NotesDialog: # pylint: disable=too-many-instance-attributes def __init__(self, unlocked_database, safe_entry): self.__builder = Gtk.Builder() self.__builder.add_from_resource("/org/gnome/PasswordSafe/notes_dialog.ui") self.__unlocked_database = unlocked_database self.__safe_entry = safe_entry self.__dialog = self.__builder.get_object("notes_detached_dialog") self.__accelerators = Gtk.AccelGroup() self.__search_stopped = False self.__notes_buffer = self.__builder.get_object("value_entry").get_buffer() self.__tag = self.__notes_buffer.create_tag("found", background="yellow") self.__setup_widgets() self.__setup_signals() self.__setup_accelerators() def present(self): self.__dialog.present() def __setup_signals(self): self.__unlocked_database.database_manager.connect("notify::locked", self.__on_locked) self.__builder.get_object("copy_button").connect("clicked", self.__on_copy_button_clicked) # Search self.__search_button = self.__builder.get_object("search_button") self.__search_bar = self.__builder.get_object("search_bar") self.__search_entry = self.__builder.get_object("search_entry") self.__search_button.connect("toggled", self.__on_search_button_toggled) self.__search_entry.connect("search-changed", self.__on_search_entry_changed) self.__search_entry.connect("stop-search", self.__on_search_stopped) # Bind text to the corresponding safe entry. self.__safe_entry.bind_property( "notes", self.__notes_buffer, "text", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) def __setup_widgets(self): # Dialog self.__dialog.set_modal(True) self.__dialog.set_transient_for(self.__unlocked_database.window) self.__dialog.connect("key-press-event", self.__on_key_press_event) def __setup_accelerators(self): self.__dialog.add_accel_group(self.__accelerators) self.__add_search_accelerator() # TODO Add accelerator for save on "s" def __add_search_accelerator(self): key, mod = Gtk.accelerator_parse("f") self.__search_button.add_accelerator( "clicked", self.__accelerators, key, mod, Gtk.AccelFlags.VISIBLE ) # # Events # def __on_copy_button_clicked(self, _button): notes_buffer = self.__notes_buffer self.__unlocked_database.send_to_clipboard( notes_buffer.get_text( notes_buffer.get_start_iter(), notes_buffer.get_end_iter(), False ) ) def __on_search_button_toggled(self, _button): self.__unlocked_database.start_database_lock_timer() if self.__search_stopped is True: return self.__toggle_search_bar() def __toggle_search_bar(self): if self.__search_bar.get_search_mode() is True: self.__search_bar.set_search_mode(False) else: self.__search_bar.set_search_mode(True) def __on_search_entry_changed(self, entry): self.__unlocked_database.start_database_lock_timer() notes_buffer = self.__notes_buffer notes_buffer.remove_all_tags( notes_buffer.get_start_iter(), notes_buffer.get_end_iter() ) start = notes_buffer.get_start_iter() if entry.get_text(): self.__do_search(notes_buffer, entry.get_text(), start) def __on_search_stopped(self, _entry): self.__search_stopped = True self.__search_button.set_active(False) self.__search_stopped = False # # Tools # def __do_search(self, notes_buffer, keyword, start): end = notes_buffer.get_end_iter() match = start.forward_search(keyword, Gtk.TextSearchFlags.CASE_INSENSITIVE, end) if match is not None: match_start, match_end = match notes_buffer.apply_tag(self.__tag, match_start, match_end) self.__do_search(notes_buffer, keyword, match_end) def __on_key_press_event(self, _window: Handy.Window, event: Gtk.Event) -> bool: if event.keyval == Gdk.KEY_Escape: if not self.__search_bar.get_search_mode(): self.__unlocked_database.start_database_lock_timer() self.__dialog.close() return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE def __on_locked(self, database_manager, _value): locked = database_manager.props.locked if locked: self.__dialog.close() secrets-5.1/passwordsafe/notification.py000066400000000000000000000013721415312107300205700ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from gi.repository import Gtk, GLib REVEAL_TIME = 3.0 @Gtk.Template(resource_path="/org/gnome/PasswordSafe/notification.ui") class Notification(Gtk.Revealer): __gtype_name__ = "Notification" event_id = None label = Gtk.Template.Child() def send_notification(self, notification: str) -> None: self.label.set_label(notification) if self.event_id is not None: GLib.source_remove(self.event_id) self.event_id = None self.set_reveal_child(True) self.event_id = GLib.timeout_add_seconds( REVEAL_TIME, self.__hide_notification) def __hide_notification(self) -> None: self.event_id = None self.set_reveal_child(False) secrets-5.1/passwordsafe/passphrase_generator.py000066400000000000000000000030551415312107300223210ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only """Generate a passphrase from a list of predefined words.""" from __future__ import annotations import logging from secrets import randbelow from gi.repository import Gio, GLib class Passphrase: """Generate a passphrase from a list of predefined words.""" def __init__(self, password: str = None): """password is the (optional) password to be stored""" self.password = password @classmethod def generate(cls, num_words: int, separator: str = "-") -> "Passphrase": """Generate a passphrase. :param int num_words: number of words requested :param str separator: separator :returns: a Passphrase() object :rtype: `Passphrase` """ word_file: Gio.File = Gio.File.new_for_uri( "resource:///org/gnome/PasswordSafe/crypto/eff_large_wordlist.txt" ) f_buffer: GLib.Bytes = Gio.InputStream.read_bytes(word_file.read(), 108800) word_str: str = f_buffer.get_data().decode("utf-8") word_list: list[str] = word_str.split("\n") len_words: int = len(word_list) words = [word_list[randbelow(len_words)] for _ in range(0, num_words)] passphrase: str = separator.join(words) logging.debug("Created passphrase with %d words and separator '%s'", num_words, separator) return cls(passphrase) def __str__(self): """String representation of the passphrase""" return self.password or "" secrets-5.1/passwordsafe/password_entry_row.py000066400000000000000000000102701415312107300220510ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import typing from gettext import gettext as _ from gi.repository import Gdk, Gtk import passwordsafe.config_manager import passwordsafe.password_generator as pwd_generator from passwordsafe.history_buffer import HistoryEntryBuffer from passwordsafe.password_generator_popover import PasswordGeneratorPopover if typing.TYPE_CHECKING: from passwordsafe.database_manager import DatabaseManager from passwordsafe.safe_element import SafeEntry from passwordsafe.unlocked_database import UnlockedDatabase @Gtk.Template(resource_path="/org/gnome/PasswordSafe/password_entry_row.ui") class PasswordEntryRow(Gtk.Box): __gtype_name__ = "PasswordEntryRow" _generate_password_button = Gtk.Template.Child() _password_level_bar = Gtk.Template.Child() _password_value_entry = Gtk.Template.Child() _copy_password_button = Gtk.Template.Child() def __init__(self, unlocked_database: UnlockedDatabase) -> None: """Widget to set the password of an entry :param unlocked_database: unlocked database """ super().__init__() self._unlocked_database: UnlockedDatabase = unlocked_database self._db_manager: DatabaseManager = unlocked_database.database_manager self._safe_entry: SafeEntry = unlocked_database.current_element self._password_value_entry.set_buffer(HistoryEntryBuffer([])) self._password_value_entry.props.text = self._safe_entry.props.password self._password_value_entry.bind_property("text", self._safe_entry, "password") show_pwds = passwordsafe.config_manager.get_show_password_fields() self._password_value_entry.props.visibility = show_pwds self._pwd_popover = PasswordGeneratorPopover() self._pwd_popover.bind_property( "password", self._password_value_entry, "text") self._generate_password_button.set_popover(self._pwd_popover) self._unlocked_database.bind_accelerator( self._password_value_entry, "c", signal="copy-clipboard" ) self._password_level_bar.add_offset_value("weak", 1.0) self._password_level_bar.add_offset_value("medium", 3.0) self._password_level_bar.add_offset_value("strong", 4.0) self._password_level_bar.add_offset_value("secure", 5.0) self._set_password_level_bar() @Gtk.Template.Callback() def _on_copy_password_button_clicked(self, _widget: Gtk.Button) -> None: self._unlocked_database.send_to_clipboard( self._password_value_entry.props.text, _("Password copied to clipboard") ) @Gtk.Template.Callback() def _on_password_value_changed(self, _widget: Gtk.Entry) -> None: """Invoked when the password entry has changed Take note that this callback is already invoked after the initial population of the entry when nothing has really been changed by the user, so be careful of doing things here that could have unwanted side-effects. """ self._unlocked_database.start_database_lock_timer() self._set_password_level_bar() @Gtk.Template.Callback() def _on_show_password_button_toggled( self, _widget: Gtk.Entry, _position: Gtk.EntryIconPosition | None = None, _event: Gdk.Event | None = None, ) -> None: self._unlocked_database.start_database_lock_timer() entry_visibility = self._password_value_entry.props.visibility self._password_value_entry.props.visibility = not entry_visibility def _set_password_level_bar(self) -> None: pwd_text: str = self._password_value_entry.props.text if pwd_text.startswith("{REF:P"): try: password: str = self._safe_entry.password except ValueError: logging.warning( "Failed to look up password for reference '%s'", password) password = pwd_text else: password = pwd_text password_strength: float | None = pwd_generator.strength(password) if password_strength is not None: self._password_level_bar.props.value = password_strength secrets-5.1/passwordsafe/password_generator.py000066400000000000000000000035441415312107300220150ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import secrets import string import pwquality def generate( length: int, use_uppercase: bool, use_lowercase: bool, use_numbers: bool, use_symbols: bool, ) -> str: """Generate a password based on some criteria. :param int digits: password number of characters :param bool high_letter: password must contain uppercase letters :param bool low_letter: password must contain low letters :param bool numbers: password must contain digits :param bool special: password must contain special characters :returns: a password :rtype: str """ characters: str = "" if use_uppercase: characters += string.ascii_uppercase if use_lowercase: characters += string.ascii_lowercase if use_numbers: characters += string.digits if use_symbols: characters += string.punctuation # If all options are disabled, generate a password using # arbitrary ASCII characters. # TODO Revisit this. It might be a sane default, but # it is highly un-intuitive. if characters == "": characters = ( string.ascii_uppercase + string.ascii_lowercase + string.digits + string.punctuation ) return "".join([secrets.choice(characters) for _ in range(0, length)]) def strength(password: str) -> float | None: """Get strength of a password between 0 and 5. The higher the score is, the more secure the password is. :param str password: password to test :returns: strength of password or None on pwquality error :rtype: float """ try: if password: score = pwquality.PWQSettings().check(password) else: score = 0 except pwquality.PWQError: return None return score / 20 secrets-5.1/passwordsafe/password_generator_popover.py000066400000000000000000000055051415312107300235660ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gi.repository import GObject, Gtk import passwordsafe.config_manager as config from passwordsafe.password_generator import generate as generate_pwd from passwordsafe.passphrase_generator import Passphrase @Gtk.Template( resource_path="/org/gnome/PasswordSafe/password_generator_popover.ui") class PasswordGeneratorPopover(Gtk.Popover): __gtype_name__ = "PasswordGeneratorPopover" _digit_spin_button = Gtk.Template.Child() _generate_button = Gtk.Template.Child() _high_letter_toggle_btn = Gtk.Template.Child() _low_letter_toggle_button = Gtk.Template.Child() _number_toggle_button = Gtk.Template.Child() _separator_entry = Gtk.Template.Child() _special_toggle_button = Gtk.Template.Child() _stack = Gtk.Template.Child() _words_spin_button = Gtk.Template.Child() password = GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def __init__(self): """Popover to generate a new password for an entry :param UnlockedDatabase database_view: database view """ super().__init__() use_lowercase = config.get_generator_use_lowercase() self._low_letter_toggle_button.set_active(use_lowercase) use_uppercase = config.get_generator_use_uppercase() self._high_letter_toggle_btn.set_active(use_uppercase) use_numbers = config.get_generator_use_numbers() self._number_toggle_button.set_active(use_numbers) use_symbols = config.get_generator_use_symbols() self._special_toggle_button.set_active(use_symbols) length = config.get_generator_length() self._digit_spin_button.set_value(length) separator = config.get_generator_separator() self._separator_entry.set_text(separator) words = config.get_generator_words() self._words_spin_button.set_value(words) @Gtk.Template.Callback() def _on_generate_button_clicked(self, _button: Gtk.Button) -> None: if self._stack.get_visible_child_name() == "password": use_uppercase: bool = self._high_letter_toggle_btn.props.active use_lowercase: bool = self._low_letter_toggle_button.props.active use_numbers: bool = self._number_toggle_button.props.active use_symbols: bool = self._special_toggle_button.props.active length: int = self._digit_spin_button.get_value_as_int() pass_text: str = generate_pwd( length, use_uppercase, use_lowercase, use_numbers, use_symbols) else: separator: str = self._separator_entry.props.text words: int = self._words_spin_button.get_value_as_int() pass_text = str(Passphrase.generate(words, separator)) self.props.password = pass_text secrets-5.1/passwordsafe/pathbar.py000066400000000000000000000067701415312107300175320ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gi.repository import Gio, GObject, Gtk from passwordsafe.pathbar_button import PathbarButton from passwordsafe.safe_element import SafeElement if typing.TYPE_CHECKING: from passwordsafe.unlocked_database import UnlockedDatabase class Pathbar(Gtk.Box): """Pathbar provides a breadcrumb-style Box with the current hierarchy""" buttons = Gio.ListStore.new(PathbarButton) current_element = GObject.Property( type=SafeElement, flags=GObject.ParamFlags.READWRITE) def __init__(self, unlocked_database, dbm): super().__init__() self.set_name("Pathbar") self.unlocked_database = unlocked_database self.database_manager = dbm unlocked_database.bind_property( "current-element", self, "current-element", GObject.BindingFlags.SYNC_CREATE) self.connect("notify::current-element", self._on_current_element_changed) def _on_current_element_changed(self, _pathbar, _value): self.clear_pathbar() self.build_button_list() self.build_pathbar() def build_button_list(self): current_element = self.current_element button = self.add_button(current_element) self.buttons.insert(0, button) # pylint: disable=no-member while not current_element.is_root_group: # pylint: disable=no-member current_element = current_element.parentgroup button = self.add_button(current_element) self.buttons.insert(0, button) def build_pathbar(self): for button in self.buttons: self.add(button) if not button == self.buttons[-1]: self.add_separator_label() self.buttons[-1].set_active_style() self.show_all() def add_separator_label(self): separator_label = PathbarSeparator(self.unlocked_database) self.add(separator_label) def add_button(self, element: SafeElement) -> PathbarButton: pathbar_button = PathbarButton(element) pathbar_button.connect("clicked", self.on_pathbar_button_clicked) return pathbar_button def clear_pathbar(self): self.buttons.remove_all() for widget in self.get_children(): self.remove(widget) def on_pathbar_button_clicked(self, pathbar_button): self.unlocked_database.start_database_lock_timer() pathbar_button_elem = pathbar_button.element current_elem_uuid = self.unlocked_database.current_element.uuid if pathbar_button_elem.uuid != current_elem_uuid: is_group = pathbar_button.is_group if is_group: self.unlocked_database.show_browser_page(pathbar_button_elem) class PathbarSeparator(Gtk.Label): def __init__(self, unlocked_database): super().__init__() self.unlocked_database = unlocked_database self.set_text("/") context = self.get_style_context() if not self.unlocked_database.props.selection_mode: context.add_class("dim-label") self.unlocked_database.connect("notify::selection-mode", self._on_selection_mode_changed) def _on_selection_mode_changed( self, unlocked_database: UnlockedDatabase, _value: GObject.ParamSpecBoolean ) -> None: context = self.get_style_context() if unlocked_database.props.selection_mode: context.remove_class("dim-label") else: context.add_class("dim-label") secrets-5.1/passwordsafe/pathbar_button.py000066400000000000000000000022131415312107300211110ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only """Gtk.Button representing a path element in the pathbar""" from gi.repository import GObject, Gtk from passwordsafe.safe_element import SafeElement class PathbarButton(Gtk.Button): """Gtk.Button representing a path element in the pathbar notable instance variables are: .uuid: the UUID of the group or entry """ def __init__(self, element: SafeElement): super().__init__() assert isinstance(element, SafeElement) self.set_name("PathbarButtonDynamic") context = self.get_style_context() context.add_class("flat") self.is_group = element.is_group self.element: SafeElement = element if element.is_root_group: home_button_image = Gtk.Image.new_from_icon_name( "go-home-symbolic", Gtk.IconSize.BUTTON ) self.add(home_button_image) return self.element.bind_property( "name", self, "label", GObject.BindingFlags.SYNC_CREATE) def set_active_style(self): context = self.get_style_context() context.add_class('PathbarButtonActive') secrets-5.1/passwordsafe/properties_dialog.py000066400000000000000000000042051415312107300216130ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only """Responsible for displaying the Entry/Group Properties""" from __future__ import annotations from gi.repository import Gtk, Gdk, Handy class PropertiesDialog: """Displays a modal dialog with Entry/Group Properties""" def __init__(self, database): self.__builder = Gtk.Builder() self.__builder.add_from_resource("/org/gnome/PasswordSafe/properties_dialog.ui") self.__dialog = self.__builder.get_object("properties_dialog") self.__database = database self.__db_manager = database.database_manager self.__setup_signals() self.__setup_widgets() def present(self): """Present the dialog""" self.__dialog.present() def __update_properties(self) -> None: """Construct dialog content with the attributes of the Entry|Group""" element = self.__database.current_element hex_uuid = element.uuid.hex.upper() self.__builder.get_object("label_uuid").set_text(hex_uuid) self.__builder.get_object("label_accessed").set_text( self.__db_manager.get_element_acessed_date(element) ) self.__builder.get_object("label_modified").set_text( self.__db_manager.get_element_modified_date(element) ) self.__builder.get_object("label_created").set_text( self.__db_manager.get_element_creation_date(element) ) def __setup_signals(self) -> None: self.__dialog.connect("key-press-event", self.__on_key_press_event) self.__db_manager.connect("notify::locked", self.__on_locked) def __setup_widgets(self) -> None: self.__update_properties() self.__dialog.set_modal(True) self.__dialog.set_transient_for(self.__database.window) def __on_key_press_event(self, _window: Handy.Window, event: Gtk.Event) -> bool: if event.keyval == Gdk.KEY_Escape: self.__dialog.close() return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE def __on_locked(self, database_manager, _value): locked = database_manager.props.locked if locked: self.__dialog.close() secrets-5.1/passwordsafe/quit_dialog.py000066400000000000000000000031111415312107300203740ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import os from gi.repository import Gio, Gtk @Gtk.Template(resource_path="/org/gnome/PasswordSafe/quit_dialog.ui") class QuitDialog(Gtk.MessageDialog): __gtype_name__ = "QuitDialog" unsaved_databases_list_box = Gtk.Template.Child() def __init__(self, window, unsaved_databases_list): super().__init__() self.set_transient_for(window) for database in unsaved_databases_list: unsaved_database_row = Gtk.ListBoxRow() check_button = Gtk.CheckButton() if "/home/" in database.database_manager.database_path: check_button.set_label( "~/" + os.path.relpath(database.database_manager.database_path) ) else: check_button.set_label( Gio.File.new_for_path( database.database_manager.database_path ).get_uri() ) check_button.connect( "toggled", self.on_save_check_button_toggled, [database, window] ) check_button.set_active(True) unsaved_database_row.add(check_button) unsaved_database_row.show_all() self.unsaved_databases_list_box.add(unsaved_database_row) def on_save_check_button_toggled(self, check_button, args): database, window = args if check_button.get_active(): window.databases_to_save.append(database) else: window.databases_to_save.remove(database) secrets-5.1/passwordsafe/recent_files_page.py000066400000000000000000000045641415312107300215460ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import os from gi.repository import Gio, Gtk, Handy import passwordsafe.config_manager as config @Gtk.Template(resource_path="/org/gnome/PasswordSafe/recent_files_page.ui") class RecentFilesPage(Gtk.Box): __gtype_name__ = "RecentFilesPage" _last_opened_listbox: Gtk.ListBox = Gtk.Template.Child() def __init__(self): """Recently opened files page widget Shows the list of recently opened files for the user to pick one (or the welcome screen if there are none)""" super().__init__() user_home: Gio.File = Gio.File.new_for_path(os.path.expanduser("~")) for path_uri in config.get_last_opened_list(): gio_file: Gio.File = Gio.File.new_for_uri(path_uri) # TODO Remove the file from config if it does not exist. if not gio_file.query_exists(): logging.info( "Ignoring nonexistant recent file: %s", gio_file.get_path() ) continue # only work with existing files path: str = user_home.get_relative_path(gio_file) or gio_file.get_path() filename: str = os.path.splitext(gio_file.get_basename())[0] name: str = gio_file.get_uri() recent_file_row = RecentFileRow(filename, path, name) self._last_opened_listbox.prepend(recent_file_row) @property def is_empty(self) -> bool: """Return True is there are no recent files. """ return len(self._last_opened_listbox.get_children()) == 0 @Gtk.Template.Callback() def _on_last_opened_listbox_activated( self, _widget, list_box_row ): """cb when we click on an entry in the recently opened files list Starts opening the database corresponding to the entry.""" file_uri: str = list_box_row.get_name() window = Gio.Application.get_default().window window.start_database_opening_routine(Gio.File.new_for_uri(file_uri).get_path()) class RecentFileRow(Handy.ActionRow): __gtype_name__ = "RecentFileRow" def __init__(self, filename, path, name): super().__init__() self.set_title(filename) self.set_subtitle(path) self.set_name(name) self.set_selectable(False) self.set_activatable(True) self.show() secrets-5.1/passwordsafe/references_dialog.py000066400000000000000000000074251415312107300215470ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gi.repository import Gtk, Gdk, Handy class ReferencesDialog(): __property = "P" def __init__(self, unlocked_database): self.__unlocked_database = unlocked_database self.__database_manager = unlocked_database.database_manager self.__builder = Gtk.Builder() self.__builder.add_from_resource("/org/gnome/PasswordSafe/references_dialog.ui") self.__reference_entry = self.__builder.get_object("reference_entry") self.__dialog = self.__builder.get_object("references_dialog") self.__setup_signals() self.__setup_widgets() def present(self) -> None: self.__dialog.present() def __setup_widgets(self) -> None: self.__dialog.set_modal(True) self.__dialog.set_transient_for(self.__unlocked_database.window) self.__update_reference_entry() def __setup_signals(self) -> None: self.__reference_entry.connect("icon-press", self.__on_copy_secondary_button_clicked) self.__connect_model_buttons_signals() self.__dialog.connect("key-press-event", self.__on_key_press_event) self.__database_manager.connect("notify::locked", self.__on_locked) def __connect_model_buttons_signals(self): self.__builder.get_object("property_label").connect("button-press-event", self.__open_codes_popover) self.__builder.get_object("identifier_label").connect("button-press-event", self.__open_codes_popover) self.__builder.get_object("uuid_label").connect("button-press-event", self.__open_uuid_popover) # Buttons self.__builder.get_object("title_button").connect("clicked", self.__on_property_model_button_clicked) self.__builder.get_object("username_button").connect("clicked", self.__on_property_model_button_clicked) self.__builder.get_object("password_button").connect("clicked", self.__on_property_model_button_clicked) self.__builder.get_object("url_button").connect("clicked", self.__on_property_model_button_clicked) self.__builder.get_object("notes_button").connect("clicked", self.__on_property_model_button_clicked) def __update_reference_entry(self): """Update the reference entry and selected label text.""" uuid = self.__unlocked_database.current_element.uuid encoded_uuid = uuid.hex.upper() self.__builder.get_object("selected_property_label").set_text(self.__property) self.__reference_entry.set_text("{REF:" + self.__property + "@I:" + encoded_uuid + "}") def __open_codes_popover(self, widget, _label): codes_popover = self.__builder.get_object("codes_popover") codes_popover.set_relative_to(widget) codes_popover.popup() def __open_uuid_popover(self, widget, _label): uuid_popover = self.__builder.get_object("uuid_popover") uuid_popover.set_relative_to(widget) uuid_popover.popup() def __on_key_press_event(self, _window: Handy.Window, event: Gtk.Event) -> bool: if event.keyval == Gdk.KEY_Escape: self.__unlocked_database.start_database_lock_timer() self.__dialog.close() return Gdk.EVENT_STOP return Gdk.EVENT_PROPAGATE def __on_copy_secondary_button_clicked(self, widget, _position, _eventbutton): self.__unlocked_database.start_database_lock_timer() self.__unlocked_database.clipboard.set_text(widget.get_text(), -1) def __on_property_model_button_clicked(self, widget): self.__unlocked_database.start_database_lock_timer() self.__property = widget.get_name() self.__update_reference_entry() def __on_locked(self, database_manager, _value): locked = database_manager.props.locked if locked: self.__dialog.close() secrets-5.1/passwordsafe/safe_element.py000066400000000000000000000370761415312107300205430ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import typing from typing import NamedTuple from uuid import UUID from gi.repository import GObject from passwordsafe.color_widget import Color if typing.TYPE_CHECKING: from datetime import datetime from pykeepass.attachment import Attachment from pykeepass.entry import Entry from pykeepass.group import Group from passwordsafe.database_manager import DatabaseManager # pylint: disable=ungrouped-imports class SafeElement(GObject.GObject): _db_manager: DatabaseManager | None = None sorted_handler_id: int | None = None def __init__(self, element: Entry | Group): """GObject to handle a safe element. The underlying pykeepass element can be obtainied via the `element` property, when it is certain the element is a Group or Entry, the properties `entry` and `group` should be used instead.""" super().__init__() self._element = element self.is_group = isinstance(self, SafeGroup) self.is_entry = isinstance(self, SafeEntry) self._notes: str = element.notes or "" if self.is_group: self._name = element.name or "" else: self._name = element.title or "" @GObject.Signal() def updated(self): """Signal used to tell whenever there have been any changed that should be reflected on the main list box or edit page.""" self._db_manager.is_dirty = True self._db_manager.set_element_mtime(self._element) logging.debug("Safe element updated") @property def element(self) -> SafeElement: return self._element @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def name(self) -> str: """Get element title or name :returns: name or an empty string if there is none :rtype: str """ return self._name @name.setter # type: ignore def name(self, new_name: str) -> None: """Set entry title :param str new_name: new title """ if new_name != self._name: self._name = new_name if self.is_group: self._element.name = new_name else: self._element.title = new_name self.emit("updated") @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def notes(self) -> str: """Get entry notes :returns: notes or an empty string if there is none :rtype: str """ return self._notes @notes.setter # type: ignore def notes(self, new_notes: str) -> None: """Set entry notes :param str new_notes: new notes """ if new_notes != self._notes: self._notes = new_notes self._element.notes = new_notes self.emit("updated") @property def parentgroup(self) -> SafeGroup: """Parent Group of the element :returns: parent group :rtype: SafeGroup """ if self.is_root_group: return self return SafeGroup(self._db_manager, self._element.parentgroup) @property def is_root_group(self) -> bool: if self.is_entry: return False return self._element.is_root_group @property def uuid(self) -> UUID: """UUID of the element :returns: uuid of the element :rtype: UUID """ return self._element.uuid @property def path(self) -> str: return self._element.path @property def ctime(self) -> datetime: """The creation time of the element.""" return self._element.ctime class SafeGroup(SafeElement): def __init__(self, db_manager: DatabaseManager, group: Group) -> None: """GObject to handle a safe group. :param DatabaseManager db_manager: database of the group :param Group group: group to handle """ super().__init__(group) self._group: Group = group self._db_manager: DatabaseManager = db_manager @staticmethod def get_root(db_manager: DatabaseManager) -> SafeGroup: """Method to obtain the root group.""" # pylint: disable=no-member return SafeGroup(db_manager, db_manager.db.root_group) @property def subgroups(self) -> list[SafeGroup]: return [SafeGroup(self._db_manager, group) for group in self._group.subgroups] @property def entries(self) -> list[SafeEntry]: return [SafeEntry(self._db_manager, entry) for entry in self._group.entries] @property def group(self) -> Group: """Returns the private pykeepass group.""" return self._group def append(self, safe_element: SafeElement) -> None: if safe_element.is_group: self._group.append(safe_element.group) return self._group.append(safe_element.entry) class SafeEntry(SafeElement): # pylint: disable=too-many-instance-attributes _color_key = "color_prop_LcljUMJZ9X" _note_key = "Notes" def __init__(self, db_manager: DatabaseManager, entry: Entry) -> None: """GObject to handle a safe entry. :param DatabaseManager db_manager: database of the entry :param Entry entry: entry to handle """ super().__init__(entry) self._db_manager: DatabaseManager = db_manager self._entry: Entry = entry self._attachments: list[Attachment] = entry.attachments or [] self._attributes: dict[str, str] = { key: value for key, value in entry.custom_properties.items() if key not in (self._color_key, self._note_key)} color_value: Color = entry.get_custom_property(self._color_key) self._color: str = color_value or Color.NONE.value self._icon_nr: str = entry.icon or "" self._password: str = entry.password or "" self._url: str = entry.url or "" self._username: str = entry.username or "" @property def entry(self) -> Entry: """Get entry :returns: entry :rtype: Entry """ return self._entry @GObject.Property( type=object, flags=GObject.ParamFlags.READABLE) def attachments(self) -> list[Attachment]: return self._attachments def add_attachment(self, byte_buffer: bytes, filename: str) -> Attachment: """Add an attachment to the entry :param bytes byte_buffer: attachment content :param str filename: attachment name :returns: attachment :rtype: Attachment """ attachment_id = self._db_manager.db.add_binary(byte_buffer) attachment = self._entry.add_attachment(attachment_id, filename) self._attachments.append(attachment) self.emit("updated") return attachment def delete_attachment(self, attachment: Attachment) -> None: """Remove an attachment from the entry :param Attachmennt attachment: attachment to delete """ self._db_manager.db.delete_binary(attachment.id) self._attachments.remove(attachment) self.emit("updated") def get_attachment(self, id_: str) -> Attachment | None: """Get an attachment from its id. :param str id_: attachment id :returns: attachment :rtype: Attachment """ for attachment in self._attachments: if str(attachment.id) == id_: return attachment return None def get_attachment_content(self, attachment: Attachment) -> bytes: """Get an attachment content :param Attachmennt attachment: attachment """ return self._db_manager.db.binaries[attachment.id] @GObject.Property( type=object, flags=GObject.ParamFlags.READABLE) def attributes(self) -> dict[str, str]: return self._attributes def has_attribute(self, key: str) -> bool: """Check if an attribute exists. :param str key: attribute key to check """ return key in self._attributes def set_attribute(self, key: str, value: str) -> None: """Add or replace an entry attribute :param str key: attribute key :param str value: attribute value """ self._entry.set_custom_property(key, value) self._attributes[key] = value self.emit("updated") def delete_attribute(self, key: str) -> None: """Delete an attribute :param key: attribute key to delete """ if not self.has_attribute(key): return self._entry.delete_custom_property(key) self._attributes.pop(key) self.emit("updated") @GObject.Property( type=str, flags=GObject.ParamFlags.READWRITE) def color(self) -> str: """Get entry color :returns: color as string :rtype: str """ return self._color @color.setter # type: ignore def color(self, new_color: str) -> None: """Set an entry color :param str new_color: new color as string """ if new_color != self._color: self._color = new_color self._entry.set_custom_property(self._color_key, new_color) self.emit("updated") @GObject.Property(type=object, flags=GObject.ParamFlags.READWRITE) def icon(self) -> Icon: """Get icon number :returns: icon number or "0" if no icon :rtype: str """ try: return ICONS[self._icon_nr] except KeyError: logging.warning("Unknown icon %s", self._icon_nr) return ICONS["0"] @icon.setter # type: ignore def icon(self, new_icon_nr: str) -> None: """Set icon number :param str new_icon_nr: new icon number """ if new_icon_nr != self._icon_nr: self._icon_nr = new_icon_nr self._entry.icon = new_icon_nr self.notify("icon-name") self.emit("updated") @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READABLE) def icon_name(self) -> str: """Get the icon name :returns: icon name or the default icon if undefined :rtype: str """ return self.props.icon.name @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def password(self) -> str: """Get entry password :returns: password or an empty string if there is none :rtype: str """ return self._password @password.setter # type: ignore def password(self, new_password: str) -> None: """Set entry password :param str new_password: new password """ if new_password != self._password: self._password = new_password self._entry.password = new_password self.emit("updated") @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def url(self) -> str: """Get entry url :returns: url or an empty string if there is none :rtype: str """ return self._url @url.setter # type: ignore def url(self, new_url: str) -> None: """Set entry url :param str new_url: new url """ if new_url != self._url: self._url = new_url self._entry.url = new_url self.emit("updated") @GObject.Property( type=str, default="", flags=GObject.ParamFlags.READWRITE) def username(self) -> str: """Get entry username :returns: username or an empty string if there is none :rtype: str """ return self._username @username.setter # type: ignore def username(self, new_username: str) -> None: """Set entry username :param str new_username: new username """ if new_username != self._username: self._username = new_username self._entry.username = new_username self.emit("updated") class Icon(NamedTuple): # pylint: disable=inherit-non-class # This is a false positive because pylint does not properly handle # Python 3.9 at the moment. It can be safely removed once pylint # handles it. name: str visible: bool = False # https://github.com/dlech/KeePass2.x/blob/4facf2f1ebc76eeddbe11975eccb0dc2b49dfc37/KeePassLib/PwEnums.cs#L81 # noqa: E501 # https://hsto.org/files/b1e/d20/e38/b1ed20e385d642cc870355fdef153fb9.png # FIXME: Based on the names from the links above, some of the current # icons should be replaced. ICONS = { "0": Icon("dialog-password-symbolic", True), "1": Icon("network-wired-symbolic", True), "2": Icon("dialog-warning-symbolic"), "3": Icon("network-server-symbolic"), "4": Icon("document-edit-symbolic"), "5": Icon("media-view-subtitles-symbolic"), "6": Icon("application-x-addon-symbolic"), "7": Icon("accessories-text-editor-symbolic"), "8": Icon("network-wired-symbolic"), "9": Icon("mail-send-symbolic", True), "10": Icon("text-x-generic-symbolic"), "11": Icon("camera-photo-symbolic"), "12": Icon("network-wireless-signal-excellent-symbolic", True), "13": Icon("dialog-password-symbolic"), "14": Icon("colorimeter-colorhug-symbolic"), "15": Icon("scanner-symbolic"), "16": Icon("user-available-symbolic", True), "17": Icon("media-optical-cd-audio-symbolic"), "18": Icon("video-display-symbolic"), "19": Icon("mail-unread-symbolic", True), "20": Icon("emblem-system-symbolic"), "21": Icon("edit-paste-symbolic"), "22": Icon("edit-paste-symbolic"), "23": Icon("preferences-desktop-remote-desktop-symbolic", True), "24": Icon("uninterruptible-power-supply-symbolic"), "25": Icon("mail-unread-symbolic"), "26": Icon("media-floppy-symbolic"), "27": Icon("drive-harddisk-symbolic", True), "28": Icon("dialog-password-symbolic"), "29": Icon("airplane-mode-symbolic", True), "30": Icon("utilities-terminal-symbolic", True), "31": Icon("printer-symbolic"), "32": Icon("image-x-generic-symbolic"), "33": Icon("edit-select-all-symbolic"), "34": Icon("preferences-system-symbolic", True), "35": Icon("network-workgroup-symbolic"), "36": Icon("dialog-password-symbolic"), "37": Icon("auth-fingerprint-symbolic", True), "38": Icon("drive-harddisk-symbolic"), "39": Icon("document-open-recent-symbolic"), "40": Icon("system-search-symbolic"), "41": Icon("applications-games-symbolic", True), "42": Icon("media-flash-symbolic"), "43": Icon("user-trash-symbolic"), "44": Icon("accessories-text-editor-symbolic"), "45": Icon("edit-delete-symbolic"), "46": Icon("dialog-question-symbolic"), "47": Icon("package-x-generic-symbolic"), "48": Icon("folder-symbolic", True), "49": Icon("folder-open-symbolic"), "50": Icon("document-open-symbolic"), "51": Icon("system-lock-screen-symbolic", True), "52": Icon("rotation-locked-symbolic"), "53": Icon("object-select-symbolic"), "54": Icon("document-edit-symbolic"), "55": Icon("image-x-generic-symbolic"), "56": Icon("accessories-dictionary-symbolic", True), "57": Icon("view-list-symbolic"), "58": Icon("avatar-default-symbolic", True), "59": Icon("applications-engineering-symbolic"), "60": Icon("go-home-symbolic"), "61": Icon("starred-symbolic", True), "62": Icon("start-here-symbolic"), "63": Icon("dialog-password-symbolic"), "64": Icon("start-here-symbolic"), "65": Icon("accessories-dictionary-symbolic"), "66": Icon("currency-symbolic", True), "67": Icon("application-certificate-symbolic"), "68": Icon("phone-apple-iphone-symbolic", True) } secrets-5.1/passwordsafe/save_dialog.py000066400000000000000000000005361415312107300203600ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gi.repository import Gtk @Gtk.Template(resource_path="/org/gnome/PasswordSafe/save_dialog.ui") class SaveDialog(Gtk.MessageDialog): __gtype_name__ = "SaveDialog" def __init__(self, window): super().__init__() self.set_transient_for(window) secrets-5.1/passwordsafe/search.py000066400000000000000000000166541415312107300173600ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import threading import typing from gi.repository import Gio, GLib, GObject, Gtk, Handy import passwordsafe.config_manager as config from passwordsafe.safe_element import SafeElement, SafeEntry, SafeGroup from passwordsafe.sorting import SortingHat if typing.TYPE_CHECKING: from passwordsafe.database_manager import DatabaseManager from passwordsafe.unlocked_database import UnlockedDatabase class Search: # pylint: disable=too-many-instance-attributes _result_list = Gio.ListStore.new(SafeElement) search_list_box = NotImplemented def __init__(self, unlocked_database: UnlockedDatabase) -> None: self.unlocked_database: UnlockedDatabase = unlocked_database self._db_manager: DatabaseManager = unlocked_database.database_manager self._search_changed_id: int | None = None self._builder: Gtk.Builder = Gtk.Builder() self._builder.add_from_resource("/org/gnome/PasswordSafe/search.ui") self._stack: Gtk.Stack = self._builder.get_object("stack") self._empty_search_page: Gtk.Box = self._builder.get_object( "empty_search_page") self._info_search_page: Gtk.Box = self._builder.get_object( "info_search_page") self._results_search_page: Gtk.Box = self._builder.get_object( "results_search_page") self.scrolled_page = self._builder.get_object( "stack") self._search_entry = self._builder.get_object("headerbar_search_entry") self._headerbar: Handy.HeaderBar = self._builder.get_object( "headerbar_search") self._key_pressed: bool = False self._timeout_search: int = 0 self._timeout_info: int = 0 self._search_text: str = self._search_entry.props.text self._result_list.connect("items_changed", self._on_items_changed) def _on_items_changed( self, list_model: Gio.ListModel, _pos: int, _removed: int, _added: int ) -> None: if list_model.get_n_items() == 0: if len(self._search_text) < 2: self._display_info_page() def initialize(self): # Search Headerbar self._search_entry.connect("activate", self.on_headerbar_search_entry_enter_pressed) self.unlocked_database.bind_accelerator( self._search_entry, "f", signal="stop-search") self.unlocked_database.connect( "notify::search-active", self._on_search_active) self._prepare_search_page() # Search headerbar def _on_search_active( self, _db_view: UnlockedDatabase, _value: GObject.ParamSpecBoolean ) -> None: """Update the view when the search view is activated or deactivated. :param UnlockedDatabase db_view: unlocked_database view :param GObject.ParamSpecBoolean value: new value as GParamSpec """ search_active = self.unlocked_database.props.search_active if search_active: self._search_changed_id = self._search_entry.connect( "search-changed", self._on_search_entry_timeout) self._search_entry.grab_focus() self._timeout_info = GLib.timeout_add(200, self._display_info_page) else: if self._search_changed_id is not None: self._search_entry.disconnect(self._search_changed_id) self._search_changed_id = None self._search_entry.props.text = "" self._key_pressed = False self._result_list.remove_all() def _prepare_search_page(self): self.search_list_box = self._builder.get_object("list_box") self.search_list_box.bind_model( self._result_list, self.unlocked_database.listbox_row_factory ) self.search_list_box.connect( "row-activated", self.unlocked_database.on_list_box_row_activated ) def _display_info_page(self) -> bool: """When search-mode is activated the search text has not been entered yet. The info_search overlay only needs to be displayed if the search text is empty.""" if self._timeout_info > 0: GLib.source_remove(self._timeout_info) self._timeout_info = 0 if not self._key_pressed: self._stack.set_visible_child(self._info_search_page) return GLib.SOURCE_REMOVE def _start_search(self): """Update the overlays and start a search if the search term is not empty. """ if self._search_text: search_thread = threading.Thread(target=self._perform_search) search_thread.daemon = True search_thread.start() else: self._stack.set_visible_child(self._info_search_page) def _perform_search(self): """Search for results in the database.""" querry = self._search_text db_manager = self.unlocked_database.database_manager def filter_func(element: SafeElement) -> bool: if element.is_group: fields = [element.name, element.notes] else: fields = [element.name, element.notes, element.url, element.username] for field in fields: if querry.lower() in field.lower(): return True return False db_entries = filter( filter_func, [SafeEntry(db_manager, e) for e in db_manager.db.entries] ) db_groups = filter( filter_func, [ SafeGroup(db_manager, g) for g in db_manager.db.groups if not g.is_root_group ], ) results = list(db_groups) + list(db_entries) if len(results) == 0: self._stack.set_visible_child(self._empty_search_page) return GLib.idle_add(self._show_results, results) def _show_results(self, results): n_items = self._result_list.get_n_items() self._result_list.splice(0, n_items, results) # Sort the results sorting = config.get_sort_order() sort_func = SortingHat.get_sort_func(sorting) self._result_list.sort(sort_func) self._stack.set_visible_child(self._results_search_page) return GLib.SOURCE_REMOVE # Events def _on_search_entry_timeout(self, widget: Gtk.Entry) -> None: self._key_pressed = True if self._timeout_search > 0: GLib.source_remove(self._timeout_search) # Time between search querries. self._timeout_search = GLib.timeout_add( 200, self._on_search_entry_changed, widget ) def _on_search_entry_changed(self, widget): self.unlocked_database.start_database_lock_timer() self._timeout_search = 0 self._search_text = widget.get_text() self._start_search() return False def on_headerbar_search_entry_enter_pressed(self, _widget): self.unlocked_database.start_database_lock_timer() # Do nothing on empty search terms or no search results if not self._search_text: return if not self.search_list_box.get_children(): return first_row = self.search_list_box.get_children()[0] first_row.activate() @property def headerbar(self) -> Handy.HeaderBar: """Get the search headerbar. :returns: the search headerbar :rtype: Handy.Headerbar """ return self._headerbar secrets-5.1/passwordsafe/selection_ui.py000066400000000000000000000177541415312107300205770ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import typing from gettext import gettext as _ from logging import debug from gi.repository import Gio, GObject, Gtk from passwordsafe.entry_row import EntryRow from passwordsafe.group_row import GroupRow if typing.TYPE_CHECKING: from passwordsafe.unlocked_database import UnlockedDatabase @Gtk.Template(resource_path="/org/gnome/PasswordSafe/selection_ui.ui") class SelectionUI(Gtk.Box): __gtype_name__ = "SelectionUI" unlocked_database = NotImplemented cut_mode = True entries_selected: list[EntryRow] = [] groups_selected: list[GroupRow] = [] entries_cut: list[EntryRow] = [] groups_cut: list[GroupRow] = [] hidden_rows = Gio.ListStore.new(Gtk.ListBoxRow) _cut_paste_button = Gtk.Template.Child() _cut_paste_image = Gtk.Template.Child() _delete_button = Gtk.Template.Child() selected_elements = GObject.Property( type=int, default=0, flags=GObject.ParamFlags.READWRITE ) def __init__(self, u_d): super().__init__() self.unlocked_database = u_d self.unlocked_database.connect( "notify::selection-mode", self._on_selection_mode_changed) self.unlocked_database.bind_property( "selection-mode", self, "visible", GObject.BindingFlags.SYNC_CREATE) def _on_selection_mode_changed( self, unlocked_database: UnlockedDatabase, _value: GObject.ParamSpec ) -> None: if not unlocked_database.selection_mode: self._clear_all() # Events @Gtk.Template.Callback() def _on_delete_button_clicked(self, _widget): self.unlocked_database.start_database_lock_timer() # Abort the operation if there is a groups which is in the pathbar, # i.e. if it is a parent of the current view. for group_row in self.groups_selected: group = group_row.safe_group.group if self.unlocked_database.database_manager.parent_checker( self.unlocked_database.current_element, group ): self.unlocked_database.window.send_notification( _("Operation aborted: Deleting currently active group")) return for entry_row in self.entries_selected: safe_entry = entry_row.safe_entry self.unlocked_database.database_manager.delete_from_database( safe_entry.entry) for group_row in self.groups_selected: safe_group = group_row.safe_group self.unlocked_database.database_manager.delete_from_database(safe_group.group) self.unlocked_database.window.send_notification(_("Deletion completed")) self._clear_all() @Gtk.Template.Callback() def _on_cut_paste_button_clicked(self, _widget): # pylint: disable=too-many-branches self.unlocked_database.start_database_lock_timer() if self.cut_mode is True: self.entries_cut = self.entries_selected self.groups_cut = self.groups_selected self._cut_paste_image.set_from_icon_name("edit-paste-symbolic", Gtk.IconSize.BUTTON) for group_row in self.groups_selected: group_row.hide() self.hidden_rows.append(group_row) for entry_row in self.entries_selected: entry_row.hide() self.hidden_rows.append(entry_row) # Do not allow to delete the entries or rows # that were selected to be cut. if self.entries_selected or self.groups_selected: self._delete_button.set_sensitive(False) self.cut_mode = False return self._cut_paste_image.set_from_icon_name( "edit-cut-symbolic", Gtk.IconSize.BUTTON ) self.cut_mode = True # Abort the entire operation if one of the selected groups is a parent of # the current group. for group_row in self.groups_cut: group = group_row.safe_group.group current_element = self.unlocked_database.current_element if self.unlocked_database.database_manager.parent_checker( current_element, group ): self.unlocked_database.window.send_notification( _("Operation aborted: Moving currently active group") ) self._clear_all() return for entry_row in self.entries_cut: safe_entry = entry_row.safe_entry self.unlocked_database.database_manager.move_entry( safe_entry.uuid, self.unlocked_database.current_element.group) for group_row in self.groups_cut: group = group_row.safe_group.group current_element = self.unlocked_database.current_element self.unlocked_database.database_manager.move_group( group, current_element.element ) self.unlocked_database.window.send_notification(_("Move completed")) self._clear_all() def on_selection_popover_button_clicked(self, _action, _param, selection_type): self.unlocked_database.start_database_lock_timer() page = self.unlocked_database.get_current_page() viewport = page.get_children()[0] overlay = viewport.get_children()[0] list_box = NotImplemented column = overlay.get_children()[0] list_box = column.get_children()[0] for row in list_box: if selection_type == "all": row.selection_checkbox.set_active(True) else: row.selection_checkbox.set_active(False) # Helpers def add_entry(self, entry: EntryRow) -> None: """Add an entry to selection :param EntryRow group: entry_row to add """ self.entries_selected.append(entry) self._update_selection() def remove_entry(self, entry: EntryRow) -> None: """Remove an entry from selection :param EntryRow group: entry_row to remove """ if entry in self.entries_selected: self.entries_selected.remove(entry) self._update_selection() def add_group(self, group: GroupRow) -> None: """Add a group to selection :param GroupRow group: group_row to add """ if group not in self.groups_selected: self.groups_selected.append(group) self._update_selection() def remove_group(self, group: GroupRow) -> None: """Remove a group from selection :param GroupRow group: group_row to remove """ if group in self.groups_selected: self.groups_selected.remove(group) self._update_selection() def _update_selection(self) -> None: non_empty_selection = self.entries_selected or self.groups_selected self._cut_paste_button.set_sensitive(non_empty_selection) self._delete_button.set_sensitive(non_empty_selection) self.props.selected_elements = len(self.entries_selected) + len( self.groups_selected ) def _clear_all(self) -> None: """Resets everything to the default state""" self.props.selected_elements = 0 self.cut_mode = True self.entries_cut.clear() self.groups_cut.clear() self.entries_selected.clear() self.groups_selected.clear() self._delete_button.set_sensitive(False) self._cut_paste_button.set_sensitive(False) self._cut_paste_image.set_from_icon_name( "edit-cut-symbolic", Gtk.IconSize.BUTTON ) for row in self.hidden_rows: row.show() self.hidden_rows.remove_all() self.emit("clear-selection") @GObject.Signal() def clear_selection(self): """Signal emited to tell all list models that they should unselect their entries. It differs from the action app.selection.none, since the later removes seleced entries only for the visible listbox.""" debug("Clear selection signal emited") secrets-5.1/passwordsafe/settings_dialog.py000066400000000000000000000214571415312107300212670ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from gi.repository import Gtk, Handy import passwordsafe.config_manager as config from passwordsafe.config_manager import UnlockMethod @Gtk.Template(resource_path="/org/gnome/PasswordSafe/settings_dialog.ui") class SettingsDialog(Handy.PreferencesWindow): __gtype_name__ = "SettingsDialog" _clear_button = Gtk.Template.Child() _clearcb_spin_button = Gtk.Template.Child() _fstart_switch = Gtk.Template.Child() _generator_length_spin_button = Gtk.Template.Child() _generator_separator_entry = Gtk.Template.Child() _generator_use_lowercase_switch = Gtk.Template.Child() _generator_use_numbers_switch = Gtk.Template.Child() _generator_use_symbols_switch = Gtk.Template.Child() _generator_use_uppercase_switch = Gtk.Template.Child() _generator_words_spin_button = Gtk.Template.Child() _lockdb_spin_button = Gtk.Template.Child() _remember_method_switch = Gtk.Template.Child() _remember_switch = Gtk.Template.Child() _save_switch = Gtk.Template.Child() _showpw_switch = Gtk.Template.Child() _theme_switch = Gtk.Template.Child() def __init__(self, window): super().__init__() self.window = window self.props.transient_for = self.window def on_settings_menu_clicked(self, _action, _param): self._set_config_values() self.present() def _set_config_values(self): # pylint: disable=too-many-locals # pylint: disable=too-many-statements # General self._theme_switch.props.active = config.get_dark_theme() self._theme_switch.connect( "notify::active", self._on_settings_theme_switch_switched ) self._fstart_switch.props.active = config.get_first_start_screen() self._fstart_switch.connect( "notify::active", self._on_settings_fstart_switch_switched ) # Safe self._save_switch.props.active = config.get_save_automatically() self._save_switch.connect( "notify::active", self._on_settings_save_switch_switched ) # Password Generator generator_length = config.get_generator_length() length_adjustment = Gtk.Adjustment(generator_length, 1, 500, 1, 5) self._generator_length_spin_button.props.adjustment = length_adjustment self._generator_length_spin_button.connect( "value-changed", self._on_generator_length_spin_button_changed ) use_uppercase = config.get_generator_use_uppercase() self._generator_use_uppercase_switch.props.active = use_uppercase self._generator_use_uppercase_switch.connect( "notify::active", self._on_generator_use_uppercase_switch_switched ) use_lowercase = config.get_generator_use_lowercase() self._generator_use_lowercase_switch.props.active = use_lowercase self._generator_use_lowercase_switch.connect( "notify::active", self._on_generator_use_lowercase_switch_switched ) use_numbers = config.get_generator_use_numbers() self._generator_use_numbers_switch.props.active = use_numbers self._generator_use_numbers_switch.connect( "notify::active", self._on_generator_use_numbers_switch_switched ) use_symbols_value = config.get_generator_use_symbols() self._generator_use_symbols_switch.props.active = use_symbols_value self._generator_use_symbols_switch.connect( "notify::active", self._on_generator_use_symbols_switch_switched ) # Passphrase Generation generator_words_value = config.get_generator_words() words_adjustment = Gtk.Adjustment(generator_words_value, 1, 100, 1, 5) self._generator_words_spin_button.props.adjustment = words_adjustment self._generator_words_spin_button.connect( "value-changed", self._on_generator_words_spin_button_changed ) separator_entry_value = config.get_generator_separator() self._generator_separator_entry.props.text = separator_entry_value self._generator_separator_entry.connect( "activate", self._on_generator_separator_entry_changed ) # Security lockdb_value = config.get_database_lock_timeout() lockdb_adjustment = Gtk.Adjustment(lockdb_value, 1, 60, 1, 5) self._lockdb_spin_button.props.adjustment = lockdb_adjustment self._lockdb_spin_button.connect( "value-changed", self._on_settings_lockdb_spin_button_changed ) clear_cb_value = config.get_clear_clipboard() clear_adjustment = Gtk.Adjustment(clear_cb_value, 1, 300, 1, 5) self._clearcb_spin_button.props.adjustment = clear_adjustment self._clearcb_spin_button.connect( "value-changed", self._on_settings_clearcb_spin_button_changed ) self._showpw_switch.props.active = config.get_show_password_fields() self._showpw_switch.connect( "notify::active", self._on_settings_showpw_switch_switched ) self._clear_button.connect("clicked", self._on_settings_clear_recents_clicked) if not config.get_last_opened_list(): self._clear_button.props.sensitive = False # Unlock remember_composite_key = config.get_remember_composite_key() self._remember_switch.props.active = remember_composite_key self._remember_switch.connect( "notify::active", self._on_settings_remember_switch_switched ) remember_method = config.get_remember_unlock_method() self._remember_method_switch.props.active = remember_method self._remember_method_switch.connect( "notify::active", self._on_settings_remember_method_switch_switched ) def _on_generator_use_uppercase_switch_switched( self, switch: Gtk.Switch, _: None ) -> None: config.set_generator_use_uppercase(switch.get_active()) def _on_generator_use_lowercase_switch_switched( self, switch: Gtk.Switch, _: None ) -> None: config.set_generator_use_lowercase(switch.get_active()) def _on_generator_use_symbols_switch_switched( self, switch: Gtk.Switch, _: None ) -> None: config.set_generator_use_symbols(switch.get_active()) def _on_generator_use_numbers_switch_switched( self, switch: Gtk.Switch, _: None ) -> None: config.set_generator_use_numbers(switch.get_active()) def _on_generator_words_spin_button_changed( self, spin_button: Gtk.SpinButton ) -> None: config.set_generator_words(spin_button.get_value_as_int()) def _on_generator_length_spin_button_changed( self, spin_button: Gtk.SpinButton ) -> None: config.set_generator_length(spin_button.get_value_as_int()) def _on_generator_separator_entry_changed(self, entry: Gtk.Entry) -> None: config.set_generator_separator(entry.get_text()) def _on_settings_theme_switch_switched(self, switch_button, _gparam): gtk_settings = Gtk.Settings.get_default() value = switch_button.get_active() config.set_dark_theme(value) gtk_settings.set_property("gtk-application-prefer-dark-theme", value) def _on_settings_fstart_switch_switched(self, switch_button, _gparam): config.set_first_start_screen(switch_button.get_active()) def _on_settings_save_switch_switched(self, switch_button, _gparam): config.set_save_automatically(switch_button.get_active()) def _on_settings_lockdb_spin_button_changed(self, spin_button): config.set_database_lock_timeout(spin_button.get_value()) for db in self.window.opened_databases: db.start_database_lock_timer() def _on_settings_clearcb_spin_button_changed(self, spin_button): config.set_clear_clipboard(spin_button.get_value()) def _on_settings_showpw_switch_switched(self, switch_button, _gparam): config.set_show_password_fields(switch_button.get_active()) def _on_settings_clear_recents_clicked(self, widget): config.set_last_opened_list([]) config.set_last_opened_database("") if not self.window.opened_databases or not self.window.container.get_n_pages(): self.window.display_welcome_page() widget.set_sensitive(False) def _on_settings_remember_switch_switched(self, switch_button, _gparam): if switch_button.get_active(): config.set_remember_composite_key(True) else: config.set_remember_composite_key(False) config.set_last_used_composite_key("") def _on_settings_remember_method_switch_switched(self, switch_button, _gparam): if switch_button.get_active(): config.set_remember_unlock_method(True) else: config.set_remember_unlock_method(False) config.set_unlock_method( UnlockMethod.PASSWORD) secrets-5.1/passwordsafe/sorting.py000066400000000000000000000042661415312107300175740ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only # Functions to sort a List Model with groups and entries. from __future__ import annotations import typing from enum import IntEnum # from gi.repository import Gdk, Gio, GLib, GObject, Gtk, Handy from passwordsafe.safe_element import SafeElement class SortingHat: """Provides a variety of sorting algorithms""" class SortOrder(IntEnum): ASC = 0 DEC = 1 CTIME_DEC = 2 # will be set from just below the class sort_funcs: typing.Dict[SortOrder, typing.Callable] = {} @staticmethod def get_sort_func(order: SortOrder) -> typing.Callable: return SortingHat.sort_funcs[order] @staticmethod def sort_by_asc(ele1: SafeElement, ele2: SafeElement) -> int: # <0 if ele10 ele1>ele2 if ele1.is_group and ele2.is_entry: return -1 if ele1.is_entry and ele2.is_group: return 1 if ele1.name.lower() < ele2.name.lower(): return -1 if ele1.name.lower() == ele2.name.lower(): return 0 return 1 @staticmethod def sort_by_dec(ele1: SafeElement, ele2: SafeElement) -> int: # <0 if ele10 ele1>ele2 if ele1.is_group and ele2.is_entry: return -1 if ele1.is_entry and ele2.is_group: return 1 if ele1.name.lower() < ele2.name.lower(): return 1 if ele1.name.lower() == ele2.name.lower(): return 0 return -1 @staticmethod def sort_by_ctime_dec(ele1: SafeElement, ele2: SafeElement) -> int: # <0 if ele10 ele1>ele2 if ele1.ctime is None or ele2.ctime is None: return 0 if ele1.is_group and ele2.is_entry: return -1 if ele1.is_entry and ele2.is_group: return 1 if ele1.ctime < ele2.ctime: return 1 if ele1.ctime == ele2.ctime: return 0 return -1 SortingHat.sort_funcs = { SortingHat.SortOrder.ASC: SortingHat.sort_by_asc, SortingHat.SortOrder.DEC: SortingHat.sort_by_dec, SortingHat.SortOrder.CTIME_DEC: SortingHat.sort_by_ctime_dec, } secrets-5.1/passwordsafe/unlock_database.py000066400000000000000000000526771415312107300212370ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import logging import ntpath import os import threading from datetime import datetime from gettext import gettext as _ from pathlib import Path from gi.repository import Gio, GLib, Gtk, Pango from pykeepass.exceptions import ( CredentialsError, HeaderChecksumError, PayloadChecksumError, ) import passwordsafe.config_manager from passwordsafe.config_manager import UnlockMethod from passwordsafe.database_manager import DatabaseManager from passwordsafe.unlocked_database import UnlockedDatabase class KeyFileFilter(Gtk.FileFilter): """Filter out Keyfiles in the file chooser dialog""" def __init__(self): super().__init__() self.set_name(_("Keyfile")) self.add_mime_type("application/octet-stream") self.add_mime_type("application/x-keepass2") self.add_mime_type("text/plain") self.add_mime_type("application/x-iwork-keynote-sffkey") class UnlockDatabase: # pylint: disable=too-many-instance-attributes builder = NotImplemented parent_widget = NotImplemented database_filepath = NotImplemented hdy_page = NotImplemented unlock_database_stack_switcher = NotImplemented keyfile_path = NotImplemented composite_keyfile_path = NotImplemented overlay = NotImplemented unlock_thread = NotImplemented _filechooser = None def __init__(self, window, widget, filepath): self.window = window self.parent_widget = widget self.database_filepath = filepath self.database_manager = None self._password = None self._unlock_method = None self._on_database_locked_changed() # # Headerbar # def _set_headerbar(self): headerbar = self.builder.get_object("headerbar") headerbar.set_subtitle(os.path.basename(self.database_filepath)) if self.window.tab_visible(self.parent_widget): self.window.set_headerbar(headerbar) self.parent_widget.set_headerbar(headerbar) back_button = self.builder.get_object("back_button") back_button.connect("clicked", self._on_headerbar_back_button_clicked) # # Password stack # def _assemble_stack(self): stack = self.builder.get_object("unlock_database_stack") self.unlock_database_stack_switcher = self.builder.get_object("unlock_database_stack_switcher") pairs = passwordsafe.config_manager.get_last_used_composite_key() uri = Gio.File.new_for_path(self.database_filepath).get_uri() if passwordsafe.config_manager.get_remember_composite_key() and pairs: keyfile_path = None for pair in pairs: if pair[0] == uri: keyfile_path = pair[1] if keyfile_path is not None: composite_unlock_select_button = self.builder.get_object("composite_unlock_select_button") label = Gtk.Label() label.set_text(ntpath.basename(keyfile_path)) label.set_ellipsize(Pango.EllipsizeMode.END) composite_unlock_select_button.remove(composite_unlock_select_button.get_children()[0]) composite_unlock_select_button.add(label) self.composite_keyfile_path = keyfile_path if passwordsafe.config_manager.get_remember_unlock_method(): stack.set_visible_child(stack.get_child_by_name(passwordsafe.config_manager.get_unlock_method() + "_unlock")) # Responsive Container self.hdy_page = self.builder.get_object("unlock_database_clamp") self.hdy_page.show_all() self.parent_widget.add(self.hdy_page) self._connect_events(stack) def _connect_events(self, stack): password_unlock_button = self.builder.get_object("password_unlock_button") password_unlock_button.connect( "clicked", self._on_password_unlock_button_clicked) keyfile_unlock_button = self.builder.get_object("keyfile_unlock_button") keyfile_unlock_button.connect( "clicked", self._on_keyfile_unlock_button_clicked) composite_unlock_button = self.builder.get_object("composite_unlock_button") composite_unlock_button.connect( "clicked", self._on_composite_unlock_button_clicked) keyfile_unlock_select_button = self.builder.get_object("keyfile_unlock_select_button") keyfile_unlock_select_button.connect( "clicked", self._on_keyfile_unlock_select_button_clicked) composite_unlock_select_button = self.builder.get_object("composite_unlock_select_button") composite_unlock_select_button.connect( "clicked", self._on_composite_unlock_select_button_clicked) password_unlock_entry = self.builder.get_object("password_unlock_entry") if stack.get_visible_child_name() == "password_unlock": password_unlock_entry.grab_focus() password_unlock_entry.connect( "activate", self._on_password_unlock_button_clicked) password_unlock_entry.connect( "icon-press", self._on_password_unlock_entry_secondary_clicked) composite_unlock_entry = self.builder.get_object("composite_unlock_entry") composite_unlock_entry.connect( "activate", self._on_composite_unlock_button_clicked) if stack.get_visible_child_name() == "composite_unlock": composite_unlock_entry.grab_focus() composite_unlock_entry.connect( "icon-press", self._on_password_unlock_entry_secondary_clicked) # # Events # def _on_headerbar_back_button_clicked(self, _widget: Gtk.Button) -> None: database: UnlockedDatabase | None = None if self.database_manager: for db in self.window.opened_databases: db_path: str = db.database_manager.database_path if db_path == self.database_manager.database_path: if passwordsafe.config_manager.get_save_automatically(): db.save_database() db.cleanup() database = db self.window.set_headerbar() self.window.close_tab(self.parent_widget, database) # Password Unlock def _on_password_unlock_entry_secondary_clicked( self, widget, _position, _eventbutton): if widget.get_visibility(): widget.set_invisible_char("●") widget.set_visibility(False) else: widget.set_visibility(True) def _on_password_unlock_button_clicked(self, _widget): password_unlock_entry = self.builder.get_object("password_unlock_entry") for db in self.window.opened_databases: if (db.database_manager.database_path == self.database_filepath and not db.database_locked): page_num = self.window.container.page_num(db.parent_widget) self.window.container.set_current_page(page_num) self.window.close_tab(self.parent_widget) self.window.send_notification(_("Safe already opened")) return entered_pwd = password_unlock_entry.get_text() if not entered_pwd: return if self.database_manager: if (entered_pwd == self.database_manager.password and self.database_manager.keyfile_hash is NotImplemented): self.parent_widget.remove(self.hdy_page) self.database_manager.props.locked = False else: self._password_unlock_failed() else: self._unlock_method = UnlockMethod.PASSWORD self._password = entered_pwd self._open_database() # Keyfile Unlock def _on_keyfile_unlock_select_button_clicked(self, _widget): """cb invoked when we unlock a database via keyfile""" keyfile_chooser_dialog = Gtk.FileChooserNative.new(_("Choose a keyfile"), self.window, Gtk.FileChooserAction.OPEN, None, None) keyfile_chooser_dialog.add_filter(KeyFileFilter()) # We need to hold a reference, otherwise the app crashes. self._filechooser = keyfile_chooser_dialog keyfile_chooser_dialog.connect("response", self.on_dialog_response) keyfile_chooser_dialog.show() def on_dialog_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None if response == Gtk.ResponseType.ACCEPT: self.keyfile_path = dialog.get_file().get_path() logging.debug("Keyfile selected: %s", self.keyfile_path) keyfile_button = self.builder.get_object("keyfile_unlock_select_button") style_context = keyfile_button.get_style_context() style_context.remove_class(Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION) style_context.add_class(Gtk.STYLE_CLASS_SUGGESTED_ACTION) keyfile_button.set_label(os.path.basename(self.keyfile_path)) # After selecting a keyfile, simulate a keypress on the unlock button keyfile_unlock_button = self.builder.get_object("keyfile_unlock_button") keyfile_unlock_button.emit("clicked") elif response == Gtk.ResponseType.CANCEL: logging.debug("File selection canceled") def _on_keyfile_unlock_button_clicked(self, _widget): self._filechooser = None if self.database_manager: if (self.keyfile_path is not NotImplemented and self.database_manager.keyfile_hash == self.database_manager.create_keyfile_hash(self.keyfile_path)): self.parent_widget.remove(self.hdy_page) self.keyfile_path = NotImplemented self.database_manager.props.locked = False else: self._keyfile_unlock_failed() elif self.keyfile_path is not NotImplemented: self._unlock_method = UnlockMethod.KEYFILE self._open_database() # Composite Unlock def _on_composite_unlock_select_button_clicked(self, _widget): filechooser_opening_dialog = Gtk.FileChooserNative.new( _("Choose Keyfile"), self.window, Gtk.FileChooserAction.OPEN, None, None) filechooser_opening_dialog.add_filter(KeyFileFilter()) # We need to hold a reference, otherwise the app crashes. self._filechooser = filechooser_opening_dialog filechooser_opening_dialog.connect("response", self._on_composite_filechooser_response) filechooser_opening_dialog.show() def _on_composite_filechooser_response(self, dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: self._filechooser = None composite_unlock_select_button = self.builder.get_object("composite_unlock_select_button") if response == Gtk.ResponseType.ACCEPT: logging.debug("File selected: %s", dialog.get_file().get_path) file_path = dialog.get_file().get_path() composite_unlock_select_button.set_label(ntpath.basename(file_path)) composite_unlock_select_button.show_all() self.composite_keyfile_path = file_path elif response == Gtk.ResponseType.CANCEL: logging.debug("File selection cancelled") def _on_composite_unlock_button_clicked(self, _widget): composite_unlock_entry = self.builder.get_object("composite_unlock_entry") entered_pwd = composite_unlock_entry.get_text() if self.database_manager: if ((self.composite_keyfile_path is not NotImplemented) and (self.database_manager.keyfile_hash == self.database_manager.create_keyfile_hash(self.composite_keyfile_path)) and (entered_pwd == self.database_manager.password)): self.parent_widget.remove(self.hdy_page) self.database_manager.props.locked = False else: self._composite_unlock_failed() else: if (entered_pwd and self.composite_keyfile_path is not NotImplemented): self._unlock_method = UnlockMethod.COMPOSITE self._password = entered_pwd self._open_database() else: composite_unlock_entry.get_style_context().add_class("error") def _set_last_used_composite_key(self): if (not passwordsafe.config_manager.get_remember_composite_key() or self.composite_keyfile_path is NotImplemented): return pairs = passwordsafe.config_manager.get_last_used_composite_key() uri = Gio.File.new_for_path(self.database_filepath).get_uri() pair_array = [] already_added = False for pair in pairs: pair_array.append([pair[0], pair[1]]) for pair in pair_array: if pair[0] == uri: pair[1] = self.composite_keyfile_path already_added = True if not already_added: pair_array.append([uri, self.composite_keyfile_path]) passwordsafe.config_manager.set_last_used_composite_key(pair_array) # # Open Database # def _open_database_update_entries(self, sensitive): if self._unlock_method == UnlockMethod.PASSWORD: entry = self.builder.get_object("password_unlock_entry") button = self.builder.get_object("password_unlock_button") image = self.builder.get_object("password_unlock_button_image") elif self._unlock_method == UnlockMethod.KEYFILE: entry = self.builder.get_object("keyfile_unlock_select_button") button = self.builder.get_object("keyfile_unlock_button") image = self.builder.get_object("keyfile_unlock_button_image") else: entry = self.builder.get_object("composite_unlock_entry") button = self.builder.get_object("composite_unlock_button") image = self.builder.get_object("composite_unlock_button_image") entry.set_sensitive(sensitive) button.set_sensitive(sensitive) self.unlock_database_stack_switcher.set_sensitive(sensitive) return button, image def _open_database(self): button, image = self._open_database_update_entries(False) spinner = Gtk.Spinner() spinner.show() spinner.start() button.remove(image) button.add(spinner) self.unlock_thread = threading.Thread( target=self._open_database_process) self.unlock_thread.daemon = True self.unlock_thread.start() def _open_database_process(self): if self._unlock_method == UnlockMethod.PASSWORD: password = self._password keyfile = None elif self._unlock_method == UnlockMethod.KEYFILE: password = None keyfile = self.keyfile_path else: password = self._password keyfile = self.composite_keyfile_path try: self.database_manager = DatabaseManager( self.database_filepath, password, keyfile) GLib.idle_add(self._open_database_success) except(OSError, ValueError, AttributeError, CredentialsError, PayloadChecksumError, HeaderChecksumError): GLib.idle_add(self._open_database_failure) def _open_database_failure(self): button, image = self._open_database_update_entries(True) button.remove(button.get_children()[0]) button.add(image) if self._unlock_method == UnlockMethod.PASSWORD: self._password_unlock_failed() elif self._unlock_method == UnlockMethod.KEYFILE: if self.database_manager: self.database_manager.keyfile_hash = NotImplemented self._keyfile_unlock_failed() else: if self.database_manager: self.database_manager.keyfile_hash = NotImplemented self._composite_unlock_failed() def _open_database_success(self): if self._unlock_method == UnlockMethod.KEYFILE: self.database_manager.set_keyfile_hash(self.keyfile_path) elif self._unlock_method == UnlockMethod.COMPOSITE: self.database_manager.set_keyfile_hash(self.composite_keyfile_path) if Path(self.database_filepath).suffix == ".kdb": self._open_database_failure() # NOTE kdb is a an older format for Keepass databases. self.window.send_notification(_("The kdb format is not supported")) return if self._unlock_method == UnlockMethod.COMPOSITE: self._set_last_used_composite_key() self._password = None self.keyfile_path = NotImplemented self.composite_keyfile_path = NotImplemented if passwordsafe.config_manager.get_remember_unlock_method(): passwordsafe.config_manager.set_unlock_method(self._unlock_method) logging.debug("Opening of database was successful") self._open_database_page() def _open_database_page(self): self._clear_input_fields() opened = Gio.File.new_for_path(self.database_filepath) passwordsafe.config_manager.set_last_opened_database(opened.get_uri()) if passwordsafe.config_manager.get_development_backup_mode(): cache_dir = os.path.join( GLib.get_user_cache_dir(), "passwordsafe", "backup" ) if not os.path.exists(cache_dir): os.makedirs(cache_dir) current_time = datetime.now().strftime('%F_%T') basename = os.path.splitext( ntpath.basename(self.database_filepath))[0] backup_name = basename + "_backup_" + current_time + ".kdbx" backup = Gio.File.new_for_path( os.path.join(cache_dir, backup_name)) try: opened.copy(backup, Gio.FileCopyFlags.NONE) except GLib.Error: warning_msg = ( "Could not copy database file to backup location. This " "most likely happened because the database is located on " "a network drive, and Password Safe doesn't have network " "permission. Either disable development-backup-mode or if " "PasswordSafe runs as Flatpak grant network permission.") logging.warning(warning_msg) already_added = False path_listh = [] for path in passwordsafe.config_manager.get_last_opened_list(): path_listh.append(path) if path == opened.get_uri(): already_added = True if not already_added: path_listh.append(opened.get_uri()) else: path_listh.sort(key=opened.get_uri().__eq__) if len(path_listh) > 10: path_listh.pop(0) passwordsafe.config_manager.set_last_opened_list(path_listh) self.hdy_page.destroy() UnlockedDatabase( self.window, self.parent_widget, self.database_manager) self.database_manager.connect( "notify::locked", self._on_database_locked_changed) # # Helper Functions # def _clear_input_fields(self): password_unlock_entry = self.builder.get_object("password_unlock_entry") composite_unlock_entry = self.builder.get_object("composite_unlock_entry") password_unlock_entry.set_text("") composite_unlock_entry.set_text("") def _on_database_locked_changed(self, _database_manager=None, _value=None): if (not self.database_manager or (self.database_manager and self.database_manager.props.locked)): self.builder = Gtk.Builder() self.builder.add_from_resource( "/org/gnome/PasswordSafe/unlock_database.ui") self._set_headerbar() self._assemble_stack() def _composite_unlock_failed(self): self.window.send_notification(_("Failed to unlock safe")) if self.database_manager: self.database_manager.keyfile_hash = NotImplemented composite_unlock_select_button = self.builder.get_object( "composite_unlock_select_button") composite_unlock_entry = self.builder.get_object( "composite_unlock_entry") composite_unlock_entry.grab_focus() composite_unlock_entry.get_style_context().add_class("error") composite_unlock_select_button.get_style_context().remove_class( "suggested-action") composite_unlock_select_button.get_style_context().add_class( "destructive-action") self._clear_input_fields() logging.debug("Could not open database, wrong password") def _keyfile_unlock_failed(self): self.window.send_notification(_("Failed to unlock safe")) if self.database_manager: self.database_manager.keyfile_hash = NotImplemented keyfile_unlock_select_button = self.builder.get_object( "keyfile_unlock_select_button") keyfile_unlock_select_button.get_style_context().add_class( Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION) keyfile_unlock_select_button.set_label(_("Try again")) logging.debug("Invalid keyfile chosen") def _password_unlock_failed(self): self.window.send_notification(_("Failed to unlock safe")) password_unlock_entry = self.builder.get_object( "password_unlock_entry") password_unlock_entry.grab_focus() password_unlock_entry.get_style_context().add_class("error") self._clear_input_fields() logging.info("Could not open database, wrong password") secrets-5.1/passwordsafe/unlocked_database.py000066400000000000000000000576651415312107300215520ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations import os import shutil import logging import threading import typing from gettext import gettext as _ from typing import Any from gi.repository import Gdk, Gio, GLib, GObject, Gtk import passwordsafe.config_manager from passwordsafe.custom_keypress_handler import CustomKeypressHandler from passwordsafe.database_settings_dialog import DatabaseSettingsDialog from passwordsafe.entry_page import EntryPage from passwordsafe.entry_row import EntryRow from passwordsafe.group_page import GroupPage from passwordsafe.group_row import GroupRow from passwordsafe.pathbar import Pathbar from passwordsafe.properties_dialog import PropertiesDialog from passwordsafe.references_dialog import ReferencesDialog from passwordsafe.safe_element import SafeElement, SafeEntry, SafeGroup from passwordsafe.search import Search from passwordsafe.sorting import SortingHat from passwordsafe.unlocked_headerbar import UnlockedHeaderBar if typing.TYPE_CHECKING: from uuid import UUID from passwordsafe.container_page import ContainerPage from passwordsafe.database_manager import DatabaseManager from passwordsafe.selection_ui import SelectionUI # pylint: disable=ungrouped-imports from passwordsafe.main_window import MainWindow class UnlockedDatabase(GObject.GObject): # pylint: disable=too-many-instance-attributes # pylint: disable=too-many-public-methods # Widgets headerbar = NotImplemented scrolled_window = NotImplemented divider = NotImplemented revealer = NotImplemented action_bar = NotImplemented pathbar = NotImplemented # Objects builder = NotImplemented clipboard = NotImplemented clipboard_timer_handler: int | None = None _current_element: SafeElement | None = None _lock_timer_handler: int | None = None save_loop: int | None = None # If int, a thread periodically saves the database dbus_subscription_id = NotImplemented selection_mode = GObject.Property( type=bool, default=False, flags=GObject.ParamFlags.READWRITE ) def __init__(self, window: MainWindow, widget: ContainerPage, dbm: DatabaseManager): super().__init__() # Instances self.builder = Gtk.Builder.new_from_resource( "/org/gnome/PasswordSafe/unlocked_database.ui" ) self.window: MainWindow = window self.parent_widget: ContainerPage = widget self.database_manager: DatabaseManager = dbm self.search: Search = Search(self) self.custom_keypress_handler: CustomKeypressHandler = CustomKeypressHandler( self ) # UnlockedDatabase-specific key accelerators self.accelerators: Gtk.AccelGroup = Gtk.AccelGroup() self.window.add_accel_group(self.accelerators) root_group = SafeGroup.get_root(dbm) self.props.current_element = root_group # Declare database as opened self.window.opened_databases.append(self) self._search_active = False # Browser Mode self.assemble_listbox() self.start_save_loop() self.custom_keypress_handler.register_custom_events() self.register_dbus_signal() self.database_manager.connect("notify::locked", self._on_database_lock_changed) self.database_manager.connect("save-notification", self.on_database_save_notification) def listbox_row_factory(self, element: SafeElement) -> Gtk.Widget: if element.is_entry: return EntryRow(self, element) return GroupRow(self, element) def populate_list_model(self, list_model: Gio.ListStore) -> None: entries = self.props.current_element.entries groups = [g for g in self.props.current_element.subgroups if not g.is_root_group] elements = groups + entries list_model.splice(0, 0, elements) for elem in list_model: elem.sorted_handler_id = elem.connect( "notify::name", self._on_element_renamed, list_model ) self.sort_list_model(self, list_model) def sort_list_model( self, _unlocked_db: UnlockedDatabase, list_model: Gio.ListStore, _data: Any = None ) -> None: sorting = passwordsafe.config_manager.get_sort_order() sort_func = SortingHat.get_sort_func(sorting) list_model.sort(sort_func) # # Stack Pages # def assemble_listbox(self): self._edit_page_box = self.builder.get_object("_edit_page_box") self.pathbar = Pathbar(self, self.database_manager) self._stack = self.builder.get_object("list_stack") self._unlocked_db_stack = self.builder.get_object("_unlocked_db_stack") self.revealer = self.builder.get_object("revealer") self.action_bar = self.builder.get_object("action_bar") self._unlocked_db_deck = self.builder.get_object("_unlocked_db_deck") self.headerbar = UnlockedHeaderBar(self) self.selection_ui = self.headerbar.selection_ui self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) # Contains the "main page" with the BrowserListBox. self.divider = self.builder.get_object("divider") self._unlocked_db_stack.add_named(self.search.scrolled_page, "search") self.search.scrolled_page.show_all() self.parent_widget.add(self.divider) self.search.initialize() self._update_headerbar() self.start_database_lock_timer() self.show_browser_page(self.current_element) def show_edit_page(self, element: SafeElement, new: bool = False) -> None: self.start_database_lock_timer() self.props.current_element = element if self.props.search_active: self.props.search_active = False # Sets the accessed time. self.database_manager.set_element_atime(element.element) if element.is_group: page = GroupPage(self) self.headerbar.mode = UnlockedHeaderBar.Mode.GROUP_EDIT else: page = EntryPage(self, new) self.headerbar.mode = UnlockedHeaderBar.Mode.ENTRY page_box = self._edit_page_box # TODO Use the set_child api in GTK 4 with a StackPage. while page_box.get_children(): page_box.remove(page_box.get_children()[0]) page_box.add(page) self._unlocked_db_deck.set_visible_child(self._edit_page_box) def show_browser_page(self, group: SafeGroup) -> None: self.start_database_lock_timer() self.props.current_element = group self._unlocked_db_stack.set_visible_child(self._stack) self._unlocked_db_deck.set_visible_child(self._unlocked_db_stack) self.headerbar.mode = UnlockedHeaderBar.Mode.GROUP page_name = self.props.current_element.uuid.urn if not self._stack.get_child_by_name(page_name): new_page = self.new_group_browser_page(group) self._stack.add_named(new_page, page_name) self._stack.set_visible_child_name(page_name) def _on_element_renamed( self, element: SafeElement, _value: GObject.ParamSpec, list_model: Gio.ListStore, ) -> None: pos = 0 found = False # Disconnect previous signal if element.sorted_handler_id: element.disconnect(element.sorted_handler_id) element.sorted_handler_id = None # We check if element is in the list model for elem in list_model: if elem.uuid == element.uuid: found = True break pos += 1 if found: sorting = passwordsafe.config_manager.get_sort_order() sort_func = SortingHat.get_sort_func(sorting) list_model.remove(pos) list_model.insert_sorted(element, sort_func) element.sorted_handler_id = element.connect( "notify::name", self._on_element_renamed, list_model ) else: logging.debug("No.") def _on_element_added( self, _u_db: UnlockedDatabase, element: SafeElement, target_group_uuid: UUID, list_model: Gio.ListStore, list_model_group_uuid: UUID, _data: Any = None ) -> None: # Return if the element was addded to another group than the one # used to generate the list model. if target_group_uuid != list_model_group_uuid: return sorting = passwordsafe.config_manager.get_sort_order() sort_func = SortingHat.get_sort_func(sorting) list_model.insert_sorted(element, sort_func) element.sorted_handler_id = element.connect( "notify::name", self._on_element_renamed, list_model ) def _on_element_removed( self, _u_db: UnlockedDatabase, element_uuid: UUID, list_model: Gio.ListStore, _data: Any = None ) -> None: pos = 0 found = False for element in list_model: if element.uuid == element_uuid: found = True break pos += 1 # Only removes the element if it is the current list model if found: list_model.remove(pos) def _on_element_moved( self, _u_db: UnlockedDatabase, moved_element: SafeElement, old_loc_uuid: UUID, new_loc_uuid: UUID, list_model: Gio.ListStore, list_model_group_uuid: UUID, ) -> None: # pylint: disable=too-many-arguments """Moves the element to a new list model. If the listmodel corresponds to the old group we remove it, and if corresponds to the new location, we add it.""" if list_model_group_uuid == old_loc_uuid: pos = 0 found = False for element in list_model: if element.uuid == moved_element.uuid: found = True break pos += 1 if found: list_model.remove(pos) if list_model_group_uuid == new_loc_uuid: sorting = passwordsafe.config_manager.get_sort_order() sort_func = SortingHat.get_sort_func(sorting) list_model.insert_sorted(moved_element, sort_func) moved_element.sorted_handler_id = moved_element.connect( "notify::name", self._on_element_renamed, list_model ) def new_group_browser_page(self, group: SafeGroup) -> Gtk.ScrolledWindow: builder = Gtk.Builder() builder.add_from_resource( "/org/gnome/PasswordSafe/unlocked_database.ui" ) browser_clamp = builder.get_object("browser_clamp") browser_stack = builder.get_object("browser_stack") empty_group_box = builder.get_object("empty_group_box") list_box = builder.get_object("list_box") list_box.connect("row-activated", self.on_list_box_row_activated) list_model = Gio.ListStore.new(SafeElement) settings = self.window.application.settings settings.connect("changed", self.on_sort_order_changed, list_model) self.database_manager.connect( "element-removed", self._on_element_removed, list_model ) self.database_manager.connect( "element-added", self._on_element_added, list_model, group.uuid ) self.database_manager.connect( "element-moved", self._on_element_moved, list_model, group.uuid ) self.selection_ui.connect("clear-selection", self._on_clear_selection, list_box) list_box.bind_model(list_model, self.listbox_row_factory) list_model.connect( "items-changed", self.on_listbox_items_changed, browser_stack, browser_clamp, empty_group_box) self.populate_list_model(list_model) scrolled_window = Gtk.ScrolledWindow.new() scrolled_window.props.visible = True scrolled_window.add(browser_stack) return scrolled_window @property def in_edit_page(self) -> bool: """Returns true if the current visible page is either the Group edit page or Entry edit page.""" boolean: bool = self._unlocked_db_deck.props.visible_child == self._edit_page_box return boolean # # Headerbar # def _update_headerbar(self) -> None: """Display the correct headerbar according to search state.""" if self.props.search_active: self.parent_widget.set_headerbar(self.search.headerbar) self.window.set_headerbar(self.search.headerbar) else: self.parent_widget.set_headerbar(self.headerbar) self.window.set_headerbar(self.headerbar) # # Keystrokes # def bind_accelerator(self, widget, accelerator, signal="clicked"): """bind accelerators to self, aka this `UnlockedDatabase`""" key, mod = Gtk.accelerator_parse(accelerator) widget.add_accelerator( signal, self.accelerators, key, mod, Gtk.AccelFlags.VISIBLE ) # # Group and Entry Management # def on_listbox_items_changed(self, listmodel, _position, _removed, _added, browser_stack, browser_clamp, empty_group_box): if not listmodel.get_n_items(): browser_stack.set_visible_child(empty_group_box) else: browser_stack.set_visible_child(browser_clamp) @GObject.Property(type=SafeElement, flags=GObject.ParamFlags.READWRITE) def current_element(self) -> SafeElement: return self._current_element @current_element.setter # type: ignore def current_element(self, element: SafeElement) -> None: self._current_element = element def get_current_page(self) -> Gtk.ScrolledWindow: """Returns the page associated with current_element. :returns: current page :rtype: Gtk.Widget """ element_uuid = self.props.current_element.uuid return self._stack.get_child_by_name(element_uuid.urn) # # Events # def on_list_box_row_activated(self, _widget, list_box_row): self.start_database_lock_timer() if self.props.search_active: self.props.search_active = False if list_box_row.type == "GroupRow": safe_group = list_box_row.safe_group self.show_browser_page(safe_group) else: if self.selection_mode: active = list_box_row.selection_checkbox.props.active list_box_row.selection_checkbox.props.active = not active return safe_entry = list_box_row.safe_entry self.show_edit_page(safe_entry) def on_database_save_notification(self, _database_manager: DatabaseManager, saved: bool) -> None: if saved: self.window.send_notification(_("Safe saved")) else: self.window.send_notification(_("Could not save Safe")) def save_safe(self): if self.database_manager.is_dirty is True: if self.database_manager.save_running is False: self.save_database(notification=True) else: # NOTE: In-app notification to inform the user that already an unfinished save job is running self.window.send_notification( _("Please wait. Another save is running.") ) else: # NOTE: In-app notification to inform the user that no save is necessary because there where no changes made self.window.send_notification(_("No changes made")) def lock_safe(self): self.database_manager.props.locked = True def on_add_entry_action(self, _action: Gio.SimpleAction) -> None: """CB when the Add Entry menu was clicked""" group = self.props.current_element.group new_entry: SafeEntry = self.database_manager.add_entry_to_database(group) self.show_edit_page(new_entry, new=True) def on_add_group_action(self, _action: Gio.SimpleAction) -> None: """CB when menu entry Add Group is clicked""" self.database_manager.is_dirty = True safe_group = self.database_manager.add_group_to_database( "", "0", "", self.props.current_element.group ) self.show_edit_page(safe_group) def on_element_delete_menu_button_clicked( self, _action: Gio.SimpleAction, _param: None ) -> None: """Delete the visible entry from the menu.""" parent_group = self.props.current_element.parentgroup self.database_manager.delete_from_database(self.props.current_element.element) self.show_browser_page(parent_group) def on_entry_duplicate_menu_button_clicked(self, _action, _param): self.database_manager.duplicate_entry(self.props.current_element.entry) parent_group = self.props.current_element.parentgroup self.show_browser_page(parent_group) def send_to_clipboard(self, text: str, message: str = "") -> None: if not message: message = _("Copied to clipboard") self.start_database_lock_timer() if self.clipboard_timer_handler: GLib.source_remove(self.clipboard_timer_handler) self.clipboard_timer_handler = None self.clipboard.set_text(text, -1) self.window.send_notification(message) clear_clipboard_time = passwordsafe.config_manager.get_clear_clipboard() def callback(): self.clipboard_timer_handler = None self.clipboard.clear() self.clipboard_timer_handler = GLib.timeout_add_seconds( clear_clipboard_time, callback ) def on_database_settings_entry_clicked(self, _action, _param): DatabaseSettingsDialog(self).present() def on_session_lock( self, _connection, _unique_name, _object_path, _interface, _signal, state ): if state[0] and not self.database_manager.props.locked: self.lock_timeout_database() def on_sort_order_changed(self, settings, key, list_model): """Callback to be executed when the sorting has been changed.""" if key == "sort-order": sorting = settings.get_enum("sort-order") logging.debug("Sort order changed to %s", sorting) self.sort_list_model(self, list_model) # # Dialog Creator # def show_references_dialog(self, _action: Gio.SimpleAction, _param: None) -> None: """Show a Group/Entry reference dialog Invoked by the app.entry.references action""" ReferencesDialog(self).present() def show_properties_dialog(self, _action: Gio.SimpleAction, _param: None) -> None: """Show a Group/Entry property dialog Invoked by the app.element.properties action""" PropertiesDialog(self).present() # # Utils # def _on_database_lock_changed(self, _database_manager, _value): locked = self.database_manager.props.locked if locked: self.cleanup() if passwordsafe.config_manager.get_save_automatically(): self.save_database() self.divider.hide() else: self._update_headerbar() self.start_save_loop() self.divider.show() self.start_database_lock_timer() def lock_timeout_database(self): self.database_manager.props.locked = True # NOTE: Notification that a safe has been locked. self.window.send_notification(_("Safe locked due to inactivity")) # # Helper Methods # def cleanup(self) -> None: """Stop all ongoing operations: * stop the save loop * cancel all timers * unregistrer from dbus :param bool show_save_dialog: chooe to delete temporary files """ logging.debug("Cleaning database %s", self.database_manager.database_path) if self.clipboard_timer_handler: GLib.source_remove(self.clipboard_timer_handler) self.clipboard_timer_handler = None self.clipboard.clear() if self._lock_timer_handler: GLib.source_remove(self._lock_timer_handler) self._lock_timer_handler = None # Do not listen to screensaver kicking in anymore connection = Gio.Application.get_default().get_dbus_connection() connection.signal_unsubscribe(self.dbus_subscription_id) # stop the save loop if self.save_loop: GLib.source_remove(self.save_loop) self.save_loop = None # Cleanup temporal files created when opening attachments. cache_dir = os.path.join(GLib.get_user_cache_dir(), "passwordsafe", "tmp") shutil.rmtree(cache_dir, ignore_errors=True) def save_database(self, notification: bool = False) -> None: """Save the database. If auto_save is False, a dialog asking for confirmation will be displayed. """ if not self.database_manager.is_dirty or self.database_manager.save_running: return save_thread = threading.Thread(target=self.database_manager.save_database, args=[notification]) save_thread.daemon = False save_thread.start() logging.debug("Saving database %s", self.database_manager.database_path) def start_database_lock_timer(self): if self._lock_timer_handler: GLib.source_remove(self._lock_timer_handler) self._lock_timer_handler = None if self.database_manager.props.locked: return timeout = passwordsafe.config_manager.get_database_lock_timeout() * 60 if timeout: self._lock_timer_handler = GLib.timeout_add_seconds( timeout, self.lock_timeout_database ) def start_save_loop(self): self.save_loop = GLib.timeout_add_seconds(30, self.threaded_save_loop) def threaded_save_loop(self) -> bool: """Saves the safe as long as it returns True.""" if passwordsafe.config_manager.get_save_automatically() is True: self.database_manager.save_database() return True # # DBus # def register_dbus_signal(self) -> None: """Register a listener so we get notified about screensave kicking in In this case we will call self.on_session_lock()""" connection = Gio.Application.get_default().get_dbus_connection() self.dbus_subscription_id = connection.signal_subscribe( None, "org.gnome.ScreenSaver", "ActiveChanged", "/org/gnome/ScreenSaver", None, Gio.DBusSignalFlags.NONE, self.on_session_lock,) def go_back(self): if self.props.selection_mode: self.props.selection_mode = False return if self.props.search_active: self.props.search_active = False return if self.props.current_element.is_root_group: return parent = self.props.current_element.parentgroup self.show_browser_page(parent) @GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE) def search_active(self) -> bool: """Property to know if search is active. It is used by Search to update the widgets (mainly the headerbar) accordingly. :returns: True is search is active :rtype: bool """ return self._search_active @search_active.setter # type: ignore def search_active(self, value: bool) -> None: """Set the search mode :param value: new search_active """ self._search_active = value if self._search_active: self._unlocked_db_stack.set_visible_child_name("search") else: self.show_browser_page(self.current_element) self._update_headerbar() @GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE) def database_locked(self): """Get database lock status :returns: True if the database is locked :rtype: bool """ return self.database_manager.props.locked def _on_clear_selection(self, _selection_ui: SelectionUI, list_box: Gtk.ListBox) -> None: for row in list_box: row.selection_checkbox.props.active = False secrets-5.1/passwordsafe/unlocked_headerbar.py000066400000000000000000000175251415312107300217120ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gettext import gettext as _, ngettext import typing from enum import IntEnum from gi.repository import GObject, Gtk, Handy from passwordsafe.selection_ui import SelectionUI if typing.TYPE_CHECKING: from passwordsafe.main_window import MainWindow from passwordsafe.unlocked_database import UnlockedDatabase @Gtk.Template(resource_path="/org/gnome/PasswordSafe/unlocked_headerbar.ui") class UnlockedHeaderBar(Handy.HeaderBar): __gtype_name__ = "UnlockedHeaderBar" class Mode(IntEnum): GROUP = 0 GROUP_EDIT = 1 ENTRY = 2 SELECTION = 3 _add_button = Gtk.Template.Child() _entry_menu = Gtk.Template.Child() _back_button = Gtk.Template.Child() _group_menu = Gtk.Template.Child() _headerbar_box = Gtk.Template.Child() _headerbar_right_box = Gtk.Template.Child() _linkedbox_left = Gtk.Template.Child() _linkedbox_right = Gtk.Template.Child() _secondary_menu_button = Gtk.Template.Child() _search_button = Gtk.Template.Child() _selection_options_button = Gtk.Template.Child() selection_options_button_label = Gtk.Template.Child() _title_label = Gtk.Template.Child() def __init__(self, unlocked_database): """HearderBar of an UnlockedDatabase :param UnlockedDatabase unlocked_database: unlocked_database """ super().__init__() self._unlocked_database = unlocked_database self._action_bar = unlocked_database.action_bar self._db_manager = unlocked_database.database_manager self._pathbar = unlocked_database.pathbar self._window = unlocked_database.window self._selection_ui = SelectionUI(self._unlocked_database) self._headerbar_right_box.add(self._selection_ui) self._mode: int = UnlockedHeaderBar.Mode.GROUP self.props.mode: int = UnlockedHeaderBar.Mode.GROUP self._setup_widgets() self._setup_signals() self._setup_accelerators() def _setup_widgets(self): is_mobile = self._window.props.mobile_layout if is_mobile and not self._action_bar.get_children(): # mobile mode self._action_bar.add(self._pathbar) self._action_bar.show() self._unlocked_database.revealer.props.reveal_child = True elif not is_mobile: # desktop mode self._headerbar_box.add(self._pathbar) def _setup_signals(self): self._window.connect( "notify::mobile-layout", self._on_mobile_layout_changed) self._unlocked_database.bind_property( "selection-mode", self._selection_options_button, "visible", GObject.BindingFlags.SYNC_CREATE) self._unlocked_database.bind_property( "selection-mode", self, "show-close-button", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN) self._unlocked_database.connect( "notify::selection-mode", self._on_selection_mode_changed) self._unlocked_database.connect( "notify::search-active", self._on_search_active) self._selection_ui.connect( "notify::selected-elements", self._on_selected_entries_changed) self._on_mobile_layout_changed(None, None) def _setup_accelerators(self): self._unlocked_database.bind_accelerator(self._search_button, "f") def _on_search_active( self, _unlocked_database: UnlockedDatabase, _value: GObject.ParamSpecBoolean) -> None: self._update_action_bar() @Gtk.Template.Callback() def _on_search_button_clicked(self, _btn: Gtk.Button) -> None: self._unlocked_database.props.search_active = True @Gtk.Template.Callback() def _on_selection_button_clicked(self, _button: Gtk.Button) -> None: self._unlocked_database.props.selection_mode = True def _on_selection_mode_changed( self, _unlocked_database: UnlockedDatabase, _value: GObject.ParamSpecInt) -> None: style_context = self.get_style_context() if self._unlocked_database.props.selection_mode: style_context.add_class("selection-mode") self.props.mode = UnlockedHeaderBar.Mode.SELECTION else: style_context.remove_class("selection-mode") self.props.mode = UnlockedHeaderBar.Mode.GROUP def _on_mobile_layout_changed( self, _klass: MainWindow | None, _value: GObject.ParamSpecBoolean) -> None: self._update_action_bar() def _on_selected_entries_changed(self, selection_ui, _value): new_number = selection_ui.props.selected_elements if new_number == 0: label = _("Click on a checkbox to select") else: label = ngettext( "{} Selected entry", "{} Selected entries", new_number).format(new_number) self.selection_options_button_label.props.label = label def _update_action_bar(self): """Move pathbar between top headerbar and bottom actionbar if needed""" is_mobile = self._window.props.mobile_layout if self._unlocked_database.props.search_active: # No pathbar in search mode self._unlocked_database.revealer.props.reveal_child = False return if is_mobile and not self._action_bar.get_children(): # mobile width: hide pathbar in header self._headerbar_box.remove(self._pathbar) # and put it in the bottom Action bar instead self._action_bar.add(self._pathbar) self._action_bar.show() elif not is_mobile and self._action_bar.get_children(): # Desktop width and pathbar is in actionbar self._action_bar.remove(self._pathbar) self._headerbar_box.add(self._pathbar) self._unlocked_database.revealer.props.reveal_child = is_mobile @property def selection_ui(self) -> SelectionUI: """SelectionUI getter :returns: selection box :rtype: SelectionUI """ return self._selection_ui @GObject.Property(type=int, default=0, flags=GObject.ParamFlags.READWRITE) def mode(self) -> int: """Get headerbar mode :returns: headerbar mode :rtype: int """ return self._mode @mode.setter # type: ignore def mode(self, new_mode: int) -> None: """Set headerbar mode :param int new_mode: new headerbar mode """ self._mode = new_mode if new_mode == UnlockedHeaderBar.Mode.GROUP: self._secondary_menu_button.props.visible = False selection_mode = self._unlocked_database.props.selection_mode self._add_button.props.visible = not selection_mode self._linkedbox_right.props.visible = not selection_mode self._linkedbox_left.set_visible_child(self._add_button) elif new_mode == UnlockedHeaderBar.Mode.GROUP_EDIT: self._add_button.props.visible = False self._secondary_menu_button.props.menu_model = self._group_menu self._secondary_menu_button.props.visible = True self._linkedbox_right.props.visible = False self._linkedbox_left.set_visible_child(self._back_button) elif new_mode == UnlockedHeaderBar.Mode.ENTRY: self._add_button.props.visible = False self._secondary_menu_button.props.menu_model = self._entry_menu self._secondary_menu_button.props.visible = True self._linkedbox_right.props.visible = False self._linkedbox_left.set_visible_child(self._back_button) else: self._add_button.props.visible = False self._secondary_menu_button.props.visible = False self._linkedbox_right.props.visible = False self._linkedbox_left.set_visible_child(self._add_button) secrets-5.1/passwordsafe/utils.py000077500000000000000000000022601415312107300172420ustar00rootroot00000000000000#!/usr/bin/env python3 from __future__ import annotations import logging import secrets import typing from typing import Callable from Cryptodome.Cipher import AES from Cryptodome.Random import get_random_bytes from gi.repository import Gio, GLib if typing.TYPE_CHECKING: from datetime import datetime def format_time(time: datetime | None) -> str: if not time: return "" timestamp = GLib.DateTime.new_local( time.year, time.month, time.day, time.hour, time.minute, time.second, ) return timestamp.format("%e %b %Y %R") def create_random_data(bytes_buffer): return secrets.token_bytes(bytes_buffer) def generate_keyfile(gfile: Gio.File, callback: Callable[[], None]) -> None: key = get_random_bytes(32) cipher = AES.new(key, AES.MODE_EAX) ciphertext, tag = cipher.encrypt_and_digest(create_random_data(96)) # type: ignore contents = cipher.nonce + tag + ciphertext # type: ignore success, _ = gfile.replace_contents( contents, None, False, Gio.FileCreateFlags.REPLACE_DESTINATION, None ) if not success: logging.debug("Could not create keyfile") callback() secrets-5.1/passwordsafe/welcome_page.py000066400000000000000000000011011415312107300205170ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations from gi.repository import Gtk from gi.repository.GdkPixbuf import Pixbuf @Gtk.Template(resource_path="/org/gnome/PasswordSafe/welcome_page.ui") class WelcomePage(Gtk.Box): __gtype_name__ = "WelcomePage" _app_logo = Gtk.Template.Child() def __init__(self): """Welcome Page widget""" super().__init__() pix = Pixbuf.new_from_resource_at_scale( "/org/gnome/PasswordSafe/images/welcome.png", 256, 256, True) self._app_logo.set_from_pixbuf(pix) secrets-5.1/po/000077500000000000000000000000001415312107300134425ustar00rootroot00000000000000secrets-5.1/po/LINGUAS000066400000000000000000000001321415312107300144630ustar00rootroot00000000000000ca cs da de el es eu fi fr hr hu id it nb nl pa pl pt pt_BR ro ru sl sr sv tr uk vi zh_CN secrets-5.1/po/POTFILES.in000066400000000000000000000026141415312107300152220ustar00rootroot00000000000000# List of source files containing translatable strings. # Please keep this file sorted alphabetically. data/about_dialog.ui.in data/attachment_warning_dialog.ui data/attribute_entry_row.ui data/color_entry_row.ui data/create_database_headerbar.ui data/create_database.ui data/database_settings_dialog.ui data/entry_page.ui data/entry_row.ui data/group_page.ui data/group_row.ui data/gtk/help-overlay.ui data/main_window.ui data/notes_dialog.ui data/org.gnome.PasswordSafe.appdata.xml.in.in data/org.gnome.PasswordSafe.desktop.in.in data/org.gnome.PasswordSafe.gschema.xml data/password_entry_row.ui data/password_generator_popover.ui data/properties_dialog.ui data/quit_dialog.ui data/recent_files_page.ui data/references_dialog.ui data/save_dialog.ui data/search.ui data/selection_ui.ui data/settings_dialog.ui data/unlock_database.ui data/unlocked_database.ui data/unlocked_headerbar.ui data/welcome_page.ui passwordsafe/application.py passwordsafe/attachment_warning_dialog.py passwordsafe/create_database.py passwordsafe/database_manager.py passwordsafe/database_settings_dialog.py passwordsafe/entry_page.py passwordsafe/entry_row.py passwordsafe/group_row.py passwordsafe/main_window.py passwordsafe/password_entry_row.py passwordsafe/recent_files_page.py passwordsafe/save_dialog.py passwordsafe/selection_ui.py passwordsafe/unlock_database.py passwordsafe/unlocked_database.py passwordsafe/unlocked_headerbar.py secrets-5.1/po/README.md000066400000000000000000000010611415312107300147170ustar00rootroot00000000000000## Update pot files from source files: ```bash cd po intltool-update --maintain cd .. find passwordsafe -iname "*.py" | xargs xgettext --from-code=UTF-8 --output=po/passwordsafe-python.pot find data -iname "*.ui" | xargs xgettext --from-code=UTF-8 --output=po/passwordsafe-glade.pot -L Glade msgcat --use-first po/passwordsafe-glade.pot po/passwordsafe-python.pot > po/passwordsafe.pot rm po/passwordsafe-glade.pot po/passwordsafe-python.pot ``` ## Generate po file for language ```bash cd po msginit --locale=xx --input=passwordsafe.pot ``` secrets-5.1/po/ca.po000066400000000000000000001146061415312107300143750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-01-12 23:30+0000\n" "PO-Revision-Date: 2021-01-12 19:16+0100\n" "Last-Translator: Òscar Pérez del Campo , 2020\n" "Language-Team: Catalan (https://www.transifex.com/softcatala/teams/62837/" "ca)\n" "Language: ca_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.4.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gestioneu les vostres contrasenyes" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Més informació sobre el Caixa forta de contrasenyes" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Jaume Jorba , 2020" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informació de seguretat" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "És possible que aplicacions externes creïn copies sense encriptar ocultes o " "temporals d'aquest fitxer adjunt! Si us plau, continueu amb precaució." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Enrere" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Continua" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Protegiu la vostra caixa forta" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Contrasenya" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Utilitzeu una contrasenya per a protegir la vostra caixa forta." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Fitxer de claus" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Utilitzeu un fitxer de claus per a assegurar la vostra caixa forta." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Compon" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Utilitzeu una contrasenya en combinació amb un fitxer de claus per a " "assegurar la vostra caixa forta." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Introduïu una contrasenya" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Establiu una contrasenya per a la caixa forta." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Comprovació de la contrasenya" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Repetiu la contrasenya per a la caixa forta." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Les contrasenyes no coincideixen" #: data/create_database.ui:299 msgid "Please try again." msgstr "Si us plau, torneu a intentar-ho." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Confirma" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Genera un fitxer de claus" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Estableix un fitxer de claus per a la caixa forta" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Genera" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Caixa forta creada correctament" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:189 msgid "_Open Safe" msgstr "_Obre la caixa forta" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Caixa forta de contrasenyes" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Crea una caixa forta" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:199 msgid "_Preferences" msgstr "_Preferències" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:203 msgid "_Keyboard Shortcuts" msgstr "_Dreceres de teclat" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:207 msgid "_About Password Safe" msgstr "_Quant al Caixa forta de contrasenyes" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Color" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalls" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Camí" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Mida del fitxer" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nom de la caixa forta" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versió del KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data de creació" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algorisme d'encriptació" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algorisme de derivació" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Estadístiques" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Número de grups" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Contrasenyes" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Número d'entrades" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "General" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:147 data/unlock_database.ui:174 msgid "Password" msgstr "Contrasenya" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nova" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Genera una contrasenya" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onfirma" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "A_ctual" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:29 msgid "Keyfile" msgstr "Fitxer de claus" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Selecciona el fitxer de claus actual" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Genera un nou fitxer de claus" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplica els canvis" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autenticació" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funció de derivació de claus" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:353 #: passwordsafe/database_settings_dialog.py:375 msgid "Apply Changes" msgstr "Aplica els canvis" #: data/entry_page.ui:28 data/group_page.ui:26 msgid "_Title" msgstr "_Títol" #: data/entry_page.ui:55 msgid "_Username" msgstr "Nom d'_usuari" #: data/entry_page.ui:94 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:131 data/group_page.ui:56 msgid "_Notes" msgstr "_Notes" #: data/entry_page.ui:198 msgid "Icon" msgstr "Icona" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Adjunts" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Afegeix un adjunt" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atributs" #: data/entry_page.ui:318 msgid "Key" msgstr "Clau" #: data/entry_page.ui:325 msgid "Value" msgstr "Valor" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Afegeix un atribut" #: data/entry_row.ui:99 msgid "Copy username to clipboard" msgstr "Copia el nom d'usuari al porta-retalls" #: data/entry_row.ui:115 msgid "Copy password to clipboard" msgstr "Copia la contrasenya al porta-retalls" #: data/main_window.ui:25 msgid "New…" msgstr "Nou…" #: data/main_window.ui:38 msgid "Open…" msgstr "Obre…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Copia" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 #, fuzzy msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "El Password Safe és un gestor de contrasenyes que usa el format del KeePass " "v.4. S'integra perfectament amb l'escriptori GNOME i proporciona una " "interfície fàcil i simple per a la gestió de bases de dades de contrasenyes." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:142 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Un gestor de contrasenyes per al GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "mot de pas;encripta;segur;xifrat;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Usa el tema fosc del GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Utilitzeu la variant fosca del vostre tema GTK+. Tingueu en compte que no " "tots els temes GTK+ tenen una variant fosca." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Reobre la darrera base de dades oberta" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Obre automàticament la pantalla de desbloqueig de la darrera base de dades " "oberta, altrament mostra la pantalla de benvinguda." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Desa cada canvi automàticament" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Desa instantàniament cada canvi que feu a la base de dades. Tingueu en " "compte que no podeu desfer els canvis si el desat automàtic està habilitat." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Bloqueja la base de dades després de X minuts" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Bloqueja automàticament la vostra base de dades després d'un número " "determinat de minuts per a millorar la seguretat." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Neteja el porta-retalls després de X segons" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Després de copiar la contrasenya neteja el porta-retalls per raons de " "seguretat." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Mostra les contrasenyes en text pla" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Mostra per defecte les contrasenyes als camps d'entrada." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Mida de la finestra" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Recorda la mida de la finestra." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Darrera base de dades oberta" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Camí cap a la darrera base de dades oberta." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Darreres bases de dades obertes" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Llista de les darreres bases de dades obertes." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Recorda la clau composta" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Recorda la darrera clau composta usada per a desbloquejar la base de dades." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Darrera clau composta usada" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Camí a la darrera clau composta per al desbloqueig de base de dades usada." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Recorda el mètode de desbloqueig" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Recorda el darrer mètode de desbloqueig usat per a futurs desbloqueigs de " "bases de dades." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Fes una còpia de seguretat de la base de dades en desbloquejar-la" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Si succeeix un error en desar la base de dades, trobareu una còpia de " "seguretat a ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordre dels grups i entrades" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordre de les files a les vistes de grups i entrades." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Darrer mètode de desbloqueig usat" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Emmagatzema el darrer mètode de desbloqueig usat per tal de permetre un " "procés més ràpid." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Utilitza la cerca de text complet" #: data/org.gnome.PasswordSafe.gschema.xml:92 data/settings_dialog.ui:77 msgid "Performs a search across all values of entries." msgstr "Realitza una cerca a tots els valors de les entrades." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Cerca al grup actual" #: data/org.gnome.PasswordSafe.gschema.xml:97 data/settings_dialog.ui:92 msgid "Only search entries in the current group." msgstr "Cerca entrades només al grup actual." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Utilitza majúscules en generar una contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Utilitza lletres majúscules (A-Z) en generar una contrasenya aleatòria." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Utilitza minúscules en generar una contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Utilitza lletres minúscules (a-z) en generar una contrasenya aleatòria." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Utilitza nombres en generar una contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "" "Utilitza caràcters numèrics (0-9) en generar una contrasenya aleatòria." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Utilitza símbols en generar una contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Utilitza símbols ASCII no alfanumèrics en generar una contrasenya aleatòria." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Llargada de les contrasenyes generades" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:156 msgid "Number of single characters when generating a password." msgstr "Nombre de caràcters en generar una contrasenya." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Nombre de paraules en generar una frase de contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:239 msgid "Number of words to use when generating a passphrase." msgstr "Nombre de paraules per a la frase de contrasenya." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separador a usar en generar una frase de contrasenya" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:256 msgid "Word separator to use when generating a passphrase." msgstr "Separador de paraules en generar una frase de contrasenya." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Longitud" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caràcters" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Paraules" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:255 msgid "Separator" msgstr "Separador" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Introduïu el caràcter aquí…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frase de contrasenya" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propietats" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Accedit" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modificat" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Creat" #: data/references_dialog.ui:20 msgid "Code" msgstr "Codi" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propietat" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Títol" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nom d'usuari" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notes" #: data/references_dialog.ui:267 msgid "References" msgstr "Referències" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxi" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "La sintaxi del text variable per a referències de camps és:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Mostra codis de camp" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificador" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referència" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Cada entrada té un identificador únic anomenant UUID. El podreu trobar a les " "propietats de l'entrada." #: data/search.ui:79 msgid "No search results" msgstr "Sense resultats de la cerca" #: data/search.ui:117 msgid "Enter search term" msgstr "Introduïu el terme de cerca" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Voleu desar totes les caixes fortes amb canvis no desats?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Seleccioneu les caixes fortes que vulgueu desar." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Cancel·la" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Surt" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Canvis no desats" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Voleu escriure tots els canvis a la caixa forta?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Surt sense desar" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_No surtis" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Desa i surt" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mou la selecció" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Elimina la selecció" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Cancel·la" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tema fosc" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Utilitza el tema GTK fosc." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_No mostris la pantalla del primer inici" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Torna a obrir la darrera caixa forta." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:327 msgid "Safe" msgstr "Caixa forta" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Desa automàticament" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Desa automàticament cada canvi." #. Button tooltip in headerbar to open search page #: data/settings_dialog.ui:72 data/unlocked_headerbar.ui:89 msgid "Search" msgstr "Cerca" #: data/settings_dialog.ui:76 msgid "_Full-Text Search" msgstr "_Cerca de text complet" #: data/settings_dialog.ui:91 msgid "_Current Group Search" msgstr "Cerca al _grup actual" #: data/settings_dialog.ui:108 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Desbloqueja" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:112 msgid "Remember Composite _Key" msgstr "Recorda la clau composta" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:113 msgid "Remember last used composite key." msgstr "Recorda la darrera clau composta usada." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:127 msgid "Remember _Unlock Method" msgstr "Recorda el mètode de _desbloqueig" #: data/settings_dialog.ui:128 msgid "Enable faster unlocking." msgstr "Activa el desbloqueig ràpid." #: data/settings_dialog.ui:151 msgid "Password Generation" msgstr "Generació de contrasenyes" #: data/settings_dialog.ui:155 msgid "Password Length" msgstr "Longitud de la contrasenya" #: data/settings_dialog.ui:172 msgid "_Uppercase Characters" msgstr "Caràcters en _majúscules" #: data/settings_dialog.ui:173 msgid "Use uppercase characters A-Z when generating a password." msgstr "Utilitza caràcters en majúscules (A-Z) per a generar les contrasenyes." #: data/settings_dialog.ui:187 msgid "_Lowercase Characters" msgstr "Caràcters en m_inúscules" #: data/settings_dialog.ui:188 msgid "Use lowercase characters a-z when generating a password." msgstr "Utilitza caràcters en minúscules (a-z) per a generar les contrasenyes." #: data/settings_dialog.ui:202 msgid "_Numeric Characters" msgstr "Caràcters _numèrics" #: data/settings_dialog.ui:203 msgid "Use numeric characters when generating a password." msgstr "Utilitza caràcters numèrics per a generar les contrasenyes." #: data/settings_dialog.ui:217 msgid "_Special Characters" msgstr "Caràcters _especials" #: data/settings_dialog.ui:218 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Utilitza caràcters ASCII no alfanumèrics per a generar contrasenyes." #: data/settings_dialog.ui:234 msgid "Passphrase Generation" msgstr "Generació de la frase de contrasenya" #: data/settings_dialog.ui:238 msgid "Passphrase Length" msgstr "Longitud de la frase de contrasenya" #: data/settings_dialog.ui:264 msgid "Enter Character" msgstr "Introdueix un caràcter" #: data/settings_dialog.ui:277 data/settings_dialog.ui:281 msgid "Security" msgstr "Seguretat" #: data/settings_dialog.ui:285 msgid "Safe Lock Timeout" msgstr "Temps de bloqueig de la caixa forta" #: data/settings_dialog.ui:286 msgid "Lock safe on idle after X minutes." msgstr "Bloqueja la caixa forta després de X minuts d'inactivitat." #: data/settings_dialog.ui:302 msgid "Clear Clipboard" msgstr "Neteja el porta-retalls" #: data/settings_dialog.ui:303 msgid "Clear clipboard after X seconds." msgstr "Neteja el porta-retalls després de X segons." #: data/settings_dialog.ui:319 msgid "_Show Password Fields" msgstr "_Mostra els camps de contrasenya" #: data/settings_dialog.ui:320 msgid "Display passwords in plain text." msgstr "Mostra les contrasenyes en text pla." #: data/settings_dialog.ui:334 msgid "Clear Recent List" msgstr "Buida la llista de recents" #: data/settings_dialog.ui:335 msgid "Clear the recently opened safes list." msgstr "Neteja la llista de les darreres caixes fortes obertes." #: data/shortcuts_overview.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplicació" #: data/shortcuts_overview.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Crea una caixa forta" #: data/shortcuts_overview.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Obre una caixa forta" #: data/shortcuts_overview.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Obre les preferències" #: data/shortcuts_overview.ui:38 #, fuzzy #| msgid "_Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "_Dreceres de teclat" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Surt" #: data/shortcuts_overview.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Caixa forta" #: data/shortcuts_overview.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Bloqueja la caixa forta" #: data/shortcuts_overview.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Desa la caixa forta" #: data/shortcuts_overview.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Obre la cerca" #: data/shortcuts_overview.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Crea una nova entrada" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Crea un nou grup" #: data/shortcuts_overview.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entrada" #: data/shortcuts_overview.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copia la contrasenya" #: data/shortcuts_overview.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copia el nom d'usuari" #: data/shortcuts_overview.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Ves enrere" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Caixes fortes recents" #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:185 msgid "_New Safe" msgstr "_Caixa forta nova" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Obre una caixa forta" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Caixa forta bloquejada" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Introduïu la contrasenya per a desbloquejar-la" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selecciona el fitxer de claus per a desbloquejar-la" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Obre fitxer de claus" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Introduïu la contrasenya i seleccioneu un fitxer de claus a desbloquejar" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Composta" #: data/unlocked_database.ui:72 msgid "Empty group" msgstr "Grup buit" #: data/unlocked_headerbar.ui:59 msgid "Click on a checkbox to select" msgstr "Feu clic a una casella de selecció per a marcar-la" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:105 msgid "Selection Mode" msgstr "Mode de selecció" #: data/unlocked_headerbar.ui:157 passwordsafe/entry_page.py:419 msgid "_Save" msgstr "_Desa" #: data/unlocked_headerbar.ui:163 msgid "_Lock" msgstr "_Bloqueja" #: data/unlocked_headerbar.ui:168 msgid "So_rting" msgstr "O_rdre" #: data/unlocked_headerbar.ui:170 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:174 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "L'ú_ltim afegit" #: data/unlocked_headerbar.ui:193 msgid "Sa_fe Settings" msgstr "Paràmetres de la caixa _forta" #: data/unlocked_headerbar.ui:215 msgid "Select _All" msgstr "Seleccion_a tots" #: data/unlocked_headerbar.ui:219 msgid "Select _None" msgstr "_No en seleccionis cap" #: data/unlocked_headerbar.ui:227 msgid "D_uplicate" msgstr "D_uplica" #: data/unlocked_headerbar.ui:231 msgid "_References" msgstr "_Referències" #: data/unlocked_headerbar.ui:235 data/unlocked_headerbar.ui:249 msgid "_Properties" msgstr "_Propietats" #: data/unlocked_headerbar.ui:241 data/unlocked_headerbar.ui:255 msgid "_Delete" msgstr "E_limina" #: data/unlocked_headerbar.ui:263 msgid "New _Entry" msgstr "_Entrada nova" #: data/unlocked_headerbar.ui:267 msgid "New _Group" msgstr "_Grup nou" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Assegura la caixa forta de contrasenyes" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Deseu de manera segura les vostres contrasenyes, notes i dades. Creeu " "o importeu una nova caixa forta de Keepass." #: passwordsafe/application.py:177 msgid "Unable to Quit: Could not save Safe" msgstr "Impossible sortir: no s'ha pogut desar la caixa forta" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Les contrasenyes no coincideixen" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Escolliu una ubicació per al fitxer de claus" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Generant…" #: passwordsafe/database_manager.py:301 msgid "Clone" msgstr "Clona" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Escolliu el fitxer de claus actual" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Obre" #: passwordsafe/database_settings_dialog.py:309 #: passwordsafe/database_settings_dialog.py:364 msgid "Apply…" msgstr "Aplica…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:406 msgid "Unknown" msgstr "Desconegut" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:409 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:412 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:415 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:278 passwordsafe/entry_page.py:338 msgid "Attribute key already exists" msgstr "Aquesta clau d'atribut ja existeix" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:369 msgid "Select attachment" msgstr "Seleccioneu l'adjunt" #: passwordsafe/entry_page.py:370 msgid "_Add" msgstr "_Afegir" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:418 msgid "Save attachment" msgstr "Desa l'adjunt" #: passwordsafe/entry_row.py:120 msgid "Password copied to clipboard" msgstr "Contrasenya copiada al porta-retalls" #: passwordsafe/entry_row.py:126 msgid "Username copied to clipboard" msgstr "Nom d'usuari copiat al porta-retalls" #: passwordsafe/entry_row.py:138 passwordsafe/entry_row.py:149 msgid "Title not specified" msgstr "No heu indicat un títol" #: passwordsafe/group_row.py:49 msgid "No group title specified" msgstr "No heu indicat un títol del grup" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:232 msgid "Choose a Keepass safe" msgstr "Escolliu una caixa forta de Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:242 passwordsafe/main_window.py:332 msgid "KeePass 3.1/4 Database" msgstr "Base de dades del KeePass 3.1/4" #. pylint: disable=C0103 #: passwordsafe/main_window.py:270 msgid "Could not open file" msgstr "No es pot obrir el fitxer" #: passwordsafe/main_window.py:279 msgid "Could not open file: Mime type not supported" msgstr "No es pot obrir el fitxer: tipus mime no suportat" #: passwordsafe/main_window.py:289 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Caixa forta ja oberta" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:321 msgid "Choose location for Keepass safe" msgstr "Escolliu una ubicació per a la caixa forta de KeePass" #: passwordsafe/main_window.py:324 msgid "_Create" msgstr "_Crea" #: passwordsafe/selection_ui.py:100 msgid "Operation aborted: Deleting currently active group" msgstr "Operació avortada: no es pot eliminar el grup actiu" #: passwordsafe/selection_ui.py:136 msgid "Deletion completed" msgstr "Esborrat completat" #: passwordsafe/selection_ui.py:220 msgid "Move completed" msgstr "Desplaçament completat" #: passwordsafe/selection_ui.py:222 msgid "Skipped moving group into itself" msgstr "No s'ha mogut el grup dins d'ell mateix" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Escolliu un fitxer de claus" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Escolliu un fitxer de claus" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "El format kbd no està suportat" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "No s'ha pogut desbloquejar la caixa forta" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "Torna-ho a provar" #: passwordsafe/unlocked_database.py:419 msgid "Safe saved" msgstr "Caixa forta desada" #: passwordsafe/unlocked_database.py:421 msgid "Could not save Safe" msgstr "No s'ha pogut desar la caixa forta" #: passwordsafe/unlocked_database.py:432 msgid "Please wait. Another save is running." msgstr "Espereu, si us plau. S'està executant una altra operació de desat." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:436 msgid "No changes made" msgstr "Sense canvis" #: passwordsafe/unlocked_database.py:520 msgid "Copied to clipboard" msgstr "Copiat al porta-retalls" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:643 msgid "Safe locked due to inactivity" msgstr "Caixa forta bloquejada per inactivitat" secrets-5.1/po/cs.po000066400000000000000000001143531415312107300144160ustar00rootroot00000000000000# Czech translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # # Marek Černocký , 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe release_5.x\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 10:27+0000\n" "PO-Revision-Date: 2021-09-28 08:47+0200\n" "Last-Translator: Marek Černocký \n" "Language-Team: čeština \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.7\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Spravujte svá hesla" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Dozvědět se více o Trezoru na hesla" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Marek Černocký " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Bezpečnostní informace" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Je možné, že externí aplikace vytvoří nešifrované skryté nebo dočasné kopie " "souboru s touto přílohou. Postupujte prosím obezřetně." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Zpět" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Pokračovat" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Odstranit vlastnost" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Barva" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Trezor na hesla" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Vytvoření trezoru" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Předvolby" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "O _aplikaci Trezor na hesla" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Ochraňte svůj trezor" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Heslo" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Používat k zabezpečení trezoru heslo." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Soubor s _klíčem" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Používat k zabezpečení trezoru soubor s klíčem." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Kombinace obojího" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Používat k zabezpečení trezoru kombinaci hesla a souboru s klíčem." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Zadání hesla" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Nastavte si heslo pro trezor." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Kontrola správného zadání hesla" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Zopakujte zadání hesla pro trezor." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Kontrola shody hesel neprošla" #: data/create_database.ui:299 msgid "Please try again." msgstr "Zkuste to prosím znovu." #: data/create_database.ui:348 msgid "_Confirm" msgstr "P_otvrzení" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Generování souboru s klíčem" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Nastavte si soubor s klíčem pro trezor" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "Vy_generovat" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Trezor byl úspěšně vytvořen" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Otevřít trezor" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Podrobnosti" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Cesta" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Velikost souboru" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Název trezoru" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Verze KeeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Datum vytvoření" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Šifrovací algoritmus" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Odvozovací algoritmus" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistiky" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Počet skupin" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Počet hesel" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Počet položek" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Obecné" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Heslo" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nové" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Generovat heslo" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "P_otvrzení" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Současné" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Soubor s klíčem" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "Vybrat aktuální _soubor s klíčem" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "Vy_generovat nový soubor s klíčem" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Použít změny" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Ověřování" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256bitový" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256bitový" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256bitový" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funkce pro odvození klíče" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Použít změny" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "Náz_ev" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Uživatelské jméno" #: data/entry_page.ui:92 msgid "U_RL" msgstr "Adresa U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "Poz_námky" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikona" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Přílohy" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "Přid_al přílohu" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Vlastnosti" #: data/entry_page.ui:318 msgid "Key" msgstr "Klíč" #: data/entry_page.ui:325 msgid "Value" msgstr "Hodnota" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Přidat vlastnost" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Zkopírovat uživatelské jméno do schránky" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Zkopírovat heslo do schránky" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplikace" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Vytvořit trezor" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Otevřít trezor" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Otevřít předvolby" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Zobrazit klávesové zkratky" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Ukončit" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Trezor" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Zamknout trezor" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Uložit trezor" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Otevřít hledání" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Vytvořit položku" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Vytvořit skupinu" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Položka" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Zkopírovat heslo" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Zkopírovat uživatelské jméno" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Přejít zpět" #: data/main_window.ui:25 msgid "New…" msgstr "Nový…" #: data/main_window.ui:38 msgid "Open…" msgstr "Otevřít…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "Z_kopírovat" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Trezor na hesla je správce hesel, který používá databáze ve formátu KeePass " "v.4. Je výborně začleněný do uživatelského prostředí GNOME a nabízí " "jednoduché a přehledné uživatelské rozhraní pro správu databází hesel." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Správa hesel pro GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;hesla;šifrování;bezpečnost;zabezpečení;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Používat tmavý motiv GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Používat tmavou variantu vašeho motivu GTK+. Uvědomte si ale, že ne každý " "motiv má tmavou variantu." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Znovu otevřít naposledy otevřenou databázi" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Automaticky otevřít odemykací obrazovku pro naposledy otevřenou databázi, " "jinak zobrazit uvítací obrazovku." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Všechny změny ukládat automaticky" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Ukládat všechny změny, které provedete, okamžitě do databáze. Pamatujte ale, " "že když je zapnuté automatické ukládání, nelze změny vracet zpět." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Zamknout databázi po X minutách" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Automaticky zamknout databázi po zadaném počtu minut, aby se zvýšilo " "zabezpečení." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Vymazat schránku po X sekundách" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Po zkopírování hesla v čitelné podobě do schránky, z bezpečnostních důvodů." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Zobrazovat hesla v textové podobě" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Výchozí bude zobrazení hesel v čitelné podobě ve vstupních polích." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Velikost okna" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Pamatovat si velikost okna." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Poslední otevřená databáze" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Cesta k databázi, která byla otevřená jako poslední." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Poslední otevřené databáze" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Seznam databází, které byly otevřené jako poslední." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Pamatovat si kombinovaný klíč" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Pamatovat si poslední použitý kombinovaný klíč pro odemknutí databáze." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Poslední použitý kombinovaný klíč" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Cesta k poslednímu použitému klíči pro kombinované odemknutí databáze." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Pamatovat si způsob odemčení" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Pamatovat si poslední použitý způsob odemčení pro budoucí odemykání databáze." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Zálohovat databázi při odemčení" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Když dojde k chybě při ukládání databáze, můžete najít zálohu v ~/.cache/" "passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Řazení skupin a položek" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Řazení řádků v zobrazení skupin a položek." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Poslední použitý způsob odemčení" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Použito k uchování posledního způsobu odemykání a k povolení rychlejšího " "postupu odemykání." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Používat plnotextové hledání" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Provádět prohledávání napříč všemi hodnotami položek." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Hledat v aktuální skupině" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Prohledávat pouze položky v aktuální skupině." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Při generování hesla používat velká písmena" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Když se generuje náhodné heslo, používat také velká písmena A až Z." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Při generování hesla používat malá písmena" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Když se generuje náhodné heslo, používat také velká písmena a až z." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Při generování hesla používat číslice" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Když se generuje náhodné heslo, používat také velká číslice 0 až 9." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Při generování hesla používat symboly" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "Když se generuje náhodné heslo, používat nealfanumerické znaky ASCII." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Délka hesla při generování hesla" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Počet jednotlivých znaků, když se generuje heslo." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Počet slov při generování heslové fráze" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Počet slov, který se má použít při generování heslové fráze." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Oddělovač při generování heslové fráze" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Oddělovač slov, který se má použít při generování heslové fráze." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Délka" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Znaky" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Počet slov" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Oddělovač" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "zde zadejte znak…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Heslová fráze" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Vlastnosti" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Poslední přístup" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Změněno" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Vytvořeno" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Chcete uložit všechny trezory s neuloženými změnami?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Vyberte trezory, které chcete uložit" #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Zrušit" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "U_končit" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Nedávné trezory" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kód" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Vlastnost" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Název" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Uživatelské jméno" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "Adresa URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Poznámky" #: data/references_dialog.ui:267 msgid "References" msgstr "Předvolby" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntax" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Syntax zástupného řetězce pro odkazy pole je následující:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Zobrazovat kódy pole" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identifikátor" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Předvolba" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Každá položka má jedineční identifikátor zvaný UUID. Můžete jej najít mezi " "vlastnostmi položky." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Neuložené změny" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Chcete uložit všechny změny do trezoru?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "U_končit bez uložení" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Neukončovat" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Uložit a ukončit" #: data/search.ui:70 msgid "Enter search term" msgstr "Zadejte hledaný výraz" #: data/search.ui:104 msgid "No search results" msgstr "Nejsou žádné výsledky hledání" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Přesunout vybrané" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Smazat vybrané" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Zrušit" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tmavý motiv" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Používat tmavý motiv GTK." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Skrýt úvodní obrazovku" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Znovu otevřít poslední otevřený trezor." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Trezor" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Automaticky ukládat" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Všechny změny ukládat automaticky." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Odemykání" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Pamatovat si kombinované _klíče" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Pamatovat si poslední použitý kombinovaný klíč." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Pamatovat si způso_b odemykání" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Povolit rychlejší odemykání." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Generování hesla" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Délka hesla" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Počet znaků, když se generuje heslo." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Velká písmena" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Při generování hesla používat znaky A až Z." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Ma_lá písmena" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Při generování hesla používat znaky a až z." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Čísli_ce" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Při generování hesla používat číslice." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "_Speciální znaky" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Při generování hesla používat nealfanumerické symboly ASCII." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Generování heslové fráze" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Délka heslové fráze" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "zadejte znak" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Bezpečnost" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Čas do zamknutí trezoru" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Zamknout trezor po X minutách nečinnosti." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Mazat schránku" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Vymazat schránku po X sekundách." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Zobrazovat pole s he_sly" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Zobrazovat hesla v textové podobě." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Smazat seznam nedávných" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Smazat seznam nedávno otevřených trezorů." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nový trezor" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Otevřít trezor" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Trezor je zamknutý" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Zadejte heslo pro odemknutí" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Vyberte soubor s klíčem pro odemknutí" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Otevřít soubor s klíčem" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Zadejte heslo a vyberte soubor s klíčem pro odemknutí" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Kombinace obojího" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Prázdná skupina" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Vybírejte klikáním na zaškrtávací políčka" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Hledání" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Režim výběru" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Uložit" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "Za_mknout" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "Ř_azení" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Napos_ledy přidáno" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Nastavení tre_zoru" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Vybrat _vše" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "_Zrušit výběr" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplikovat" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "O_dkazy" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Vlastnosti" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Smazat" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Nová p_oložka" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Nová s_kupina" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Bezpečný trezor na hesla" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Uchovávejte bezpečně svá hesla, poznámky a data. Vytvořte nebo " "naimportujte nový trezor KeePass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Nelze skončit: Nezdařilo se uložit trezor" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Hesla se neshodují" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Výběr umístění pro soubor s klíčem" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Generuje se…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klonovat" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Výběr aktuálního souboru s klíčem" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Otevřít" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Použít…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Žádný" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256bitový" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256bitový" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256bitový" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Klíč takovéto vlastnosti již existuje" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Výběr přílohy" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "Přid_at" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Uložení přílohy" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Uživatelské jméno bylo zkopírováno do schránky" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Heslo bylo zkopírováno do schránky" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Název není zadán" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Uživatelské jméno neni zadáno" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Výběr trezoru KeePass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Databáze KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Nezdařilo se otevřít soubor" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Nelze otevřít soubor: Typ MIME není podporovaný" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Trezor je již otevřený" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Výběr umístění pro trezor KeePass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Vytvořit" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operace zrušena: Mazala se právě aktivní skupiny" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Mazání bylo dokončeno" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operace zrušena: Přesouvala se právě aktivní skupiny" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Přesun byl dokončen" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Výběr souboru s klíčem" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Výběr souboru s klíčem" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Formát kdb není podporován." #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Selhalo odemknutí trezoru" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Zkusit znovu" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Trezor byl uložen" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Nezdařilo se uložit trezor" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Počkejte prosím, probíhá jiné ukládání." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Nebyly provedeny žádné změny" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Zkopírováno do schránky" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Kvůli nečinnosti byl trezor uzamknut" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} vybraná položka" msgstr[1] "{} vybrané položky" msgstr[2] "{} vybraných položek" secrets-5.1/po/da.po000066400000000000000000001011661415312107300143730ustar00rootroot00000000000000# Danish translation for PasswordSafe. # Copyright (C) 2019 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # scootergrisen, 2019-2020. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2019-12-25 22:37+0000\n" "PO-Revision-Date: 2020-01-16 22:19+0200\n" "Last-Translator: scootergrisen\n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in.in:9 #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "En adgangskodehåndtering til GNOME" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "Lær mere om Adgangskodeboks" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "scootergrisen" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:9 msgid "Safety Info" msgstr "Sikkerhedsinformation" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:10 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Der er risiko for, at eksterne programmer opretter ukrypterede skjulte " "eller midlertidige kopier af den vedhæftede fil! Vær venligst forsigtig, når " "du fortsætter." #. Discard all the changes which the user have made to his keepass safe #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/attachment_warning_dialog.ui:23 data/quit_dialog.ui:22 #: data/unlocked_database.ui:1274 msgid "Back" msgstr "Tilbage" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:36 msgid "Proceed" msgstr "Fortsæt" #: data/create_database.ui:74 data/database_settings_dialog.ui:439 #: data/entry_page.ui:1563 data/entry_page.ui:1699 #: data/references_dialog.ui:155 data/references_dialog.ui:263 #: passwordsafe/unlock_database.py:93 msgid "Password" msgstr "Adgangskode" #: data/create_database.ui:94 msgid "Use a password to secure your safe" msgstr "Brug en adgangskode til at beskytte din boks" #: data/create_database.ui:157 data/database_settings_dialog.ui:579 #: passwordsafe/create_database.py:242 passwordsafe/create_database.py:247 #: passwordsafe/database_settings_dialog.py:184 #: passwordsafe/database_settings_dialog.py:219 #: passwordsafe/database_settings_dialog.py:224 #: passwordsafe/unlock_database.py:96 passwordsafe/unlock_database.py:301 #: passwordsafe/unlock_database.py:423 msgid "Keyfile" msgstr "Nøglefil" #: data/create_database.ui:177 msgid "Use a keyfile to secure your safe" msgstr "Brug en nøglefil til at beskytte din boks" #. NOTE: Composite unlock is a authentification method where both password and keyfile are required #: data/create_database.ui:240 passwordsafe/unlock_database.py:100 msgid "Composite" msgstr "Kombinering" #: data/create_database.ui:260 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "" "Brug en adgangskode i kombination med en nøglefil til at beskytte din boks" #: data/create_database.ui:303 msgid "Protect your safe" msgstr "Beskyt din boks" #: data/create_database.ui:415 msgid "Set password for safe" msgstr "Indstil adgangskode til boksen" #: data/create_database.ui:430 msgid "Enter Password" msgstr "Indtast adgangskode" #: data/create_database.ui:476 msgid "Password Match Check" msgstr "Match af adgangskoder" #: data/create_database.ui:562 msgid "Repeat password for safe" msgstr "Gentag adgangskoden til boksen" #: data/create_database.ui:608 msgid "Match Check Failed" msgstr "De er ikke ens" #: data/create_database.ui:667 msgid "Please try again" msgstr "Prøv venligst igen" #. Button to generate a password #: data/create_database.ui:788 data/entry_page.ui:1650 #: passwordsafe/create_database.py:240 #: passwordsafe/database_settings_dialog.py:217 msgid "Generate" msgstr "Generer" #: data/create_database.ui:817 msgid "Set keyfile for safe" msgstr "Indstil nøglefil til boksen" #: data/create_database.ui:832 msgid "Generate Keyfile" msgstr "Generer nøglefil" #: data/create_database.ui:887 data/main_window.ui:200 #: data/unlock_database.ui:311 data/unlocked_database.ui:976 msgid "Preferences" msgstr "Indstillinger" #: data/create_database.ui:901 data/main_window.ui:214 #: data/unlock_database.ui:325 data/unlocked_database.ui:990 msgid "Keyboard Shortcuts" msgstr "Tastaturgenveje" #. "Password Safe" is the application name #: data/create_database.ui:915 data/main_window.ui:228 #: data/unlock_database.ui:339 data/unlocked_database.ui:1004 msgid "About Password Safe" msgstr "Om Adgangskodeboks" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database.ui:929 data/main_window.ui:355 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:4 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:353 msgid "Password Safe" msgstr "Adgangskodeboks" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:930 msgid "Create Safe" msgstr "Opret boks" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "Boksen blev oprettet" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #: data/created_database.ui:50 data/unlock_database.ui:286 #: data/unlock_database.ui:354 data/unlocked_database.ui:937 msgid "Open Safe" msgstr "Åbn boks" #: data/database_settings_dialog.ui:55 msgid "Details" msgstr "Detaljer" #: data/database_settings_dialog.ui:80 msgid "Path" msgstr "Sti" #: data/database_settings_dialog.ui:97 msgid "File Size" msgstr "Filstørrelse" #: data/database_settings_dialog.ui:114 msgid "Safe Name" msgstr "Boksnavn" #. KeePass is a proper noun #: data/database_settings_dialog.ui:144 msgid "KeePass Version" msgstr "KeePass-version" #: data/database_settings_dialog.ui:161 msgid "Creation Date" msgstr "Oprettelsesdato" #: data/database_settings_dialog.ui:178 data/database_settings_dialog.ui:801 msgid "Encryption Algorithm" msgstr "Krypteringsalgoritme" #: data/database_settings_dialog.ui:195 msgid "Derivation Algorithm" msgstr "Udledningsalgoritme" #. Statistics #: data/database_settings_dialog.ui:300 msgid "Stats" msgstr "Statistik" #: data/database_settings_dialog.ui:325 msgid "Number of Groups" msgstr "Antal grupper" #: data/database_settings_dialog.ui:342 msgid "Passwords" msgstr "Adgangskoder" #: data/database_settings_dialog.ui:359 msgid "Number of Entries" msgstr "Antal poster" #: data/database_settings_dialog.ui:420 data/settings_dialog.ui:55 msgid "General" msgstr "Generelt" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:461 msgid "New" msgstr "Ny" #: data/database_settings_dialog.ui:480 data/database_settings_dialog.ui:481 msgid "Generate Password" msgstr "Generer adgangskode" #. Retype the new password to confirm #: data/database_settings_dialog.ui:494 msgid "Confirm" msgstr "Bekræft" #. Current password #: data/database_settings_dialog.ui:524 msgid "Current" msgstr "Nuværende" #: data/database_settings_dialog.ui:632 msgid "Select current keyfile" msgstr "Vælg nuværende nøglefil" #: data/database_settings_dialog.ui:708 msgid "Generate new keyfile" msgstr "Generer ny nøglefil" #: data/database_settings_dialog.ui:741 data/database_settings_dialog.ui:962 #: passwordsafe/database_settings_dialog.py:335 #: passwordsafe/database_settings_dialog.py:357 msgid "Apply Changes" msgstr "Anvend ændringer" #: data/database_settings_dialog.ui:762 msgid "Authentication" msgstr "Godkendelse" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:834 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:851 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:868 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:893 msgid "Key Derivation Function" msgstr "Nøgleudledningsfunktion" #: data/entry_page.ui:34 msgid "Add Attachment" msgstr "Tilføj vedhæfting" #: data/entry_page.ui:76 msgid "Attachments" msgstr "Vedhæftinger" #: data/entry_page.ui:163 msgid "Secret_Photo.png" msgstr "Hemmeligt_billede.png" #: data/entry_page.ui:338 msgid "Remove attribute" msgstr "Fjern attribut" #: data/entry_page.ui:399 msgid "Attributes" msgstr "Attributter" #: data/entry_page.ui:439 msgid "Key" msgstr "Nøgle" #: data/entry_page.ui:453 msgid "Value" msgstr "Værdi" #: data/entry_page.ui:475 msgid "Add attribute" msgstr "Tilføj attribut" #: data/entry_page.ui:530 msgid "Color" msgstr "Farve" #: data/entry_page.ui:825 msgid "Icon" msgstr "Ikon" #: data/entry_page.ui:1197 data/group_page.ui:35 data/references_dialog.ui:65 #: data/references_dialog.ui:235 msgid "Title" msgstr "Titel" #: data/entry_page.ui:1282 data/group_page.ui:120 data/references_dialog.ui:185 #: data/references_dialog.ui:291 msgid "Notes" msgstr "Noter" #: data/entry_page.ui:1434 msgid "Length" msgstr "Længde" #: data/entry_page.ui:1468 msgid "Characters" msgstr "Tegn" #: data/entry_page.ui:1576 msgid "Words" msgstr "Ord" #: data/entry_page.ui:1609 msgid "Separator" msgstr "Separator" #: data/entry_page.ui:1626 msgid "Enter character here…" msgstr "Indtast tegn her …" #: data/entry_page.ui:1637 msgid "Passphrase" msgstr "Adgangskode" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1755 msgid "Show/hide password" msgstr "Vis/skjul adgangskode" #: data/entry_page.ui:1936 data/references_dialog.ui:170 #: data/references_dialog.ui:277 msgid "URL" msgstr "URL" #: data/entry_page.ui:2023 data/references_dialog.ui:92 #: data/references_dialog.ui:249 msgid "Username" msgstr "Brugernavn" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "Sikker adgangskodeboks" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:62 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Gem dine adgangskoder, noter og data på en sikker måde. Opret eller " "importér en ny Keepass-boks." #: data/main_window.ui:269 msgid "New…" msgstr "Ny …" #: data/main_window.ui:314 msgid "Open…" msgstr "Åbn …" #: data/main_window.ui:411 msgid "Recent Databases" msgstr "Seneste databaser" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "Kopiér" #: data/notes_dialog.ui:52 msgid "Close" msgstr "Luk" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Adgangskodeboks er en adgangskodehåndtering som bruger Keepass v.4-formatet. " "Den integrerer perfekt med GNOME-skrivebordet og giver en let og ryddelig " "brugerflade til håndtering af adgangskodedatabaser." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:71 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;kryptér;beskyt;sikker;" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:121 msgid "Use dark GTK+ theme" msgstr "Brug mørkt GTK+-tema" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Brug den mørke variant af dit GTK+-tema. Bemærk venligst at det ikke er alle " "GTK+-temaer som har en mørk variant." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Åbn den database der var åbnet sidste gang igen" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Åbn automatisk oplåsningsskærmen for den database der var åbnet sidste gang, " "ellers vis velkomstskærmen." #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:326 msgid "Save every change automatically" msgstr "Gem hver ændring automatisk" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Gem de ændringer du foretager i databasen med det samme. Bemærk venligst at " "du ikke kan tilbageføre ændringer hvis automatisk gem er aktiveret." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Lås databasen efter X minutter" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Lås automatisk din database efter nogle minutter for at øge sikkerheden." #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:737 msgid "Clear clipboard after X seconds" msgstr "Ryd udklipsholderen efter X sekunder" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Ryd udklipsholderen, af sikkerhedshensyn, efter adgangskoden er blevet " "kopieret." #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:821 msgid "Display passwords in plain text" msgstr "Vis adgangskoder i ren tekst" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Vis adgangskoderne i indtastningsfelterne som standard." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Vinduesstørrelse" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Husk vinduesstørrelsen." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Database der var åbnet sidste gang" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Sti til den database der var åbnet sidste gang." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Databaser der var åbnet sidste gang" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "En liste over de databaser der var åbnet sidste gang." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Husk kombineringsnøgle" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Husk den kombineringsnøgle der blev brugt sidste gang til at låse op for " "databasen." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Kombineringsnøgle der blev brugt sidste gang" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Sti til den nøgle der blev brugt sidste gang til med kombinering at låse op " "for databasen." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Husk oplåsningsmetode" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Husk den oplåsningsmetode der blev brugt sidste gang til at låse op for " "databasen fremover." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Sikkerhedskopiér databasen når den låses op" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Hvis der opstår en fejl når databasen gemmes, så findes der en " "sikkerhedskopi i ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Sorteringsrækkefølge for grupper og poster" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Rækkefølge på rækkerne i grupper- og poster-visningen." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Oplåsningsmetode der blev brugt sidste gang" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Bruges til at gemme den oplåsningsmetode der blev brugt sidste gang og til " "at aktivere en hurtigere oplåsningsproces." #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Filen findes allerede" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "Vil du tilsidesætte den?" #: data/override_dialog.ui:22 data/unlocked_database.ui:1452 msgid "Cancel" msgstr "Annuller" #: data/override_dialog.ui:35 msgid "Override" msgstr "Tilsidesæt" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "Egenskaber" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "Tilgået" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "Ændret" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "Oprettet" #: data/references_dialog.ui:23 msgid "Code" msgstr "Kode" #: data/references_dialog.ui:38 data/references_dialog.ui:403 #: data/references_dialog.ui:554 msgid "Property" msgstr "Egenskab" #: data/references_dialog.ui:314 data/unlocked_database.ui:1195 msgid "References" msgstr "Referencer" #: data/references_dialog.ui:346 msgid "Syntax" msgstr "Syntaks" #: data/references_dialog.ui:361 msgid "The placeholder syntax for field references is the following:" msgstr "Pladsholdersyntaksen til feltreferencer er som følger:" #: data/references_dialog.ui:402 data/references_dialog.ui:441 msgid "Show Field Codes" msgstr "Vis feltkoder" #: data/references_dialog.ui:442 msgid "Identifier" msgstr "Identifikator" #: data/references_dialog.ui:524 msgid "Reference" msgstr "Reference" #: data/references_dialog.ui:631 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "Hver post har en unik identifikator kaldet UUID.\n" "Den kan findes i postens egenskaber." #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "Vil du gemme alle bokse med ændringer som ikke er blevet gemt?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "Vælg de bokse du vil gemme." #: data/quit_dialog.ui:35 msgid "Quit" msgstr "Afslut" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "Ændringer som ikke er blevet gemt" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "Vil du skrive alle ændringer til boksen?" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "Forkast" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:761 #: passwordsafe/entry_page.py:651 passwordsafe/main_window.py:333 msgid "Save" msgstr "Gem" #. Title of the settings dialog #: data/settings_dialog.ui:15 msgid "Settings" msgstr "Indstillinger" #: data/settings_dialog.ui:104 msgid "Dark Theme" msgstr "Mørkt tema" #: data/settings_dialog.ui:187 msgid "Hide First Start Screen" msgstr "Skjul skærmen for første start" #: data/settings_dialog.ui:204 msgid "Reopen last opened safe" msgstr "Åbn den boks der var åbnet sidste gang igen" #: data/settings_dialog.ui:260 data/unlocked_database.ui:860 #: passwordsafe/main_window.py:335 msgid "Safe" msgstr "Boks" #: data/settings_dialog.ui:309 msgid "Save automatically" msgstr "Gem automatisk" #: data/settings_dialog.ui:382 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Lås op" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:431 msgid "Remember Composite Key" msgstr "Husk kombineringsnøgle" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:448 msgid "Remember last used composite key" msgstr "Husk den kombineringsnøgle der blev brugt sidste gang" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:514 msgid "Remember Unlock Method" msgstr "Husk oplåsningsmetode" #: data/settings_dialog.ui:531 msgid "Enable faster unlocking" msgstr "Aktivér hurtig oplåsning" #: data/settings_dialog.ui:587 msgid "Security" msgstr "Sikkerhed" #: data/settings_dialog.ui:636 msgid "Safe Lock Timeout" msgstr "Timeout for låsning af boks" #: data/settings_dialog.ui:653 msgid "Lock safe on idle after X minutes" msgstr "Lås boksen når den har været inaktiv i X minutter" #: data/settings_dialog.ui:720 msgid "Clear Clipboard" msgstr "Ryd udklipsholder" #: data/settings_dialog.ui:804 msgid "Show Password Fields" msgstr "Vis adgangskodefelter" #: data/settings_dialog.ui:887 msgid "Clear Recent List" msgstr "Ryd liste over seneste" #: data/settings_dialog.ui:904 msgid "Clear the recently opened safes list" msgstr "Ryd listen over seneste åbnet bokse" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Opret boks" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Åbn boks" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Åbn indstillinger" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "Boks" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Lås boks" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Gem boks" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "Åbn søgning" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Opret post" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "Opret gruppe" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Post" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopiér adgangskode" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "Afslut post-siden" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "Indtast adgangskode og vælg nøglefil for at låse op" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "Boksen er låst" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "Vælg nøglefil for at låse op" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "Åbn nøglefil" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:923 msgid "New Safe" msgstr "Ny boks" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "Indtast adgangskode for at låse op" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "Kunne ikke låse boksen op" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "Markeringstilstand" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "Søg" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "Tom gruppe" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "Ingen søgeresultater" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "Indtast søgeterm" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "Sortering" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "A-Å" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Å-A" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "Sidst tilføjet" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "Lås" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "Ny post" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "Ny gruppe" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "Indstillinger for boks" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "Lokal" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "Fuld tekst" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "Dupliker" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "Slet" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "Flyt markering" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "Slet markering" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "Markér alt" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "Markér intet" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "Klik på en afkrydsningsboks for at vælge" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "Vælg placering til nøglefil" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "Genererer …" #. NOTE: With clone is meant a duplicated object, not the process of cloning/duplication; "the" clone #: passwordsafe/database_manager.py:384 msgid "Clone" msgstr "Klon" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "Vælg nuværende nøglefil" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Åbn" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Anvend …" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Ukendt" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:512 passwordsafe/entry_page.py:575 msgid "Attribute key already exists" msgstr "Attributnøglen findes allerede" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:603 msgid "Select attachment" msgstr "Vælg vedhæfting" #: passwordsafe/entry_page.py:604 msgid "Add" msgstr "Tilføj" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:650 msgid "Save attachment" msgstr "Gem vedhæfting" #: passwordsafe/entry_row.py:63 msgid "Title not specified" msgstr "Der er ikke angivet nogen titel" #: passwordsafe/entry_row.py:74 msgid "No username specified" msgstr "Der er ikke angivet noget brugernavn" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "Der er ikke angivet nogen gruppetitel" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:283 msgid "Choose a Keepass safe" msgstr "Vælg en Keepass-boks" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:288 passwordsafe/main_window.py:341 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4-database" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:332 msgid "Choose location for Keepass safe" msgstr "Vælg placering til Keepass-boks" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "Sletning gennemført" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "Flytning gennemført" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "Sprang flytning af gruppe ind i sig selv over" #: passwordsafe/unlock_database.py:213 msgid "Database already opened" msgstr "Databasen er allerede åben" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:299 msgid "Choose a keyfile" msgstr "Vælg en nøglefil" #: passwordsafe/unlock_database.py:352 passwordsafe/unlock_database.py:409 msgid "Try again" msgstr "Prøv igen" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:418 msgid "Choose Keyfile" msgstr "Vælg nøglefil" #: passwordsafe/unlocked_database.py:482 msgid "Database saved" msgstr "Databasen blev gemt" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:485 msgid "Please wait. Another save is running." msgstr "Vent venligst. Er allerede ved at gemme." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:488 msgid "No changes made" msgstr "Der er ikke foretaget nogen ændringer" #: passwordsafe/unlocked_database.py:667 msgid "Copied to clipboard" msgstr "Kopieret til udklipsholder" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:822 #, python-format msgid "%s locked" msgstr "%s låst" #: passwordsafe/unlocked_database.py:822 msgid "Keepass safe locked due to inactivity" msgstr "Keepass-boksen blev låst pga. inaktivitet" secrets-5.1/po/de.po000066400000000000000000001150011415312107300143700ustar00rootroot00000000000000# German translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Mario Blättermann , 2018. # Tim Sabsch , 2018-2019. # Onno Giesmann , 2020. # Christian Kirbach , 2020. # Milo Ivir , 2020, 2021. # Philipp Kiemle , 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-02-04 16:42+0000\n" "PO-Revision-Date: 2021-02-05 11:18+0100\n" "Last-Translator: Philipp Kiemle \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.1\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Verwalten Sie Ihre Passwörter" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Mehr über Passwort-Safe erfahren" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Mario Blättermann \n" "Tim Sabsch \n" "Onno Giesmann \n" "Christian Kirbach \n" "Milo Ivir \n" "Philipp Kiemle " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Sicherheitsinformation" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Es ist möglich, dass externe Anwendungen unverschlüsselte versteckte oder " "temporäre Kopien von diesem Anhang erstellen! Bitte seien Sie vorsichtig." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Zurück" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Fortfahren" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Attribut entfernen" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Farbe" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Passwort-Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Safe erstellen" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Einstellungen" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Tastenkombinationen" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Info zu Passwort-Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Ihren Safe schützen" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Passwort" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Ein Passwort verwenden, um Ihren Safe zu schützen." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Schlüsseldatei" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Eine Schlüsseldatei verwenden, um Ihren Safe zu schützen." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Verbundmethode" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Ein Passwort zusammen mit einer Schlüsseldatei verwenden, um Ihren Safe zu " "schützen." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Passwort eingeben" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Passwort für Safe festlegen." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Übereinstimmungsüberprüfung für Passwörter" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Passwort für Safe wiederholen." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Übereinstimmungsüberprüfung ist fehlgeschlagen" #: data/create_database.ui:299 msgid "Please try again." msgstr "Bitte erneut versuchen." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Bestätigen" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Schlüsseldatei erzeugen" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Schlüsseldatei für Safe festlegen" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Erzeugen" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Safe wurde erfolgreich erstellt" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Safe öffnen" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Details" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Pfad" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Dateigröße" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Safe-Name" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Keepass-Version" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Erstellungsdatum" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Verschlüsselungsalgorithmus" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Ableitungsalgorithmus" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistik" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Anzahl der Gruppen" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Passwörter" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Anzahl der Einträge" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Allgemein" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Passwort" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Neu" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Passwort erzeugen" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "_Bestätigen" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Aktuell" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:30 msgid "Keyfile" msgstr "Schlüsseldatei" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "Aktuelle Schlüsseldatei aus_wählen" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "Neue Schlüsseldatei _erzeugen" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "Änderungen _anwenden" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Legitimierung" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Schlüsselableitungsfunktion" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Änderungen anwenden" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titel" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Benutzername" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Notizen" #: data/entry_page.ui:196 msgid "Icon" msgstr "Symbol" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Anhänge" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Anhang hinzufügen" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Attribute" #: data/entry_page.ui:318 msgid "Key" msgstr "Schlüssel" #: data/entry_page.ui:325 msgid "Value" msgstr "Wert" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Attribut hinzufügen" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Benutzername in die Zwischenablage kopieren" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Passwort in die Zwischenablage kopieren" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Anwendung" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Safe erstellen" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Safe öffnen" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Einstellungen öffnen" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tastenkombinationen anzeigen" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Beenden" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Safe" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Safe sperren" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Safe speichern" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Suche öffnen" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Eintrag erstellen" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Gruppe erzeugen" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Eintrag" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Passwort kopieren" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Benutzername kopieren" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Zurück" #: data/main_window.ui:25 msgid "New…" msgstr "Neu …" #: data/main_window.ui:38 msgid "Open…" msgstr "Öffnen …" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopieren" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Passwort-Safe ist eine Passwortverwaltung, die das KeePass-Format in Version " "4 nutzt. Die Anwendung integriert sich perfekt in die GNOME-Arbeitsumgebung " "und stellt eine einfache und übersichtliche Schnittstelle für die Verwaltung " "von Passwortdatenbanken bereit." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Eine Passwortverwaltung für GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;verschlüsseln;sicher;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Dunkles GTK-Thema verwenden" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Die dunkle Variante Ihres GTK-Themas verwenden. Bitte beachten Sie, dass " "nicht jedes GTK-Thema über eine dunkle Variante verfügt." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Zuletzt geöffnete Datenbank erneut öffnen" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Automatisch den Entsperrbildschirm der zuletzt geöffneten Datenbank öffnen, " "anderenfalls den Willkommensbildschirm." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Jede Änderung automatisch speichern" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Jede vorgenommene Änderung unmittelbar in der Datenbank speichern. Bitte " "beachten Sie, dass Sie Änderungen nicht zurücknehmen können, wenn das " "automatische Speichern aktiviert ist." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Datenbank nach X Minuten sperren" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Die Datenbank nach einer angegebenen Anzahl Minuten sperren, um die " "Sicherheit zu erhöhen." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Zwischenablage nach X Sekunden leeren" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Aus Sicherheitsgründen die Zwischenablage nach dem Kopieren des Passworts " "leeren." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Passwörter im Klartext anzeigen" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "In der Voreinstellung die Passwörter in den Eingabefeldern anzeigen." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Fenstergröße" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Die Fenstergröße merken." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Zuletzt geöffnete Datenbank" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Pfad zur zuletzt geöffneten Datenbank." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Zuletzt geöffnete Datenbanken" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Liste der zuletzt geöffneten Datenbanken." # https://en.wikipedia.org/wiki/Compound_key #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Verbundschlüssel merken" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Den zuletzt zum Entsperren der Datenbank verwendeten Verbundschlüssel merken." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Zuletzt verwendeter Verbundschlüssel" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Pfad zum zuletzt für die Verbundentsperrung verwendeten Schlüssel." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Entsperrmethode merken" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Die zuletzt zum Entsperren der Datenbank verwendete Methode für zukünftige " "Entsperrungen merken." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Datenbank beim Entsperren sichern" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Falls beim Speichern der Datenbank ein Fehler auftritt, wird eine " "Datensicherung in ~/.cache/passwordsafe/backups angelegt" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Sortierreihenfolge für Gruppen und Einträge" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Reihenfolge der Zeilen in der Gruppen- und Eintragsansicht." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Zuletzt verwendete Entsperrmethode" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Wird zum Speichern der zuletzt verwendeten Entsperrmethode verwendet, um den " "Entsperrvorgang zu beschleunigen." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Volltext-Suche verwenden" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Gesamte Einträge durchsuchen." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Suche in aktueller Gruppe" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Nur Einträge in der alktuellen Gruppe durchsuchen." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Passwort mit Großbuchstaben erzeugen" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Zufälliges Passwort mit Großbuchstaben von A-Z erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Passwort mit Kleinbuchstaben erzeugen" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Zufälliges Passwort mit Kleinbuchstaben von a-z erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Passwort mit Zahlen erzeugen" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Zufälliges Passwort mit Zahlen von 0-9 erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Passwort mit Symbolen erzeugen" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "Zufälliges Passwort mit nicht alphanumerischen Symbolen erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Passwortlänge" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:120 msgid "Number of single characters when generating a password." msgstr "Passwort mit einer bestimmten Anzahl Zeichen erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Passphrase mit bestimmter Anzahl Wörter erzeugen" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Passphrase mit einer bestimmten Anzahl Wörter erzeugen." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Trennzeichen beim Erzeugen der Passphrase" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Worttrennzeichen beim Erzeugen der Passphrase." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Länge" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Zeichen" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Wörter" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Trennzeichen" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Zeichen hier eingeben …" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Passphrase" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Eigenschaften" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Zugegriffen" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Geändert" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Erstellt" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "" "Wollen Sie alle Safes mit derzeit ungespeicherten Änderungen speichern?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Wählen Sie die Safes, die Sie speichern wollen." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Abbrechen" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Beenden" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Kürzlich verwendete Safes" #: data/references_dialog.ui:20 msgid "Code" msgstr "Code" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Eigenschaft" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titel" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Benutzername" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL-Adresse" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notizen" #: data/references_dialog.ui:267 msgid "References" msgstr "Referenzen" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntax" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Die Syntax für Platzhalter in Feldreferenzen ist wie folgt:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Feldcodes anzeigen" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Bezeichner" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referenz" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Jeder Eintrag hat einen einzigartigen Bezeichner, UUID genannt. Sie finden " "ihn in den Eigenschaften des Eintrags." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Ungespeicherte Änderungen" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Wollen Sie alle Änderungen in den Safe schreiben?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Beenden ohne zu speichern" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Nicht beenden" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Speichern und beenden" #: data/search.ui:70 msgid "Enter search term" msgstr "Suchbegriff eingeben" #: data/search.ui:104 msgid "No search results" msgstr "Keine Suchergebnisse" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Auswahl verschieben" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Auswahl löschen" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Abbrechen" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Dunkles Thema" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Dunkles GTK-Thema verwenden." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Ersten Startbildschirm verbergen" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Zuletzt geöffneten Safe erneut öffnen." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:300 msgid "Safe" msgstr "Safe" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Automatisch speichern" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Jede Änderung automatisch speichern." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Entsperren" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "_Verbundschlüssel merken" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Zuletzt verwendeten Verbundschlüssel merken." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "_Entsperrmethode merken" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Schnellere Entsperrung ermöglichen." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Passwort erzeugen" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Passwort-Länge" #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Großbuchstaben" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Passwort mit Großbuchstaben von A-Z erzeugen." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "_Kleinbuchstaben" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Passwort mit Kleinbuchstaben von a-z erzeugen." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Numerische Zeichen" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Passwort mit numerischen Zeichen erzeugen." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "_Sonderzeichen" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Passwort mit nicht alphanumerischen Symbolen erzeugen." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Passphrase erzeugen" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Passphrase-Länge" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Zeichen eingeben" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Sicherheit" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Zeitschwelle zum Sperren des Safes" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Safe nach einer Inaktivität von X Minuten sperren." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Zwischenablage leeren" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Zwischenablage nach X Sekunden leeren." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Passwortfelder anzeigen" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Passwörter als Text anzeigen." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Liste zuletzt verwendeter Safes leeren" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Liste der zuletzt geöffneter Safes leeren." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Neuer Safe" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Safe öffnen" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Safe ist gesperrt" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Passwort zum Entsperren eingeben" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Schlüsseldatei zum Entsperren auswählen" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Schlüsseldatei öffnen" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "" "Geben Sie ein Passwort ein und wählen Sie die Schlüsseldatei zum Entsperren " "aus" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Verbundmethode" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Leere Gruppe" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Klicken Sie auf ein Ankreuzfeld zum Auswählen" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Suche" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Auswahlmodus" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Speichern" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "Sp_erren" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "So_rtierung" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Zu_letzt hinzugefügt" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Sa_fe-Einstellungen" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "_Alle auswählen" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "_Nichts auswählen" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplizieren" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referenzen" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Eigenschaften" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Löschen" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Neuer _Eintrag" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Neue _Gruppe" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Sicherer Passwort-Safe" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Speichern Sie sicher Ihre Passwörter, Notizen und Daten. Erstellen " "Sie einen neuen oder importieren Sie einen Keepass-Safe." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "" "Programm kann nicht beendet werden: Safe konnte nicht gespeichert werden" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Die Passwörter stimmen nicht überein" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Ort der Schlüsseldatei wählen" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Wird erzeugt …" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klonen" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Aktuelle Schlüsseldatei wählen" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "Ö_ffnen" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Anwenden …" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Unbekannt" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Attributschlüssel existiert bereits" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Anhang auswählen" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Hinzufügen" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Anhang speichern" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:101 msgid "Username copied to clipboard" msgstr "Benutzername in die Zwischenablage kopiert" #: passwordsafe/entry_row.py:94 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Passwort in die Zwischenablage kopiert" #: passwordsafe/entry_row.py:113 passwordsafe/group_row.py:100 msgid "Title not specified" msgstr "Kein Titel angegeben" #: passwordsafe/entry_row.py:124 msgid "No username specified" msgstr "Kein Benutzername angegeben" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:205 msgid "Choose a Keepass safe" msgstr "Einen Keepass-Safe wählen" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:215 passwordsafe/main_window.py:305 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4-Datenbank" #: passwordsafe/main_window.py:243 msgid "Could not open file" msgstr "Datei konnte nicht geöffnet werden" #: passwordsafe/main_window.py:252 msgid "Could not open file: Mime type not supported" msgstr "Datei konnte nicht geöffnet werden: Mime-Typ wird nicht unterstützt" #: passwordsafe/main_window.py:262 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Safe ist bereits geöffnet" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:294 msgid "Choose location for Keepass safe" msgstr "Ort für einen Keepass-Safe wählen" #: passwordsafe/main_window.py:297 msgid "_Create" msgstr "_Erstellen" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operation abgebrochen: Aktuelle aktive Gruppe wird gelöscht" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Löschen abgeschlossen" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operation abgebrochen: Aktuelle aktive Gruppe wird verschoben" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Verschieben abgeschlossen" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Eine Schlüsseldatei wählen" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Schlüsseldatei wählen" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "Das kdb-Format wird nicht unterstützt" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "Safe konnte nicht entsperrt werden" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "Erneut versuchen" #: passwordsafe/unlocked_database.py:419 msgid "Safe saved" msgstr "Safe gespeichert" #: passwordsafe/unlocked_database.py:421 msgid "Could not save Safe" msgstr "Safe konnte nicht gespeichert werden" #: passwordsafe/unlocked_database.py:430 msgid "Please wait. Another save is running." msgstr "Bitte warten Sie. Ein anderer Speichervorgang wird gerade ausgeführt." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:434 msgid "No changes made" msgstr "Keine Änderungen vorgenommen" #: passwordsafe/unlocked_database.py:470 msgid "Copied to clipboard" msgstr "In die Zwischenablage kopiert" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:557 msgid "Safe locked due to inactivity" msgstr "Der Safe wurde wegen Inaktivität gesperrt" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} Selected entry" msgstr[1] "{} gewählte Einträge" secrets-5.1/po/el.po000066400000000000000000000627131415312107300144130ustar00rootroot00000000000000# Greek translation for PasswordSafe. # Copyright (C) 2019 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Efstathios Iosifidis , 2019. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe gnome-3.30\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2019-11-10 03:08+0000\n" "PO-Revision-Date: 2019-11-30 22:28+0200\n" "Last-Translator: Efstathios Iosifidis \n" "Language-Team: Greek, Modern (1453-) \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Generator: Gtranslator 3.32.1\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in:9 #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Διαχειριστής συνθηματικών για το GNOME" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "" "Ελληνική μεταφραστική ομάδα GNOME\n" " Ευστάθιος Ιωσηφίδης \n" "\n" "Για περισσότερες πληροφορίες, επισκεφθείτε την σελίδα\n" "http://gnome.gr/" #: data/create_database.ui:74 data/database_settings_dialog.ui:435 #: data/entry_page.ui:1244 data/entry_page.ui:1381 #: passwordsafe/unlock_database.py:93 msgid "Password" msgstr "Συνθηματικό" #: data/create_database.ui:93 msgid "Use a password to secure your safe" msgstr "" #: data/create_database.ui:155 data/database_settings_dialog.ui:575 #: passwordsafe/create_database.py:242 passwordsafe/create_database.py:247 #: passwordsafe/database_settings_dialog.py:184 #: passwordsafe/database_settings_dialog.py:219 #: passwordsafe/database_settings_dialog.py:224 #: passwordsafe/unlock_database.py:96 passwordsafe/unlock_database.py:301 #: passwordsafe/unlock_database.py:423 msgid "Keyfile" msgstr "" #: data/create_database.ui:174 msgid "Use a keyfile to secure your safe" msgstr "" #. NOTE: Composite unlock is a authentification method where both password and keyfile are required #: data/create_database.ui:236 passwordsafe/unlock_database.py:100 msgid "Composite" msgstr "" #: data/create_database.ui:255 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "" #: data/create_database.ui:297 msgid "Protect your safe" msgstr "" #: data/create_database.ui:408 msgid "Set password for safe" msgstr "" #: data/create_database.ui:423 msgid "Enter Password" msgstr "Εισαγωγή συνθηματικού" #: data/create_database.ui:469 msgid "Password Match Check" msgstr "" #: data/create_database.ui:555 msgid "Repeat password for safe" msgstr "" #: data/create_database.ui:601 msgid "Match Check Failed" msgstr "" #: data/create_database.ui:660 msgid "Please try again" msgstr "" #. Button to generate a password #: data/create_database.ui:781 data/entry_page.ui:1332 #: passwordsafe/create_database.py:240 #: passwordsafe/database_settings_dialog.py:217 msgid "Generate" msgstr "Δημιουργία" #: data/create_database.ui:810 msgid "Set keyfile for safe" msgstr "" #: data/create_database.ui:825 msgid "Generate Keyfile" msgstr "" #: data/create_database.ui:880 data/main_window.ui:198 #: data/unlock_database.ui:311 data/unlocked_database.ui:920 msgid "Preferences" msgstr "Προτιμήσεις" #: data/create_database.ui:894 data/main_window.ui:212 #: data/unlock_database.ui:325 data/unlocked_database.ui:934 msgid "Keyboard Shortcuts" msgstr "" #. "Password Safe" is the application name #: data/create_database.ui:908 data/main_window.ui:226 #: data/unlock_database.ui:339 data/unlocked_database.ui:948 msgid "About Password Safe" msgstr "" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database.ui:922 data/main_window.ui:353 #: data/org.gnome.PasswordSafe.appdata.xml.in:4 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:353 msgid "Password Safe" msgstr "" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:923 msgid "Create Safe" msgstr "" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #: data/created_database.ui:50 data/unlock_database.ui:286 #: data/unlock_database.ui:354 data/unlocked_database.ui:881 msgid "Open Safe" msgstr "" #: data/database_settings_dialog.ui:51 msgid "Details" msgstr "Λεπτομέρειες" #: data/database_settings_dialog.ui:76 msgid "Path" msgstr "Διαδρομή" #: data/database_settings_dialog.ui:93 msgid "File Size" msgstr "Μέγεθος αρχείου" #: data/database_settings_dialog.ui:110 msgid "Safe Name" msgstr "" #. KeePass is a proper noun #: data/database_settings_dialog.ui:140 msgid "KeePass Version" msgstr "" #: data/database_settings_dialog.ui:157 msgid "Creation Date" msgstr "Ημερομηνία δημιουργίας" #: data/database_settings_dialog.ui:174 data/database_settings_dialog.ui:795 msgid "Encryption Algorithm" msgstr "Αλγόριθμος κρυπτογράφησης" #: data/database_settings_dialog.ui:191 msgid "Derivation Algorithm" msgstr "" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Στατιστικά" #: data/database_settings_dialog.ui:321 msgid "Number of Groups" msgstr "" #: data/database_settings_dialog.ui:338 msgid "Passwords" msgstr "Συνθηματικά" #: data/database_settings_dialog.ui:355 msgid "Number of Entries" msgstr "" #: data/database_settings_dialog.ui:416 data/settings_dialog.ui:49 msgid "General" msgstr "Γενικά" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:457 msgid "New" msgstr "Νέο" #: data/database_settings_dialog.ui:476 data/database_settings_dialog.ui:477 msgid "Generate Password" msgstr "Δημιουργία συνθηματικού" #. Retype the new password to confirm #: data/database_settings_dialog.ui:490 msgid "Confirm" msgstr "Επιβεβαίωση" #. Current password #: data/database_settings_dialog.ui:520 msgid "Current" msgstr "Τρέχον" #: data/database_settings_dialog.ui:628 msgid "Select current keyfile" msgstr "" #: data/database_settings_dialog.ui:704 msgid "Generate new keyfile" msgstr "" #: data/database_settings_dialog.ui:737 data/database_settings_dialog.ui:956 #: passwordsafe/database_settings_dialog.py:335 #: passwordsafe/database_settings_dialog.py:357 msgid "Apply Changes" msgstr "Εφαρμογή αλλαγών" #: data/database_settings_dialog.ui:758 msgid "Authentication" msgstr "Πιστοποίηση" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:828 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:845 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:862 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:887 msgid "Key Derivation Function" msgstr "" #: data/entry_page.ui:105 msgid "Remove attribute" msgstr "Αφαίρεση χαρακτηριστικού" #: data/entry_page.ui:166 msgid "Attributes" msgstr "Χαρακτηριστικά" #: data/entry_page.ui:205 msgid "Key" msgstr "Κλειδί" #: data/entry_page.ui:218 msgid "Value" msgstr "Τιμή" #: data/entry_page.ui:240 msgid "Add attribute" msgstr "" #: data/entry_page.ui:295 msgid "Color" msgstr "Χρώμα" #: data/entry_page.ui:571 msgid "Icon" msgstr "Εικονίδιο" #: data/entry_page.ui:904 data/group_page.ui:35 msgid "Title" msgstr "Τίτλος" #: data/entry_page.ui:990 data/group_page.ui:119 msgid "Notes" msgstr "Σημειώσεις" #: data/entry_page.ui:1114 msgid "Length" msgstr "Μήκος" #: data/entry_page.ui:1149 msgid "Characters" msgstr "Χαρακτήρες" #: data/entry_page.ui:1257 msgid "Words" msgstr "Λέξεις" #: data/entry_page.ui:1291 msgid "Separator" msgstr "" #: data/entry_page.ui:1308 msgid "Enter character here…" msgstr "" #: data/entry_page.ui:1319 msgid "Passphrase" msgstr "" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1436 msgid "Show/hide password" msgstr "" #: data/entry_page.ui:1616 msgid "URL" msgstr "URL" #: data/entry_page.ui:1702 msgid "Username" msgstr "Όνομα χρήστη" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:60 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" #: data/main_window.ui:267 msgid "New…" msgstr "Νέο…" #: data/main_window.ui:312 msgid "Open…" msgstr "Άνοιγμα…" #: data/main_window.ui:423 msgid "Recent Databases" msgstr "Πρόσφατες βάσεις δεδομένων" #: data/org.gnome.PasswordSafe.appdata.xml.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" #: data/org.gnome.PasswordSafe.appdata.xml.in:64 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:115 msgid "Use dark GTK+ theme" msgstr "Χρήση σκούρου θέματος GTK+" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:320 msgid "Save every change automatically" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:731 msgid "Clear clipboard after X seconds" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:815 msgid "Display passwords in plain text" msgstr "Προβολή συνθηματικών σε απλό κείμενο" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Μέγεθος παραθύρου" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Τελευταία ανοιγμένη βάση δεδομένων" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Το αρχείο υπάρχει ήδη" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "" #: data/override_dialog.ui:22 data/unlocked_database.ui:1277 msgid "Cancel" msgstr "Aκύρωση" #: data/override_dialog.ui:35 msgid "Override" msgstr "Παράκαμψη" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/quit_dialog.ui:22 data/unlocked_database.ui:988 msgid "Back" msgstr "Πίσω" #: data/quit_dialog.ui:35 msgid "Quit" msgstr "Έξοδος" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "Μη αποθηκευμένες αλλαγές" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "Απόρριψη" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:733 #: passwordsafe/main_window.py:333 msgid "Save" msgstr "Αποθήκευση" #. Title of the settings dialog #: data/settings_dialog.ui:15 msgid "Settings" msgstr "Ρυθμίσεις" #: data/settings_dialog.ui:98 msgid "Dark Theme" msgstr "Σκούρο θέμα" #: data/settings_dialog.ui:181 msgid "Hide First Start Screen" msgstr "" #: data/settings_dialog.ui:198 msgid "Reopen last opened safe" msgstr "" #: data/settings_dialog.ui:254 passwordsafe/main_window.py:335 msgid "Safe" msgstr "Ασφαλές" #: data/settings_dialog.ui:303 msgid "Save automatically" msgstr "Αυτόματη αποθήκευση" #: data/settings_dialog.ui:376 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Ξεκλείδωμα" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:425 msgid "Remember Composite Key" msgstr "" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:442 msgid "Remember last used composite key" msgstr "" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:508 msgid "Remember Unlock Method" msgstr "" #: data/settings_dialog.ui:525 msgid "Enable faster unlocking" msgstr "" #: data/settings_dialog.ui:581 msgid "Security" msgstr "Ασφάλεια" #: data/settings_dialog.ui:630 msgid "Safe Lock Timeout" msgstr "" #: data/settings_dialog.ui:647 msgid "Lock safe on idle after X minutes" msgstr "" #: data/settings_dialog.ui:714 msgid "Clear Clipboard" msgstr "Εκκαθάριση προχείρου" #: data/settings_dialog.ui:798 msgid "Show Password Fields" msgstr "" #: data/settings_dialog.ui:881 msgid "Clear Recent List" msgstr "" #: data/settings_dialog.ui:898 msgid "Clear the recently opened safes list" msgstr "" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Εφαρμογή" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Εισαγωγή" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Αντιγραφή συνθηματικού" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:867 msgid "New Safe" msgstr "" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "" #: data/unlock_database.ui:591 msgid "Failed to unlock safe" msgstr "" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:20 data/unlocked_database.ui:1013 msgid "Selection Mode" msgstr "" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:42 msgid "Search" msgstr "Αναζήτηση" #: data/unlocked_database.ui:210 msgid "Empty group" msgstr "Κενή ομάδα" #: data/unlocked_database.ui:266 msgid "No search results" msgstr "Κανένα αποτέλεσμα αναζήτησης" #: data/unlocked_database.ui:297 data/unlocked_database.ui:488 msgid "Delete" msgstr "Διαγραφή" #: data/unlocked_database.ui:474 msgid "Edit" msgstr "Επεξεργασία" #: data/unlocked_database.ui:607 msgid "Enter search term" msgstr "Εισαγωγή όρου αναζήτησης" #. Button tooltip in headerbar to open page for creation of a new password entry #: data/unlocked_database.ui:675 msgid "Create password…" msgstr "Δημιουργία συνθηματικού…" #. Button tooltip in headerbar to open page for creation of a new group #: data/unlocked_database.ui:697 msgid "Create group…" msgstr "Δημιουργία ομάδας…" #: data/unlocked_database.ui:755 msgid "Lock" msgstr "Κλείδωμα" #: data/unlocked_database.ui:800 msgid "Sort" msgstr "Ταξινόμηση" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:842 msgid "Last Added" msgstr "" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:895 msgid "Safe Settings" msgstr "" #. Only apply the search term for the current group #: data/unlocked_database.ui:1124 msgid "Local" msgstr "Τοπικά" #. Use full text search #: data/unlocked_database.ui:1138 msgid "Full Text" msgstr "Πλήρες κείμενο" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1240 msgid "Move selection" msgstr "Μετακίνηση επιλογής" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1260 msgid "Delete selection" msgstr "Διαγραφή επιλογής" #: data/unlocked_database.ui:1317 msgid "Select all" msgstr "Επιλογή όλων" #: data/unlocked_database.ui:1331 msgid "Select none" msgstr "" #: data/unlocked_database.ui:1361 msgid "Click on a checkbox to select" msgstr "" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Άνοιγμα" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Εφαρμογή…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Άγνωστο" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:478 passwordsafe/entry_row.py:136 #: passwordsafe/unlocked_database.py:670 msgid "Copied to clipboard" msgstr "Αντιγράφηκε στο πρόχειρο" #: passwordsafe/entry_page.py:532 passwordsafe/entry_page.py:597 msgid "Attribute key already exists" msgstr "" #: passwordsafe/entry_row.py:69 msgid "Title not specified" msgstr "Δεν καθορίστηκε ο τίτλος" #: passwordsafe/entry_row.py:78 msgid "No username specified" msgstr "Δεν καθορίστηκε το όνομα χρήστη" #: passwordsafe/group_row.py:41 msgid "No group title specified" msgstr "Δεν καθορίστηκε ο τίτλος της ομάδας" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:283 msgid "Choose a Keepass safe" msgstr "" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:288 passwordsafe/main_window.py:341 msgid "KeePass 3.1/4 Database" msgstr "" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:332 msgid "Choose location for Keepass safe" msgstr "" #: passwordsafe/selection_ui.py:149 msgid "Deletion completed" msgstr "" #: passwordsafe/selection_ui.py:191 msgid "Move completed" msgstr "" #: passwordsafe/selection_ui.py:193 msgid "Skipped moving group into itself" msgstr "" #: passwordsafe/unlock_database.py:213 msgid "Database already opened" msgstr "" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:299 msgid "Choose a keyfile" msgstr "" #: passwordsafe/unlock_database.py:352 passwordsafe/unlock_database.py:409 msgid "Try again" msgstr "Δοκιμάστε ξανά" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:418 msgid "Choose Keyfile" msgstr "" #: passwordsafe/unlocked_database.py:544 msgid "Database saved" msgstr "" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:547 msgid "Please wait. Another save is running." msgstr "" #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:550 msgid "No changes made" msgstr "" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:797 #, python-format msgid "%s locked" msgstr "" #: passwordsafe/unlocked_database.py:797 msgid "Keepass safe locked due to inactivity" msgstr "" secrets-5.1/po/es.po000066400000000000000000001222621415312107300144160ustar00rootroot00000000000000# Spanish translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # FIRST AUTHOR , YEAR. # Daniel Mustieles , 2018-2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe gnome-3.30\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-09 08:34+0000\n" "PO-Revision-Date: 2021-05-10 10:47+0200\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Spanish - Spain \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 40.0\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gestionar sus contraseñas" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Aprender más sobre Depósito seguro de contraseñas" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Daniel Mustieles , 2018" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Información de seguridad" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Es posible que aplicaciones externas creasen copias ocultas no cifradas o " "temporales de este archivo adjunto. Proceda con cuidado." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "A_trás" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Proceder" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Quitar atributo" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Color" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Depósito seguro de contraseñas" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Crear depósito seguro" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferencias" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Atajos del _teclado" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Acerca del Depósito seguro de contraseñas" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Proteja su depósito seguro" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Contraseña" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Use una contraseña para securizar su depósito seguro." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Archivo de claves" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Use un archivo de claves para securizar su depósito seguro" #: data/create_database.ui:78 msgid "_Composite" msgstr "Compues_to" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Use una contraseña junto con un archivo de claves para securizar su depósito " "seguro." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Introduzca la contraseña" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Establecer una contraseña para el depósito seguro." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Comprobación de contraseñas coincidentes" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Repita la contraseña para el depósito seguro." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Falló la comprobación de las contraseña coincidentes" #: data/create_database.ui:299 msgid "Please try again." msgstr "Inténtelo de nuevo." #: data/create_database.ui:348 msgid "_Confirm" msgstr "Confirmar" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Generar archivo de claves" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Establecer un archivo de claves para el depósito seguro" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Generar" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Depósito seguro creado correctamente" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Abrir depósito seguro" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalles" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Ruta" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Tamaño del archivo" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nombre del depósito seguro" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versión de KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Fecha de creación" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritmo de cifrado" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritmo de derivación" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Estadísticas" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Número de grupos" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Contraseñas" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Número de entradas" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "General" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Contraseña" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nuevo" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Generar contraseña" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onfirmar" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "Act_ual" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Archivo de claves" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Seleccionar archivo de claves actual" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Generar nuevo archivo de claves" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplicar cambios" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autenticación" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Función de derivación de la clave" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Aplicar cambios" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Título" #: data/entry_page.ui:54 msgid "_Username" msgstr "Nombre de _usuario" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "Notas_" #: data/entry_page.ui:196 msgid "Icon" msgstr "Icono" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Adjuntos" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Añadir adjunto" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atributos" #: data/entry_page.ui:318 msgid "Key" msgstr "Clave" #: data/entry_page.ui:325 msgid "Value" msgstr "Valor" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Añadir atributo" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Copiar nombre de usuario al portapapeles" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copiar contraseña al portapapeles" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplicación" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Crear depósito seguro" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Abrir depósito seguro" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Abrir preferencias" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostrar atajos" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Salir" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Depósito seguro" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Bloquear depósito seguro" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Guardar depósito seguro" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Abrir búsqueda" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Crear entrada" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Crear grupo" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entrada" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copiar contraseña" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copiar nombre de usuario" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Retroceder" #: data/main_window.ui:25 msgid "New…" msgstr "Nueva…" #: data/main_window.ui:38 msgid "Open…" msgstr "Abrir…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "C_opiar" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 #| msgid "" #| "Password Safe is a password manager which makes use of the Keepass v.4 " #| "format. It integrates perfectly with the GNOME desktop and provides an " #| "easy and uncluttered interface for the management of password databases." msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Depósito seguro de contraseñas es un gestor de contraseñas que usa el " "formato KeePass v.4. Se integra perfectamente con el escritorio GNOME y " "proporciona una interfaz limpia y sencilla para la gestión de bases de datos " "de contraseñas." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Un gestor de contraseñas para GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;cifrado;seguridad;contraseñas;depósito seguro;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Usar tema oscuro de GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Usar la variante oscura de su tema de GTK+. Tenga en cuenta que no todos los " "temas de GTK+ tienen esta variante." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Abrir la última base de datos utilizada" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Si se debe abrir automáticamente la pantalla de desbloqueo de la última base " "de datos abierta o mostrar la pantalla de bienvenida" #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Guardar cada cambio automáticamente" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Guardar cada cambio que haga instantáneamente en la base de datos. Tenga en " "cuenta que no puede revertir los cambios si el Guardado automático está " "activado." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Bloquear la base de datos pasados X minutos" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Bloquear automáticamente la base de datos después de una cantidad de minutos " "dada, para mejorar la seguridad." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Vaciar el portapapeles pasados X segundos" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Vaciar el portapapeles después de copiar la contraseña, por seguridad." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Mostrar contraseñas en texto plano" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "" "Mostrar las contraseñas en los campos de entrada de manera predeterminada." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Tamaño de la ventana" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Recordar el tamaño de la ventana." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Última base de datos abierta" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Ruta a la última base de datos abierta." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Últimas bases de datos abiertas" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Una lista de las últimas bases de datos abiertas." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Recordar la última clave de composición" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Recordar la última clave de composición usada para desbloquear la base de " "datos." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Última clave de composición usada" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Ruta a la última clave de composición usada para desbloquear la base de datos" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Recordar el último método de desbloqueo utilizado" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Recordar el último método de desbloqueo usado para futuros desbloqueos de la " "base de datos." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Crear copia de respaldo de la base de datos al desbloquear" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Si ocurre un error al guardar la base de datos se puede encontrar una copia " "de respaldo en ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordenación de los grupos y las entradas" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Orden de las filas en las vistas de grupos y entradas." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Último método de desbloqueo utilizado" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Usado para guardar el último método de desbloqueo usado para activar un " "proceso de desbloqueo más rápido." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Usar búsqueda de texto completo" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Realiza una búsqueda en todos los valores de las entradas." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Búsqueda de grupo actual" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Buscar entradas sólo en el grupo actual." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Usar mayúsculas al generar una contraseña" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Usar letras mayúsculas de la A a la Z al generar una contraseña aleatoria." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Usar minúsculas al generar una contraseña" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Usar letras minúsculas de la a a la z al generar una contraseña aleatoria." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Usar números al generar una contraseña" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Usar números de 0 a 9 al generar una contraseña aleatoria." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Usar símbolos al generar la contraseña" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Usar caracteres ASCII no numéricos al generar una contraseña aleatoria." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Longitud de la contraseña al generarla" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Número de caracteres al generar una contraseña." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Número de palabras al generar una frase de paso." #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Número de palabras que usar al generar una frase de paso." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separador al generar una frase de paso" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Separador de palabras que usar al generar una frase de paso." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Longitud" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caracteres" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Palabras" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separador" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Introduzca el carácter aquí…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frase de paso" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propiedades" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Accedido" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modificado" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Creado" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "¿Quiere guardar todos los depósito seguros con cambios sin guardar?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Seleccione los depósitos seguros que quiere guardar." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "C_ancelar" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Salir" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Depósitos seguros recientes" #: data/references_dialog.ui:20 msgid "Code" msgstr "Código" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propiedad" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Título" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nombre de usuario" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notas" #: data/references_dialog.ui:267 msgid "References" msgstr "Referencias" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxis" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "" "La sintaxis del marcador de posición para referencias de de campos es la " "siguiente:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Mostrar campos de código" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificador" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referencia" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Cada entrada debe tener un identificador único llamado UUID. Se puede " "encontrar en las propiedades de la entrada." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Cambios sin guardar" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "¿Quiere guardar todos los cambios en el depósito seguro?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Salir sin guardar" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_No salir" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Guardar y salir" #: data/search.ui:70 msgid "Enter search term" msgstr "Introduzca el término de búsqueda" #: data/search.ui:104 msgid "No search results" msgstr "No hay resultados" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mover la selección" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Eliminar la selección" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Cancelar" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Tema _oscuro" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Usar tema oscuro de GTK." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Ocu_ltar la pantalla de primer inicio" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Volver a abrir el último depósito seguro utilizado." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Depósito seguro" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Guardar automáticamente" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Guardar cada cambio automáticamente." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Desbloquear" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Recordar la cla_ve de composición" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Recordar la última tecla de composición usada." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Recordar método de desblo_queo" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Activar desbloqueo rápido." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Generación de contraseñas" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Longitud de la contraseña" #: data/settings_dialog.ui:120 #| msgid "Number of single characters when generating a password." msgid "Number of characters when generating a password." msgstr "Número de caracteres al generar una contraseña." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Caracteres en ma_yúsculas" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Usar letras mayúsculas de la A a la Z al generar una contraseña." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Caracteres en mi_núsculas" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Usar letras minúsculas de la a a la z al generar una contraseña." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Caracteres _numéricos" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Usar caracteres numéricos al generar una contraseña." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Caracteres e_speciales" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Usar caracteres ASCII no alfanuméricos al generar una contraseña." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Generación de frase de paso" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Longitud de la frase de paso" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Introducir carácter" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Seguridad" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Tiempo de espera para bloquear el depósito seguro" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Bloquear el depósito seguro tras X minutos de inactividad." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Vaciar el portapapeles" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Limpiar el portapapeles pasados X segundos." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Mostrar campos de con_traseñas" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Mostrar contraseñas en texto plano." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Vaciar documentos recientes" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Limpiar la lista de archivos abiertos recientemente." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nuevo depósito seguro" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Abrir depósito seguro" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "El depósito seguro está bloqueado" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Introduzca la contraseña para desbloquearla" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Seleccione el archivo de claves que desbloquear" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Abrir archivo de claves" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Introduzca la contraseña y elija el archivo de claves que desbloquear." #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Compuesto" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Grupo vacío" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Pulse en una casilla para seleccionar" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Buscar" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Modo de selección" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Guardar" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Bloquear" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "O_rdenación" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Aña_dido recientemente" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Con_figuración del depósito seguro" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Seleccionar _todo" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "_No seleccionar nada" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplicar" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referencias" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Propiedades" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Eliminar" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Entrada _nueva" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "_Grupo nuevo" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 #| msgid "Secure password safe" msgid "Secure Password Safe" msgstr "Contraseña segura del depósito seguro" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Almacene de forma segura sus contraseñas, notas y datos. Cree o " "importe un depósito seguro de Keepass nuevo." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "No se puede salir: no se pudo guardar el depósito seguro" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Las contraseñas no coinciden" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Elija la ubicación del archivo de claves" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Generando…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Clon" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Elija el archivo de claves actual" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "Ab_rir" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Aplicar…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Desconocido" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "El atributo de la clave ya existe" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Seleccionar adjunto" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Añadir" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Guardar adjunto" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Nombre de usuario copiado al portapapeles" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Contraseña copiada al portapapeles" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Título no especificado" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "No se ha especificado nombre de usuario" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Elija un depósito seguro Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Base de datos KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "No se pudo abrir el archivo" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "No se pudo abrir el archivo: tipo MIME no soportado" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "El depósito seguro ya está abierto" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Elija la ubicación para el depósito seguro Keepass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Crear" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operación cancelada: eliminar el grupo activo actualmente" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Eliminar completado" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operación cancelada: mover el grupo activo actualmente" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Mover completado" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Elija un archivo de claves" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Elegir archivo de claves" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "El formato kbd no está soportado." #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Falló al desbloquear el depósito seguro" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Inténtelo de nuevo" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Depósito seguro guardado" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "No se pudo guardar el depósito seguro" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Hay otro proceso de guardado en ejecución. Espere." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "No se han hecho cambios" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Copiada al portapapeles" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Depósito seguro bloqueado por inactividad" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} entrada seleccionada" msgstr[1] "{} entradas seleccionadas" #~ msgid "Secret_Photo.png" #~ msgstr "Foto_secreta.jpg" #~| msgid "Full-Text Search" #~ msgid "_Full-Text Search" #~ msgstr "Búsqueda de texto co_mpleto." #~| msgid "Current Group Search" #~ msgid "_Current Group Search" #~ msgstr "Búsqueda de grupo a_ctual" #~ msgid "Generate" #~ msgstr "Generar" #~ msgid "Add" #~ msgstr "Añadir" #~ msgid "Save" #~ msgstr "Guardar" #~ msgid "No group title specified" #~ msgstr "No se ha especificado título de grupo de usuario" #~ msgid "Unable to open file \"{}\"." #~ msgstr "No se puede abrir el archivo «{}»." #~ msgid "Skipped moving group into itself" #~ msgstr "Se omite el mover un grupo dentro de sí mismo" #~ msgid "%s locked" #~ msgstr "%s bloqueado" #~ msgid "Preferences" #~ msgstr "Preferencias" #~ msgid "New" #~ msgstr "Nueva" #~ msgid "Show/hide password" #~ msgstr "Mostrar/ocultar contraseña" #~| msgid "Hide First Start Screen" #~ msgid "First Start" #~ msgstr "Primer inicio" #~ msgid "Timeout" #~ msgstr "Tiempo de espera" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Salir de la página de entrada" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Navegar al grupo padre" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Nuevo depósito seguro" #~ msgid "Database saved" #~ msgstr "Base de datos guardada" #~ msgid "Close" #~ msgstr "Cerrar" #~ msgid "File already exists" #~ msgstr "El archivo ya existe" #~ msgid "Do you want to override it?" #~ msgstr "¿Quiere sobrescribirlo?" #~ msgid "Override" #~ msgstr "Anular" #~ msgid "Discard" #~ msgstr "Descartar" #~ msgid "Settings" #~ msgstr "Configuración" #~ msgid "Local" #~ msgstr "Local" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Create password…" #~ msgstr "Crear contraseña…" #~ msgid "Create group…" #~ msgstr "Crear grupo…" #~ msgid "Edit" #~ msgstr "Editar" secrets-5.1/po/eu.po000066400000000000000000001155551415312107300144270ustar00rootroot00000000000000# Basque translation for PasswordSafe. # Copyright (C) 2019 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Asier Sarasua Garmendia , 2019, 2021. # msgid "" msgstr "Project-Id-Version: PasswordSafe gnome-3.30\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-03 21:14+0000\n" "PO-Revision-Date: 2021-05-09 10:00+0100\n" "Last-Translator: Asier Sarasua Garmendia \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Kudeatu zure pasahitzak" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Ikasi gehiago Password Safe aplikazioari buruz" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "translator-credits" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Segurtasun-informazioa" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "Posible da kanpoko aplikazioek eranskin-fitxategi honen zifratu gabeko kopia ezkutuak edo aldi baterakoak sortzea! Kontuz ibili." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "At_zera" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Jarraitu" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Kendu atributua" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Kolorea" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Sortu kutxa gotorra" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Hobespenak" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Las_ter-teklak" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "Password Safe aplikazioari _buruz" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Babestu zure kutxa gotorra" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Pasahitza" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Erabili pasahitz bat zure kutxa gotorrerako." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Gako-fitxategia" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Erabili gako-fitxategi bat zure kutxa gotorrerako." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Konposatua" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Erabili pasahitz bat gako-fitxategi batekin konbinatuta zure kutxa gotorrerako." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Sartu pasahitza" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Ezarri pasahitza kutxa gotorrerako." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Pasahitzak bat datozela egiaztatzea" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Errepikatu pasahitza kutxa gotorrerako." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Bat etortzearen egiaztatzeak huts egin du" #: data/create_database.ui:299 msgid "Please try again." msgstr "Saiatu berriro." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Berretsi" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Sortu gako-fitxategia" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Ezarri gako-fitxategia kutxa gotorrerako" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Sortu" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Kutxa gotorra ongi sortu da" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Ireki kutxa gotorra" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Xehetasunak" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Bide-izena" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Fitxategiaren tamaina" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Kutxa gotorraren izena" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass bertsioa" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Sorrera-data" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Zifratze-algoritmoa" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Deribazio-algoritmoa" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Estatistikak" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Talde kopurua" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Pasahitzak" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Sarrera kopurua" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Orokorra" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Pasahitza" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Berria" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Sortu pasahitza" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "Be_rretsi" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Unekoa" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Gako-fitxategia" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Hautatu uneko gako-fitxategia" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Sortu gako-fitxategi berria" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplikatu aldaketak" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentifikazioa" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Gako-deribazioaren funtzioa" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Aplikatu aldaketak" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titulua" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Erabiltzaile-izena:" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RLa" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Oharrak" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikonoa" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Eranskinak" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Gehitu eranskina" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atributuak" #: data/entry_page.ui:318 msgid "Key" msgstr "Gakoa" #: data/entry_page.ui:325 msgid "Value" msgstr "Balioa" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Gehitu atributua" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Kopiatu erabiltzaile-izena arbelean" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Kopiatu pasahitza arbelean" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplikazioa" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Sortu kutxa gotorra" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Ireki kutxa gotorra" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Ireki hobespenak" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Erakutsi lasterbideak" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Irten" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Kutxa gotorra" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Blokeatu kutxa gotorra" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Gorde kutxa gotorra" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Ireki bilaketa" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Sortu sarrera" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Sortu taldea" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Sarrera" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopiatu pasahitza" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Kopiatu erabiltzaile-izena" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Joan atzera" #: data/main_window.ui:25 msgid "New…" msgstr "Berria…" #: data/main_window.ui:38 msgid "Open…" msgstr "Ireki…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopiatu" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "Password Safe aplikazioa Keepass v.4 formatua erabiltzen duen pasahitz-kudeatzaile bat da. GNOME mahaigainean ongi integratzen da eta interfaze erraz eta garbia eskaintzen du pasahitzen datu-baseak kudeatzeko." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Pasahitzen kudeatzailea GNOMErako" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;zifratu;segurua;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Erabili GTK gai iluna" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "Erabil izure GTK+ gaiaren aldaera iluna. Kontuan izan GTK+ gai batzuk ez dutela aldaera iluna." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Berrireki irekitako azken datu-basea" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "Automatikoki ireki azken irekitako datu-basearen desblokeo-pantaila, bestela erakutsi ongi etorriko pantaila." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Gorde automatikoki aldaketa bakoitza" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "Gorde berehala datu-basean egiten duzun aldaketa bakoitza. Kontuan izan ezin dituzula aldaketa atzera bota gordetze automatikoa gaituta badago." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Blokeatu datu-basea X minutu ondoren" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "Automatikoki blokeatu zure datu-basea minutu kopuru jakin baten ondoren, segurtasuna hobetzeko." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Garbitu arbela X segundo ondoren" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Pasahitza kopiatu ondoren, garbitu arbela segurtasun arrazoiengatik." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Bistaratu pasahitzak testu soilean" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Erakutsi pasahitzak sarrera-eremuetan modu lehenetsian." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Leihoaren tamaina" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Gogoratu leihoaren tamaina." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Irekitako azken datu-basea" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Irekitako azken datu-basearen bidea." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Irekitako azken datu-baseak" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Irekitako azken datu-baseen zerrenda." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Gogoratu gako konposatua" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Gogoratu datu-basea desblokeatzeko erabilitako azken gako konposatua." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Erabilitako azken gako konposatua" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Datu-basea desblokeatzeko erabilitako azken gako konposatuaren bidea." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Gogoratu desblokeo-metodoa" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "Gogoratu erabilitako azken desblokeo-metodoa, etorkizunean datu-basea desblokeatu ahal izateko." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Egin datu-basearen babeskopia desblokeoan" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "Datu-basea gordetzean errorea gertatzen bada, babeskopia bat aurkitu daiteke ~/.cache/passwordsafe/backups kokagunean" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordenatu taldeak eta sarrerak" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Errenkaden ordena taldeen eta sarreren bistan." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Erabilitako azken desblokeo-metodoa" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "Erabilitako azken desblokeo-metodoa gordetzeko eta desblokeo-prozesu azkarragoa gaitzeko erabilia." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Bilaketa testu osoan" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Sarreretako balio guztietan egiten du bilaketa." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Bilaketa uneko taldean" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Uneko taldean dauden sarreretan soilik egiten du bilaketa." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Erabili maiuskulak pasahitz bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Erabili A-Z karaktere maiuskulak ausazko pasahitz bat sortzean." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Erabili minuskulak pasahitz bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Erabili a-z karaktere minuskulak ausazko pasahitz bat sortzean." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Erabili zenbakiak pasahitz bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Erabili 0-9 zenbaki-karaktereak ausazko pasahitz bat sortzean." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Erabili ikurrak pasahitz bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "Erabili ASCII ikur ez alfanumerikoak ausazko pasahitz bat sortzean." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Pasahitzaren luzera pasahitz bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Pasahitz bat sortzean erabiliko diren karaktereen kopurua." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Pasaesaldi bat sortzean erabiliko den hitz kopurua." #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Pasaesaldi bat sortzean erabiliko den hitz kopurua." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Bereizlea pasaesaldi bat sortzean" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Pasaesaldi bat sortzean erabiliko den hitz-bereizlea." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Luzera" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Karaktereak" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Hitzak" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Bereizlea" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Sartu karakterea hemen…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Pasaesaldia" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propietateak" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUIDa" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Atzituta" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Aldatze-data" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Sortuta" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Gorde gabeko aldaketak dituzten kutxa gotor guztiak gorde nahi dituzu?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Hautatu gorde nahi dituzun kutxa gotorrak." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Utzi" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "I_rten" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Azken kutxa gotorrak" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kodea" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propietatea" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titulua" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Erabiltzaile-izena" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URLa" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Oharrak" #: data/references_dialog.ui:267 msgid "References" msgstr "Erreferentziak" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxia" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Eremu-erreferentzien leku-markaren sintaxia honakoa da:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Erakutsi eremu-kodeak" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identifikatzailea" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Erreferentzia" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "Sarrera bakoitzak identifikatzaile bakarra du, UUIDa. Sarreraren propietateetan dago." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Gorde gabeko aldaketak" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Aldaketak guztiak kutxa gotorrean idatzi nahi dituzu?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Irten gorde gabe" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Ez irten" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Gorde eta irten" #: data/search.ui:70 msgid "Enter search term" msgstr "Sartu bilaketa-terminoa" #: data/search.ui:104 msgid "No search results" msgstr "Bilaketak ez du emaitzarik" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mugitu hautapena" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Ezabatu hautapena" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Utzi" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Gai i_luna" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Erabili GTK gai iluna" #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Ezkutatu abioko lehen _pantaila" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Berrireki irekitako azken kutxa gotorra." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Kutxa gotorra" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Gorde automatikoki" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Gorde aldaketa bakoitza automatikoki." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Desblokeatu" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Gogoratu gako _konposatua" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Gogoratu erabilitako azken gako konposatua." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Gogoratu _desblokeo-metodoa" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Gaitu desblokeo azkarragoa." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Pasahitz-sorrera" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Pasahitzaren luzera" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Pasahitz bat sortzean erabiliko diren karaktereen kopurua." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Karaktere ma_iuskulak" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Erabili A-Z karaktere maiuskulak pasahitz bat sortzean." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Karaktere m_inuskulak" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Erabili a-z karaktere minuskulak pasahitz bat sortzean." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Zenbaki-karaktereak" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Erabili zenbaki-karaktereak pasahitz bat sortzean." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Karaktere _bereziak" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Erabili alfanumerikoak ez diren ASCII ikurrak pasahitz bat sortzean." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Pasaesaldi-sorrera" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Pasaesaldiaren luzera" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Sartu karakterea" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Segurtasuna" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Kutxa gotorraren blokeoaren denbora-muga" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Blokeatu X minutu ondoren inaktibo dagoen kutxa gotorra." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Garbitu arbela" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Garbitu arbela X segundo ondoren." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Erakutsi pasahitz-eremuak" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Bistaratu pasahitzak testu soilean." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Garbitu azken kutxa gotorren zerrenda" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Garbitu azken aldian irekitako kutxa gotorren zerrenda." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Kutxa gotor berria" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Ireki kutxa gotorra" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Kutxa gotorra blokeatuta dago" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Idatzi pasahitza desblokeatzeko" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Hautatu desblokeorako gako-fitxategia" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Ireki gako-fitxategia" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Sartu pasahitza eta hautatu desblokeorako gako-fitxategia" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Konposatua" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Hustu taldea" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Egin klik kontrol-laukian hautatzeko" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Bilatu" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Hautapen modua" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Gorde" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Blokeatu" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "O_rdenatu" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Azken ge_hitua" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Kut_xa gotorren ezarpenak" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Hautatu _dena" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Ez hautatu e_zer" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "_Bikoiztu" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Erreferentziak" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Propietateak" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "Ez_abatu" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "_Sarrera berria" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "_Talde berria" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Pasahitzen kutxa gotor segurua" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "Gorde zure pasahitzak, oharra eta datuak modu seguruan. Sortu edo inportatu Keepass kutxa gotor bat." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Ezin da irten: Ezin izan da kutxa gotorra gorde" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Pasahitzak ez datoz bat" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Aukeratu gako-fitxategiaren kokalekua" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Sortzen…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klonatu" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Aukeratu uneko gako-fitxategia" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Ireki" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Aplikatu…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Ezezaguna" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Atributu-gakoa badago lehendik" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Hautatu eranskina" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Gehitu" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Gorde eranskina" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Erabiltzaile-izena arbelean kopiatu da" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Pasahitza arbelean kopiatu da" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Ez da izenburua zehaztu" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Ez da erabiltzaile-izena zehaztu" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Hautatu Keepass kutxa gotor bat" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 datu-basea" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Ezin izan da fitxategia ireki" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Ezin izan da fitxategia ireki: Mime mota hau ez dago onartuta" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Kutxa gotorra jadanik irekita dago" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Hautatu Keepass kutxa gotorraren kokalekua" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Sortu" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Eragiketa abortatu da: Unean aktibo dagoen taldea ezabatzen" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Ezabatzea osatu da" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Eragiketa abortatu da: Unean aktibo dagoen taldea lekuz aldatzen" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Lekuz aldatzea osatu da" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Aukeratu gako-fitxategi bat" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Aukeratu gako-fitxategi bat" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "KDB formatua ez da onartzen" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Huts egin du kutxa gotorra desblokeatzeak" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Saiatu berriro" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Kutxa gotorra gorde da" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Ezin izan da kutxa gotorra gorde" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Itxaron. Beste gordetze-eragitea bat exekutatzen ari da." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Ez da aldaketarik egin" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Kopiatu arbelean" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Kutxa gotorra blokeatu da inaktibo dagoelako" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "Hautatutako sarrera {}" msgstr[1] "Hautatutako {} sarrera" #~ msgid "New" #~ msgstr "Berria" #~ msgid "Show/hide password" #~ msgstr "Erakutsi/ezkutatu pasahitza" #~ msgid "Close" #~ msgstr "Itxi" #~ msgid "File already exists" #~ msgstr "Fitxategia badago lehendik ere" #~ msgid "Do you want to override it?" #~ msgstr "Gainidatzi nahi duzu?" #~ msgid "Override" #~ msgstr "Gainidatzi" #~ msgid "Discard" #~ msgstr "Baztertu" #~ msgid "Settings" #~ msgstr "Ezarpenak" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Irten sarrerako orritik" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "Local" #~ msgstr "Lokala" #~ msgid "Full Text" #~ msgstr "Testu osoa" #~ msgid "Add" #~ msgstr "Gehitu" #~ msgid "No group title specified" #~ msgstr "Ez da talde-izenburua zehaztu" #~ msgid "Skipped moving group into itself" #~ msgstr "Talde bere baitara lekuz aldatzea saltatu da" #~ msgid "Database saved" #~ msgstr "Datu-basea gorde da" #~ msgid "%s locked" #~ msgstr "%s blokeatuta" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Edit" #~ msgstr "Editatu" #~ msgid "Create password…" #~ msgstr "Sortu pasahitza..." #~ msgid "Create group…" #~ msgstr "Sortu taldea..." secrets-5.1/po/fi.po000066400000000000000000001145161415312107300144100ustar00rootroot00000000000000# Finnish translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Jiri Grönroos , 2018. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-01-01 16:41+0000\n" "PO-Revision-Date: 2021-01-06 11:31+0200\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.2\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Hallinnoi salasanojasi" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Lisätietoja Salasanasäilöstä" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Jiri Grönroos" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Varmistustiedot" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "On mahdollista, että erilliset sovellukset luovat salaamattomia ja " "piilotettuja tai väliaikaisia kopioita tästä liitetiedostosta! Jatka varoen." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Takaisin" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Jatka" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Suojaa säilösi" #: data/create_database.ui:52 data/password_entry_row.ui:21 msgid "_Password" msgstr "_Salasana" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Käytä salasanaa suojataksesi säilösi." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Avaintiedosto" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Käytä avaintiedostoa suojataksesi säilösi." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Yhdistelmä" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Käytä salasanan ja avaintiedoston yhdistelmää suojataksesi säilösi." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Anna salasana" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Aseta salasana säilölle." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Salasanan vastaavuuden tarkistus" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Toista säilön salasana." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Vastaavuuden tarkistus epäonnistui" #: data/create_database.ui:299 msgid "Please try again." msgstr "Yritä uudelleen." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Vahvista" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Luo avaintiedosto" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Aseta avaintiedosto säilölle" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:238 msgid "_Generate" msgstr "_Luo" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Säilö luotu onnistuneesti" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:189 msgid "_Open Safe" msgstr "_Avaa säilö" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Salasanasäilö" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Luo säilö" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:199 msgid "_Preferences" msgstr "_Asetukset" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:203 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:207 msgid "_About Password Safe" msgstr "Tietoja - Salasanasäil_ö" #: data/color_entry_row.ui:19 msgid "Color" msgstr "Väri" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Tiedot" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Polku" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Tiedoston koko" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Säilön nimi" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass-versio" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Luontipäivä" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Salausalgoritmi" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Derivaatioalgoritmi" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Tilastot" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Ryhmien määrä" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Salasanat" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Tietueiden määrä" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Yleiset" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:147 data/unlock_database.ui:174 msgid "Password" msgstr "Salasana" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Uusi" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Luo salasana" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "_Vahvista" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Nykyinen" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:191 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/database_settings_dialog.py:243 #: passwordsafe/unlock_database.py:29 msgid "Keyfile" msgstr "Avaintiedosto" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "Valitse _nykyinen avaintiedosto" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "Luo _uusi avaintiedosto" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Toteuta muutokset" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Tunnistautuminen" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Avaimen derivaatiofunktio" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Toteuta muutokset" #: data/entry_page.ui:25 msgid "_Add Attachment" msgstr "_Lisää liite" #: data/entry_page.ui:52 msgid "Attachments" msgstr "Liitteet" #: data/entry_page.ui:105 msgid "Secret_Photo.png" msgstr "Salainen_kuva.png" #: data/entry_page.ui:238 msgid "Remove attribute" msgstr "Poista attribuutti" #: data/entry_page.ui:277 msgid "Attributes" msgstr "Attribuutit" #: data/entry_page.ui:301 msgid "Key" msgstr "Avain" #: data/entry_page.ui:310 msgid "Value" msgstr "Arvo" #: data/entry_page.ui:323 msgid "Add attribute" msgstr "Lisää attribuutti" #: data/entry_page.ui:357 msgid "Icon" msgstr "Kuvake" #: data/entry_page.ui:636 data/group_page.ui:21 msgid "_Title" msgstr "_Otsikko" #: data/entry_page.ui:684 data/group_page.ui:69 msgid "_Notes" msgstr "_Muistiinpanot" #: data/entry_page.ui:835 msgid "U_RL" msgstr "U_RL-osoite" #: data/entry_page.ui:885 msgid "_Username" msgstr "_Käyttäjätunnus" #: data/entry_row.ui:92 msgid "Copy username to clipboard" msgstr "Kopioi käyttäjätunnus leikepöydälle" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Kopioi salasana leikepöydälle" #: data/main_window.ui:25 msgid "New…" msgstr "Uusi…" #: data/main_window.ui:38 msgid "Open…" msgstr "Avaa…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopioi" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Salasanasäilö on salasanojen hallintasovellus, joka käyttää Keepass v.4 -" "tiedostomuotoa. Se yhdistyy Gnome-työpöydälle ja tarjoaa selkeän sekä " "helppokäyttöisen käyttöliittymän salasanatietokantojen hallintaan." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:142 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Salasanojen hallintasovellus Gnomelle" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encrypt;secure;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Käytä tummaa GTK-teemaa" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Käytä GTK+-teeman tummaa versiota. Ota huomioon, ettei jokaisella GTK+-" "teemalla ole välttämättä tummaa versiota." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Avaa uudelleen viimeksi avattu tietokanta" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Tallenna jokainen muutos automaattisesti" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Tallenna jokainen muutos välittömästi tietokantaan. Ota huomioon, ettet voi " "kumota muutoksia, jos automaattinen tallennus on käytössä." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Lukitse tietokanta X minuutin kuluttua" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Lukitse salasanatietokanta automaattisesti tietyn ajan jälkeen parantaaksesi " "tietoturvaa." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Tyhjennä leikepöytä X sekunnin kuluttua" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Salasanan kopioimisen jälkeen tyhjennä leikepöytä tietoturvasyistä." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Näytä salasana raakatekstinä" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Näytä salasanat tietuekentissä oletusarvoisesti." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Ikkunan koko" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Muista ikkunan koko." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Viimeksi avattu tietokanta" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Polku viimeksi avattuun tietokantaan." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Viimeksi avatut tietokannat" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Luettelo viimeksi avatuista tietokannoista." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Muista yhdistelmäavain" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Viimeksi käytetty yhdistelmäavain" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Muista lukituksen avaustapa" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Varmuuskopioi tietokanta lukituksen avauksen yhteydessä" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Jos tietokannan tallennuksen yhteydessä tapahtuu virhe, varmuuskopio löytyy " "polusta ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ryhmien ja tietueiden lajittelujärjestys" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Viimeksi käytetty lukituksen avaustapa" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Käytä koko tekstin hakua" #: data/org.gnome.PasswordSafe.gschema.xml:92 data/settings_dialog.ui:77 msgid "Performs a search across all values of entries." msgstr "Kohdistaa haun tietueiden kaikkia arvoja vasten." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Nykyinen ryhmähaku" #: data/org.gnome.PasswordSafe.gschema.xml:97 data/settings_dialog.ui:92 msgid "Only search entries in the current group." msgstr "Etsi tietueita vain nykyisestä ryhmästä." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Käytä isoja kirjaimia salasanaa luotaessa" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Käytä pieniä kirjaimia salasanaa luotaessa" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Käytä numeroita kun salasanaa luodaan" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Käytä numeroita 0-9 kun satunnaista salasanaa luodaan." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Käytä symboleja salasanaa luotaessa" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Salasanan pituus kun salasanaa luodaan" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:156 msgid "Number of single characters when generating a password." msgstr "Yksittäisten merkkien määrä kun salasanaa luodaan." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Sanojen määrä kun tunnuslausetta luodaan" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:239 msgid "Number of words to use when generating a passphrase." msgstr "Käytettävien sanojen määrä kun tunnuslausetta luodaan." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Erotin kun tunnuslausetta luodaan" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:256 msgid "Word separator to use when generating a passphrase." msgstr "Sanojen erotin kun tunnuslauseitta luodaan." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Pituus" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Merkit" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Sanat" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:255 msgid "Separator" msgstr "Erotin" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Kirjoita merkki tähän…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Tunnuslause" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Ominaisuudet" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Käytetty" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Muokattu" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Luotu" #: data/references_dialog.ui:20 msgid "Code" msgstr "Koodi" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Ominaisuus" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Otsikko" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Käyttäjätunnus" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "Osoite" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Muistiinpanot" #: data/references_dialog.ui:267 msgid "References" msgstr "Viittaukset" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntaksi" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Näytä kenttäkoodit" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Tunniste" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Viittaus" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Jokaisella tietueella on yksilöllinen tunniste nimeltään UUID. Se löytyy " "jokaisen tietueen ominaisuuksista." #: data/search.ui:79 msgid "No search results" msgstr "Ei hakutuloksia" #: data/search.ui:117 msgid "Enter search term" msgstr "Anna hakuehto" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "" "Haluatko tallentaa kaikki säilöt, joissa on tallentamattomia muutoksia?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Valitse säilöt, jotka haluat tallentaa." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Peru" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Lopeta" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Tallentamattomia muutoksia" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Haluatko kirjoittaa kaikki muutokset säilöön?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Lopeta tallentamatta" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Älä lopeta" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Tallenna ja lopeta" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Siirrä valinta" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Poista valinta" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Peru" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tumma teema" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Käytä tummaa GTK-teemaa." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Piilota _ensimmäisen käynnistyksen näkymä" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Avaa uudelleen viimeksi avattu säilö." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:322 msgid "Safe" msgstr "Säilö" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "Tallenna _automaattisesti" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Tallenna jokainen muutos automaattisesti." #. Button tooltip in headerbar to open search page #: data/settings_dialog.ui:72 data/unlocked_headerbar.ui:89 msgid "Search" msgstr "Haku" #: data/settings_dialog.ui:76 msgid "_Full-Text Search" msgstr "_Koko tekstin haku" #: data/settings_dialog.ui:91 msgid "_Current Group Search" msgstr "Nykyinen _ryhmähaku" #: data/settings_dialog.ui:108 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Avaa lukitus" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:112 msgid "Remember Composite _Key" msgstr "Muista _yhdistelmäavain" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:113 msgid "Remember last used composite key." msgstr "Muista viimeksi käytetty yhdistelmäavain." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:127 msgid "Remember _Unlock Method" msgstr "Muista lukituksen _avaustapa" #: data/settings_dialog.ui:128 msgid "Enable faster unlocking." msgstr "Käytä nopeampaa lukituksen avausta." #: data/settings_dialog.ui:151 msgid "Password Generation" msgstr "Salasanan luonti" #: data/settings_dialog.ui:155 msgid "Password Length" msgstr "Salasanan pituus" #: data/settings_dialog.ui:172 msgid "_Uppercase Characters" msgstr "_Isot merkit" #: data/settings_dialog.ui:173 msgid "Use uppercase characters A-Z when generating a password." msgstr "Käytä isoja merkkejä A-Z kun salasanaa luodaan." #: data/settings_dialog.ui:187 msgid "_Lowercase Characters" msgstr "_Pienet merkit" #: data/settings_dialog.ui:188 msgid "Use lowercase characters a-z when generating a password." msgstr "Käytä pieniä kirjaimia a-z kun salasanaa luodaaan." #: data/settings_dialog.ui:202 msgid "_Numeric Characters" msgstr "_Numeeriset merkit" #: data/settings_dialog.ui:203 msgid "Use numeric characters when generating a password." msgstr "Käytä numeerisia merkkejä kun salasanaa luodaan." #: data/settings_dialog.ui:217 msgid "_Special Characters" msgstr "_Erikoismerkit" #: data/settings_dialog.ui:218 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Käytä ei-aakkosnumeerisia ASCII-symboleita kun salasanaa luodaan." #: data/settings_dialog.ui:234 msgid "Passphrase Generation" msgstr "Tunnuslauseen luonti" #: data/settings_dialog.ui:238 msgid "Passphrase Length" msgstr "Tunnuslauseen pituus" #: data/settings_dialog.ui:264 msgid "Enter Character" msgstr "Anna merkki" #: data/settings_dialog.ui:277 data/settings_dialog.ui:281 msgid "Security" msgstr "Turvallisuus" #: data/settings_dialog.ui:285 msgid "Safe Lock Timeout" msgstr "Säilön lukituksen viive" #: data/settings_dialog.ui:286 msgid "Lock safe on idle after X minutes." msgstr "Lukitse käyttämätön säilö X minuutin kuluttua." #: data/settings_dialog.ui:302 msgid "Clear Clipboard" msgstr "Tyhjennä leikepöytä" #: data/settings_dialog.ui:303 msgid "Clear clipboard after X seconds." msgstr "Tyhjennä leikepöytä X sekunnin kuluttua." #: data/settings_dialog.ui:319 msgid "_Show Password Fields" msgstr "Näytä _salasanakentät" #: data/settings_dialog.ui:320 msgid "Display passwords in plain text." msgstr "Näytä salasanat raakatekstinä." #: data/settings_dialog.ui:334 msgid "Clear Recent List" msgstr "Tyhjennä viimeisimpien luettelo" #: data/settings_dialog.ui:335 msgid "Clear the recently opened safes list." msgstr "Tyhjennä viimeksi avattujen säilöjen luettelo." #: data/shortcuts_overview.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Sovellus" #: data/shortcuts_overview.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Luo säilö" #: data/shortcuts_overview.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Avaa säilö" #: data/shortcuts_overview.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Avaa asetukset" #: data/shortcuts_overview.ui:38 msgctxt "Shortcut window description" msgid "Quit" msgstr "Lopeta" #: data/shortcuts_overview.ui:47 msgctxt "Shortcut window description" msgid "Safe" msgstr "Säilö" #: data/shortcuts_overview.ui:51 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Lukitse säilö" #: data/shortcuts_overview.ui:58 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Tallenna säilö" #: data/shortcuts_overview.ui:65 msgctxt "Shortcut window description" msgid "Open search" msgstr "Avaa haku" #: data/shortcuts_overview.ui:72 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Luo tietue" #: data/shortcuts_overview.ui:79 msgctxt "Shortcut window description" msgid "Create group" msgstr "Luo ryhmä" #: data/shortcuts_overview.ui:88 msgctxt "Shortcut window description" msgid "Entry" msgstr "Tietue" #: data/shortcuts_overview.ui:92 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopioi salasana" #: data/shortcuts_overview.ui:99 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Kopioi käyttäjätunnus" #: data/shortcuts_overview.ui:106 msgctxt "Shortcut window description" msgid "Go back" msgstr "Siirry takaisin" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Viimeisimmät säilöt" #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:185 msgid "_New Safe" msgstr "_Uusi säilö" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Avaa säilö" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Säilö on lukittu" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Anna salasana avataksesi lukituksen" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Valitse avaintiedosto avataksesi lukituksen" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Avaa avaintiedosto" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Anna salasana ja valitse avaintiedosto avataksesi lukituksen" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Yhdistelmä" #: data/unlocked_database.ui:72 msgid "Empty group" msgstr "Tyhjä ryhmä" #: data/unlocked_headerbar.ui:59 msgid "Click on a checkbox to select" msgstr "Napsauta valintaruutua valitaksesi" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:105 msgid "Selection Mode" msgstr "Valintatila" #: data/unlocked_headerbar.ui:157 passwordsafe/entry_page.py:548 msgid "_Save" msgstr "_Tallenna" #: data/unlocked_headerbar.ui:163 msgid "_Lock" msgstr "_Lukitse" #: data/unlocked_headerbar.ui:168 msgid "So_rting" msgstr "_Järjestys" #: data/unlocked_headerbar.ui:170 msgid "_A-Z" msgstr "_A-Ö" #: data/unlocked_headerbar.ui:174 msgid "_Z-A" msgstr "_Ö-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "_Viimeksi lisätty" #: data/unlocked_headerbar.ui:193 msgid "Sa_fe Settings" msgstr "_Säilön asetukset" #: data/unlocked_headerbar.ui:215 msgid "Select _All" msgstr "_Valitse kaikki" #: data/unlocked_headerbar.ui:219 msgid "Select _None" msgstr "_Älä valitse mitään" #: data/unlocked_headerbar.ui:227 msgid "D_uplicate" msgstr "_Kaksoiskappale" #: data/unlocked_headerbar.ui:231 msgid "_References" msgstr "Viittauks_et" #: data/unlocked_headerbar.ui:235 data/unlocked_headerbar.ui:249 msgid "_Properties" msgstr "_Ominaisuudet" #: data/unlocked_headerbar.ui:241 data/unlocked_headerbar.ui:255 msgid "_Delete" msgstr "_Poista" #: data/unlocked_headerbar.ui:263 msgid "New _Entry" msgstr "_Uusi tietue" #: data/unlocked_headerbar.ui:267 msgid "New _Group" msgstr "Uusi _ryhmä" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Turvallinen salasanasäilö" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Tallenna turvallisesti salasanasi, salaisuudet, muistiinpanot ja muut " "tiedot. Luo tai tuo Keepass-säilö." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Lopettaminen ei onnistu: säilöä ei voi tallentaa" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Salasanat eivät täsmää" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:237 msgid "Choose location for keyfile" msgstr "Valitse sijainti avaintiedostolle" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Luodaan…" #: passwordsafe/database_manager.py:404 msgid "Clone" msgstr "Kaksoiskappale" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:186 msgid "Choose current keyfile" msgstr "Valitse nykyinen avaintiedosto" #: passwordsafe/database_settings_dialog.py:187 msgid "_Open" msgstr "_Avaa" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Toteuta…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Tuntematon" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:398 passwordsafe/entry_page.py:467 msgid "Attribute key already exists" msgstr "Attribuuttiavain on jo olemassa" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:497 msgid "Select attachment" msgstr "Valitse liite" #: passwordsafe/entry_page.py:498 msgid "_Add" msgstr "_Lisää" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:547 msgid "Save attachment" msgstr "Tallenna liite" #: passwordsafe/entry_row.py:66 msgid "Title not specified" msgstr "Otsikkoa ei ole määritetty" #: passwordsafe/entry_row.py:72 msgid "No username specified" msgstr "Käyttäjätunnusta ei ole määritetty" #: passwordsafe/entry_row.py:138 msgid "Password copied to clipboard" msgstr "Salasana kopioitu leikepöydälle" #: passwordsafe/entry_row.py:144 msgid "Username copied to clipboard" msgstr "Käyttäjätunnus kopioitu leikepöydälle" #: passwordsafe/group_row.py:49 msgid "No group title specified" msgstr "Ryhmän otsikkoa ei määritetty" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:227 msgid "Choose a Keepass safe" msgstr "Valitse Keepass-säilö" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:237 passwordsafe/main_window.py:327 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 -tietokanta" #. pylint: disable=C0103 #: passwordsafe/main_window.py:265 msgid "Could not open file" msgstr "Tiedostoa ei voitu avata" #: passwordsafe/main_window.py:274 msgid "Could not open file: Mime type not supported" msgstr "Tiedostoa ei voitu avata: MIME-tyyppi ei ole tuettu" #: passwordsafe/main_window.py:284 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Säilö on jo avattu" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:316 msgid "Choose location for Keepass safe" msgstr "Valitse sijainti Keepass-säilölle" #: passwordsafe/main_window.py:319 msgid "_Create" msgstr "_Luo" #: passwordsafe/selection_ui.py:108 msgid "Operation aborted: Deleting currently active group" msgstr "Toimenpide peruttu: poistetaan parhaillaan aktiivista ryhmää" #: passwordsafe/selection_ui.py:142 msgid "Deletion completed" msgstr "Poisto valmistui" #: passwordsafe/selection_ui.py:229 msgid "Move completed" msgstr "Siirto valmistui" #: passwordsafe/selection_ui.py:231 msgid "Skipped moving group into itself" msgstr "Ohitettu ryhmän siirtäminen itseensä" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Valitse avaintiedosto" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Valitse avaintiedosto" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "Kdb-muoto ei ole tuettu" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "Säilön lukituksen avaaminen epäonnistui" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "Yritä uudelleen" #: passwordsafe/unlocked_database.py:470 msgid "Safe saved" msgstr "Säilö tallennettu" #: passwordsafe/unlocked_database.py:472 msgid "Could not save Safe" msgstr "Säilöä ei voitu tallentaa" #: passwordsafe/unlocked_database.py:483 msgid "Please wait. Another save is running." msgstr "Odota, toinen tallennus on meneillään." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:487 msgid "No changes made" msgstr "Muutoksia ei tehty" #: passwordsafe/unlocked_database.py:573 msgid "Copied to clipboard" msgstr "Kopioitu leikepöydälle" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:696 msgid "Safe locked due to inactivity" msgstr "Säilö on lukittu toimettomuuden vuoksi" #~ msgid "Generate" #~ msgstr "Luo" #~ msgid "Add" #~ msgstr "Lisää" #~ msgid "Save" #~ msgstr "Tallenna" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Tiedostoa \"{}\" ei voitu avata." #~ msgid "%s locked" #~ msgstr "%s lukittu" #~ msgid "About Password Safe" #~ msgstr "Tietoja - Salasanasäilö" #~ msgid "New" #~ msgstr "Uusi" #~ msgid "Database saved" #~ msgstr "Tietokanta tallennettu" #~ msgid "Show/hide password" #~ msgstr "Näytä/piilota salasana" #~ msgid "Close" #~ msgstr "Sulje" #~ msgid "File already exists" #~ msgstr "Tiedosto on jo olemassa" #~ msgid "Do you want to override it?" #~ msgstr "Haluatko korvata sen?" #~ msgid "Override" #~ msgstr "Korvaa" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Poistu tietueen sivulta" #~ msgid "A-Z" #~ msgstr "A-Ö" #~ msgid "Z-A" #~ msgstr "Ö-A" #~ msgid "Local" #~ msgstr "Paikallinen" #~ msgid "Discard" #~ msgstr "Hylkää" #~ msgid "Settings" #~ msgstr "Asetukset" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Edit" #~ msgstr "Muokkaa" #~ msgid "Create password…" #~ msgstr "Luo salasana…" #~ msgid "Create group…" #~ msgstr "Luo ryhmä…" #~ msgid "page3" #~ msgstr "page3" #~ msgid "About" #~ msgstr "Tietoja" #~ msgid "Keepass Client" #~ msgstr "Keepass-asiakas" #~ msgid "dialog-password" #~ msgstr "dialog-password" #~ msgctxt "shortcut window" #~ msgid "Create a new safe" #~ msgstr "Luo uusi säilö" #~ msgctxt "shortcut window" #~ msgid "Open an existing safe" #~ msgstr "Avaa olemassa oleva säilö" #~ msgid "Group added" #~ msgstr "Ryhmä lisätty" secrets-5.1/po/fr.po000066400000000000000000001153541415312107300144220ustar00rootroot00000000000000# French translation of PasswordSafe. # Copyright (C) 2019-2020 The GNOME Foundation. # This file is distributed under the same license as the PasswordSafe package. # Julien Humbert , 2019-2020. # msgid "" msgstr "" "Project-Id-Version: Password Safe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2020-12-11 14:29+0000\n" "PO-Revision-Date: 2020-12-12 09:33+0100\n" "Last-Translator: Alexandre Franke \n" "Language-Team: GNOME French Team \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 3.38.0\n" #: data/about_dialog.ui.in:10 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gérez vos mots de passe" #: data/about_dialog.ui.in:12 msgid "Learn more about Password Safe" msgstr "En apprendre plus sur Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:14 msgid "translator-credits" msgstr "" "Julien Humbert \n" "Alexandre Franke " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:8 msgid "Safety Info" msgstr "Information de sécurité" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:9 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Il est possible que des applications tierces créent une copie cachée ou " "temporaire non chiffrée de cette pièce jointe ! Poursuivez avec précaution." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:22 msgid "Back" msgstr "Retour" # Les mainteneurs vont supprimer cette chaîne #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:30 msgid "Proceed" msgstr "Poursuivre" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Protégez votre coffre-fort" #: data/create_database.ui:52 data/password_entry_row.ui:21 msgid "_Password" msgstr "Mot de _passe" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Utiliser un mot de passe pour sécuriser votre coffre-fort." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Fichier-c_lé" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Utiliser un fichier-clé pour sécuriser votre coffre-fort." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Composite" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Utiliser un mot de passe et un fichier-clé pour sécuriser votre coffre-fort." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Saisissez un mot de passe" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Choisissez le mot de passe du coffre-fort." #: data/create_database.ui:199 msgid "Password Match Check" msgstr "Vérification de mot de passe identique" #: data/create_database.ui:210 msgid "Repeat password for safe." msgstr "Saisissez à nouveau le mot de passe du coffre-fort." #: data/create_database.ui:285 msgid "Match Check Failed" msgstr "Vérification échouée" #: data/create_database.ui:296 msgid "Please try again" msgstr "Veuillez réessayer" #: data/create_database.ui:387 msgid "Generate Keyfile" msgstr "Générez un fichier-clé" #: data/create_database.ui:398 msgid "Set keyfile for safe" msgstr "Choisissez le fichier-clé de votre coffre-fort" #. Button to generate a password #: data/create_database.ui:408 data/password_generator_popover.ui:189 msgid "_Generate" msgstr "_Générer" #: data/create_database.ui:447 msgid "Safe Successfully Created" msgstr "Coffre-fort créé" #. Headerbar subtitle for the keepass safe unlock screen. #: data/create_database.ui:456 data/unlock_database.ui:253 msgid "Open Safe" msgstr "Ouvrir le coffre-fort" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:238 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:252 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Créer un coffre-fort" #: data/create_database_headerbar.ui:45 data/main_window.ui:126 #: data/unlock_database.ui:236 data/unlocked_headerbar.ui:199 msgid "_Preferences" msgstr "_Préférences" #: data/create_database_headerbar.ui:49 data/main_window.ui:130 #: data/unlock_database.ui:240 data/unlocked_headerbar.ui:203 msgid "_Keyboard Shortcuts" msgstr "_Raccourcis clavier" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:53 data/main_window.ui:134 #: data/unlock_database.ui:244 data/unlocked_headerbar.ui:207 msgid "_About Password Safe" msgstr "À _propos de Password Safe" #: data/color_entry_row.ui:19 msgid "Color" msgstr "Couleur" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Détails" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Chemin" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Taille de fichier" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nom du coffre-fort" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Version KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Date de création" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:737 msgid "Encryption Algorithm" msgstr "Algorithme de chiffrement" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algorithme de dérivation" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistiques" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Nombre de groupes" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Mots de passe" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Nombre d’entrées" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:12 #: data/settings_dialog.ui:17 msgid "General" msgstr "Général" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:160 passwordsafe/unlock_database.py:98 msgid "Password" msgstr "Mot de passe" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nouveau" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Générer un mot de passe" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onfirmer" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "A_ctuel" #: data/database_settings_dialog.ui:562 #: passwordsafe/database_settings_dialog.py:190 #: passwordsafe/database_settings_dialog.py:230 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/unlock_database.py:29 passwordsafe/unlock_database.py:101 msgid "Keyfile" msgstr "Fichier-clé" #: data/database_settings_dialog.ui:605 msgid "_Select current keyfile" msgstr "_Sélectionner le fichier-clé actuel" #: data/database_settings_dialog.ui:663 msgid "_Generate new keyfile" msgstr "_Générer un nouveau fichier-clé" #: data/database_settings_dialog.ui:683 msgid "_Apply Changes" msgstr "_Appliquer les changements" #: data/database_settings_dialog.ui:700 msgid "Authentication" msgstr "Authentification" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:764 msgid "ChaCha20: 256-bit" msgstr "ChaCha20 : 256 bits" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:781 msgid "Twofish: 256-bit" msgstr "Twofish : 256 bits" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:798 msgid "AES: 256-bit" msgstr "AES : 256 bits" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:818 msgid "Key Derivation Function" msgstr "Fonction de dérivation de clé" #: data/database_settings_dialog.ui:876 #: passwordsafe/database_settings_dialog.py:342 #: passwordsafe/database_settings_dialog.py:364 msgid "Apply Changes" msgstr "Appliquer les changements" #: data/entry_page.ui:25 msgid "Add Attachment" msgstr "Ajouter une pièce jointe" #: data/entry_page.ui:51 msgid "Attachments" msgstr "Pièces jointes" #: data/entry_page.ui:104 msgid "Secret_Photo.png" msgstr "Photo_Secrète.png" #: data/entry_page.ui:237 msgid "Remove attribute" msgstr "Retirer un attribut" #: data/entry_page.ui:276 msgid "Attributes" msgstr "Attributs" #: data/entry_page.ui:300 msgid "Key" msgstr "Clé" #: data/entry_page.ui:309 msgid "Value" msgstr "Valeur" #: data/entry_page.ui:322 msgid "Add attribute" msgstr "Ajouter un attribut" #: data/entry_page.ui:356 msgid "Icon" msgstr "Icône" #: data/entry_page.ui:635 data/group_page.ui:21 msgid "_Title" msgstr "_Titre" #: data/entry_page.ui:683 data/group_page.ui:69 msgid "_Notes" msgstr "_Notes" #: data/entry_page.ui:834 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:884 msgid "_Username" msgstr "Nom d’_utilisateur" #: data/entry_row.ui:92 msgid "Copy username to clipboard" msgstr "Copier le nom d’utilisateur dans le presse-papiers" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copier le mot de passe dans le presse-papiers" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:37 msgid "Secure password safe" msgstr "Coffre-fort à mots de passe sécurisé" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:51 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Stockez vos mots de passe, notes et données en toute sécurité. Créez " "ou importez un coffre-fort Keepass." #: data/main_window.ui:169 msgid "New…" msgstr "Nouveau…" #: data/main_window.ui:208 msgid "Open…" msgstr "Ouvrir…" #: data/main_window.ui:290 msgid "Recent Safes" msgstr "Coffres-forts récents" #: data/notes_dialog.ui:18 msgid "Copy" msgstr "Copier" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe est un gestionnaire de mots de passe utilisant le format " "Keepass v. 4. Il s’intègre parfaitement au bureau GNOME et fournit une " "interface simple et épurée pour la gestion des bases de données de mots de " "passe." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:142 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Gestionnaire de mots de passe pour GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;chiffrement;sécurisé;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Utiliser le thème GTK sombre" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Utiliser la variante sombre du thème GTK+. Notez que tous les thèmes GTK+ ne " "disposent pas d’une variante sombre." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Rouvrir la dernière base de données ouverte" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Ouvrir automatiquement l’écran de déverrouillage de la dernière base de " "données ouverte, sinon afficher l’écran d’accueil." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Enregistrer automatiquement chaque changement" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Enregistrer tous les changements instantanément dans la base de données. " "Notez que vous ne pouvez pas annuler les changements si l’enregistrement " "automatique est activé." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Verrouiller la base de données après X minutes" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Verrouiller automatiquement la base de données après un nombre donné de " "minutes pour améliorer la sécurité." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Effacer le presse-papiers après X secondes" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Efface le presse-papiers après y avoir copié le mot de passe pour des " "raisons de sécurité." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Afficher les mots de passe en clair" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Afficher par défaut les mots de passe dans les champs de saisie." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Taille de la fenêtre" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Se souvenir de la taille de la fenêtre." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Dernière base de données ouverte" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Chemin vers la dernière base de données ouverte." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Dernières bases de données ouvertes" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Liste des dernières bases de données ouvertes." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Se souvenir de la clé composite" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Se souvenir de la dernière clé composite utilisée pour déverrouiller la base " "de données." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Dernière clé composite utilisée" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Chemin vers la dernière clé composite utilisée pour déverrouiller la base de " "données." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Se souvenir de la méthode de déverrouillage" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Se souvenir de la dernière méthode de déverrouillage utilisée pour les " "déverrouillages futurs de la base de données." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "" "Créer une copie de sauvegarde lors du déverrouillage de la base de données" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Si une erreur se produit à l’enregistrement de la base de données, une copie " "de sauvegarde peut être trouvée dans ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordre de tri des groupes et entrées" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordre des lignes dans la vue des groupes et des entrées." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Dernière méthode de déverrouillage utilisée" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Utilisé pour enregistrer la dernière méthode de déverrouillage, afin " "d’accélérer le processus de déverrouillage." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Utiliser la recherche de texte intégral" #: data/org.gnome.PasswordSafe.gschema.xml:92 data/settings_dialog.ui:84 msgid "Performs a search across all values of entries." msgstr "Effectue une recherche sur toutes les valeurs d’une entrée." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Recherche dans le groupe courant" #: data/org.gnome.PasswordSafe.gschema.xml:97 data/settings_dialog.ui:100 msgid "Only search entries in the current group." msgstr "N’effectue la recherche que dans les entrées du groupe courant." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Utiliser des majuscules lors de la création de mot de passe" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Utiliser des caractères de A à Z majuscules lors de la création d’un mot de " "passe aléatoire." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Utiliser des minuscules lors de la création de mot de passe" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Utiliser des caractères de a à z minuscules lors de la création de mot de " "passe aléatoire." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Utiliser des nombres lors de la création de mot de passe" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "" "Utiliser des nombres de 0 à 9 lors de la création de mot de passe aléatoire." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Utiliser des symboles lors de la création de mot passe" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Utiliser des symboles ASCII non alphanumériques lors de la création de mot " "de passe aléatoire." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Longueur du mot de passe lors de la création du mot de passe" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:170 msgid "Number of single characters when generating a password." msgstr "Nombre de caractères à utiliser lors de la création du mot de passe." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Nombre de mots lors de la création de la phrase de passe" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:259 msgid "Number of words to use when generating a passphrase." msgstr "Nombre de mots à utiliser lors de la création d’une phrase de passe." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Séparateur lors de la création d’une phrase de passe" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:277 msgid "Word separator to use when generating a passphrase." msgstr "" "Séparateur de mots à utiliser lors de la création d’une phrase de passe." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Longueur" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caractères" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Mots" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:276 msgid "Separator" msgstr "Séparateur" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Saisissez un caractère ici…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Phrase de passe" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propriétés" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Accédée" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modifiée" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Créée" #: data/references_dialog.ui:20 msgid "Code" msgstr "Code" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propriété" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titre" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nom d’utilisateur" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notes" #: data/references_dialog.ui:267 msgid "References" msgstr "Références" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntaxe" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "" "La syntaxe de substitution pour les références des champs de saisie est la " "suivante :" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Afficher les codes de champ" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identifiant" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Référence" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "Chaque entrée possède un identifiant unique appelé UUID.\n" "Il est possible de le trouver dans les propriétés de l’entrée." #: data/search.ui:79 msgid "No search results" msgstr "Aucun résultat de recherche" #: data/search.ui:117 msgid "Enter search term" msgstr "Saisissez un terme de recherche" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "" "Souhaitez-vous enregistrer tous les coffres avec des changements non " "enregistrés ?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "Choisissez les coffres que vous souhaitez enregistrer." #: data/quit_dialog.ui:31 msgid "Quit" msgstr "Quitter" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:10 msgid "Unsaved Changes" msgstr "Changements non enregistrés" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:11 msgid "Do you want to write all changes to the safe?" msgstr "Souhaitez-vous enregistrer tous les changements apportés au coffre ?" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:24 msgid "Quit Without Saving" msgstr "Quitter sans enregistrer" #. Cancel exiting the program #: data/save_dialog.ui:34 msgid "Don't Quit" msgstr "Ne pas quitter" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:41 msgid "Save and Quit" msgstr "Enregistrer et quitter" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Déplacer la sélection" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Supprimer la sélection" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Annuler" #: data/settings_dialog.ui:21 msgid "_Dark Theme" msgstr "Thème so_mbre" #: data/settings_dialog.ui:22 msgid "Use dark GTK theme." msgstr "Utiliser le thème GTK sombre." #: data/settings_dialog.ui:37 msgid "_Hide First Start Screen" msgstr "_Masquer l’écran de démarrage" #: data/settings_dialog.ui:38 msgid "Reopen last opened safe." msgstr "Rouvrir le dernier coffre-fort ouvert." #: data/settings_dialog.ui:56 passwordsafe/main_window.py:407 msgid "Safe" msgstr "Coffre" #: data/settings_dialog.ui:60 msgid "_Save Automatically" msgstr "_Enregistrer automatiquement" #: data/settings_dialog.ui:61 msgid "Save every change automatically." msgstr "Enregistrer automatiquement chaque changement." #. Button tooltip in headerbar to open search page #: data/settings_dialog.ui:79 data/unlocked_headerbar.ui:89 msgid "Search" msgstr "Rechercher" #: data/settings_dialog.ui:83 msgid "_Full-Text Search" msgstr "_Recherche de texte intégral" #: data/settings_dialog.ui:99 msgid "_Current Group Search" msgstr "Groupe de recherche _courant" #: data/settings_dialog.ui:118 data/unlock_database.ui:75 #: data/unlock_database.ui:199 data/unlock_database.ui:337 msgid "Unlock" msgstr "Déverrouiller" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:122 msgid "Remember Composite _Key" msgstr "Se souvenir de la c_lé composite" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:123 msgid "Remember last used composite key." msgstr "Se souvenir de la dernière clé composite utilisée." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:138 msgid "Remember _Unlock Method" msgstr "Se souvenir de la méthode de _déverrouillage" #: data/settings_dialog.ui:139 msgid "Enable faster unlocking." msgstr "Permet un déverrouillage rapide." #: data/settings_dialog.ui:165 msgid "Password Generation" msgstr "Création de mot de passe" #: data/settings_dialog.ui:169 msgid "Password Length" msgstr "Longueur de mot de passe" #: data/settings_dialog.ui:187 msgid "_Uppercase Characters" msgstr "Ma_juscules" #: data/settings_dialog.ui:188 msgid "Use uppercase characters A-Z when generating a password." msgstr "" "Utiliser des caractères de A à Z majuscules lors de la création du mot de " "passe." #: data/settings_dialog.ui:203 msgid "_Lowercase Characters" msgstr "Minuscu_les" #: data/settings_dialog.ui:204 msgid "Use lowercase characters a-z when generating a password." msgstr "" "Utiliser des caractères de a à z minuscules lors de la création du mot de " "passe." #: data/settings_dialog.ui:219 msgid "_Numeric Characters" msgstr "_Nombres" #: data/settings_dialog.ui:220 msgid "Use numeric characters when generating a password." msgstr "Utiliser des nombres lors de la création du mot de passe." #: data/settings_dialog.ui:235 msgid "_Special Characters" msgstr "Caractères _spéciaux" #: data/settings_dialog.ui:236 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "" "Utiliser des symboles ASCII non-alphanumériques lors de la création du mot " "de passe." #: data/settings_dialog.ui:254 msgid "Passphrase Generation" msgstr "Création de phrase de passe" #: data/settings_dialog.ui:258 msgid "Passphrase Length" msgstr "Longueur de la phrase de passe" #: data/settings_dialog.ui:286 msgid "Enter Character" msgstr "Saisissez un caractère" #: data/settings_dialog.ui:300 data/settings_dialog.ui:305 msgid "Security" msgstr "Sécurité" #: data/settings_dialog.ui:309 msgid "Safe Lock Timeout" msgstr "Délai avant verrouillage du coffre-fort" #: data/settings_dialog.ui:310 msgid "Lock safe on idle after X minutes." msgstr "Verrouiller le coffre-fort après X minutes d’inactivité." #: data/settings_dialog.ui:327 msgid "Clear Clipboard" msgstr "Effacer le presse-papiers" #: data/settings_dialog.ui:328 msgid "Clear clipboard after X seconds." msgstr "Effacer le presse-papiers après X secondes." #: data/settings_dialog.ui:345 msgid "_Show Password Fields" msgstr "A_fficher les champs de mot de passe" #: data/settings_dialog.ui:346 msgid "Display passwords in plain text." msgstr "Afficher les mots de passe en clair." #: data/settings_dialog.ui:361 msgid "Clear Recent List" msgstr "Effacer la liste des coffres récents" #: data/settings_dialog.ui:362 msgid "Clear the recently opened safes list." msgstr "Effacer la liste des coffres-forts récemment ouverts." #: data/shortcuts_overview.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Application" #: data/shortcuts_overview.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Créer coffre-fort" #: data/shortcuts_overview.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Ouvrir coffre-fort" #: data/shortcuts_overview.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Ouvrir préférences" #: data/shortcuts_overview.ui:38 msgctxt "Shortcut window description" msgid "Quit" msgstr "Quitter" #: data/shortcuts_overview.ui:47 msgctxt "Shortcut window description" msgid "Safe" msgstr "Coffre-fort" #: data/shortcuts_overview.ui:51 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Verrouiller coffre-fort" #: data/shortcuts_overview.ui:58 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Enregistrer coffre-fort" #: data/shortcuts_overview.ui:65 msgctxt "Shortcut window description" msgid "Open search" msgstr "Ouvrir barre de recherche" #: data/shortcuts_overview.ui:72 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Créer entrée" #: data/shortcuts_overview.ui:79 msgctxt "Shortcut window description" msgid "Create group" msgstr "Créer groupe" #: data/shortcuts_overview.ui:88 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entrée" #: data/shortcuts_overview.ui:92 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copier mot de passe" #: data/shortcuts_overview.ui:99 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copier le nom d’utilisateur" #: data/shortcuts_overview.ui:106 msgctxt "Shortcut window description" msgid "Go back" msgstr "Revenir en arrière" #: data/unlock_database.ui:25 msgid "Enter password and select keyfile to unlock" msgstr "" "Saisissez le mot de passe et choisissez le fichier-clé pour déverrouiller" #: data/unlock_database.ui:40 data/unlock_database.ui:154 #: data/unlock_database.ui:380 msgid "Safe is Locked" msgstr "Coffre-fort verrouillé" #: data/unlock_database.ui:139 msgid "Select keyfile to unlock" msgstr "Choisissez le fichier-clé pour déverrouiller" #: data/unlock_database.ui:186 msgid "Open Keyfile" msgstr "Ouvrir fichier-clé" #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:226 data/unlocked_headerbar.ui:185 msgid "_New Safe" msgstr "_Nouveau coffre-fort" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/unlock_database.ui:230 data/unlocked_headerbar.ui:189 msgid "_Open Safe" msgstr "_Ouvrir le coffre-fort" #: data/unlock_database.ui:365 msgid "Enter password to unlock" msgstr "Saisissez le mot de passe pour déverrouiller" #: data/unlock_database.ui:448 msgid "Failed to unlock safe" msgstr "Échec du déverrouillage du coffre-fort" #: data/unlocked_database.ui:113 msgid "Empty group" msgstr "Groupe vide" #: data/unlocked_headerbar.ui:59 msgid "Click on a checkbox to select" msgstr "Cliquez une case à cocher pour sélectionner" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:105 msgid "Selection Mode" msgstr "Mode de sélection" #: data/unlocked_headerbar.ui:157 msgid "_Save" msgstr "_Enregistrer" #: data/unlocked_headerbar.ui:163 msgid "_Lock" msgstr "_Verrouiller" #: data/unlocked_headerbar.ui:168 msgid "So_rting" msgstr "T_ri" #: data/unlocked_headerbar.ui:170 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:174 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "_Dernier ajouté" #: data/unlocked_headerbar.ui:193 msgid "Sa_fe Settings" msgstr "Paramètres du co_ffre-fort" #: data/unlocked_headerbar.ui:215 msgid "Select _All" msgstr "_Tout sélectionner" #: data/unlocked_headerbar.ui:219 msgid "Select _None" msgstr "Tout _désélectionner" #: data/unlocked_headerbar.ui:227 msgid "D_uplicate" msgstr "D_upliquer" #: data/unlocked_headerbar.ui:231 msgid "_References" msgstr "_Références" #: data/unlocked_headerbar.ui:235 data/unlocked_headerbar.ui:249 msgid "_Properties" msgstr "_Propriétés" #: data/unlocked_headerbar.ui:241 data/unlocked_headerbar.ui:255 msgid "_Delete" msgstr "_Supprimer" #: data/unlocked_headerbar.ui:263 msgid "New _Entry" msgstr "Nouvelle _entrée" #: data/unlocked_headerbar.ui:267 msgid "New _Group" msgstr "Nouveau _groupe" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:195 #: passwordsafe/database_settings_dialog.py:227 msgid "Choose location for keyfile" msgstr "Choisissez l’emplacement du fichier-clé" #: passwordsafe/create_database.py:197 #: passwordsafe/database_settings_dialog.py:228 msgid "Generate" msgstr "Générer" #: passwordsafe/create_database.py:206 msgid "Generating…" msgstr "Génération en cours…" #: passwordsafe/database_manager.py:404 msgid "Clone" msgstr "Clone" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:184 msgid "Choose current keyfile" msgstr "Choisissez le fichier-clé actuel" #: passwordsafe/database_settings_dialog.py:185 msgid "Open" msgstr "Ouvrir" #: passwordsafe/database_settings_dialog.py:298 #: passwordsafe/database_settings_dialog.py:353 msgid "Apply…" msgstr "Appliquer…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:395 msgid "Unknown" msgstr "Inconnu" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:398 msgid "AES 256-bit" msgstr "AES 256 bits" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:401 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256 bits" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:404 msgid "Twofish 256-bit" msgstr "Twofish 256 bits" #: passwordsafe/entry_page.py:396 passwordsafe/entry_page.py:465 msgid "Attribute key already exists" msgstr "Cette clé d’attribut existe déjà" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:495 msgid "Select attachment" msgstr "Sélectionnez une pièce jointe" #: passwordsafe/entry_page.py:496 msgid "Add" msgstr "Ajouter" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:538 msgid "Save attachment" msgstr "Enregistrer la pièce jointe" #: passwordsafe/entry_page.py:539 msgid "Save" msgstr "Enregistrer" #: passwordsafe/entry_row.py:66 msgid "Title not specified" msgstr "Aucun titre indiqué" #: passwordsafe/entry_row.py:72 msgid "No username specified" msgstr "Aucun nom d’utilisateur indiqué" #: passwordsafe/entry_row.py:134 msgid "Password copied to clipboard" msgstr "Mot de passe copié dans le presse-papiers" #: passwordsafe/entry_row.py:140 msgid "Username copied to clipboard" msgstr "Nom d’utilisateur copié dans le presse-papiers" #: passwordsafe/group_row.py:49 msgid "No group title specified" msgstr "Aucun titre de groupe indiqué" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:303 msgid "Choose a Keepass safe" msgstr "Choisissez un coffre-fort Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:313 passwordsafe/main_window.py:413 msgid "KeePass 3.1/4 Database" msgstr "Base de données KeePass 3.1/4" #: passwordsafe/main_window.py:345 msgid "Unable to open file \"{}\"." msgstr "Impossible d’ouvrir le fichier « {} »." #: passwordsafe/main_window.py:348 msgid "File type {} ({}) is not supported." msgstr "Le type de fichier {} ({}) n’est pas pris en charge." #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:400 msgid "Choose location for Keepass safe" msgstr "Choisissez un emplacement pour le coffre-fort Keepass" #: passwordsafe/main_window.py:403 msgid "Create" msgstr "Créer" #: passwordsafe/selection_ui.py:153 msgid "Deletion completed" msgstr "Suppression effectuée" #: passwordsafe/selection_ui.py:235 msgid "Move completed" msgstr "Déplacement effectué" #: passwordsafe/selection_ui.py:237 msgid "Skipped moving group into itself" msgstr "Annulation du déplacement du groupe dans lui-même" #. NOTE: Composite unlock is a authentication method where both password and keyfile are required #: passwordsafe/unlock_database.py:105 msgid "Composite" msgstr "Composite" #: passwordsafe/unlock_database.py:221 msgid "Safe already opened" msgstr "Coffre-fort déjà ouvert" #: passwordsafe/unlock_database.py:244 msgid "Choose a keyfile" msgstr "Choisir un fichier-clé" #: passwordsafe/unlock_database.py:283 msgid "Choose Keyfile" msgstr "Choisir un fichier-clé" #: passwordsafe/unlock_database.py:558 msgid "Try again" msgstr "Réessayer" #: passwordsafe/unlocked_database.py:468 msgid "Safe saved" msgstr "Coffre-fort enregistré" #: passwordsafe/unlocked_database.py:472 msgid "Please wait. Another save is running." msgstr "Veuillez patienter. Un autre enregistrement est en cours." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:476 msgid "No changes made" msgstr "Aucun changement effectué" #: passwordsafe/unlocked_database.py:562 msgid "Copied to clipboard" msgstr "Copié dans le presse-papiers" #: passwordsafe/unlocked_database.py:726 #, python-format msgid "%s locked" msgstr "%s verrouillé" #: passwordsafe/unlocked_database.py:732 msgid "Keepass safe locked due to inactivity" msgstr "Le coffre-fort Keepass a été verrouillé par inactivité" secrets-5.1/po/hr.po000066400000000000000000001125021415312107300144140ustar00rootroot00000000000000# Croatian translation for PasswordSafe. # Copyright (C) 2020 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Milo Ivir , 2020., 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-01-27 08:11+0000\n" "PO-Revision-Date: 2021-01-27 14:27+0100\n" "Last-Translator: Milo Ivir \n" "Language-Team: \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.4.2\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Upravljaj lozinkama" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Saznaj više o programu „Trezor za lozinke”" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Milo Ivir " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Sigurnosne informacije" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Moguće je da će vanjski programi stvoriti nešifrirane skrivene ili " "privremene kopije ove datoteke! Nastavi s oprezom." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "Na_trag" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Nastavi" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Ukloni svojstvo" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Boja" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Trezor za lozinke" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Stvori trezor" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Postavke" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Tipkovnički prečaci" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_O programu Trezor za lozinke" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Zaštiti trezor" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Lozinka" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Zaštiti trezor pomoću lozinke." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Datoteka ključa" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Zaštiti trezor pomoću datoteke ključa." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Sastavljeno" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Zaštiti trezor pomoću kombinacije lozinke i datoteke ključa." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Upiši lozinku" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Postavi lozinku za trezor." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Provjera poklapanja lozinki" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Ponovi lozinku za trezor." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Neuspjela provjera poklapanja" #: data/create_database.ui:299 msgid "Please try again." msgstr "Pokušaj ponovo." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Potvrdi" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Generiraj datoteku ključa" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Postavi datoteku ključa za trezor" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Generiraj" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Trezor je uspješno stvoren" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Otvori trezor" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalji" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Staza" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Veličina datoteke" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Ime trezora" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass verzija" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Datum stvaranja" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritam za šifriranje" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritam za izvođenje" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistika" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Broj grupa" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Lozinke" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Broj zapisa" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Opće" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Lozinka" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nova" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Generiraj lozinku" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "P_otvrdi" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Trenutačna" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:30 msgid "Keyfile" msgstr "Datoteka ključa" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Odaberi trenutačnu datoteku ključa" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Generiraj novu datoteku ključa" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Primijeni promjene" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentifikacija" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bitni" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bitni" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bitni" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funkcija za izvođenje ključeva" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Primijeni promjene" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Naslov" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Korisničko ime" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Bilješke" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikona" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Privitci" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Dodaj privitak" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Svojstva" #: data/entry_page.ui:318 msgid "Key" msgstr "Ključ" #: data/entry_page.ui:325 msgid "Value" msgstr "Vrijednost" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Dodaj svojstvo" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Kopiraj korisničko ime u međuspremnik" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Kopiraj lozinku u međuspremnik" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Stvori trezor" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Otvori trezor" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Otvori postavke" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Prikaži tipkovničke prečace" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Zatvori program" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Trezor" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Zaključaj trezor" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Spremi trezor" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Otvori pretragu" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Stvori zapis" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Stvori grupu" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Zapis" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopiraj lozinku" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Kopiraj korisničko ime" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Idi natrag" #: data/main_window.ui:25 msgid "New…" msgstr "Nova …" #: data/main_window.ui:38 msgid "Open…" msgstr "Otvori …" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopiraj" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "„Trezor za lozinke” je program za upravljanje lozinkama koji koristi KeePass " "format v.4. Savršeno se integrira s radnom površinom GNOME i pruža " "jednostavno i uredno sučelje za upravljanje bazama podataka za lozinke." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:164 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Upravljač lozinki za GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;šifriranje;zaštita;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Koristi tamnu GTK temu" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Koristi tamnu inačicu GTK+ teme. Napomena: Tamna tema ne postoji za svaku GTK" "+ temu." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Ponovo otvori zadnju otvorenu bazu podataka" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Automatski otvori prozor otključavanja zadnje otvorene baze podataka, u " "suprotnom prikaži prozor dobrodošlice." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Automatski spremi svaku promjenu" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Spremi bazu podataka pri svakoj promjeni. Ako je automatsko spremanje " "aktivirano, promjene se ne mogu poništiti." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Zaključaj bazu podataka nakon x minuta" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Za veću sigurnost, automatski zaključaj bazu podataka nakon određenog broja " "minuta." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Isprazni međuspremnik nakon x sekunda" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Nakon kopiranja lozinke, iz sigurnosnih razloga isprazni međuspremnik." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Prikaži lozinke kao tekst" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Standardno prikaži lozinke u poljima zapisa." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Veličina prozora" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Zapamti veličinu prozora." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Zadnja otvorena baza podataka" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Staza do zadnje otvorene baze podataka." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Zadnje otvorene baze podataka" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Popis zadnjih otvorenih baza podataka." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Zapamti sastavljani ključ" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Zapamti zadnji korišteni sastavljani ključ za otključavanje baze podataka." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Zadnji korišteni sastavljeni ključ" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Staza do zadnjeg korištenog sastavljanog ključ za otključavanje." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Zapamti način otključavanja" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Zapamti zadnji korišteni način otključavanja za buduća otključavanja baze " "podataka." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Spremi sigurnosnu kopiju baze podataka pri otključavanju" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Ako se tijekom spremanja baze podataka dogodi greška, sigurnosnu kopiju " "možeš pronaći u ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Redoslijed grupa i zapisa" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Redoslijed redova u prikazu grupa i zapisa." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Zadnji korišteni način otključavanja" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Koristi se za spremanje zadnjeg korištenog načina otključavanja, čime se " "omogućuje brže otklučavanje." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Koristi pretraživanje teksta" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Pretražuje sve vrijednosti zapisa." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Pretraživanje trenutačne grupe" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Pretraži samo zapise u trenutačnoj grupi." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Koristi velika slova za generiranje lozinke" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Koristi velika slova A-Z za generiranje slučajne lozinke." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Koristi mala slova za generiranje lozinke" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Koristi mala slova a-z za generiranje slučajne lozinke." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Koristi brojke za generiranje lozinke" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Koristi brojke 0-9 za generiranje slučajne lozinke." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Koristi simbole za generiranje lozinke" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Koristi ne-alfanumeričke ASCII znakove za generiranje slučajne lozinke." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Broj znakova za generiranje lozinke" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:120 msgid "Number of single characters when generating a password." msgstr "Broj znakova za generiranje lozinke." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Broj riječi za generiranje tajnog izraza" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Broj riječi za generiranje tajnog izraza." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Znak razdvajanja za generiranje tajnog izraza" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Znak razdvajanja za generiranje tajnog izraza." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Broj znakova" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Znakovi" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Riječi" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Znak razdvajanja" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Ovdje upiši znak …" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Datoteka lozinke" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Svojstva" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Pristupljeno" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Promijenjeno" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Stvoreno" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Želiš li spremiti sve trezore s nespremljenim promjenama?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Odaberi trezore koje želiš spremiti." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "O_dustani" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Zatvori program" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Nedavni trezori" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kȏd" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Svojstvo" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Naziv" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Korisničko ime" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Bilješke" #: data/references_dialog.ui:267 msgid "References" msgstr "Reference" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaksa" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Sintaksa rezerviranog mjesta za reference polja je sljedeća:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Prikaži kodove polja" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identifikator" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referenca" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Svaki zapis ima jedinstveni identifikator, tzv. UUID. Može se pronaći u " "svojstvima zapisa." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Nespremljene promjene" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Želiš li zapisati sve promjene u trezor?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Zatvori bez spremanja" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Nemoj zatvoriti" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Spremi i zatvori program" #: data/search.ui:70 msgid "Enter search term" msgstr "Upiši traženi pojam" #: data/search.ui:104 msgid "No search results" msgstr "Nema rezultata" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Premjesti označene" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Izbriši označene" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Odustani" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tamna tema" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Koristi tamnu GTK temu." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Sakrij prozor prvog pokretanja" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Ponovo otvori zadnji otvoreni trezor." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Trezor" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "Automatski _spremi" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Automatski spremi svaku promjenu." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Otključaj" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Zapamti sastavljani _ključ" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Zapamti zadnji korišteni sastavljeni ključ." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Zapamti način _otključavanja" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Omogući brže otključavanje." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Generiranje lozinke" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Broj znakova lozinke" #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Velika slova" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Koristi velika slova A-Z za generiranje lozinke." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "_Mala slova" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Koristi mala slova a-z za generiranje lozinke." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Numerički znakovi" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Koristi numeričke znakove za generiranje lozinke." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "_Posebni znakovi" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Koristi ne-alfanumeričke ASCII znakove za generiranje lozinke." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Generiranje tajnog izraza" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Broj znakova tajnog izraza" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Upiši znak" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Sigurnost" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Vrijeme do zaključavanja trezora" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Zaključaj trezor nakon x minuta neaktivnosti." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Isprazni međuspremnik" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Isprazni međuspremnik nakon x sekunda." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Prikaži polja lozinke" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Prikaži lozinke kao tekst." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Isprazni popis nedavnih" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Isprazni popis nedavno otvorenih trezora." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Novi trezor" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Otvori trezor" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Trezor je zaključan" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Za otključavanje, upiši lozinku" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Za otključavanje, odaberi datoteku ključa" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Otvori datoteku ključa" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Za otključavanje, upiši lozinku i odaberi datoteku ključa" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Sastavljeno" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Prazna grupa" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Odaberi pritiskom na potvrdni okvir" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Pretraga" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Modus označavanja" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Spremi" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Zaključaj" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "_Redoslijed" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Za_dnji dodani" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "_Postavke trezora" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Oz_nači sve" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "O_dznači sve" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_upliciraj" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Reference" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Svojstva" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Izbriši" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Novi _zapis" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Nova _grupa" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Sigurna lozinka trezora" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Spremi lozinke, bilješke i podatke na siguran način. Stvori ili " "uvezi novi KeePass trezor." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Neuspjelo zatvaranje programa: Neuspjelo spremanje trezora" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Lozinke se ne poklapaju" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Odaberi mjesto datoteke ključa" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Generiranje …" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Kloniraj" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Odaberi trenutačnu datoteku ključa" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Otvori" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Primijeni …" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Nepoznat" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bitni" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bitni" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bitni" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Ključ svojstva već postoji" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Odaberi privitak" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Dodaj" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Spremi privitak" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:101 msgid "Username copied to clipboard" msgstr "Korisničko ime kopirano u međuspremnik" #: passwordsafe/entry_row.py:94 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Lozinka kopirana u međuspremnik" #: passwordsafe/entry_row.py:113 passwordsafe/entry_row.py:124 #: passwordsafe/group_row.py:100 msgid "Title not specified" msgstr "Naziv nije određen" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Odaberi jedan KeePass trezor" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Baza podataka KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Neuspjelo otvaranje datoteke" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Neuspjelo otvaranje datoteke: Mime vrsta nije podržana" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Trezor je već otvoren" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Odaberi mjesto za KeePass trezor" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Stvori" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operacija je prekinuta: Briše se trenutačno aktivna grupa" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Brisanje je završeno" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operacija je prekinuta: Premješta se trenutačno aktivna grupa" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Premještanje je završeno" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Odaberi datoteku ključa" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Odaberi datoteku ključa" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "kdb format nije podržan" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "Neuspjelo otključavanje trezora" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "Pokušaj ponovo" #: passwordsafe/unlocked_database.py:419 msgid "Safe saved" msgstr "Trezor je spremljen" #: passwordsafe/unlocked_database.py:421 msgid "Could not save Safe" msgstr "Neuspjelo spremanje trezora" #: passwordsafe/unlocked_database.py:430 msgid "Please wait. Another save is running." msgstr "Pričekaj. U tijeku je jedno drugo spremanje." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:434 msgid "No changes made" msgstr "Ništa nije promijenjeno" #: passwordsafe/unlocked_database.py:470 msgid "Copied to clipboard" msgstr "Kopirano u međuspremnik" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:552 msgid "Safe locked due to inactivity" msgstr "Trezor je zaključan zbog neaktivnosti" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} odabran unos" msgstr[1] "{} odabrana unosa" msgstr[2] "{} odabranih unosa" secrets-5.1/po/hu.po000066400000000000000000001232501415312107300144210ustar00rootroot00000000000000# Hungarian translation for PasswordSafe. # Copyright (C) 2019, 2020, 2021 Free Software Foundation, Inc. # This file is distributed under the same license as the PasswordSafe package. # # Balázs Meskó , 2019, 2021. # Gabor Kelemen , 2019. # Balázs Úr , 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-09-01 21:46+0000\n" "PO-Revision-Date: 2021-09-14 00:28+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 19.12.3\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 #| msgid "Secure password safe" msgid "Manage your passwords" msgstr "Kezelje a jelszavait" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Tudjon meg többet a Jelszókezelőről" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Meskó Balázs " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Biztonsági információk" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Előfordulhat, hogy külső alkalmazások titkosítatlan rejtett vagy ideiglenes " "másolatokat készítenek a mellékletről! Folytassa körültekintően." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 #| msgid "Back" msgid "_Back" msgstr "_Vissza" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 #| msgid "Proceed" msgid "_Proceed" msgstr "_Folytatás" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Tulajdonság eltávolítása" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Szín" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Jelszókezelő" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Széf létrehozása" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 #| msgid "Preferences" msgid "_Preferences" msgstr "_Beállítások" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 #| msgid "Keyboard Shortcuts" msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 #| msgid "About Password Safe" msgid "_About Password Safe" msgstr "A Jelszókezelő _névjegye" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Védje meg a széfjét" #: data/create_database.ui:52 data/password_entry_row.ui:14 #| msgid "Password" msgid "_Password" msgstr "_Jelszó" #: data/create_database.ui:53 #| msgid "Use a password to secure your safe" msgid "Use a password to secure your safe." msgstr "Jelszó használata a széf biztonságossá tételéhez." #: data/create_database.ui:65 #| msgid "Keyfile" msgid "_Keyfile" msgstr "_Kulcsfájl" #: data/create_database.ui:66 #| msgid "Use a keyfile to secure your safe" msgid "Use a keyfile to secure your safe." msgstr "Kulcsfájl használata a széf biztonságossá tételéhez." #: data/create_database.ui:78 #| msgid "Composite" msgid "_Composite" msgstr "Össze_tett" #: data/create_database.ui:79 #| msgid "Use a password in combination with a keyfile to secure your safe" msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Kulcsfájl és jelszó együttes használata a széf biztonságossá tételéhez." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Adja meg a jelszót" #: data/create_database.ui:126 #| msgid "Set password for safe" msgid "Set password for safe." msgstr "Adja meg a széf jelszavát." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Jelszóegyezés ellenőrzése" #: data/create_database.ui:209 #| msgid "Repeat password for safe" msgid "Repeat password for safe." msgstr "Ismételje meg a széf jelszavát." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Jelszóellenőrzés sikertelen" #: data/create_database.ui:299 #| msgid "Please try again" msgid "Please try again." msgstr "Próbálja meg újra." #: data/create_database.ui:348 #| msgid "Confirm" msgid "_Confirm" msgstr "_Megerősítés" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Kulcsfájl előállítása" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Adja meg a széf kulcsfájlját" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 #| msgid "Generate" msgid "_Generate" msgstr "_Előállítás" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Széf sikeresen létrehozva" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 #| msgid "Open Safe" msgid "_Open Safe" msgstr "Széf _kinyitása" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Részletek" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Útvonal" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Fájlméret" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Széf neve" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass verzió" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Létrehozás dátuma" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:728 msgid "Encryption Algorithm" msgstr "Titkosítási algoritmus" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Származtatási algoritmus" #. Statistics #: data/database_settings_dialog.ui:299 msgid "Stats" msgstr "Statisztikák" #: data/database_settings_dialog.ui:319 msgid "Number of Groups" msgstr "Csoportok száma" #: data/database_settings_dialog.ui:336 msgid "Passwords" msgstr "Jelszavak" #: data/database_settings_dialog.ui:353 msgid "Number of Entries" msgstr "Bejegyzések száma" #: data/database_settings_dialog.ui:409 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Általános" #: data/database_settings_dialog.ui:429 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Jelszó" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:446 msgid "_New" msgstr "Ú_j" #: data/database_settings_dialog.ui:467 data/database_settings_dialog.ui:468 msgid "Generate Password" msgstr "Jelszó előállítása" #. Retype the new password to confirm #: data/database_settings_dialog.ui:481 #| msgid "Confirm" msgid "C_onfirm" msgstr "_Megerősítés" #. Current password #: data/database_settings_dialog.ui:513 #| msgid "Current" msgid "_Current" msgstr "_Jelenlegi" #: data/database_settings_dialog.ui:562 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Kulcsfájl" #: data/database_settings_dialog.ui:605 #| msgid "Select current keyfile" msgid "_Select current keyfile" msgstr "_Válassza ki a jelenlegi kulcsfájlt" #: data/database_settings_dialog.ui:663 #| msgid "Generate new keyfile" msgid "_Generate new keyfile" msgstr "Új kulcsfájl _előállítása" #: data/database_settings_dialog.ui:683 #| msgid "Apply Changes" msgid "_Apply Changes" msgstr "Módosítások _alkalmazása" #: data/database_settings_dialog.ui:700 msgid "Authentication" msgstr "Hitelesítés" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:754 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256 bites" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:771 msgid "Twofish: 256-bit" msgstr "Twofish: 256 bites" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:788 msgid "AES: 256-bit" msgstr "AES: 256 bites" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:805 msgid "Key Derivation Function" msgstr "Kulcsszármaztatási függvény" #: data/database_settings_dialog.ui:859 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Módosítások alkalmazása" #: data/entry_page.ui:28 data/group_page.ui:27 #| msgid "Title" msgid "_Title" msgstr "_Cím" #: data/entry_page.ui:54 #| msgid "Username" msgid "_Username" msgstr "_Felhasználónév" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 #| msgid "Notes" msgid "_Notes" msgstr "_Jegyzetek" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikon" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Mellékletek" #: data/entry_page.ui:271 #| msgid "Add Attachment" msgid "_Add Attachment" msgstr "Melléklet hozzá_adása" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Tulajdonságok" #: data/entry_page.ui:318 msgid "Key" msgstr "Kulcs" #: data/entry_page.ui:325 msgid "Value" msgstr "Érték" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Tulajdonság hozzáadása" #: data/entry_row.ui:93 #| msgid "Copied to clipboard" msgid "Copy username to clipboard" msgstr "Felhasználónév másolása a vágólapra" #: data/entry_row.ui:108 #| msgid "Copied to clipboard" msgid "Copy password to clipboard" msgstr "Jelszó másolása a vágólapra" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Alkalmazás" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Széf létrehozása" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Széf kinyitása" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Beállítások megnyitása" #: data/gtk/help-overlay.ui:38 #| msgid "Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Gyorsbillentyűk megjelenítése" #: data/gtk/help-overlay.ui:45 #| msgid "Quit" msgctxt "Shortcut window description" msgid "Quit" msgstr "Kilépés" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Széf" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Széf zárolása" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Széf mentése" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Keresés megnyitása" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Bejegyzés létrehozása" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Csoport létrehozása" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Bejegyzés" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Jelszó másolása" #: data/gtk/help-overlay.ui:106 #| msgid "Username" msgctxt "Shortcut window description" msgid "Copy username" msgstr "Felhasználónév másolása" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Ugrás vissza" #: data/main_window.ui:25 msgid "New…" msgstr "Új…" #: data/main_window.ui:38 msgid "Open…" msgstr "Megnyitás…" #: data/notes_dialog.ui:18 #| msgid "Copy" msgid "_Copy" msgstr "_Másolás" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 #| msgid "" #| "Password Safe is a password manager which makes use of the Keepass v.4 " #| "format. It integrates perfectly with the GNOME desktop and provides an " #| "easy and uncluttered interface for the management of password databases." msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "A Jelszókezelő a Keepass v.4 formátumot használja. Tökéletesen beépül a " "GNOME asztali környezetbe, egyszerű és rendezett felületet biztosít a " "jelszóadatbázisok kezeléséhez." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Jelszókezelő a GNOME-hoz" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;titkosítás;biztonság;" #: data/org.gnome.PasswordSafe.gschema.xml:16 #| msgid "Use dark GTK+ theme" msgid "Use dark GTK theme" msgstr "Sötét GTK téma használata" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "A GTK+ témája sötét változatának használata. Ne feledje, hogy nem minden GTK" "+ témának van sötét változata." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "A legutóbb megnyitott adatbázis újranyitása" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "A legutóbb megnyitott adatbázis automatikus megnyitása, ellenkező esetben az " "üdvözlőképernyő megjelenítése." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Az összes módosítás automatikus mentése" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Az összes módosítás azonnali mentése az adatbázisba. Ne feledje, hogy nem " "vonhatja vissza a módosításokat, ha az automatikus mentés engedélyezett." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Adatbázis zárolása X perc után" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Az adatbázis automatikus zárolása megadott számú perc után a biztonság " "javítása érdekében." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Vágólap törlése X másodperc után" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "A jelszó vágólapra másolása után a vágólap törlése biztonsági okokból." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Jelszavak megjelenítése egyszerű szövegként" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "A jelszavak megjelenítése alapértelmezetten a bemeneti mezőkben." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Ablakméret" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Az ablakméret megjegyzése." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Legutóbb megnyitott adatbázis" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "A legutóbb megnyitott adatbázis elérési útja." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Legutóbb megnyitott adatbázisok" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "A legutóbb megnyitott adatbázisok listája." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Összetett kulcs megjegyzése" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Az adatbázis feloldásához legutóbb használt összetett kulcs megjegyzése." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Legutóbb használt összetett kulcs" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Az összetett adatbázis feloldáshoz legutóbb használt kulcs elérési útja." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Feloldási mód megjegyzése" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "A legutóbb használt feloldási mód megjegyzése a jövőbeli adatbázis-" "feloldásokhoz." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Az adatbázis biztonsági mentése feloldáskor" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Ha hiba történik az adatbázis mentésekor, akkor a biztonsági mentés itt " "található: ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "A csoportok és bejegyzések rendezési sorrendje" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "A sorok sorrendje a csoportok és bejegyzések nézetben." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Legutóbb használt feloldási mód" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "A legutóbb használt feloldási mód tárolására szolgál, hogy gyorsabb " "feloldást tehessen lehetővé." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Teljes szöveges keresés használata" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Keresést hajt végre a bejegyzések összes értékén." #: data/org.gnome.PasswordSafe.gschema.xml:96 #| msgctxt "Shortcut window description" #| msgid "Create group" msgid "Current group search" msgstr "Keresés a jelenlegi csoportban" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Csak a jelenlegi csoportban keressen bejegyzéseket." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Nagybetűk használata egy jelszó előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Nagybetűs karakterek használata A-tól Z-ig egy véletlenszerű jelszó" " előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Kisbetűk használata egy jelszó előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Kisbetűs karakterek használata a-tól z-ig egy véletlenszerű jelszó" " előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Számok használata egy jelszó előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "" "Szám karakterek használata 0-tól 9-ig egy véletlenszerű jelszó előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Szimbólumok használata egy jelszó előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Nem alfanumerikus ASCII szimbólumok használata egy véletlenszerű jelszó" " előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Jelszóhossz egy jelszó előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Önálló karakterek száma egy véletlenszerű jelszó előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Szavak száma egy jelmondat előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Használandó szavak száma egy jelmondat előállításakor." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Elválasztó egy jelmondat előállításakor" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Használandó szóelválasztó egy jelmondat előállításakor." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Hossz" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Karakterek" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Szavak" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Elválasztó" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Adjon meg egy karaktert itt…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Jelmondat" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Beállítások" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Hozzáférve" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Módosítva" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Létrehozva" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "" "Szeretné elmenteni az összes mentetlen változtatással rendelkező széfet?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Válassza ki a mentendő széfeket." #: data/quit_dialog.ui:42 #| msgid "Cancel" msgid "_Cancel" msgstr "_Mégse" #: data/quit_dialog.ui:49 #| msgid "Quit" msgid "_Quit" msgstr "_Kilépés" #: data/recent_files_page.ui:37 #| msgid "Recent Databases" msgid "Recent Safes" msgstr "Legutóbbi széfek" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kód" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Tulajdonság" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Cím" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Felhasználónév" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Jegyzetek" #: data/references_dialog.ui:267 msgid "References" msgstr "Hivatkozások" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Szintaxis" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "A mezőhivatkozások helykitöltő szintaxisa a következő:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Mezőkódok megjelenítése" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Azonosító" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Hivatkozás" #: data/references_dialog.ui:503 #| msgid "" #| "Each entry has a unique identifier called UUID.\n" #| "It can be found in the properties of the entry." msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Minden bejegyzés egy UUID-nak nevezett egyéni azonosítóval rendelkezik. Ez a" " bejegyzés tulajdonságai között található." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Mentetlen változtatások" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Szeretné kiírni az összes változtatást a széfbe?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Kilépés mentés nélkül" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Ne lépjen ki" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Mentés és kilépés" #: data/search.ui:70 msgid "Enter search term" msgstr "Adja meg a keresési kifejezést" #: data/search.ui:104 msgid "No search results" msgstr "Nincsenek találatok" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Kiválasztás áthelyezése" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Kiválasztás törlése" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Mégse" #: data/settings_dialog.ui:19 #| msgid "Dark Theme" msgid "_Dark Theme" msgstr "_Sötét téma" #: data/settings_dialog.ui:20 #| msgid "Use dark GTK+ theme" msgid "Use dark GTK theme." msgstr "Sötét GTK téma használata." #: data/settings_dialog.ui:34 #| msgid "Hide First Start Screen" msgid "_Hide First Start Screen" msgstr "_Első indítási képernyő elrejtése" #: data/settings_dialog.ui:35 #| msgid "Reopen last opened safe" msgid "Reopen last opened safe." msgstr "Legutóbb megnyitott széf újranyitása." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Széf" #: data/settings_dialog.ui:55 #| msgid "Save automatically" msgid "_Save Automatically" msgstr "Automatikus _mentés" #: data/settings_dialog.ui:56 #| msgid "Save every change automatically" msgid "Save every change automatically." msgstr "Az összes módosítás automatikus mentése." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Feloldás" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 #| msgid "Remember Composite Key" msgid "Remember Composite _Key" msgstr "Összetett _kulcs megjegyzése" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 #| msgid "Remember last used composite key" msgid "Remember last used composite key." msgstr "Legutóbb használt összetett kulcs megjegyzése." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 #| msgid "Remember Unlock Method" msgid "Remember _Unlock Method" msgstr "_Feloldási mód megjegyzése" #: data/settings_dialog.ui:92 #| msgid "Enable faster unlocking" msgid "Enable faster unlocking." msgstr "Gyorsabb feloldás engedélyezése." #: data/settings_dialog.ui:115 #| msgid "Password Safe" msgid "Password Generation" msgstr "Jelszó-előállítás" #: data/settings_dialog.ui:119 #| msgid "Password Safe" msgid "Password Length" msgstr "Jelszóhossz" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Karakterek száma egy jelszó előállításakor." #: data/settings_dialog.ui:136 #| msgid "Characters" msgid "_Uppercase Characters" msgstr "_Nagybetűs karakterek" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Nagybetűs karakterek használata A-tól Z-ig egy jelszó előállításakor." #: data/settings_dialog.ui:151 #| msgid "Characters" msgid "_Lowercase Characters" msgstr "_Kisbetűs karakterek" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Kisbetűs karakterek használata a-tól z-ig egy jelszó előállításakor." #: data/settings_dialog.ui:166 #| msgid "Characters" msgid "_Numeric Characters" msgstr "_Szám karakterek" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Szám karakterek használata egy jelszó előállításakor." #: data/settings_dialog.ui:181 #| msgid "Characters" msgid "_Special Characters" msgstr "Külö_nleges karakterek" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "" "Nem alfanumerikus ASCII szimbólumok használata egy jelszó előállításakor." #: data/settings_dialog.ui:198 #| msgid "Passphrase" msgid "Passphrase Generation" msgstr "Jelmondat-előállítás" #: data/settings_dialog.ui:202 #| msgid "Passphrase" msgid "Passphrase Length" msgstr "Jelmondat hossza" #: data/settings_dialog.ui:228 #| msgid "Enter search term" msgid "Enter Character" msgstr "Adja meg a karaktert" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Biztonság" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Széf zárolási időkorlát" #: data/settings_dialog.ui:250 #| msgid "Lock safe on idle after X minutes" msgid "Lock safe on idle after X minutes." msgstr "Széf zárolása X percnyi tétlenség után." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Vágólap törlése" #: data/settings_dialog.ui:267 #| msgid "Clear clipboard after X seconds" msgid "Clear clipboard after X seconds." msgstr "Vágólap törlése X másodperc után." #: data/settings_dialog.ui:283 #| msgid "Show Password Fields" msgid "_Show Password Fields" msgstr "_Jelszómezők megjelenítése" #: data/settings_dialog.ui:284 #| msgid "Display passwords in plain text" msgid "Display passwords in plain text." msgstr "Jelszavak megjelenítése egyszerű szövegként." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Legutóbbiak listájának törlése" #: data/settings_dialog.ui:299 #| msgid "Clear the recently opened safes list" msgid "Clear the recently opened safes list." msgstr "A legutóbb megnyitott széfek listájának törlése." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 #| msgid "New Safe" msgid "_New Safe" msgstr "Ú_j széf" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Széf kinyitása" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "A széf zárolva van" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Adja meg a jelszót a feloldáshoz" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Válassza ki a kulcsfájlt a feloldáshoz" #: data/unlock_database.ui:239 #| msgid "Open Keyfile" msgid "_Open Keyfile" msgstr "Kulcsfájl _megnyitása" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Adja meg a jelszót, és válassza ki a kulcsfájlt a feloldáshoz" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Összetett" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Üres csoport" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Kattintson egy jelölőmezőre a kiválasztáshoz" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Keresés" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Kiválasztási mód" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 #| msgid "Save" msgid "_Save" msgstr "_Mentés" #: data/unlocked_headerbar.ui:161 #| msgid "Lock" msgid "_Lock" msgstr "_Zárolás" #: data/unlocked_headerbar.ui:166 #| msgid "Sorting" msgid "So_rting" msgstr "_Rendezés" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 #| msgid "Last Added" msgid "_Last Added" msgstr "_Legutóbb hozzáadva" #: data/unlocked_headerbar.ui:194 #| msgid "Safe Settings" msgid "Sa_fe Settings" msgstr "Szé_fbeállítások" #: data/unlocked_headerbar.ui:216 #| msgid "Select all" msgid "Select _All" msgstr "Össz_es kiválasztása" #: data/unlocked_headerbar.ui:220 #| msgid "Select none" msgid "Select _None" msgstr "Ki_választás megszüntetése" #: data/unlocked_headerbar.ui:228 #| msgid "Duplicate" msgid "D_uplicate" msgstr "_Kettőzés" #: data/unlocked_headerbar.ui:232 #| msgid "References" msgid "_References" msgstr "_Hivatkozások" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 #| msgid "Properties" msgid "_Properties" msgstr "_Tulajdonságok" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 #| msgid "Delete" msgid "_Delete" msgstr "_Törlés" #: data/unlocked_headerbar.ui:264 #| msgid "New Entry" msgid "New _Entry" msgstr "Új _bejegyzés" #: data/unlocked_headerbar.ui:268 #| msgid "New Group" msgid "New _Group" msgstr "Új _csoport" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 #| msgid "Secure password safe" msgid "Secure Password Safe" msgstr "Biztonságos jelszótároló" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Tárolja biztonságosan a jelszavait, jegyzeteit és adatait. Hozzon létre vagy importáljon egy új Keepass széfet." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Nem lehet kilépni: nem sikerült elmenteni a széfet" #: passwordsafe/create_database.py:115 #| msgid "Password Match Check" msgid "Passwords do not match" msgstr "A jelszavak nem egyeznek" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Válassza ki a kulcsfájl helyét" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Előállítás…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klónozás" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Válassza ki a jelenlegi kulcsfájlt" #: passwordsafe/database_settings_dialog.py:183 #| msgid "Open" msgid "_Open" msgstr "_Megnyitás" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Alkalmaz…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Ismeretlen" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "256 bites AES" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "256 bites ChaCha20" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "256 bites Twofish" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "A tulajdonságkulcs már létezik" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Válasszon mellékletet" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "Hozzá_adás" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Melléklet mentése" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 #| msgid "Copied to clipboard" msgid "Username copied to clipboard" msgstr "A felhasználónév a vágólapra másolva" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 #| msgid "Copied to clipboard" msgid "Password copied to clipboard" msgstr "A jelszó a vágólapra másolva" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Cím nincs megadva" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Felhasználónév nincs megadva" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Válasszon egy Keepass széfet" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 adatbázis" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Nem sikerült megnyitni a fájlt" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Nem sikerült megnyitni a fájlt: a MIME-típus nem támogatott" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 #| msgid "Database already opened" msgid "Safe already opened" msgstr "A széf már meg van nyitva" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Válasszon egy helyet a Keepass széfnek" #: passwordsafe/main_window.py:298 #| msgid "Created" msgid "_Create" msgstr "_Létrehozás" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Művelet megszakítva: a jelenleg aktív csoport törlése" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Törlés befejezve" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Művelet megszakítva: a jelenleg aktív csoport áthelyezése" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Áthelyezés befejezve" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Válasszon egy kulcsfájlt" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Válasszon kulcsfájlt" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 #| msgid "File type {} ({}) is not supported." msgid "The kdb format is not supported" msgstr "A kdb formátum nem támogatott" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "A széf feloldása sikertelen" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Próbálja újra" #: passwordsafe/unlocked_database.py:423 #| msgid "Safe Name" msgid "Safe saved" msgstr "Széf elmentve" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Nem sikerült elmenteni a széfet" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Kis türelmet. Egy másik mentés is fut." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Nincsenek módosítások" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Vágólapra másolva" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 #| msgid "Keepass safe locked due to inactivity" msgid "Safe locked due to inactivity" msgstr "A széf zárolva tétlenség miatt" #: passwordsafe/unlocked_headerbar.py:135 #| msgctxt "Shortcut window description" #| msgid "Create entry" msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} bejegyzés kiválasztva" msgstr[1] "{} bejegyzés kiválasztva" secrets-5.1/po/id.po000066400000000000000000001132171415312107300144030ustar00rootroot00000000000000# Indonesian translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Andika Triwidada , 2018. # Kukuh Syafaat , 2020. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe release_5.x\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 10:27+0000\n" "PO-Revision-Date: 2021-05-27 19:54+0700\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.4.3\n" "Plural-Forms: nplurals=2; plural= n!=1;\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Kelola kata sandi Anda" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Pelajari lebih lanjut tentang Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Andika Triwidada , 2018-2021.\n" "Kukuh Syafaat , 2020." #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Info Keselamatan" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Ada kemungkinan bahwa aplikasi eksternal akan membuat salinan tak tersandi " "atau sementara dari berkas lampiran ini! Lanjutkan dengan berhati-hati." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Mundur" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Lanjutkan" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Hapus atribut" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Warna" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Buat Brankas" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferensi" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Pintasan Papan Ti_k" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "Tent_ang Password Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Lindungi brankas Anda" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "Kata _Sandi" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Menggunakan sebuah kata sandi untuk mengamankan brankas Anda." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Berkas _Kunci" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Menggunakan sebuah berkas kunci untuk mengamankan brankas Anda." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Komposit" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Menggunakan kata sandi dalam kombinasi dengan berkas kunci untuk mengamankan " "brankas Anda." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Masukkan Kata Sandi" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Atur kata sandi untuk brankas." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Pemeriksaan Kecocokan Kata Sandi" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Ulangi kata sandi untuk brankas." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Pemeriksaan Kecocokan Gagal" #: data/create_database.ui:299 msgid "Please try again." msgstr "Silakan coba lagi." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Konfirmasi" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Buat Berkas Kunci" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Atur berkas kunci untuk brankas" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Buat" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Brankas Berhasil Dibuat" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "B_uka Brankas" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Rincian" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Path" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Ukuran Berkas" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nama Brankas" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versi KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Tanggal Pembuatan" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritma Enkripsi" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritma Derivasi" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistik" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Cacah Grup" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Kata Sandi" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Cacah Entri" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Umum" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Kata Sandi" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Baru" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Buat Kata Sandi" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "K_onfirmasi" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Kini" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Berkas Kunci" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "Pilih berka_s kunci saat ini" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Buat berkas kunci baru" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "Ter_apkan Perubahan" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentikasi" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Fungsi Derivasi Kunci" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Terapkan Perubahan" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Judul" #: data/entry_page.ui:54 msgid "_Username" msgstr "Nama Pengg_una" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "Catata_n" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikon" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Lampiran" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "T_ambahkan Lampiran" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atribut" #: data/entry_page.ui:318 msgid "Key" msgstr "Kunci" #: data/entry_page.ui:325 msgid "Value" msgstr "Nilai" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Tambah atribut" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Salin nama pengguna ke papan klip" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Salin kata sandi ke papan klip" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplikasi" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Buat brankas" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Buka brankas" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Buka preferensi" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Tampilkan Pintasan" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Keluar" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Brankas" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Kunci brankas" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Simpan brankas" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Buka pencarian" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Buat entri" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Buat grup" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entri" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Salin kata sandi" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Salin nama pengguna" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Mundur" #: data/main_window.ui:25 msgid "New…" msgstr "Baru…" #: data/main_window.ui:38 msgid "Open…" msgstr "Buka…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Salin" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe adalah manajer kata sandi yang memanfaatkan format KeePass " "v.4. Ini terintegrasi sempurna dengan desktop GNOME dan menyediakan sebuah " "antarmuka yang mudah dan rapi untuk manajemen basis data kata sandi." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Manajer kata sandi untuk GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;enkripsi;aman;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Gunakan tema GTK gelap" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Menggunakan varian gelap tema GTK+ Anda. Harap dicatat bahwa tidak setiap " "tema GTK+ memiliki varian gelap." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Buka kembali basis data yang terakhir dibuka" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Secara otomatis membuka layar basis data yang terakhir dibuka, bila tidak " "tampilkan layar selamat datang." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Simpan setiap perubahan secara otomatis" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Menyimpan setiap perubahan yang Anda buat langsung ke dalam basis data. " "Harap dicatat bahwa Anda tidak bisa membatalkan perubahan jika Penyimpanan " "Otomatis diaktifkan." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Kunci basis data setelah X menit" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Otomatis mengunci basis data Anda setelah sekian menit untuk meningkatkan " "keamanan." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Bersihkan papan klip setelah X detik" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Setelah menyalin kata sandi bersihkan papan klip untuk alasan keamanan." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Tampilkan kata sandi dalam teks polos" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Menampilkan kata sandi di ruas masukan secara bawaan." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Ukuran jendela" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Ingat ukuran jendela." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Basis data yang terakhir dibuka" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Path ke basis data yang dibuka terakhir." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Basis data yang terakhir dibuka" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Daftar basis data yang terakhir dibuka." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Ingat kunci komposit" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Ingat kunci komposit yang terakhir digunakan untuk membuka basis data." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Kunci komposit yang terakhir dipakai" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Path ke kunci yang terakhir digunakan untuk membuka basis data komposit." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Ingat metode buka kunci" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Ingat metode buka kunci yang terakhir digunakan untuk membuka basis data di " "masa depan." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Rekam cadangkan basis data saat membuka" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Jika terjadi kesalahan saat menyimpan basis data, rekam cadang dapat " "ditemukan di ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Urutan kelompok dan entri" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Urutan baris dalam tilikan grup dan entri." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Metode buka kunci yang terakhir digunakan" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Digunakan untuk menyimpan metode buka kunci yang terakhir digunakan dan " "memfungsikan proses membuka yang lebih cepat." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Gunakan pencarian teks penuh" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Lakukan pencarian di semua nilai entri." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Pencarian grup saat ini" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Hanya mencari entri dalam grup saat ini." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Gunakan huruf besar ketika membuat kata sandi" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Gunakan huruf besar A-Z saat menghasilkan kata sandi acak." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Gunakan huruf kecil ketika membuat kata sandi" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Gunakan huruf kecil a-z saat menghasilkan kata sandi acak." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Gunakan angka ketika membuat kata sandi" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Gunakan angka 0-9 saat menghasilkan kata sandi acak." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Gunakan simbol ketika membuat kata sandi" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Gunakan simbol ACSII non-alfanumerik saat menghasilkan kata sandi acak." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Panjang kata sandi saat membuat kata sandi" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Cacah karakter tunggal saat menghasilkan kata sandi." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Cacah kata saat menghasilkan frasa sandi" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Cacah kata yang digunakan saat menghasilkan frasa sandi." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Pemisah saat menghasilkan frasa sandi" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Pemisah kata untuk digunakan saat menghasilkan frasa sandi." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Panjang" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Karakter" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Kata" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Pemisah" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Masukkan karakter di sini…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frasa sandi" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Properti" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Diakses" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Diubah" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Dibuat" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "" "Apakah Anda ingin menyimpan semua brankas dengan perubahan yang belum " "disimpan?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Pilih brankas yang Anda ingin simpan." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Batal" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Keluar" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Brankas Baru-baru Ini" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kode" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Properti" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Judul" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nama Pengguna" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Catatan" #: data/references_dialog.ui:267 msgid "References" msgstr "Rujukan" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaks" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Sintaks placeholder untuk rujukan bidang adalah sebagai berikut:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Tampilkan Ruas Kode" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Pengidentifikasi" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Rujukan" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Setiap entri memiliki pengidentifikasi unik yang disebut UUID. Hal ini dapat " "ditemukan di properti dari entri." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Perubahan Belum Tersimpan" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Apakah Anda ingin menulis semua perubahan ke brankas?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Keluar Tanpa Menyimpan" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "Ja_ngan Keluar" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Simpan dan Keluar" #: data/search.ui:70 msgid "Enter search term" msgstr "Masukkan istilah pencarian" #: data/search.ui:104 msgid "No search results" msgstr "Tidak ada hasil pencarian" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Pindahkan seleksi" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Hapus yang dipilih" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Batal" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Tema _Gelap" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Gunakan tema GTK gelap." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Sembunyikan Layar Pertama Mulai" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Buka kembali brankas yang terakhir dibuka." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Brankas" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Simpan Secara Otomatis" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Simpan setiap perubahan secara otomatis." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Buka Kunci" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Ingat _Kunci Komposit" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Ingat kunci komposit yang terakhir digunakan." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Ingat Metode B_uka Kunci" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Fungsikan buka kunci lebih cepat." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Pembuatan Kata Sandi" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Panjang Kata Sandi" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Cacah karakter saat menghasilkan kata sandi." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Karakter H_uruf Besar" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Gunakan huruf besar A-Z saat menghasilkan kata sandi acak." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Karakter Huruf Keci_l" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Gunakan huruf kecil a-z saat menghasilkan kata sandi acak." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Karakter _Numerik" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Gunakan angka 0-9 saat menghasilkan kata sandi acak." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Karakter Khusu_s" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "" "Gunakan simbol ACSII non-alfanumerik saat menghasilkan kata sandi acak." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Pembuatan Frasa Sandi" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Panjang Frasa Sandi" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Masukkan Karakter" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Keamanan" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Tenggang Waktu Mengunci Brankas" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Kunci brankas ketika menganggur setelah X menit." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Bersihkan Papan Klip" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Bersihkan papan klip setelah X detik." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Tampilkan Rua_s Kata Sandi" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Tampilkan kata sandi dalam teks polos." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Hapus Daftar Baru-baru Ini" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Bersihkan daftar brankas yang baru-baru ini dibuka." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "Bra_nkas Baru" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Buka Brankas" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Brankas Terkunci" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Masukkan kata sandi untuk membuka" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Pilih berkas kunci untuk membuka" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Buka Berkas Kunci" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Masukkan kata sandi dan pilih berkas kunci untuk membuka" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Komposit" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Grup kosong" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Klik pada kotak centang untuk memilih" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Cari" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Mode Seleksi" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Simpan" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Kunci" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "Pengu_rutan" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Terakhi_r Ditambahkan" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Pengaturan _Brankas" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Pilih Semu_a" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Pilih Tak Satupu_n" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplikatkan" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Rujukan" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Properti" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Hapus" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "_Entri Baru" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "_Grup Baru" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Brankas Kata Sandi yang Aman" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Secara aman menyimpan katas sandi, catatan, dan data Anda. Buat atau " "impor sebuah brankas Keepass yang baru." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Tidak Bisa Keluar: Tidak bisa menyimpan Brankas" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Kata sandi tidak cocok" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Pilih lokasi untuk berkas kunci" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Membuat…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klon" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Pilih berkas kunci saat ini" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Buka" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Terapkan…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Tak Diketahui" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Kunci atribut sudah ada" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Pilih lampiran" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "T_ambah" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Simpan Lampiran" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Nama pengguna disalin ke papan klip" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Kata sandi disalin ke papan klip" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Judul tidak ditentukan" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Tidak ada nama pengguna yang ditentukan" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Pilih sebuah brankas Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Basis Data KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Tak bisa membuka berkas" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Tak bisa membuka berkas: Tipe mime tak didukung" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Brankas sudah terbuka" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Pilih lokasi untuk brankas Keepass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Buat" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operasi dibatalkan: Menghapus grup yang saat ini aktif" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Penghapusan selesai" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operasi dibatalkan: Memindahkan grup yang saat ini aktif" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Pemindahan selesai" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Pilih sebuah berkas kunci" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Pilih Berkas Kunci" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Format kdb tidak didukung" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Gagal untuk membuka brankas" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Coba lagi" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Brankas disimpan" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Tak bisa menyimpan Brankas" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Harap tunggu. Penyimpanan lain sedang berjalan." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Tidak ada perubahan yang dibuat" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Disalin ke papan klip" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Brankas terkunci karena tidak ada aktivitas" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} Entri yang dipilih" msgstr[1] "{} Entri yang dipilih" secrets-5.1/po/it.po000066400000000000000000001132731415312107300144250ustar00rootroot00000000000000# Italian translation for PasswordSafe. # Copyright (C) 2018, 2019, 2020, 2021 the Free Software Foundation, Inc. # This file is distributed under the same license as the PasswordSafe package. # Milo Casagrande , 2018, 2019, 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-02-04 15:06+0000\n" "PO-Revision-Date: 2021-02-05 11:30+0100\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.2\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gestione password" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Maggiori informazioni riguardo a Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Milo Casagrande " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informazioni di sicurezza" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "È possibile che applicazioni esterne creino copie non-cifrate nascoste o " "temporanee di questo allegato. Procedere con cautela." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Indietro" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Procedi" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Rimuovi attributo" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Colore" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Crea cassaforte" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "Preferen_ze" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Scorciatoie da _tastiera" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "I_nformazioni su Password Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Proteggere la propria cassaforte" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "Pass_word" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Usare una password per mettere al sicuro la propria cassaforte" #: data/create_database.ui:65 msgid "_Keyfile" msgstr "File c_hiave" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Usare un file chiave per mettere al sicuro la propria cassaforte" #: data/create_database.ui:78 msgid "_Composite" msgstr "Composi_to" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Usare una password in combinazione con un file chiave per mettere al sicuro " "la propria cassaforte" #: data/create_database.ui:115 msgid "Enter Password" msgstr "Inserire la password" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Impostare la password per la cassaforte" #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Controllo corrispondenza password" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Ripetere la password per la cassaforte" #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Controllo corrispondenza non riuscito" #: data/create_database.ui:299 msgid "Please try again." msgstr "Riprovare" #: data/create_database.ui:348 msgid "_Confirm" msgstr "Confer_ma" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Genera file chiave" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Selezionare il file chiave per la cassaforte" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Genera" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Cassaforte creata con successo" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Apri cassaforte" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Dettagli" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Percorso" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Dimensione file" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nome cassaforte" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versione KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data di creazione" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritmo di cifratura" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritmo di derivazione" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistiche" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Numero di gruppi" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Password" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Numero di voci" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Generale" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Password" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nuovo" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Genera password" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onferma" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Attuale" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:30 msgid "Keyfile" msgstr "File chiave" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Seleziona file chiave attuale" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Genera nuovo file chiave" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Applica modifiche" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autenticazione" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funzione di derivazione chiave" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Applica modifiche" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titolo" #: data/entry_page.ui:54 msgid "_Username" msgstr "Nome _utente" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Note" #: data/entry_page.ui:196 msgid "Icon" msgstr "Icona" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Allegati" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "Aggiungi _allegato" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Attributi" #: data/entry_page.ui:318 msgid "Key" msgstr "Chiave" #: data/entry_page.ui:325 msgid "Value" msgstr "Valore" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Aggiungi attributo" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Copia nome utente negli appunti" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copia password negli appunti" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Applicazione" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Crea cassaforte" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Apre una cassaforte" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Apre le preferenze" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra scorciatoie" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Esce" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Cassaforte" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Blocca la cassaforte" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Salva la cassaforte" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Apre la ricerca" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Crea voce" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Crea gruppo" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Voce" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copia password" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copia nome utente" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Va indietro" #: data/main_window.ui:25 msgid "New…" msgstr "Nuovo…" #: data/main_window.ui:38 msgid "Open…" msgstr "Apri…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Copia" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "«Password Safe» è un gestore di password che sfrutta il formato KeePass v.4. " "Si integra perfettamente con l'ambiente grafico GNOME e fornisce una " "semplice interfaccia per la gestione delle proprie password." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Un gestore di password per GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;cifrare;cifra;sicurezza;sicuro;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Usa un tema scuro" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Usa la variante scura del tema GTK+. Non tutti i temi GTK+ hanno una " "variante scura." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Riapre l'ultimo database aperto" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Apre automaticamente la finestra di sblocco dell'ultimo database aperto, " "altrimenti mostra la finestra principale." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Salva le modifiche automaticamente" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Salva le modifiche mentre vengono applicate. Con il salvataggio automatico " "non è possibile ripristinare i valori iniziali." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Blocca il database dopo X minuti" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Blocca automaticamente il database dopo una certa quantità di tempo per " "aumentare la sicurezza." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Pulisce gli appunti dopo X secondi" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Una volta copiata la password pulisce gli appunti per ragioni di sicurezza." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Mostra le password in chiaro" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Mostra in modo predefinito le password." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Dimensione finestra" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Ricorda la dimensione delle finestra." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Ultimo database aperto" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Percorso dell'ultimo database aperto." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Ultimi database aperti" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Un elenco degli ultimi database aperti." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Ricorda la chiave composita" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Ricorda l'ultima chiave composita usata per sbloccare il database." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Ultima chiave composita usata" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Percorso all'ultima chiave composita usata per sbloccare il database." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Ricorda metodo di sblocco" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Ricorda l'ultimo metodo di sblocco usato per i futuri sblocchi del database." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Esegue il backup del database allo sblocco" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Se si verifica un errore durante il salvataggio del database, un backup può " "essere trovato in ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordinamento dei gruppi e delle voci" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordine delle righe nella vista dei gruppi e delle voci." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Ultimo metodo di sblocco usato" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Utilizzato per salvare l'ultimo metodo di sblocco usato e per abilitare lo " "sblocco rapido." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Utilizzare la ricerca su tutto il testo" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Esegue una ricerca in tutti i valori delle voci." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Ricerca di gruppo attuale" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Cerca solo le voci nel gruppo corrente." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Utilizzare le lettere maiuscole durante la generazione di una password" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Utilizza i caratteri maiuscoli dalla A alla Z durante la generazione di una " "password casuale." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Utilizzare le lettere minuscole durante la generazione di una password" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Utilizza i caratteri minuscoli dalla a alla z durante la generazione di una " "password casuale." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Utilizzare i numeri durante la generazione di una password" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "" "Utilizza i numeri da 0 a 9 durante la generazione di una password casuale." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Utilizzare i simboli durante la generazione di una password" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Utilizza caratteri ASCII non-alfanumerici durante la generazione di una " "password casuale." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Lunghezza della password generata" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:120 msgid "Number of single characters when generating a password." msgstr "Numero di caratteri da usare per generare una password." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Numero di parole da usare per generare una passphrase" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Numero di parole da usare per generare una passphrase." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separatore da usare per generare una passphrase" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "" "Separatore di parole da usare durante la generazione di una passphrase." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Lunghezza" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caratteri" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Parole" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separatore" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Inserire carattere qui…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Passphrase" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Proprietà" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Accesso" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modifica" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Creazione" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Salvare tutte le casseforti con modifiche non salvate?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Selezionare le casseforti da salvare." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "A_nnulla" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Esci" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Cassaforti recenti" #: data/references_dialog.ui:20 msgid "Code" msgstr "Codice" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Proprietà" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Nome" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nome utente" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Note" #: data/references_dialog.ui:267 msgid "References" msgstr "Riferimenti" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintassi" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "La sintassi per i riferimenti dei campi è la seguente:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Mostra codici campi" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificatore" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Riferimento" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Ogni voce ha un identificatore univoco chiamato UUID. Può essere trovato " "nelle proprietà della voce stessa." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Modifiche non salvate" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Salvare tutte le modifiche nella cassaforte?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Esci senza salvare" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Non uscire" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "Sa_lva ed esci" #: data/search.ui:70 msgid "Enter search term" msgstr "Inserire il termine di ricerca" #: data/search.ui:104 msgid "No search results" msgstr "Nessun risultato" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Sposta selezione" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Elimina selezione" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Annulla" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tema scuro" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Usa un tema scuro" #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Nascondere schermata di avvio" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Riapre l'ultima cassaforte aperta" #: data/settings_dialog.ui:51 passwordsafe/main_window.py:300 msgid "Safe" msgstr "Cassaforte" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Salva automaticamente" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Salva le modifiche automaticamente" #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Sblocca" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "_Ricordare chiave composita" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Ricorda l'ultima chiave composita usata" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Ricordare metodo di _sblocco" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Abilita lo sblocco rapido" #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Generazione password" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Lunghezza password" #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Maiuscole" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Usa caratteri maiuscoli per generare una password" #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Min_uscole" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Usa caratteri minuscoli per generare una password" #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Nume_ri" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Usa caratteri numerici per generare una password" #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Cara_tteri speciali" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Usa caratteri ASCII non-alfanumerici per generare una password" #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Generazione passphrase" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Lunghezza passphrase" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Inserire carattere" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Sicurezza" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Timeout blocco cassaforte" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Blocca la cassaforte quando inutilizzata per X minuti" #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Pulire gli appunti" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Pulisce gli appunti dopo X secondi" #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Most_rare campi password" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Mostra le password in chiaro" #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Pulire elenco recenti" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Pulisce l'elenco delle casseforti aperte di recente" #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nuova cassaforte" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Apri cassaforte" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Cassaforte bloccata" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Inserire la password per sbloccare" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selezionare il file chiave per sbloccare" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Apri file chiave" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Inserire la password e selezionare il file chiave per sbloccare" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Composito" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Gruppo vuoto" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Fare clic su una casella per selezionare" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Cerca" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Modalità di selezione" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Salva" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Blocca" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "Or_dinamento" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Aggiunto _recentemente" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Im_postazioni cassaforte" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Seleziona _tutto" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Seleziona _nessuna" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "_Duplica" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "Ri_ferimenti" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "Pr_oprietà" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "Eli_mina" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Nuova _voce" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Nuovo _gruppo" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Cassaforte sicura per password" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Archiviare in sicurezza password, note e dati. È possibile creare o " "importare una cassaforte KeePass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Impossibile uscire: impossibile salvare la cassaforte" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Le password non corrispondono" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Scelta posizione per file chiave" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Generazione…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Clona" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Scelta file chiave attuale" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "A_pri" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Applica…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Sconosiuto" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Un attributo con questa chiave esiste già" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Seleziona allegato" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "A_ggiungi" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Salva allegato" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:101 msgid "Username copied to clipboard" msgstr "Nome utente copiato negli appunti" #: passwordsafe/entry_row.py:94 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Password copiata negli appunti" #: passwordsafe/entry_row.py:113 passwordsafe/group_row.py:100 msgid "Title not specified" msgstr "Nome non specificato" #: passwordsafe/entry_row.py:124 msgid "No username specified" msgstr "Nessun nome utente specificato" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:205 msgid "Choose a Keepass safe" msgstr "Scelta cassaforte Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:215 passwordsafe/main_window.py:305 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 Database" #: passwordsafe/main_window.py:243 msgid "Could not open file" msgstr "Impossibile aprire il file" #: passwordsafe/main_window.py:252 msgid "Could not open file: Mime type not supported" msgstr "Impossibile aprire il file: tipo MIME non supportato" #: passwordsafe/main_window.py:262 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Cassaforte già aperta" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:294 msgid "Choose location for Keepass safe" msgstr "Scelta posizione cassaforte Keepass" #: passwordsafe/main_window.py:297 msgid "_Create" msgstr "_Crea" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operazione interrotta: il gruppo attualmente attivo viene eliminato" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Eliminazione completata" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operazione interrotta: il gruppo attualmente attivo viene spostato" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Spostamento completato" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Scelta file chiave" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Scegli file chiave" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "Il formato kdb non è supportato" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "Sblocco della cassaforte non riuscito" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "Prova ancora" #: passwordsafe/unlocked_database.py:419 msgid "Safe saved" msgstr "Cassaforte salvata" #: passwordsafe/unlocked_database.py:421 msgid "Could not save Safe" msgstr "Impossibile salvare la cassaforte" #: passwordsafe/unlocked_database.py:430 msgid "Please wait. Another save is running." msgstr "Attendere: salvataggio già in corso." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:434 msgid "No changes made" msgstr "Nessuna modifica effettuata" #: passwordsafe/unlocked_database.py:470 msgid "Copied to clipboard" msgstr "Copiato negli appunti" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:557 msgid "Safe locked due to inactivity" msgstr "Cassaforte bloccata per inattività" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} voce selezionata" msgstr[1] "{} voci selezionate" secrets-5.1/po/meson.build000066400000000000000000000001421415312107300156010ustar00rootroot00000000000000i18n = import('i18n') message('Update translations') i18n.gettext('passwordsafe', preset: 'glib')secrets-5.1/po/nb.po000066400000000000000000000565171415312107300144170ustar00rootroot00000000000000# Norwegian Bokmal translations for PACKAGE package. # Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # John Erling Blad , 2020. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-04 15:13+0200\n" "PO-Revision-Date: 2020-08-04 17:36+0200\n" "Last-Translator: John Erling Blad \n" "Language-Team: Norwegian Bokmal\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.3\n" #: data/entry_page.ui:34 msgid "Add Attachment" msgstr "Legg til vedlegg" #: data/entry_page.ui:76 msgid "Attachments" msgstr "Vedlegg" #: data/entry_page.ui:163 msgid "Secret_Photo.png" msgstr "Secret_Photo.png" #: data/entry_page.ui:338 msgid "Remove attribute" msgstr "Fjern attributt" #: data/entry_page.ui:399 msgid "Attributes" msgstr "Attributter" #: data/entry_page.ui:439 msgid "Key" msgstr "Nøkkel" #: data/entry_page.ui:453 msgid "Value" msgstr "Verdi" #: data/entry_page.ui:475 msgid "Add attribute" msgstr "Legg til attributt" #: data/entry_page.ui:530 msgid "Color" msgstr "Farge" #: data/entry_page.ui:825 msgid "Icon" msgstr "Ikon" #: data/entry_page.ui:1197 data/group_page.ui:35 data/references_dialog.ui:65 #: data/references_dialog.ui:235 msgid "Title" msgstr "Tittel" #: data/entry_page.ui:1282 data/group_page.ui:120 data/references_dialog.ui:185 #: data/references_dialog.ui:291 msgid "Notes" msgstr "Notater" #: data/entry_page.ui:1434 msgid "Length" msgstr "Lengde" #: data/entry_page.ui:1468 msgid "Characters" msgstr "Tegn" #: data/entry_page.ui:1563 data/entry_page.ui:1699 #: data/database_settings_dialog.ui:439 data/create_database.ui:74 #: data/references_dialog.ui:155 data/references_dialog.ui:263 msgid "Password" msgstr "Passord" #: data/entry_page.ui:1576 msgid "Words" msgstr "Ord" #: data/entry_page.ui:1609 msgid "Separator" msgstr "Separator" #: data/entry_page.ui:1626 msgid "Enter character here…" msgstr "Skriv inn tegn her…" #: data/entry_page.ui:1637 msgid "Passphrase" msgstr "Passfrase" #. Button to generate a password #: data/entry_page.ui:1650 data/create_database.ui:788 msgid "Generate" msgstr "Generer" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1755 msgid "Show/hide password" msgstr "Vis/skjul passord" #: data/entry_page.ui:1936 data/references_dialog.ui:170 #: data/references_dialog.ui:277 msgid "URL" msgstr "URL" #: data/entry_page.ui:2023 data/references_dialog.ui:92 #: data/references_dialog.ui:249 msgid "Username" msgstr "Brukernavn" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "Ulagrede endringer" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "Vil du skrive alle endringer til safen?" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "Forkast" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:761 msgid "Save" msgstr "Lagre" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Lag safe" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Åpne safe" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Åpne egenskaper" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "Safe" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Lås safen" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Lagre safe" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "Åpne søk" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Lag oppføring" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "Lag gruppe" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Oppføring" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopier passord" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "Forlat inngangssiden" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "Egenskaper" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "Aksessert" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "Endret" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "Opprettet" #. Title of the settings dialog #: data/settings_dialog.ui:15 msgid "Settings" msgstr "Innstillinger" #: data/settings_dialog.ui:55 data/database_settings_dialog.ui:420 msgid "General" msgstr "Generelt" #: data/settings_dialog.ui:104 msgid "Dark Theme" msgstr "Mørk drakt" #: data/settings_dialog.ui:121 msgid "Use dark GTK+ theme" msgstr "Bruk mørk GTK+ drakt" #: data/settings_dialog.ui:187 msgid "Hide First Start Screen" msgstr "Skjul første oppstartsvindu" #: data/settings_dialog.ui:204 msgid "Reopen last opened safe" msgstr "Gjenåpne sist brukte safe" #: data/settings_dialog.ui:260 data/unlocked_database.ui:860 msgid "Safe" msgstr "Safe" #: data/settings_dialog.ui:309 msgid "Save automatically" msgstr "Lagre automatisk" #: data/settings_dialog.ui:326 msgid "Save every change automatically" msgstr "Lagre hver endring automatisk" #: data/settings_dialog.ui:382 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Lås opp" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:431 msgid "Remember Composite Key" msgstr "Husk sammensatt nøkkel" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:448 msgid "Remember last used composite key" msgstr "Husk sist brukte sammensatte nøkkel" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:514 msgid "Remember Unlock Method" msgstr "Husk opplåsingsmetode" #: data/settings_dialog.ui:531 msgid "Enable faster unlocking" msgstr "Slå på raskere opplåsning" #: data/settings_dialog.ui:587 msgid "Security" msgstr "Sikkerhet" #: data/settings_dialog.ui:636 msgid "Safe Lock Timeout" msgstr "Tidslås for safen" #: data/settings_dialog.ui:653 msgid "Lock safe on idle after X minutes" msgstr "Lås safen etter X minutter når den ikke er i bruk" #: data/settings_dialog.ui:720 msgid "Clear Clipboard" msgstr "Rensk utklippstavle" #: data/settings_dialog.ui:737 msgid "Clear clipboard after X seconds" msgstr "Rensk utklippstavle etter X sekunder" #: data/settings_dialog.ui:804 msgid "Show Password Fields" msgstr "Vis passordfelt" #: data/settings_dialog.ui:821 msgid "Display passwords in plain text" msgstr "Vis passord i klartekst" #: data/settings_dialog.ui:887 msgid "Clear Recent List" msgstr "Rensk siste liste" #: data/settings_dialog.ui:904 msgid "Clear the recently opened safes list" msgstr "Rensk lista over sist åpnede safer" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:9 msgid "Safety Info" msgstr "Sikkerhetsinfo" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:10 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Det er mulig at eksterne programmer vil lage ukrypterte skjulte eller " "midlertidige kopier av dette vedlegget! Vennligst fortsett med forsiktighet." #. Discard all the changes which the user have made to his keepass safe #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/attachment_warning_dialog.ui:23 data/quit_dialog.ui:22 #: data/unlocked_database.ui:1274 msgid "Back" msgstr "Tilbake" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:36 msgid "Proceed" msgstr "Fortsett" #: data/database_settings_dialog.ui:55 msgid "Details" msgstr "Detaljer" #: data/database_settings_dialog.ui:80 msgid "Path" msgstr "Sti" #: data/database_settings_dialog.ui:97 msgid "File Size" msgstr "Filstørrelse" #: data/database_settings_dialog.ui:114 msgid "Safe Name" msgstr "Safenavn" #. KeePass is a proper noun #: data/database_settings_dialog.ui:144 msgid "KeePass Version" msgstr "KeePass versjon" #: data/database_settings_dialog.ui:161 msgid "Creation Date" msgstr "Opprettet datao" #: data/database_settings_dialog.ui:178 data/database_settings_dialog.ui:801 msgid "Encryption Algorithm" msgstr "Krypteringsalgoritme" #: data/database_settings_dialog.ui:195 msgid "Derivation Algorithm" msgstr "Generatoralgoritme" #. Statistics #: data/database_settings_dialog.ui:300 msgid "Stats" msgstr "Stats" #: data/database_settings_dialog.ui:325 msgid "Number of Groups" msgstr "Antall grupper" #: data/database_settings_dialog.ui:342 msgid "Passwords" msgstr "Passord" #: data/database_settings_dialog.ui:359 msgid "Number of Entries" msgstr "Antall oppføringer" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:461 msgid "New" msgstr "Nytt" #: data/database_settings_dialog.ui:480 data/database_settings_dialog.ui:481 msgid "Generate Password" msgstr "Generer passord" #. Retype the new password to confirm #: data/database_settings_dialog.ui:494 msgid "Confirm" msgstr "Bekreft" #. Current password #: data/database_settings_dialog.ui:524 msgid "Current" msgstr "Nåværende" #: data/database_settings_dialog.ui:579 data/create_database.ui:157 msgid "Keyfile" msgstr "Nøkkelfil" #: data/database_settings_dialog.ui:632 msgid "Select current keyfile" msgstr "Velg nåværende nøkkelfil" #: data/database_settings_dialog.ui:708 msgid "Generate new keyfile" msgstr "Skap ny nøkkelfil" #: data/database_settings_dialog.ui:741 data/database_settings_dialog.ui:962 msgid "Apply Changes" msgstr "Utfør endinger" #: data/database_settings_dialog.ui:762 msgid "Authentication" msgstr "Autentiser" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:834 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:851 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:868 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:893 msgid "Key Derivation Function" msgstr "Nøkkelgeneratoralgoritme" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "Ønsker du å lagre alle safer med ulagrede endringer?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "Velg safen du ønsker å lagre." #: data/quit_dialog.ui:35 msgid "Quit" msgstr "Avslutt" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "Kopi" #: data/notes_dialog.ui:52 msgid "Close" msgstr "Steng" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "Velg modus" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "Søk" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "Tom gruppe" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "Ingen søkeresultat" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "Skriv søketerm" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "Sortering" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "A–Z" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Z–A" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "Sist lagt til" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "Lås" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "Ny oppføring" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "Ny gruppe" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlocked_database.ui:923 data/unlock_database.ui:272 msgid "New Safe" msgstr "Ny safe" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlocked_database.ui:937 data/created_database.ui:50 #: data/unlock_database.ui:286 data/unlock_database.ui:354 msgid "Open Safe" msgstr "Åpne safe" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "Safe innstillinger" #: data/unlocked_database.ui:976 data/unlock_database.ui:311 #: data/create_database.ui:887 data/main_window.ui:200 msgid "Preferences" msgstr "Egenskaper" #: data/unlocked_database.ui:990 data/unlock_database.ui:325 #: data/create_database.ui:901 data/main_window.ui:214 msgid "Keyboard Shortcuts" msgstr "Tastatursnarveier" #. "Password Safe" is the application name #: data/unlocked_database.ui:1004 data/unlock_database.ui:339 #: data/create_database.ui:915 data/main_window.ui:228 msgid "About Password Safe" msgstr "Om Passord safe" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "Lokal" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "Full tekst" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "Dublett" #: data/unlocked_database.ui:1195 data/references_dialog.ui:314 msgid "References" msgstr "Referanser" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "Slett" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "Flytt utvalg" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "Slett utvalg" #: data/unlocked_database.ui:1452 data/override_dialog.ui:22 msgid "Cancel" msgstr "Avbryt" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "Velg alt" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "Velg ingenting" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "Klikk på en avhukningsboks for å velge" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "Safen ble opprettet" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "Skriv inn passord og velg en nøkkelfil for å låse opp" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "Safen er låst" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "Velg nøkkelfil for å låse opp" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "Åpne nøkkelfil" #. Application title in headerbar. #. Application name in the headerbar title #: data/unlock_database.ui:353 data/create_database.ui:929 #: data/main_window.ui:355 msgid "Password Safe" msgstr "Passord Safe" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "Skriv inn passord for å låse opp" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "Kunne ikke låse opp safen" #: data/create_database.ui:94 msgid "Use a password to secure your safe" msgstr "Bruk et passord for å sikre din safe" #: data/create_database.ui:177 msgid "Use a keyfile to secure your safe" msgstr "Bruk en nøkkelfil for å sikre din safe" #: data/create_database.ui:240 msgid "Composite" msgstr "Sammensatt" #: data/create_database.ui:260 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "Bruk et passord sammen med en nøkkelfil for å sikre din safe" #: data/create_database.ui:303 msgid "Protect your safe" msgstr "Beskytt din safe" #: data/create_database.ui:415 msgid "Set password for safe" msgstr "Sett passord for safen" #: data/create_database.ui:430 msgid "Enter Password" msgstr "Skriv inn passord" #: data/create_database.ui:476 msgid "Password Match Check" msgstr "Passord verifikasjon" #: data/create_database.ui:562 msgid "Repeat password for safe" msgstr "Gjenta passord for safen" #: data/create_database.ui:608 msgid "Match Check Failed" msgstr "Kunne ikke verifisere" #: data/create_database.ui:667 msgid "Please try again" msgstr "Vennligst prøv på nytt" #: data/create_database.ui:817 msgid "Set keyfile for safe" msgstr "Sett nøkkelfil for safen" #: data/create_database.ui:832 msgid "Generate Keyfile" msgstr "Skap nøkkelfil" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:930 msgid "Create Safe" msgstr "Lag safe" #: data/references_dialog.ui:23 msgid "Code" msgstr "Kode" #: data/references_dialog.ui:38 data/references_dialog.ui:403 #: data/references_dialog.ui:554 msgid "Property" msgstr "Egenskap" #: data/references_dialog.ui:346 msgid "Syntax" msgstr "Syntaks" #: data/references_dialog.ui:361 msgid "The placeholder syntax for field references is the following:" msgstr "Plassholdersyntaksen for feltreferanser er følgende:" #: data/references_dialog.ui:402 data/references_dialog.ui:441 msgid "Show Field Codes" msgstr "Vis feltkoder" #: data/references_dialog.ui:442 msgid "Identifier" msgstr "Identifikator" #: data/references_dialog.ui:524 msgid "Reference" msgstr "Referanse" #: data/references_dialog.ui:631 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "Hver oppføring har en unik identifikator kalt UUID.\n" "Den finnes i egenskapene til oppføringen." #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "Sikre passordsafen" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:62 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Lagre sikkert passord, notater og data. Opprett eller importer " "en ny Keepass-safe." #: data/main_window.ui:269 msgid "New…" msgstr "Ny…" #: data/main_window.ui:314 msgid "Open…" msgstr "Åpne…" #: data/main_window.ui:411 msgid "Recent Databases" msgstr "Tidligere databaser" #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Fila finnes allerede" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "Vil du overstyre den?" #: data/override_dialog.ui:35 msgid "Override" msgstr "Overstyre" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "Ingen gruppetittel angitt" #: passwordsafe/main_window.py:297 msgid "Choose a Keepass safe" msgstr "Velg en Keepass safe" #: passwordsafe/main_window.py:307 passwordsafe/main_window.py:388 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 databaser" #: passwordsafe/main_window.py:336 msgid "Unable to open file \"{}\"." msgstr "Kan ikke åpne filen \"{}\"." #: passwordsafe/main_window.py:339 msgid "File type {} ({}) is not supported." msgstr "Filtypen {} ({}) er ikke støttet." #: passwordsafe/main_window.py:379 msgid "Choose location for Keepass safe" msgstr "Velg sted for Keepass safen" #: passwordsafe/unlocked_database.py:483 msgid "Database saved" msgstr "Database lagret" #: passwordsafe/unlocked_database.py:486 msgid "Please wait. Another save is running." msgstr "Vennligst" #: passwordsafe/unlocked_database.py:489 msgid "No changes made" msgstr "Ingen endringer gjort" #: passwordsafe/unlocked_database.py:669 msgid "Copied to clipboard" msgstr "Kopiert til utklippstavlen" #: passwordsafe/unlocked_database.py:824 #, python-format msgid "%s locked" msgstr "%s låst" #: passwordsafe/unlocked_database.py:824 msgid "Keepass safe locked due to inactivity" msgstr "Keepass safe låst på grunn av inaktivitet" #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "Velg sted for nøkkelfil" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "Skaper…" #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "Velg nåværende nøkkelfil" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Åpen" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Utfør…" #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Ukjent" #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bit" #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "CHACHA20 256-bit" #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/unlock_database.py:214 msgid "Database already opened" msgstr "Databasen er allerede åpnet" #: passwordsafe/unlock_database.py:300 msgid "Choose a keyfile" msgstr "Velg en nøkkelfil" #: passwordsafe/unlock_database.py:353 passwordsafe/unlock_database.py:410 msgid "Try again" msgstr "Prøv på nytt" #: passwordsafe/unlock_database.py:419 msgid "Choose Keyfile" msgstr "Velg nøkkelfil" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "Sletting gjennomført" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "Flytting ferdig" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "Hopper over flytting av gruppe inn i seg selv" #: passwordsafe/database_manager.py:384 msgid "Clone" msgstr "Klone" #: passwordsafe/entry_page.py:513 passwordsafe/entry_page.py:576 msgid "Attribute key already exists" msgstr "Attributtnøkkel finnes allerede" #: passwordsafe/entry_page.py:604 msgid "Select attachment" msgstr "Velg vedlegg" #: passwordsafe/entry_page.py:605 msgid "Add" msgstr "Legg til" #: passwordsafe/entry_page.py:651 msgid "Save attachment" msgstr "Lagre vedlegg" #: passwordsafe/entry_row.py:64 msgid "Title not specified" msgstr "Tittel er ikke angitt" #: passwordsafe/entry_row.py:75 msgid "No username specified" msgstr "Ingen brukernavn er angitt" secrets-5.1/po/nl.po000066400000000000000000001174021415312107300144200ustar00rootroot00000000000000# Dutch translation for PasswordSafe. # Copyright (C) 2019 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # # Nathan Follens , 2019-2021. # Hannie Dumoleyn , 2020. msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-06-08 18:14+0000\n" "PO-Revision-Date: 2021-09-01 23:45+0200\n" "Last-Translator: Nathan Follens \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Uw wachtwoorden beheren" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Kom meer te weten over Wachtwoordkluis" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Nathan Follens \n" "\n" "Meer info over Gnome-NL http://nl.gnome.org" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Veiligheidsinfo" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Externe toepassingen kunnen mogelijk onversleutelde verborgen of tijdelijke " "kopieën van dit bijlagebestand aanmaken! Wees dus voorzichtig." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "V_orige" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Verder" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Attribuut verwijderen" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Kleur" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Wachtwoordkluis" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Kluis aanmaken" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Voorkeuren" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Sneltoetsen" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Over Wachtwoordkluis" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Beveilig uw kluis" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "Wa_chtwoord" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Gebruik een wachtwoord om uw kluis te beveiligen." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Sleutelbestand" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Gebruik een sleutelbestand om uw kluis te beveiligen." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Samengesteld" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Gebruik een wachtwoord in combinatie met een sleutelbestand om uw kluis te " "beveiligen." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Voer wachtwoord in" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Stel een wachtwoord in voor uw kluis." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Voer wachtwoord opnieuw in" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Herhaal het wachtwoord voor uw kluis." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Wachtwoorden komen niet overeen" #: data/create_database.ui:299 msgid "Please try again." msgstr "Probeer het opnieuw." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Bevestigen" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Sleutelbestand genereren" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Stel sleutelbestand in voor kluis" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Genereren" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Kluis aangemaakt" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "Kluis _openen" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Gegevens" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Pad" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Bestandsgrootte" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Naam van kluis" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass-versie" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Aanmaakdatum" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:728 msgid "Encryption Algorithm" msgstr "Versleutelingsalgoritme" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Afleidingsalgoritme" #. Statistics #: data/database_settings_dialog.ui:299 msgid "Stats" msgstr "Statistieken" #: data/database_settings_dialog.ui:319 msgid "Number of Groups" msgstr "Aantal groepen" #: data/database_settings_dialog.ui:336 msgid "Passwords" msgstr "Wachtwoorden" #: data/database_settings_dialog.ui:353 msgid "Number of Entries" msgstr "Aantal items" #: data/database_settings_dialog.ui:409 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Algemeen" #: data/database_settings_dialog.ui:429 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Wachtwoord" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:446 msgid "_New" msgstr "_Nieuw" #: data/database_settings_dialog.ui:467 data/database_settings_dialog.ui:468 msgid "Generate Password" msgstr "Wachtwoord genereren" #. Retype the new password to confirm #: data/database_settings_dialog.ui:481 msgid "C_onfirm" msgstr "B_evestigen" #. Current password #: data/database_settings_dialog.ui:513 msgid "_Current" msgstr "_Huidig" #: data/database_settings_dialog.ui:562 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Sleutelbestand" #: data/database_settings_dialog.ui:605 msgid "_Select current keyfile" msgstr "Huidig sleutelbestand _selecteren" #: data/database_settings_dialog.ui:663 msgid "_Generate new keyfile" msgstr "Nieuw sleutelbestand _genereren" #: data/database_settings_dialog.ui:683 msgid "_Apply Changes" msgstr "Wijzigingen toep_assen" #: data/database_settings_dialog.ui:700 msgid "Authentication" msgstr "Aanmeldingscontrole" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:754 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:771 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:788 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:805 msgid "Key Derivation Function" msgstr "Sleutelafleidingsfunctie" #: data/database_settings_dialog.ui:859 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Wijzigingen toepassen" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titel" #: data/entry_page.ui:54 msgid "_Username" msgstr "Gebr_uikersnaam" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "Op_merkingen" #: data/entry_page.ui:196 msgid "Icon" msgstr "Pictogram" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Bijlagen" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "Bijl_age toevoegen" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Attributen" #: data/entry_page.ui:318 msgid "Key" msgstr "Sleutel" #: data/entry_page.ui:325 msgid "Value" msgstr "Waarde" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Attribuut toevoegen" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Gebruikersnaam kopiëren naar klembord" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Wachtwoord kopiëren naar klembord" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Toepassing" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Kluis aanmaken" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Kluis openen" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Voorkeuren openen" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Sneltoetsen tonen" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Afsluiten" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Kluis" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Kluis vergrendelen" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Kluis opslaan" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Zoeken" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Item toevoegen" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Groep toevoegen" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Item" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Wachtwoord kopiëren" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Gebruikersnaam kopiëren" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Teruggaan" #: data/main_window.ui:25 msgid "New…" msgstr "Nieuw…" #: data/main_window.ui:38 msgid "Open…" msgstr "Openen…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopiëren" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Wachtwoordkluis is een wachtwoordbeheerder die gebruik maakt van het KeePass " "v.4-formaat. Hij integreert perfect met het Gnome-bureaublad en biedt een " "eenvoudige en duidelijke interface voor het beheer van wachtwoorddatabases." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Een wachtwoordbeheerder voor Gnome" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encrypt;secure;versleutel;beveilig;veilig;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Donker GTK-thema gebruiken" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Gebruik de donkere variant van uw GTK+-thema. Let op: niet elk GTK+-thema " "heeft een donkere variant." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Laatst geopende database opnieuw openen" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Open automatisch het vergrendelingsscherm van de laatst geopende database, " "zoniet toon het welkomstscherm." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Iedere wijziging automatisch opslaan" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Sla iedere wijziging onmiddellijk op in de database. Let op: met automatisch " "opslaan ingeschakeld, kunt u geen wijzigingen terugdraaien." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Database vergrendelen na X minuten" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Vergrendel uw database automatisch na een gegeven aantal minuten voor " "verhoogde beveiliging." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Klembord wissen na X seconden" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Wis het klembord na kopiëren uit veiligheidsoverwegingen." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Wachtwoorden weergeven als platte tekst" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Geef de wachtwoorden in de wachtwoordvelden standaard weer." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Venstergrootte" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Onthoud de venstergrootte." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Laatst geopende database" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Pad naar de laatst geopende database." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Laatst geopende databases" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Een lijst van de laatst geopende databases." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Samengestelde sleutel onthouden" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Onthoud de laatst gebruikte samengestelde sleutel voor ontgrendelen van " "database." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Laatst gebruikte samengestelde sleutel" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Pad naar laatst gebruikte samengestelde sleutel voor ontgrendelen van " "database." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Ontgrendelingsmethode onthouden" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Onthoud de laatst gebruikte ontgrendelingsmethode voor toekomstig " "ontgrendelen van database." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Back-up maken van database bij ontgrendelen" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Indien er een fout optreedt bij het opslaan van de database, kunt u een back-" "up vinden op ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Sorteervolgorde van groepen en items" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Volgorde van de rijen in het groepen- en items-overzicht." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Laatst gebruikte ontgrendelingsmethode" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Wordt gebruikt om de laatst gebruikte ontgrendelingsmethode op te slaan en " "voor een sneller ontgrendelingsproces te zorgen." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Volledige tekst doorzoeken gebruiken" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Een zoekopdracht uitvoeren in alle waarden van items." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Huidige groep doorzoeken" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Alleen naar items in de huidige groep doorzoeken." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Hoofdletters gebruiken bij het genereren van een wachtwoord" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Hoofdletters A-Z gebruiken bij het genereren van een willekeurig wachtwoord." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Kleine letters gebruiken bij het genereren van een wachtwoord" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Kleine letters a-z gebruiken bij het genereren van een willekeurig " "wachtwoord." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Cijfers gebruiken bij het genereren van een wachtwoord" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "" "Cijfers 0-9 gebruiken bij het genereren van een willekeurig wachtwoord." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Symbolen gebruiken bij het genereren van een wachtwoord" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Niet-alfanumerieke ASCII-symbolen gebruiken bij het genereren van een " "willekeurig wachtwoord." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Lengte van wachtwoord bij het genereren van een wachtwoord" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Aantal afzonderlijke tekens bij het genereren van een wachtwoord." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Aantal woorden bij het genereren van een wachtwoordzin" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Te gebruiken aantal woorden bij het genereren van een wachtwoordzin." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Scheidingsteken bij het genereren van een wachtwoordzin" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "" "Scheidingsteken tussen woorden bij het genereren van een wachtwoordzin." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Lengte" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Tekens" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Woorden" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Scheiding" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Voer teken hier in…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Wachtwoord" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Eigenschappen" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Benaderd" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Aangepast" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Aangemaakt" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Wilt u alle kluizen met onopgeslagen wijzigingen opslaan?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Selecteer de kluizen dit u wilt opslaan." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Annuleren" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "A_fsluiten" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Recente kluizen" #: data/references_dialog.ui:20 msgid "Code" msgstr "Code" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Eigenschap" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titel" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Gebruikersnaam" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Opmerkingen" #: data/references_dialog.ui:267 msgid "References" msgstr "Referenties" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntax" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "De voorlopige syntax voor veldreferenties is als volgt:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Veldcodes weergeven" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificatie" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referentie" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Elk item heeft een unieke identificatie, genaamd UUID. Deze kan gevonden " "worden in de eigenschappen van het item." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Onopgeslagen wijzigingen" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Wilt u alle wijzigingen aan de kluis opslaan?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Afsluiten zonder opslaan" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Niet afsluiten" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "Op_slaan en sluiten" #: data/search.ui:70 msgid "Enter search term" msgstr "Voer zoekterm in" #: data/search.ui:104 msgid "No search results" msgstr "Geen zoekresultaten" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Selectie verplaatsen" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Selectie verwijderen" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Annuleren" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Donker thema" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Donker GTK-thema gebruiken." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Eerste-start-sc_herm verbergen" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Laatst geopende kluis opnieuw openen." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Kluis" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "Automatisch op_slaan" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Iedere wijziging automatisch opslaan." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Ontgrendelen" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Samengestelde _sleutel onthouden" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Laatst gebruikte samengestelde sleutel onthouden." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Ontgrendelingsmethode ontho_uden" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Zorg voor sneller ontgrendelen." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Wachtwoord genereren" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Lengte van wachtwoord" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Aantal tekens bij het genereren van een wachtwoord." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Hoofdletters" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Hoofdletters A-Z gebruiken bij het genereren van een wachtwoord." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "K_leine letters" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Kleine letters a-z gebruiken bij het genereren van een wachtwoord." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Numerieke tekens" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Numerieke tekens gebruiken bij het genereren van een wachtwoord." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "_Speciale tekens" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "" "Niet-alfanumerieke ASCII-symbolen gebruiken bij het genereren van een " "wachtwoord." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Wachtwoordzin genereren" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Lengte van wachtwoordzin" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Teken invoeren" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Beveiliging" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Kluisvergrendelingstime-out" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Kluis vergrendelen indien X minuten inactief." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Klembord wissen" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Klembord wissen na X seconden." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Wachtwoordvelden tonen" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Wachtwoorden weergeven als platte tekst." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Recente lijst wissen" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "De lijst met recent geopende kluizen wissen." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nieuwe kluis" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Kluis openen" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Kluis is vergrendeld" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Voer wachtwoord in om te ontgrendelen" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selecteer sleutelbestand om te ontgrendelen" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "Sleutelbestand _openen" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Voer wachtwoord in en selecteer sleutelbestand om te ontgrendelen" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Samengesteld" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Lege groep" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Klik op een selectievakje om te selecteren" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Zoeken" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Selectiemodus" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "Op_slaan" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "Vergrende_len" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "So_rteren" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "_Laatst toegevoegd" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "_Kluisinstellingen" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "_Alles selecteren" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "_Niets selecteren" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_upliceren" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "Ve_rwijzingen" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Eigenschappen" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "Verwij_deren" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Nieuw it_em" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Nieuwe _groep" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Veilige wachtwoordkluis" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Bewaar uw wachtwoorden, notities en gegevens op een veilige manier. Maak " "een nieuwe Keepass-kluis aan of importeer er een." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Kan niet afsluiten: kon kluis niet opslaan" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Wachtwoorden komen niet overeen" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Kies locatie voor sleutelbestand" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Bezig met genereren…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klonen" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Kies huidig sleutelbestand" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Openen" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Toepassen…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Onbekend" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" # Of is het het attribuut 'sleutel'? #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Attribuutsleutel bestaat al" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Selecteer een bijlage" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Toevoegen" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Bijlage opslaan" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Gebruikersnaam gekopieerd naar klembord" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Wachtwoord gekopieerd naar klembord" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Geen titel opgegeven" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Geen gebruikersnaam opgegeven" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Kies een Keepass-kluis" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4-database" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Kon bestand niet openen" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Kon bestand niet openen: MIME-type wordt niet ondersteund" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Kluis reeds geopend" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Kies locatie voor Keepass-kluis" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Aanmaken" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operatie afgebroken: huidig actieve groep wordt verwijderd" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Verwijdere" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operatie afgebroken: huidig actieve groep wordt verplaatst" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Verplaatsen voltooid" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Kies een sleutelbestand" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Kies een sleutelbestand" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Het kdb-formaat wordt niet ondersteund" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Ontgrendelen van kluis mislukt" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Opnieuw proberen" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Kluis opgeslagen" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Kon kluis niet opslaan" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Even geduld, een andere opsla-opdracht wordt uitgevoerd." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Geen wijzigingen" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Gekopieerd naar klembord" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Kluis vergrendeld wegens inactiviteit" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} item geselecteerd" msgstr[1] "{} items geselecteerd" #~ msgid "Preferences" #~ msgstr "Voorkeuren" #~ msgid "New" #~ msgstr "Nieuw" #~ msgid "Secret_Photo.png" #~ msgstr "Geheime_foto.png" #~ msgid "Show/hide password" #~ msgstr "Wachtwoord tonen/verbergen" #~ msgid "First Start" #~ msgstr "Eerste start" #~| msgid "Full Text" #~ msgid "Full-Text Search" #~ msgstr "Volledige tekst doorzoeken" #~ msgid "Current Group Search" #~ msgstr "Huidige groep doorzoeken" #~ msgid "Timeout" #~ msgstr "Time-out" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Toegangspagina sluiten" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Naar bovenliggende groep gaan" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Nieuwe kluis" #~ msgid "Add" #~ msgstr "Toevoegen" #~ msgid "No group title specified" #~ msgstr "Geen groepstitel opgegeven" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Kan bestand ‘{}’ niet openen." #~ msgid "Skipped moving group into itself" #~ msgstr "Verplaatsen van groep in zichzelf overgeslagen" #~ msgid "Database saved" #~ msgstr "Database opgeslagen" #~ msgid "%s locked" #~ msgstr "%s vergrendeld" #~ msgid "Close" #~ msgstr "Sluiten" #~ msgid "Discard" #~ msgstr "Verwerpen" #~ msgid "Local" #~ msgstr "Lokaal" #~ msgid "File already exists" #~ msgstr "Bestand bestaat al" #~ msgid "Do you want to override it?" #~ msgstr "Wilt u dit overschrijven?" #~ msgid "Override" #~ msgstr "Overschrijven" #~ msgid "Settings" #~ msgstr "Instellingen" #~ msgid "@ICON@" #~ msgstr "@ICON@" secrets-5.1/po/pa.po000066400000000000000000001307371415312107300144150ustar00rootroot00000000000000# Punjabi translation for PasswordSafe. # Copyright (C) 2021 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # # A S Alam , 2021. msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-02-04 16:42+0000\n" "PO-Revision-Date: 2021-02-04 23:38-0800\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 20.08.1\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "ਆਪਣੇ ਪਾਸਵਰਡਾਂ ਲਈ ਇੰਤਜ਼ਾਮ" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "ਪਾਸਵਰਡ ਸੇਫ਼ ਬਾਰੇ ਹੋਰ ਜਾਣੋ" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "ਅ ਸ ਆਲਮ (A S Alam) ੨੦੨੧\n" "Punjabi OpenSource Team (POST) www.satluj.org" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "ਸੁਰੱਖਿਆ ਜਾਣਕਾਰੀ" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "ਪਿੱਛੇ(_B)" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "ਜਾਰੀ ਰੱਖੋ(_P)" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "ਗੁਣ ਹਟਾਓ" #: data/color_entry_row.ui:14 msgid "Color" msgstr "ਰੰਗ" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "ਪਾਸਵਰਡ ਸੇਫ਼" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "ਸੇਫ਼ ਨੂੰ ਬਣਾਓ" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "ਪਾਸਵਰਡ ਸੇਫ਼ ਬਾਰੇ(_A)" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "ਆਪਣੀ ਸੇਫ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰੋ" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "ਪਾਸਵਰਡ(_P)" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "ਆਪਣੀ ਸੇਫ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਪਾਸਵਰਡ ਵਰਤੋਂ" #: data/create_database.ui:65 msgid "_Keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ(_K)" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "ਆਪਣੀ ਸੇਫ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਕੁੰਜੀ-ਫਾਇਲ ਵਰਤੋਂ।" #: data/create_database.ui:78 msgid "_Composite" msgstr "ਮਿਸ਼ਰਿਤ(_C)" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "ਆਪਣੀ ਸੇਫ਼ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਕੁੰਜੀ-ਫਾਇਲ ਨਾਲ ਪਾਸਵਰਡ ਮਿਲਾ ਕੇ ਵਰਤੋਂ।" #: data/create_database.ui:115 msgid "Enter Password" msgstr "ਪਾਸਵਰਡ ਦਿਓ" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "ਸੇਫ਼ ਲਈ ਪਾਸਵਰਡ ਲਾਓ।" #: data/create_database.ui:198 msgid "Password Match Check" msgstr "ਪਾਸਵਰਡ ਮਿਲਾਨ ਜਾਂਚ" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "ਸੇਫ਼ ਲਈ ਪਾਸਵਰਡ ਦੁਹਰਾਓ।" #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "ਮਿਲਾਨ ਜਾਂਚ ਅਸਫ਼ਲ ਹੈ" #: data/create_database.ui:299 msgid "Please try again." msgstr "ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" #: data/create_database.ui:348 msgid "_Confirm" msgstr "ਤਸਦੀਕ ਕਰੋ(_C)" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ ਬਣਾਓ" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "ਸੇਫ਼ ਲਈ ਕੁੰਜੀ-ਫਾਇਲ ਸੈੱਟ ਕਰੋ" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "ਬਣਾਓ(_G)" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "ਸੇਫ਼ ਕਾਮਯਾਬੀ ਨਾਲ ਬਣਾਈ" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "ਸੇਫ਼ ਨੂੰ ਖੋਲ੍ਹੋ(_O)" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "ਵੇਰਵੇ" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "ਮਾਰਗ" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "ਫਾਇਲ ਦਾ ਆਕਾਰ" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "ਸੇਫ਼ ਦਾ ਨਾਂ" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass ਵਰਜ਼ਨ" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "ਬਣਾਉਣ ਦੀ ਤਾਰੀਖ" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "ਇੰਕ੍ਰਿਪਸ਼ਨ ਐਲਗੋਰਿਥਮ" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "ਡੇਰੀਵੇਸ਼ਨ ਐਲੋਗਰਿਥਮ" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "ਅੰਕੜੇ" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "ਗਰੁੱਪਾਂ ਦੀ ਗਿਣਤੀ" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "ਪਾਸਵਰਡ" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "ਐਂਟਰੀਆਂ ਦੀ ਗਿਣਤੀ" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "ਆਮ" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "ਪਾਸਵਰਡ" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "ਨਵਾਂ(_N)" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "ਪਾਸਵਰਡ ਬਣਾਓ" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "ਤਸਦੀਕ(_o)" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "ਮੌਜੂਦਾ(_C)" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:30 msgid "Keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "ਮੌਜੂਦਾ ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ(_S)" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "ਨਵੀਂ ਕੁੰਜੀ-ਫਾਇਲ ਬਣਾਓ(_G)" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ(_A)" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "ਪਰਮਾਣਕਿਤਾ" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-ਬਿੱਟ" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-ਬਿੱਟ" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-ਬਿੱਟ" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "ਕੁੰਜੀ ਡੇਰੀਵੇਸ਼ਨ ਫੰਕਸ਼ਨ" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "ਨਾਂ(_T)" #: data/entry_page.ui:54 msgid "_Username" msgstr "ਵਰਤੋਂਕਾਰ-ਨਾਂ(_U)" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "ਨੋਟਿਸ(_N)" #: data/entry_page.ui:196 msgid "Icon" msgstr "ਆਈਕਾਨ" #: data/entry_page.ui:231 msgid "Attachments" msgstr "ਅਟੈਚਮੈਂਟਾਂ" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "ਅਟੈਚਮੈੰਟ ਜੋੜੋ(_A)" #: data/entry_page.ui:299 msgid "Attributes" msgstr "ਗੁਣ" #: data/entry_page.ui:318 msgid "Key" msgstr "ਕੁੰਜੀ" #: data/entry_page.ui:325 msgid "Value" msgstr "ਮੁੱਲ" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "ਗੁਣ ਜੋੜੋ" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "ਵਰਤੋਂਕਾਰ ਨਾਂ ਨੂੰ ਕਲਿੱਪਬੋਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "ਪਾਸਵਰਡ ਨੂੰ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "ਐਪਲੀਕੇਸ਼ਨ" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "ਸੇਫ਼ ਬਣਾਓ" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "ਸੇਫ਼ ਨੂੰ ਖੋਲ੍ਹੋ" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "ਖੋਲ੍ਹਣ ਲਈ ਪਸੰਦਾਂ" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "ਸ਼ਾਰਟਕੱਟ ਵੇਖਾਓ" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "ਬਾਹਰ" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "ਸੇਫ਼" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "ਸੇਫ਼ ਨੂੰ ਲਾਕ ਕਰੋ" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "ਸੇਫ਼ ਨੂੰ ਸੰਭਾਲੋ" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "ਖੋਜ ਖੋਲ੍ਹੋ" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "ਐਂਟਰੀ ਬਣਾਓ" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "ਗਰੁੱਪ ਬਣਾਓ" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "ਐਂਟਰੀ" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "ਪਾਸਵਰਡ ਕਾਪੀ ਕਰੋ" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "ਵਰਤੋਂਕਾਰ ਨਾਂ ਕਾਪੀ ਕਰੋ" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "ਪਿੱਛੇ ਜਾਓ" #: data/main_window.ui:25 msgid "New…" msgstr "ਨਵਾਂ…" #: data/main_window.ui:38 msgid "Open…" msgstr "…ਖੋਲ੍ਹੋ" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "ਕਾਪੀ ਕਰੋ(_C)" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "ਪਾਸਵਰਡ ਸੇਫ਼ ਪਾਸਵਰਡ ਮੈਨੇਜਰ ਹੈ, ਜੋ ਕਿ KeePass v.4 ਫਾਰਮੈਟ ਨੂੰ ਵਰਤਦਾ ਹੈ। ਇਹ ਗਨੋਮ" " ਡੈਸਕਟਾਪ " "ਨਾਲ ਬੜੇ ਸੁਚੱਜੇ ਢੰਗ ਨਾਲ ਜੁੜਦਾ ਹੈ ਅਤੇ ਪਾਸਵਰਡ ਡਾਟਾਬੇਸਾਂ ਦੇ ਇੰਤਜ਼ਾਮ ਲਈ ਸਰਲ ਅਤੇ" " ਬਿਨਾਂ ਝੰਜਟ " "ਵਾਲਾ ਇੰਟਰਫੇਸ ਹੈ।" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "ਗਨੋਮ ਲਈ ਪਾਸਵਰਡ ਮੈਨੇਜਰ" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "ਕੀਪਾਸ;ਇੰਕ੍ਰਿਪਟ;ਸੁਰੱਖਿਅਤ;ਸੁਰੱਖਿਆ" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "ਗੂੜ੍ਹਾ GTK ਥੀਮ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "ਪਿਛਲਾ ਖੋਲ੍ਹੇ ਗਏ ਡਾਟਾ ਨੂੰ ਮੁੜ-ਖੋਲ੍ਹੋ" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "ਆਖਰੀ ਖੋਲ੍ਹੇ ਡਾਟਾਬੇਸ ਦੀ ਅਣ-ਲਾਕ ਸਕਰੀਨ ਨੂੰ ਆਪਣੇ-ਆਪ ਖੋਲ੍ਹੋ, ਨਹੀਂ ਤਾਂ ਜੀ ਆਇਆਂ ਨੂੰ" " ਸਕਰੀਨ ਦਿਖਾਈ " "ਜਾਂਦੀ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "ਹਰ ਤਬਦੀਲੀ ਆਪਣੇ-ਆਪ ਸੰਭਾਲੋ" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "X ਮਿੰਟਾਂ ਬਾਦ ਡਾਟਾਬੇਸ ਲਾਕ ਕਰੋ" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "ਸੁਰੱਖਿਆ ਵਧਾਉਣ ਲਈ ਮਿੰਟਾਂ ਦੇ ਬਾਅਦ ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਨੂੰ ਆਪਣੇ-ਆਪ ਲਾਕ ਕਰਦਾ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "X ਸਕਿੰਟਾਂ ਬਾਅਦ ਕਲਿੱਪਬੋਰਡ ਮਿਟਾਓ" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚੋਂ ਪਾਸਵਰਡਾਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "ਸਰਲ ਲਿਖਤ ਵਿੱਚ ਪਾਸਵਰਡ ਦਿਖਾਓ" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਐਂਟਰੀ ਖੇਤਰਾਂ ਵਿੱਚ ਪਾਸਵਰਡ ਵੇਖਾਓ।" #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "ਵਿੰਡੋ ਦਾ ਆਕਾਰ" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਯਾਦ ਰੱਖੋ।" #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "ਆਖਰੀ ਖੋਲ੍ਹਿਆ ਡਾਟਾਬੇਸ" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "ਆਖਰੀ ਖੋਲ੍ਹੇ ਗਏ ਡਾਟਾਬੇਸ ਲਈ ਮਾਰਗ।" #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "ਪਿਛਲੀ ਵਾਰ ਖੋਲ੍ਹੇ ਗਏ ਡਾਟਾਬੇਸ" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "ਪਿਛਲੀ ਵਾਰ ਖੋਲ੍ਹੇ ਗਏ ਡਾਟਾਬੇਸਾਂ ਦੀ ਸੂਚੀ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "ਮਿਸ਼ਰਿਤ ਕੁੰਜੀ ਯਾਦ ਰੱਖੋ" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "ਡਾਟਾਬੇਸ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਵਰਤੀ ਗਈ ਪਿਛਲੀ ਮਿਸ਼ਰਿਤ ਕੁੰਜੀ ਯਾਦ ਰੱਖੋ।" #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "ਪਿਛਲੀ ਵਰਤੀ ਗਈ ਮਿਸ਼ਰਿਤ ਕੁੰਜੀ" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਦਾ ਢੰਗ ਯਾਦ ਰੱਖੋ" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "ਭਵਿੱਖ ਵਿੱਚ ਡਾਟਾਬੇਸ ਖੋਲ੍ਹਣ ਲਈ ਪਿਛਲੇ ਵਰਤੇ ਅਣ-ਲਾਕ ਢੰਗਾਂ ਨੂੰ ਯਾਦ ਰੱਖੋ।" #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਸਮੇਂ ਡਾਟਾਬੇਸ ਦਾ ਬੈਕਅੱਪ ਲਵੋ" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "ਗਰੁੱਪ ਤੇ ਐਂਟਰੀਆਂ ਨੂੰ ਲੜੀਬੱਧ ਕਰਨ ਦਾ ਢੰਗ" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "ਆਖਰੀ ਵਰਤਿਆ ਗਿਆ ਅਣ-ਲਾਕ ਕਰਨ ਦਾ ਢੰਗ" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "ਪੂਰੀ-ਲਿਖਤ ਖੋਜ ਨੂੰ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "ਐਂਟਰੀਆਂ ਦੇ ਸਾਰੇ ਮੁੱਲਾਂ ਲਈ ਖੋਜ ਕਰੋ।" #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "ਮੌਜੂਦਾ ਗਰੁੱਪ ਦੀ ਖੋਜ" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "ਸਿਰਫ਼ ਮੌਜੂਦਾ ਗਰੁੱਪ ਵਿੱਚ ਐਂਟਰੀਆਂ ਨੂੰ ਖੋਜੋ।" #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਆਕਾਰ ਦੇ ਅੱਖਰ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "ਰਲਵਾਂ-ਮਿਲਾਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ A-Z ਵੱਡੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਅੰਗਰੇਜ਼ੀ ਦੇ ਛੋਟੇ ਆਕਾਰ ਦੇ ਅੱਖਰ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "ਰਲਵਾਂ-ਮਿਲਾਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ a-z ਛੋਟੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਅੰਕ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "ਰਲਵਾਂ-ਮਿਲਾਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ 0-9 ਅੰਕਾਂ ਦੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਚਿੰਨ੍ਹ ਵਰਤੋਂ" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "ਰਲਵਾਂ-ਮਿਲਾਵਾਂ ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਗ਼ੈਰ-ਅੱਖਰੀ-ਅੰਕ ASCII ਚਿੰਨ੍ਹਾਂ ਦੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੇ ਦੌਰਾਨ ਪਾਸਵਰਡ ਲੰਬਾਈ" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:120 msgid "Number of single characters when generating a password." msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੇ ਦੌਰਾਨ ਇਕੱਲੇ ਅੱਖਰਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "ਵਾਕ ਬਣਾਉਣ ਦੌਰਾਨ ਸ਼ਬਦਾਂ ਦੀ ਗਿਣਤੀ" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "ਵਾਕ ਬਣਾਉਣ ਦੌਰਾਨ ਵਰਤਣ ਵਾਸਤੇ ਸ਼ਬਦਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "ਜਦੋਂ ਵਾਕ ਬਣਾਉਣਾ ਹੋਵੇ ਤਾਂ ਵੱਖਰੇਵਾਂ" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "ਜਦੋਂ ਵਾਕ ਬਣਾਉਣਾ ਹੋਵੇ ਤਾਂ ਵਰਤਣ ਲਈ ਵੱਖਰੇਵਾਂ ਸ਼ਬਦ ਹੈ।" #: data/password_generator_popover.ui:45 msgid "Length" msgstr "ਲੰਬਾਈ" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "ਅੱਖਰ" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "ਸ਼ਬਦ" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "ਵੱਖਰੇਵਾਂ" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "ਹਰ ਅੱਖਰ ਇੱਥੇ ਦਿਓ…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "ਵਾਕ" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "ਪਹੁੰਚ ਕੀਤੀ" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "ਸੋਧ ਕੀਤੀ" #: data/properties_dialog.ui:105 msgid "Created" msgstr "ਬਣਾਈ" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "ਕੀ ਤੁਸੀਂ ਨਾ-ਸੰਭਾਲੀਆਂ ਤਬਦੀਲੀਆਂ ਨਾਲ ਸਾਰੀਆਂ ਸੇਫ਼ਾਂ ਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "ਸੰਭਾਲਣ ਲਈ ਸੇਫ਼ਾਂ ਦੀ ਚੋਣ ਕਰੋ।" #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "ਰੱਦ ਕਰੋ(_C)" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "ਬਾਹਰ(_Q)" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "ਹਾਲ ਦੀਆਂ ਸੇਫ਼" #: data/references_dialog.ui:20 msgid "Code" msgstr "ਕੋਡ" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "ਨਾਂ" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "ਵਰਤੋਂਕਾਰ-ਨਾਂ" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "ਨੋਟਿਸ" #: data/references_dialog.ui:267 msgid "References" msgstr "ਹਵਾਲੇ" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "ਸੰਟੈਕਸ" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "ਖੇਤਰ ਕੋਡ ਵੇਖਾਓ" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "ਪਛਾਣਕਰਤਾ" #: data/references_dialog.ui:424 msgid "Reference" msgstr "ਹਵਾਲਾ" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "ਨਾ-ਸੰਭਾਲੀਆਂ ਤਬਦੀਲੀਆਂ" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "ਕੀ ਤੁਸੀਂ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਫ਼ ਵਿੱਚ ਲਿਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "ਬਿਨਾਂ ਸੰਭਾਲੇ ਬਾਹਰ ਜਾਓ(_Q)" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "ਬਾਹਰ ਨਾ ਜਾਓ(_D)" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "ਸੰਭਾਲੋ ਤੇ ਬਾਹਰ ਜਾਓ(_S)" #: data/search.ui:70 msgid "Enter search term" msgstr "ਖੋਜ ਸ਼ਬਦ ਦਿਓ" #: data/search.ui:104 msgid "No search results" msgstr "ਕੋਈ ਖੋਜ ਨਤੀਜੇ ਨਹੀਂ" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "ਚੋਣ ਨੂੰ ਹਿਲਾਓ" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "ਚੋਣ ਨੂੰ ਹਟਾਓ" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "ਗੂੜ੍ਹਾ ਥੀਮ(_D)" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "ਗੂੜ੍ਹਾ GTK ਥੀਮ ਵਰਤੋਂ." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "ਪਹਿਲੀ ਸ਼ੁਰੂਆਤੀ ਸਕਰੀਨ ਲੁਕਾਓ(_H)" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "ਆਖਰੀ ਖੋਲ੍ਹੀ ਸੇਫ਼ ਨੂੰ ਮੁੜ-ਖੋਲ੍ਹੋ।" #: data/settings_dialog.ui:51 passwordsafe/main_window.py:300 msgid "Safe" msgstr "ਸੇਫ਼" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "ਆਪਣੇ-ਆਪ ਸੰਭਾਲੋ(_S)" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "ਹਰ ਤਬਦੀਲੀ ਆਪਣੇ-ਆਪ ਸੰਭਾਲੋ।" #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "ਅਣ-ਲਾਕ ਕਰੋ" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "ਮਿਸ਼ਰਿਤ ਕੁੰਜੀ ਯਾਦ ਰੱਖੋ(_K)" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "ਆਖਰੀ ਵਰਤੀ ਗਈ ਮਿਸ਼ਰਿਤ ਕੁੰਜੀ ਯਾਦ ਰੱਖੋ।" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਦਾ ਢੰਗ ਯਾਦ ਰੱਖੋ(_U)" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "ਵੱਧ ਤੇਜ਼ੀ ਨਾਲ ਅਣ-ਲਾਕ ਕਰਨਾ ਸਮਰੱਥ ਕਰੋ।" #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣਾ" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "ਪਾਸਵਰਡ ਦੀ ਲੰਬਾਈ" #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "ਅੰਗਰੇਜ਼ੀ ਦੇ ਵੱਡੇ ਅੱਖਰ(_U)" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ A-Z ਵੱਡੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "ਅੰਗਰੇਜ਼ੀ ਦੇ ਛੋਟੇ ਅੱਖਰ(_L)" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ a-z ਛੋਟੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "ਅੰਕ(_N)" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਅੰਕਾਂ ਦੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "ਖਾਸ ਅੱਖਰ(_S)" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "ਪਾਸਵਰਡ ਬਣਾਉਣ ਦੌਰਾਨ ਗ਼ੈਰ-ਅੱਖਰੀ-ਅੰਕ ASCII ਚਿੰਨ੍ਹਾਂ ਦੇ ਅੱਖਰ ਵਰਤੋਂ।" #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "ਵਾਕ ਬਣਾਓ" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "ਵਾਕ ਦੀ ਲੰਬਾਈ" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "ਅੱਖਰ ਦਿਓ" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "ਸੁਰੱਖਿਆ" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "ਸੇਫ਼ ਲਾਕ ਸਮਾਂ-ਸਮਾਪਤੀ" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "X ਮਿੰਟਾਂ ਦੀ ਨਾ-ਵਰਤੋਂ ਦੇ ਬਾਅਦ ਸੇਫ਼ ਨੂੰ ਲਾਕ ਕਰੋ।" #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "ਕਲਿੱਪਬੋਰਡ ਮਿਟਾਓ" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "X ਸਕਿੰਟਾਂ ਬਾਅਦ ਕਲਿੱਪਬੋਰਡ ਮਿਟਾਓ।" #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "ਪਾਸਵਰਡ ਖੇਤਰਾਂ ਨੂੰ ਵੇਖਾਓ(_S)" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "ਸਰਲ ਲਿਖਤ ਵਿੱਚ ਪਾਸਵਰਡ ਦਿਖਾਓ।" #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "ਤਾਜ਼ਾ ਸੂਚੀ ਮਿਟਾਓ" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "ਤਾਜ਼ਾ ਖੋਲ੍ਹੀਆਂ ਸੇਫ਼ਾਂ ਦੀ ਸੂਚੀ ਨੂੰ ਮਿਟਾ ਦਿਓ।" #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "ਨਵੀਂ ਸੇਫ਼(_N)" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "ਸੇਫ਼ ਨੂੰ ਖੋਲ੍ਹੋ" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "ਸੇਫ਼ ਲਾਕ ਹੈ" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਦਿਓ" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ ਖੋਲ੍ਹੋ(_O)" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਦਿਓ ਤੇ ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "ਮਿਸ਼ਰਿਤ" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "ਖਾਲੀ ਗਰੁੱਪ" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "ਚੁਣਨ ਲਈ ਚੋਣ-ਬਾਕਸ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "ਖੋਜੋ" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "ਚੋਣ ਦਾ ਢੰਗ" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "ਸੰਭਾਲੋ(_S)" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "ਲਾਕ ਕਰੋ(_L)" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "ਲੜੀਬੱਧ(_r)" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "ਪਿਛਲੀ ਵਾਰੀ ਜੋੜੇ(_L)" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "ਸੇਫ਼ ਲਈ ਸੈਟਿੰਗਾਂ(_f)" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "ਸਭ ਚੁਣੋ(_A)" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "ਕੋਈ ਨਾ ਚੁਣੋ(_N)" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "ਡੁਪਲੀਕੇਟ(_u)" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "ਹਵਾਲੇ(_R)" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ(_P)" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "ਹਟਾਓ(_D)" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "ਨਵੀਂ ਐਂਟਰੀ(_E)" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "ਨਵਾਂ ਗਰੁੱਪ(_G)" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "ਸੁਰੱਖਿਅਤ ਪਾਸਵਰਡ ਸੇਫ਼" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਆਪਣੇ ਪਾਸਵਰਡਾਂ, ਨੋਟਿਸ ਤੇ ਡਾਤੇ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ। ਨਵੀਂ ਕੀਪਾਸ ਸੇਫ਼" " ਬਣਾਓ " "ਜਾਂ ਇੰਪੋਰਟ ਕਰੋ।" #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "ਬਾਹਰ ਜਾਣ ਲਈ ਅਸਮਰੱਥ: ਸੇਫ਼ ਸੰਭਾਲੀ ਨਹੀਂ ਜਾ ਸਕੀ" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ ਲਈ ਟਿਕਾਣਾ ਚੁਣੋ" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "ਕਲੋਨ ਕਰੋ" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "ਮੌਜੂਦਾ ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "ਖੋਲ੍ਹੋ(_O)" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "…ਲਾਗੂ ਕਰੋ" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "ਅਣਪਛਾਤਾ" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-ਬਿੱਟ" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-ਬਿੱਟ" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-ਬਿੱਟ" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "ਗੁਣ ਕੁੰਜੀ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "ਅਟੈਚਮੈਂਟ ਚੁਣੋ" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "ਜੋੜੋ(_A)" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "ਅਟੈਚਮੈਂਟ ਨੂੰ ਸੰਭਾਲੋ" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:101 msgid "Username copied to clipboard" msgstr "ਵਰਤੋਂਕਾਰ-ਨਾਂ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ" #: passwordsafe/entry_row.py:94 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "ਪਾਸਵਰਡ ਨੂੰ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ" #: passwordsafe/entry_row.py:113 passwordsafe/group_row.py:100 msgid "Title not specified" msgstr "ਨਾਂ ਦਿੱਤਾ ਨਹੀਂ ਹੈ" #: passwordsafe/entry_row.py:124 msgid "No username specified" msgstr "ਕੋਈ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਦਿੱਤਾ ਨਹੀਂ ਹੈ" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:205 msgid "Choose a Keepass safe" msgstr "ਕੀਪਾਸ ਸੇਫ਼ ਚੁਣੋ" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:215 passwordsafe/main_window.py:305 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 ਡਾਟਾਬੇਸ" #: passwordsafe/main_window.py:243 msgid "Could not open file" msgstr "ਫਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ" #: passwordsafe/main_window.py:252 msgid "Could not open file: Mime type not supported" msgstr "" #: passwordsafe/main_window.py:262 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "ਸੇਫ ਪਹਿਲਾਂ ਹੀ ਖੁੱਲ੍ਹੀ ਹੈ" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:294 msgid "Choose location for Keepass safe" msgstr "ਕੀਪਾਸ ਸੇਫ਼ ਲਈ ਟਿਕਾਣਾ ਚੁਣੋ" #: passwordsafe/main_window.py:297 msgid "_Create" msgstr "ਬਣਾਓ(_C)" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "ਹਟਾਉਣਾ ਪੂਰਾ ਹੋਇਆ" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "ਹਿਲਾਉਣਾ ਪੂਰਾ ਹੋਇਆ" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "ਕੁੰਜੀ-ਫਾਇਲ ਚੁਣੋ" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "" #: passwordsafe/unlock_database.py:499 passwordsafe/unlock_database.py:519 #: passwordsafe/unlock_database.py:533 msgid "Failed to unlock safe" msgstr "ਸੇਫ਼ ਨੂੰ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ" #: passwordsafe/unlock_database.py:528 msgid "Try again" msgstr "ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ" #: passwordsafe/unlocked_database.py:419 msgid "Safe saved" msgstr "ਸੇਫ਼ ਨੂੰ ਸੰਭਾਲਿਆ ਗਿਆ" #: passwordsafe/unlocked_database.py:421 msgid "Could not save Safe" msgstr "ਸੇਫ਼ ਨੂੰ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" #: passwordsafe/unlocked_database.py:430 msgid "Please wait. Another save is running." msgstr "ਉਡੀਕੋ। ਹੋਰ ਸੰਭਾਲਣ ਕਾਰਵਾਈ ਜਾਰੀ ਹੈ।" #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:434 msgid "No changes made" msgstr "ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਕੀਤੀ" #: passwordsafe/unlocked_database.py:470 msgid "Copied to clipboard" msgstr "ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:557 msgid "Safe locked due to inactivity" msgstr "ਸੇਫ਼ ਨੂੰ ਨਾ-ਸਰਗਰਮੀ ਕਰਕੇ ਲਾਕ ਕੀਤਾ" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} ਚੁਣੀ ਐਂਟਰੀ" msgstr[1] "{} ਚੁਣੀਆਂ ਐਂਟਰੀਆਂ" secrets-5.1/po/pl.po000066400000000000000000001140541415312107300144220ustar00rootroot00000000000000# Polish translation for PasswordSafe. # Copyright © 2018-2021 the PasswordSafe authors. # This file is distributed under the same license as the PasswordSafe package. # Piotr Drąg , 2018-2021. # Aviary.pl , 2018-2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 10:24+0000\n" "PO-Revision-Date: 2021-05-02 12:25+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Zarządzanie hasłami" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Więcej informacji o Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Piotr Drąg , 2018-2021\n" "Aviary.pl , 2018-2021" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informacje o bezpieczeństwie" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Jest możliwe, że zewnętrzne programy utworzą niezaszyfrowane ukryte lub " "tymczasowe kopie tego załącznika. Należy zachować ostrożność." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Wstecz" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Kontynuuj" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Usuwa atrybut" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Kolor" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Utworzenie sejfu" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferencje" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_O programie" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Ochrona sejfu" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Hasło" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Użycie hasła do zabezpieczenia sejfu." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Plik klucza" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Użycie pliku klucza do zabezpieczenia sejfu." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Złożony" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Użycie hasła w połączeniu z plikiem klucza do zabezpieczenia sejfu." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Wpisanie hasła" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Ustawienie hasła dla sejfu." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Sprawdzenie hasła" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Powtórzenie hasła dla sejfu." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Sprawdzenie się nie powiodło" #: data/create_database.ui:299 msgid "Please try again." msgstr "Proszę spróbować ponownie." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Potwierdź" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Utworzenie pliku klucza" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Ustawienie pliku klucza dla sejfu" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Utwórz" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Pomyślnie utworzono sejf" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Otwórz sejf" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Szczegóły" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Ścieżka" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Rozmiar pliku" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nazwa sejfu" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Wersja KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data utworzenia" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algorytm szyfrowania" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algorytm różniczkowania" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statystyki" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Liczba grup" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Hasła" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Liczba wpisów" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Ogólne" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Hasło" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nowe" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Tworzy hasło" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "_Potwierdzenie" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Obecne" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Plik klucza" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Wybór obecnego pliku klucza" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Utworzenie nowego pliku klucza" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Zastosuj zmiany" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Uwierzytelnianie" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bitowy" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bitowy" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bitowy" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funkcja różniczkowania klucza" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Zastosuj zmiany" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Tytuł" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Nazwa użytkownika" #: data/entry_page.ui:92 msgid "U_RL" msgstr "_Adres URL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Uwagi" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikona" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Załączniki" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Dodaj załącznik" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atrybuty" #: data/entry_page.ui:318 msgid "Key" msgstr "Klucz" #: data/entry_page.ui:325 msgid "Value" msgstr "Wartość" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Dodaje atrybut" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Kopiuje nazwę użytkownika do schowka" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Kopiuje hasło do schowka" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Utworzenie sejfu" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Otwarcie sejfu" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Otwarcie preferencji" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Wyświetlenie skrótów" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Zakończenie działania" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Sejf" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Zablokowanie sejfu" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Zapisanie sejfu" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Otwarcie wyszukiwania" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Utworzenie wpisu" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Utworzenie grupy" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Wpis" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Skopiowanie hasła" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Skopiowanie nazwy użytkownika" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Przejście wstecz" #: data/main_window.ui:25 msgid "New…" msgstr "Nowy…" #: data/main_window.ui:38 msgid "Open…" msgstr "Otwórz…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "S_kopiuj" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe to menedżer haseł używający formatu KeePass v.4. Idealnie " "integruje się ze środowiskiem GNOME i zapewnia łatwy i prosty interfejs do " "zarządzania bazami haseł." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Menedżer haseł dla środowiska GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" "keepass;hasło;hasła;szyfrowanie;zaszyfruj;bezpieczeństwo;zabezpieczenia;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Ciemny motyw biblioteki GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Użycie ciemnego wariantu używanego motywu biblioteki GTK. Proszę zauważyć, " "że nie każdy motyw biblioteki GTK ma ciemny wariant." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Ponowne otwieranie ostatnio otwartej bazy danych" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Automatyczne otwieranie ekranu odblokowania ostatnio otwartej bazy danych, " "w przeciwnym wypadku wyświetla ekran powitalny." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Automatyczne zapisywanie każdej zmiany" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Zapisywanie każdej wprowadzonej zmiany od razu do bazy danych. Proszę " "zauważyć, że nie można przywrócić zmian, jeśli automatyczne zapisywanie jest " "włączone." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Blokowanie bazy danych po X minutach" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Automatyczne blokowanie bazy danych po podanych minutach, aby zwiększyć " "bezpieczeństwo." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Czyszczenie schowka po X sekundach" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Po skopiowaniu hasła czyści schowek z powodów bezpieczeństwa." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Wyświetlanie haseł jako zwykły tekst" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Domyślnie wyświetlanie haseł w polach wpisywania." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Rozmiar okna" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Pamiętanie rozmiaru okna." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Ostatnio otwarta baza danych" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Ścieżka do ostatnio otwartej bazy danych." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Ostatnio otwarte bazy danych" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Lista ostatnio otwartych baz danych." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Pamiętanie klucza złożonego" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Pamiętanie ostatnio użytego klucza złożonego do odblokowywania baz danych." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Ostatnio użyty klucz złożony" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Ścieżka do ostatnio użytego klucza do złożonego odblokowywania baz danych." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Pamiętanie metody odblokowania" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Pamiętanie ostatnio użytej metody odblokowania do odblokowywania baz danych " "w przyszłości." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Tworzenie kopii zapasowej bazy danych podczas odblokowywania" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Jeśli podczas zapisywania bazy danych wystąpi błąd, to w ~/.cache/" "passwordsafe/backups można znaleźć jej kopię zapasową." #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Kolejność porządkowania grup i wpisów" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Kolejność rzędów w widoku grup i wpisów." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Ostatnio użyta metoda odblokowania" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Używane do przechowywania ostatnio użytej metody odblokowania oraz aby " "włączyć szybszy proces odblokowywania." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Wyszukiwanie pełnotekstowe" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Wyszukiwanie we wszystkich wartościach wpisów." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Wyszukiwanie w obecnej grupie" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Wyszukiwanie tylko wpisów w obecnej grupie." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Używanie wielkich znaków podczas tworzenia hasła" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Używanie wielkich znaków od A do Z podczas tworzenia losowego hasła." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Używanie małych znaków podczas tworzenia hasła" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Używanie małych znaków od a do z podczas tworzenia losowego hasła." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Używanie cyfr podczas tworzenia hasła" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Używanie cyfr od 0 do 9 podczas tworzenia losowego hasła." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Używanie symboli podczas tworzenia hasła" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Używanie niealfanumerycznych symboli ASCII podczas tworzenia losowego hasła." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Długość hasła podczas tworzenia hasła" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Liczba pojedynczych znaków podczas tworzenia hasła." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Liczba słów podczas tworzenia długiego hasła" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Liczba użytych słów podczas tworzenia długiego hasła." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separator podczas tworzenia długiego hasła" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Separator słów używany podczas tworzenia długiego hasła." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Długość" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Znaki" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Słowa" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separator" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Proszę wpisać znak…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Długie hasło" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Właściwości" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Dostęp" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modyfikacja" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Utworzenie" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Zapisać wszystkie sejfy z niezapisanymi zmianami?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Proszę wybrać sejfy do zapisania." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Anuluj" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "Za_kończ" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Ostatnio używane sejfy" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kod" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Właściwość" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Tytuł" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nazwa użytkownika" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "Adres URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Uwagi" #: data/references_dialog.ui:267 msgid "References" msgstr "Odniesienia" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Składnia" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Składnia odniesień pól:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Wyświetla kody pól" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identyfikator" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Odniesienie" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Każdy wpis ma unikalny identyfikator o nazwie UUID. Można go znaleźć we " "właściwościach wpisu." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Niezapisane zmiany" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Zapisać wszystkie zmiany do sejfu?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "Zakończ _bez zapisywania" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Anuluj" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Zapisz i zakończ" #: data/search.ui:70 msgid "Enter search term" msgstr "Proszę wpisać wyszukiwany tekst" #: data/search.ui:104 msgid "No search results" msgstr "Brak wyników wyszukiwania" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Przenosi zaznaczenie" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Usuwa zaznaczenie" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Anuluj" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Ciemny motyw" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Ciemny motyw biblioteki GTK." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Ukrycie ekranu pierwszego uruchomienia" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Ponowne otwieranie ostatnio otwartego sejfu." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Sejf" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Automatyczne zapisywanie" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Automatyczne zapisywanie każdej zmiany." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Odblokuj" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "_Pamiętanie klucza złożonego" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Pamiętanie ostatnio użytego klucza złożonego." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Pamiętanie _metody odblokowania" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Szybsze odblokowywanie." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Tworzenie hasła" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Długość hasła" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Liczba znaków podczas tworzenia hasła." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Wielkie znaki" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Używanie wielkich znaków od A do Z podczas tworzenia hasła." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "_Małe znaki" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Używanie małych znaków od a do z podczas tworzenia hasła." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Cyfry" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Używanie cyfr podczas tworzenia hasła." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Znaki _specjalne" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Używanie niealfanumerycznych symboli ASCII podczas tworzenia hasła." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Tworzenie długiego hasła" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Długość długiego hasła" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Proszę wpisać znak" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Zabezpieczenia" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Czas oczekiwania na zablokowanie sejfu" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Blokowanie sejfu po bezczynności przez X minut." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Czyszczenie schowka" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Czyszczenie schowka po X sekundach." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Wyświetlanie pól hasła" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Wyświetlanie haseł jako zwykły tekst." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Czyszczenie listy ostatnio używanych" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Czyszczenie listy ostatnio otwartych sejfów." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nowy sejf" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Otwórz sejf" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Sejf jest zablokowany" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Proszę wpisać hasło, aby odblokować" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Proszę wybrać plik klucza, aby odblokować" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Otwórz plik klucza" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Proszę wpisać hasło i wybrać plik klucza, aby odblokować" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Złożony" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Pusta grupa" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Kliknięcie pola wyboru zaznaczy" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Wyszukuje" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Tryb zaznaczania" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Zapisz" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "Za_blokuj" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "_Porządkowanie" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "_Ostatnio dodane" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "_Ustawienia sejfu" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Z_aznacz wszystko" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "O_dznacz wszystko" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "Po_wiel" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Odniesienia" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Właściwości" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Usuń" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "_Nowy wpis" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Nowa gr_upa" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Bezpieczny sejf na hasła" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Bezpieczne przechowywanie haseł, notatek i danych. Można utworzyć lub " "zaimportować nowy sejf KeePass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Nie można zakończyć programu: nie można zapisać sejfu" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Hasła się nie zgadzają" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Wybór położenia pliku klucza" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Tworzenie…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Kopia" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Wybór obecnego pliku klucza" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Otwórz" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Zastosuj…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Nieznany" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "256-bitowy AES" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "256-bitowy ChaCha20" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "256-bitowy Twofish" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Klucz atrybutu już istnieje" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Wybór załącznika" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Dodaj" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Zapis załącznika" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Skopiowano nazwę użytkownika do schowka" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Skopiowano hasło do schowka" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Nie podano tytułu" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Nie podano nazwy użytkownika" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Wybór sejfu KeePass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Baza danych KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Nie można otworzyć pliku" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Nie można otworzyć pliku: nieobsługiwany typ MIME" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Sejf jest już otwarty" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Wybór położenia sejfu KeePass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Utwórz" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Przerwano działanie: usuwanie obecnie aktywnej grupy" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Ukończono usunięcie" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Przerwano działanie: przenoszenie obecnie aktywnej grupy" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Ukończono przeniesienie" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Wybór pliku klucza" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Wybór pliku klucza" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Format kdb jest nieobsługiwany" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Odblokowanie sejfu się nie powiodło" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Spróbuj ponownie" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Zapisano sejf" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Nie można zapisać sejfu" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Proszę czekać. Trwa inny zapis." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Nie wprowadzono zmian" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Skopiowano do schowka" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Zablokowano sejf z powodu nieaktywności" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} zaznaczony wpis" msgstr[1] "{} zaznaczone wpisy" msgstr[2] "{} zaznaczonych wpisów" secrets-5.1/po/pt.po000066400000000000000000001177221415312107300144370ustar00rootroot00000000000000# Portuguese translation for PasswordSafe. # Copyright (C) 2019 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # mansil , 2019. # Juliano de Souza Camargo , 2020-2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe gnome-3.30\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-12 11:24+0000\n" "PO-Revision-Date: 2021-05-12 22:01+0100\n" "Last-Translator: Hugo Carvalho \n" "Language-Team: Portuguese < >\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.3\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gerir as suas palavras-passe" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Saiba mais sobre o Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Manuela Silva \n" "Juliano de Souza Camargo \n" "Hugo Carvalho " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informação de segurança" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "É possível que aplicações terceiras criem cofres ocultos sem cifragem ou " "cópias temporárias deste anexo! Proceda com precaução." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Recuar" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Aceitar" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Remover atributo" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Cor" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Criar cofre" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferências" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "A_talhos de teclado" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "Ac_erca do Password Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Proteja o seu cofre" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Palavra-passe" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Utilize uma palavra-passe para protegê-lo." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Ficheiro de chaves" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Utilize um ficheiro de chaves para protegê-lo." #: data/create_database.ui:78 msgid "_Composite" msgstr "C_omposto" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Utilize uma combinação de ficheiro de chaves e palavra-passe para protegê-lo." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Digite sua palavra-passe" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Defina a palavra-passe para o cofre." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Teste de coincidência de palavras-passe" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Repita a palavra-passe para o cofre." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Teste de coincidência falhou" #: data/create_database.ui:299 msgid "Please try again." msgstr "Por favor, tente novamente." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Confirmar" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Gere o ficheiro de chaves" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Defina o ficheiro de chaves para o cofre" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Gerar" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Cofre criado com sucesso" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Abrir cofre" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalhes" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Caminho" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Tamanho do ficheiro" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nome do cofre" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versão de KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data de criação" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritmo de cifração" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritmo de derivação" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Estatísticas" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Número de grupos" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Palavras-passe" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Número de entradas" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Geral" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Palavra-passe" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nova" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Gerar palavra-passe" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onfirmar" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "At_ual" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Ficheiro de chaves" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Selecione o ficheiro de chaves atual" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Gerar novo ficheiro de chaves" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplicar alterações" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autenticação" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256 bits" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256 bits" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256 bits" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Função de derivação de chave" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Aplicar alterações" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Título" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Utilizador" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Notas" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ícone" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Anexos" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Anexar" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atributos" #: data/entry_page.ui:318 msgid "Key" msgstr "Chave" #: data/entry_page.ui:325 msgid "Value" msgstr "Valor" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Adicionar atributo" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Copiar nome de utilizador para a área de transferência" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copiar palavra-passe para a área de transferência" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplicação" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Criar cofre" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Abrir cofre" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Abrir preferências" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Atalhos de teclado" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Sair" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Cofre" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Bloquear cofre" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Guardar cofre" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Abrir procura" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Criar entrada" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Criar grupo" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entrada" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copiar palavra-passe" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copiar utilizador" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Recuar" #: data/main_window.ui:25 msgid "New…" msgstr "Novo…" #: data/main_window.ui:38 msgid "Open…" msgstr "Abrir…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Copiar" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe é um gestor de palavras-passe que faz uso dos formatos Keepass " "v.4. Ele integra-se perfeitamente à área de trabalho GNOME e fornece uma " "interface fácil e acessível para gerir seus bancos de dados de palavras-" "passe." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Um gestor de palavras-passe para o GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encriptar;assegurar;cifrar;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Utilizar o tema noturno GTK+" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Utilizar a variante escura de seu tema GTK+. Note que todo tema GTK+ possui " "uma variante escura." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Reabrir a última base de dados aberta" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Abrir automaticamente o ecrã de desbloqueio da última base de dados aberta, " "caso contrário, mostrar o ecrã de boas-vindas." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Gravar todas alterações automaticamente" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Grava todas alterações que fez instantaneamente na base de dados. Note que " "não pode revertê-las se Auto-gravar estiver ativo." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Bloquear base de dados após X minutos" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Automaticamente bloqueia sua base de dados após alguns minutos para " "incrementar a segurança." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Limpar área de transferência após X segundos" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Como medida de segurança, limpa a área de transferência após copiar a " "palavra-passe." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Exibir palavras-passe em texto simples" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Mostra as palavras-passe nos campos de entrada por predefinição." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Tamanho da janela" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Memorizar o tamanho da janela." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Última base de dados aberta" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Caminho para a última base de dados aberta." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Última bases de dados aberta" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Uma lista dos últimos bancos de dados abertos." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Lembrar chave composta" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Lembra a última chave composta utilizada num desbloqueio de base de dados." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Última chave composta utilizada" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Caminho para a última chave composta utilizada num desbloqueio de base de " "dados." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Lembrar método de desbloqueio" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "Lembrar último método de desbloqueio usado para desbloqueios futuros." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Salvaguardar a base de dados ao desbloqueá-la" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Caso ocorra uma falha na gravação da base de dados, uma cópia de segurança " "pode ser encontrada em ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Baralhar ordem dos grupos e entradas" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordem das colunas na vista de grupos e entradas." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Último método de desbloqueio usado" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Guarda o último método de desbloqueio para acelerar o processo de " "desbloqueio." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Procurar em tudo" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Procurar em todos os valores de entrada." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Procurar no grupo atual" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Procurar só nas entradas do grupo atual." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Utilizar maiúsculas quando gerar palavras-passe" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Utilizar caracteres maiúsculos A-Z quando gerar um palavra-passe aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Utilizar minúsculas quando gerar palavras-passe" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Utilizar caracteres minúsculos a-z quando gerar um palavra-passe aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Utilizar números quando gerar palavras-passe" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Utilizar números 0-9 quando gerar um palavra-passe aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Utilizar símbolos quando gerar palavras-passe" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Utilizar símbolos especiais ASCII quando gerar um palavra-passe aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Tamanho da palavra-passe quando gerar palavras-passe" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Número de caracteres únicos ao gerar uma palavra-passe." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Número de palavras quando gerar uma frase-passe" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Número de palavras a utilizar ao gerar uma frase-passe." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separador quando gerar uma frase-passe" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Separador de palavras a utilizar ao gerar uma frase-passe." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Tamanho" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caracteres" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Palavras" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separador" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Insira o carácter aqui…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frase-passe" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propriedades" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Acedida" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Alterada" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Criada" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Quer gravar todos os cofres com alterações não gravadas?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Selecione os cofres que quer gravar." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Cancelar" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Sair" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Cofres recentes" #: data/references_dialog.ui:20 msgid "Code" msgstr "Código" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propriedade" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Título" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Utilizador" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notas" #: data/references_dialog.ui:267 msgid "References" msgstr "Referências" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxe" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "" "A sintaxe do elemento de substituição para referências de campo é a seguinte:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Ver campo de códigos" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificador" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referência" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Cada entrada tem um identificador único chamado UUID. Pode ser encontrado " "nas propriedades da entrada." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Alterações não gravadas" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Quer gravar todas as alterações no cofre?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Sair sem gravar" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Não sair" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Gravar e sair" #: data/search.ui:70 msgid "Enter search term" msgstr "Digite o termo de procura" #: data/search.ui:104 msgid "No search results" msgstr "Nenhum resultado de pesquisa" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mover seleção" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Eliminar seleção" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Cancelar" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Tema escuro" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Utilizar o tema escuro GTK+." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Ocultar o ecrã de início" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Reabrir o último cofre aberto." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Cofre" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "A_uto-gravar" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Gravar todas as alterações automaticamente." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Desbloquear" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "_Lembrar da chave composta" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Lembrar da última chave composta usada." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Lembrar do método de _desbloqueio" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Ativar aceleração de desbloqueio." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Geração de palavras-passe" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Tamanho das palavras-passe" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Número de caracteres ao gerar uma palavra-passe." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Caracteres _maiúsculos" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Utilizar caracteres maiúsculos A-Z quando gerar palavras-passe." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Caracteres mi_núsculos" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Utilizar caracteres minúsculos a-z quando gerar palavras-passe." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Caracteres numé_ricos" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Utilizar caracteres numéricos quando gerar palavras-passe." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Caracteres es_peciais" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Utilizar símbolos especiais ASCII quando gerar palavras-passe." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Geração de frases-passe" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Tamanho das frases-passe" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Digite o carácter" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Segurança" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Compasso de espera para atuar o bloqueio de segurança" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Bloqueio de segurança do cofre atua após X minutos." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Limpar a área de transferência" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Limpar a área de transferência após X segundos." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Mostrar campos de palavras-passe" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Exibir palavras-passe em texto simples." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Limpar a lista de recentes" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Limpar a lista de cofres abertos recentemente." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Novo cofre" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Abrir cofre" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "O cofre está bloqueado" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Digite a palavra-passe para desbloqueá-lo" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selecione o ficheiro de chaves para desbloqueá-lo" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Abrir ficheiro de chaves" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "" "Insira a palavra-passe e selecione o ficheiro de chaves para desbloqueá-lo" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Composto" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Grupo vazio" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Clique numa caixa de seleção para selecionar a entrada" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Procurar" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Modo seleção" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Guardar" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Bloquear" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "_Ordenação" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Ú_ltima adicionada" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Definições do co_fre" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Selecion_ar tudo" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Não selecionar _nada" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplicar" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referências" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Propriedades" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Eliminar" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Nova _entrada" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Novo _grupo" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Cofre de Palavras-passe Seguro" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Guarde em segurança as suas palavras-passe, notas e dados. Crie ou " "importe um novo cofre Keepass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Impossível sair: cofre não gravado" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Palavras-passe não coincidem" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Escolha uma localização para o ficheiro de chaves" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "A gerar…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Clonar" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Escolha o ficheiro de chaves atual" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Abrir" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Aplicar…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Desconhecido" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256 bits" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256 bits" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256 bits" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Chave atribuída já existe" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Selecionar anexo" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Adicionar" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Gravar anexo" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Nome de utilizador copiado para a área de transferência" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Palavra-passe copiada para a área de transferência" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Título não especificado" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Nome de utilizador não especificado" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Escolha um cofre KeePass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Base de dados KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Impossível abrir ficheiro" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Impossível abrir ficheiro: tipo Mime sem suporte" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Cofre já aberta" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Escolha a localização para o cofre KeePass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "Cri_ar" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operação abortada: a eliminar um grupo atualmente ativo" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Eliminação concluída" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operação abortada: a mover um grupo atualmente ativo" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Mover concluído" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Escolha um ficheiro de chaves" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Escolher ficheiro de chaves" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "O formato kdb não é suportado" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Falhou em desbloquear o cofre" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Tente novamente" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Cofre gravado" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Impossível gravar cofre" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Aguarde, por favor. Outro processo em execução." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Não foram feitas alterações" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Cofre bloqueado por inatividade" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} Entrada selecionada" msgstr[1] "{} Entradas selecionadas" #~ msgid "Preferences" #~ msgstr "Preferências" #~ msgid "New" #~ msgstr "Nova" #~ msgid "Secret_Photo.png" #~ msgstr "Foto_secreta.png" #~ msgid "Show/hide password" #~ msgstr "Mostrar/ocultar palavra-passe" #~| msgid "Hide First Start Screen" #~ msgid "First Start" #~ msgstr "Primeiro início" #~| msgid "Full Text" #~ msgid "Full-Text Search" #~ msgstr "Procurar por texto completo" #~ msgid "Current Group Search" #~ msgstr "Procurar no grupo atual" #~ msgid "Timeout" #~ msgstr "Tempo expirou" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Sair da página atual" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Navegar por grupos acima" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Novo cofre" #~ msgid "Add" #~ msgstr "Adicionar" #~ msgid "No group title specified" #~ msgstr "Título de grupo não especificado" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Impossível abrir ficheiro “{}”." #~ msgid "Skipped moving group into itself" #~ msgstr "Ignorado mover grupo sobre si mesmo" #~ msgid "Database saved" #~ msgstr "Base de dados guardada" #~ msgid "%s locked" #~ msgstr "%s bloquado" #~ msgid "File already exists" #~ msgstr "Ficheiro já existe" #~ msgid "Do you want to override it?" #~ msgstr "Deseja regravá-lo?" #~ msgid "Override" #~ msgstr "Substituir" #~ msgid "Discard" #~ msgstr "Descartar" #~ msgid "Settings" #~ msgstr "Configurações" #~ msgid "Edit" #~ msgstr "Editar" #~ msgid "Create password…" #~ msgstr "Criar palavra-passe…" #~ msgid "Create group…" #~ msgstr "Criar grupo…" #~ msgid "Local" #~ msgstr "Local" secrets-5.1/po/pt_BR.po000066400000000000000000001214061415312107300150140ustar00rootroot00000000000000# Brazilian Portuguese translation for PasswordSafe. # Copyright (C) 2021 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Yuri Otávio Lopes Gomes , 2018. # Rafael Fontenelle , 2018-2021. # Enrico Nicoletto , 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 15:22+0000\n" "PO-Revision-Date: 2021-05-03 08:10-0300\n" "Last-Translator: Enrico Nicoletto \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.4.3\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Gerencie suas senhas" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Aprenda mais sobre o Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Yuri Otávio Lopes Gomes \n" "Rafael Fontenelle \n" "Enrico Nicoletto " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informação de segurança" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "É possível que aplicativos externos criem cópias ocultas ou temporárias não " "criptografadas desse arquivo de anexo! Por favor, prossiga com cautela." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Voltar" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Prosseguir" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Remover atributo" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Cor" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Criar cofre" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferências" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "A_talhos de teclado" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Sobre o Password Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Proteja seu cofre" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Senha" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Use uma senha para proteger seu cofre." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Ar_quivo de chave" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Usa um arquivo de chave para proteger seu cofre." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Composta" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Usa uma senha em conjunto com um arquivo de chave para proteger seu cofre." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Insira uma senha" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Definir senha para o cofre." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Verificação de correspondência de senha" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Repita a senha para o cofre." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Verificação de correspondência falhou" #: data/create_database.ui:299 msgid "Please try again." msgstr "Por favor, tente de novo." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Confirmar" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Gerar arquivo de chave" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Define o arquivo de senha para o cofre" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Gerar" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Cofre criado com sucesso" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Abrir cofre" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalhes" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Caminho" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Tamanho do arquivo" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nome do cofre" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versão do KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data de criação" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritmo de criptografia" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritmo de derivação" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Estatísticas" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Número de grupos" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Senhas" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Número de entradas" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Geral" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Senha" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Novo" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Gerar senha" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "C_onfirmar" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "Atua_l" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Arquivo de chave" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Selecionar arquivo de chave atual" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Gerar novo arquivo de chave" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplicar alterações" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentificação" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Função de derivação de chave" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Aplicar alterações" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Título" #: data/entry_page.ui:54 msgid "_Username" msgstr "Nome de _usuário" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Notas" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ícone" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Anexos" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Adicionar anexo" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atributos" #: data/entry_page.ui:318 msgid "Key" msgstr "Chave" #: data/entry_page.ui:325 msgid "Value" msgstr "Valor" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Adicionar atributo" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Copiar nome de usuário para área de transferência" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copiar senha para área de transferência" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplicativo" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Cria um cofre" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Abre um cofre" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Abre as preferências" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Mostra os atalhos" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Sai" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Cofre" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Bloqueia o cofre" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Salva o cofre" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Abre uma pesquisa" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Cria uma entrada" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Cria um grupo" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Entrada" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copia a senha" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copia o nome de usuário" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Volta" #: data/main_window.ui:25 msgid "New…" msgstr "Novo…" #: data/main_window.ui:38 msgid "Open…" msgstr "Abrir…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Copiar" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe é um gerenciador de senhas que faz uso do formato Keepass v.4. " "Ele se integra perfeitamente ao ambiente GNOME e fornece um interface fácil " "e organizada para gerenciar os bancos de dados de senha." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Um gerenciador de senhas para o GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" "keepass;criptografia;seguro;proteger;cofre;chave de acesso;senha;passphrase;" "frase secreta;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Usar tema escuro GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Usa a variante escura do seu tema GTK+. Por favor note que nem todos os " "temas GTK+ tem uma variante escura." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Reabrir o último banco de dados aberto" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Abre automaticamente a tela de desbloqueio no último banco de dados aberto, " "do contrário mostra a tela de boas-vindas." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Salva todas as alterações automaticamente" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Salva todas as alterações que você fez instantaneamente no banco de dados. " "Por favor, note que você não pode reverter as alterações se Autosave estiver " "habilitado." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Bloquear o banco de dados após X minutos" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Bloqueia automaticamente seu banco de dados após uma dada quantidade de " "minutos para melhorar a segurança." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Limpa área de transferência após X segundos" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Antes de copiar a senha, limpa a área de transferência por motivos de " "segurança." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Exibe senhas em texto simples" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Mostra as senhas nos campos de entrada por padrão." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Tamanho da janela" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Memoriza o tamanho da janela." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Último banco de dados aberto" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Caminho do último banco de dados aberto." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Últimos bancos de dados abertos" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Uma lista dos últimos bancos de dados abertos." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Memorizar chave composta" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Memoriza a última chave composta usada para desbloqueio de banco de dados." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Última chave composta usada" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "O caminho do última chave composta usada para desbloqueio de banco de dados " "composto." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Memorizar o método de desbloqueio" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Memoriza o último método de desbloqueio usado para o próximo desbloqueio de " "banco de dados." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Fazer backup do banco de dados ao desbloquear" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Se ocorrer algum erro enquanto estiver salvando o banco de dados, um backup " "pode ser localizado em ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordem de classificação de grupos e entradas" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordena as linhas nas visões de grupos e de entradas." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Último método de desbloqueio usado" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Usado para armazenar o último método de desbloqueio usado permitir um " "processo de desbloqueio mais rápido." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Usa pesquisa de texto completo" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Realiza uma pesquisa em todos os valores de entradas." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Pesquisa do grupo atual" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Apenas pesquise entradas no grupo atual." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Usa maiúsculas ao gerar uma senha" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Usa caracteres maiúsculos de A-Z ao gerar uma senha aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Usa caracteres minúsculos ao gerar uma senha" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Usa caracteres minúsculos de a-z ao gerar uma senha aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Usa números ao gerar uma senha" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Usa números de 0-9 ao gerar uma senha aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Usa símbolos ao gerar uma senha" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "Usa símbolos ASCII não-alfanuméricos ao gerar uma senha aleatória." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Comprimento da senha ao gerá-la" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Número de caracteres únicos ao gerar uma senha." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Número de palavras ao gerar uma frase secreta" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Número de palavras a serem usadas quando gera-se uma frase secreta." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separador ao gerar uma frase secreta" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Separador de palavras a ser usado ao gerar uma frase secreta." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Tamanho" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caracteres" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Palavras" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separador" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Insira caractere aqui…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frase secreta" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Propriedades" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Acessado" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modificado" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Criado" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Você deseja salvar todos os cofres com as alterações não salvas?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Selecione os cofres que você deseja salvar." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Cancelar" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Sair" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Cofres recentes" #: data/references_dialog.ui:20 msgid "Code" msgstr "Código" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Propriedade" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Título" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nome de usuário" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Notas" #: data/references_dialog.ui:267 msgid "References" msgstr "Referências" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxe" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "A sintaxe de espaço reservado para referências de campo é a seguinte:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Mostrar códigos de campos" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificador" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referência" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Cada entrada tem um identificador exclusivo chamado UUID. Pode ser " "encontrado nas propriedades da entrada." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Alterações não salvas" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Você deseja escrever todas as alterações ao cofre?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Sair sem salvar" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Não sair" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "Sal_var e sair" #: data/search.ui:70 msgid "Enter search term" msgstr "Insira os termos de pesquisa" #: data/search.ui:104 msgid "No search results" msgstr "Nenhum resultado da pesquisa" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mover seleção" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Excluir seleção" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Cancelar" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Te_ma escuro" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Usa o tema escuro GTK." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Ocultar tela de primeiro início" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Reabre o último cofre aberto." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Cofre" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Salvar automaticamente" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Salva todas as alterações automaticamente." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Desbloquear" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Memorizar c_have composta" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Memoriza a última chave composta utilizada." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Memorizar método de _desbloqueio" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Habilita desbloqueio rápido." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Geração de senha" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Comprimento da senha" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Número de caracteres ao gerar uma senha." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Caracteres m_aiúsculos" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Usa caracteres maiúsculos de A-Z ao gerar uma senha." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Caracteres m_inúsculos" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Usa caracteres minúsculos de a-z ao gerar uma senha." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Caracteres _numéricos" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Usa caracteres numéricos ao gerar uma senha." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Caracteres _especiais" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Usa símbolos ASCII não-alfanuméricos ao gerar uma senha." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Gerador de frase secreta" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Comprimento da frase secreta" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Inserir caractere" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Segurança" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Tempo limite do bloqueio de cofre" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Bloqueia o cofre quando ocioso após X minutos." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Limpar área de transferência" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Limpa a área de transferência após X segundos." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Mostrar ca_mpos de senha" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Exibe senhas em texto simples." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Limpar lista recente" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Limpa a lista de cofres abertos recentemente." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Novo cofre" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Abrir cofre" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "O cofre está bloqueado" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Insira a senha para desbloquear" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selecione o arquivo de chave para desbloquear" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Abrir arquivo de chave" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Insira a senha e selecione o arquivo de chave para desbloquear" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Composto" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Grupo vazio" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Clique na caixa de seleção para selecionar" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Pesquisar" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Modo de seleção" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Salvar" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Bloquear" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "O_rdenar" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Ú_ltimos adicionados" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Configurações do co_fre" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Selecionar _todos" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Selecionar _nenhum" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_uplicar" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referências" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Propriedades" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "E_xcluir" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Nova _entrada" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Novo _grupo" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Proteja seu cofre de senhas" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Armazene com segurança suas senhas, notas e dados. Crie ou " "Importe um novo cofre de Keepass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Impossível sair: não foi possível salvar o cofre" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Senhas não conferem" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Selecione a localização do arquivo de chave" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Gerando…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Clone" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Escolha o arquivo de chave atual" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Abrir" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Aplicar…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Desconhecido" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "A chave de atributo já existente" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Selecionar anexo" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Adicionar" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Salvar anexo" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Nome de usuário copiado para área de transferência" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Senha copiada para área de transferência" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Título não especificado" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Nenhum nome de usuário especificado" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Escolha um cofre de Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Banco de dados KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Não foi possível abrir arquivo" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Não foi possível abrir arquivo: não há suporte ao tipo Mime" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Cofre já está aberto" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Escolha a localização do cofre de Keepass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Criar" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operação cancelada: Excluindo grupo atualmente ativo" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Exclusão concluída" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operação abortada: Movendo o grupo atualmente ativo" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Movimentação concluída" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Escolhe um arquivo de chave" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Escolher arquivo de chave" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Não há suporte ao formato kdb" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Falha ao desbloquear o cofre" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Tente novamente" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Cofre salvo" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Não foi possível salvar o cofre" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Por favor, aguarde. Há outro salvamento em progresso." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Nenhuma alteração feita" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Copiado(a) para área de transferência" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Cofre bloqueado devido inatividade" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} entrada selecionada" msgstr[1] "{} entradas selecionadas" #~ msgid "Secret_Photo.png" #~ msgstr "Foto_secreta.png" #~ msgid "_Full-Text Search" #~ msgstr "Pesquisar te_xto completo" #~ msgid "_Current Group Search" #~ msgstr "Pesquisar no _grupo atual" #~ msgid "No group title specified" #~ msgstr "Nenhum título de grupo especificado" #~ msgid "Skipped moving group into itself" #~ msgstr "Ignorado grupo movendo-se para si mesmo" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Não foi possível abrir o arquivo “{}”." #~ msgid "%s locked" #~ msgstr "%s bloqueado" #~ msgid "Generate" #~ msgstr "Gerar" #~ msgid "Add" #~ msgstr "Adicionar" #~ msgid "Save" #~ msgstr "Salvar" #~ msgid "Preferences" #~ msgstr "Preferências" #~ msgid "Keyboard Shortcuts" #~ msgstr "Atalhos de teclado" #~ msgid "New" #~ msgstr "Nova" #~ msgid "Close" #~ msgstr "Fechar" #~ msgid "Show/hide password" #~ msgstr "Mostra/oculta a senha" #~ msgid "First Start" #~ msgstr "Primeiro início" #~ msgid "Timeout" #~ msgstr "Tempo limite" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Sai da página de entrada" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Navega pelo grupo principal" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Novo cofre" #~ msgid "Database saved" #~ msgstr "Banco de dados salvos" #~ msgid "File already exists" #~ msgstr "O arquivo já existente" #~ msgid "Do you want to override it?" #~ msgstr "Você deseja sobrescrevê-lo?" #~ msgid "Override" #~ msgstr "Sobrescrever" #~ msgid "Discard" #~ msgstr "Descartar" #~ msgid "Settings" #~ msgstr "Configurações" #~ msgid "Local" #~ msgstr "Local" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Edit" #~ msgstr "Editar" #~ msgid "Create password…" #~ msgstr "Criar senha…" #~ msgid "Create group…" #~ msgstr "Criar grupo…" #~ msgid "KeePass Client" #~ msgstr "Cliente de KeePass" #~ msgid "dialog-password" #~ msgstr "dialog-password" #~ msgid "About" #~ msgstr "Sobre" #~ msgid "16" #~ msgstr "16" #~ msgid "8" #~ msgstr "8" #~ msgctxt "shortcut window" #~ msgid "Create a new safe" #~ msgstr "Cria um novo cofre" #~ msgctxt "shortcut window" #~ msgid "Open an existing safe" #~ msgstr "Abre um cofre existente" #~ msgctxt "shortcut window" #~ msgid "Copy password on entry page" #~ msgstr "Copia a senha na página de entrada" #~ msgid "Deleted blank group" #~ msgstr "Grupo vazio excluído" #~ msgid "Group added" #~ msgstr "Grupo adicionado" secrets-5.1/po/ro.po000066400000000000000000001164021415312107300144260ustar00rootroot00000000000000# Romanian translation for PasswordSafe. # Copyright (C) 2021 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Daniel Șerbănescu , 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe release/4.x\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 10:27+0000\n" "PO-Revision-Date: 2021-05-03 23:13+0200\n" "Last-Translator: \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n" "%100<=19) ? 1 : 2);\n" "X-Generator: Poedit 2.4.2\n" "X-Poedit-SourceCharset: UTF-8\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Administrați-vă parolele" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Învățați mai multe despre Seiful de parole" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Daniel Șerbănescu , 2021" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Informații seif" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Este posibil ca aplicațiile externe vor crea copii necriptate ascunse sau " "copii temporare al acestui fișier atașament! Continuați cu prudență." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "Î_napoi" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Continuați" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Elimină atributul" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Culoare" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Seif de parole" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Creează seif" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Preferințe" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Scurtături de _tastatură" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Despre Seiful de parole" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Protejați-vă seiful" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Parolă" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Utilizează o parolă pentru a securiza seiful." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Fișier de _chei" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Utilizează un fișier de chei pentru a securiza seiful." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Compusă" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Utilizează o parolă în combinație cu un fișier de chei pentru a securiza " "seiful." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Introduceți parola" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Stabilește parola pentru seif." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Verificare potrivirii parolei" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Repetați parola pentru seif." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Verificarea potrivirii a eșuat" #: data/create_database.ui:299 msgid "Please try again." msgstr "Încercați din nou." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Confirmă" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Generează fișier de chei" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Stabilește fișierul de chei pentru seif" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Generează" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Seif creeat cu succes" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Deschide seif" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detalii" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Cale" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Dimensiune fișier" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Nume seif" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Versiune KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Data creării" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Algoritm de criptare" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Algoritm de derivare" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistici" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Număr de grupuri" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Parole" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Număr de intrări" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Generale" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Parolă" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nou" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Generează parolă" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "Co_nfirmă" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Curent" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Fișier de chei" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Selectează fișierul de chei curent" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Generează un nou fișier de chei" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "_Aplică modificările" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentificare" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-biți" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-biți" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-biți" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Funcție de derivare chei" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Aplică modificările" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titlu" #: data/entry_page.ui:54 msgid "_Username" msgstr "Nume de _utilizator" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Note" #: data/entry_page.ui:196 msgid "Icon" msgstr "Iconiță" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Atașamente" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Adaugă atașament" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Atribute" #: data/entry_page.ui:318 msgid "Key" msgstr "Cheie" #: data/entry_page.ui:325 msgid "Value" msgstr "Valoare" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Adaugă atribut" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Copiază numele de utilizator în clipboard" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Copiază parola în clipboard" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Aplicație" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Creează seif" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Deschide seiful" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Deschide preferințele" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Arată scurtături" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Ieșire" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Seif" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Închide seiful" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Salvează seif" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Deschide căutarea" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Creează o intrare" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Creează un grup" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Intrare" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Copiază parola" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Copiază numele de utilizator" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Navighează înapoi" #: data/main_window.ui:25 msgid "New…" msgstr "Nouă…" #: data/main_window.ui:38 msgid "Open…" msgstr "Deschide…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Copiază" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Seif de parole este un administrator de parole ce utilizează formatul " "KeePass v.4. Se integrează perfect cu desktopul GNOME și oferă o interfață " "ușoară pentru administrarea bazelor de date cu parole." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Un administrator de parole pentru GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encrypt;secure;criptare;encripție;siguranță;securitate;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Utilizează o temă GTK închisă" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Utilizează o variantă închisă a temei GTK+ curentă. Notați că nu fiecare " "temă GTK+ are o variantă închisă." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Redeschide baza de date deschisă ultima dată" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Deschide automat ecranul de deblocare a bazei de date ultimă deschisă, " "altfel arată ecranul de întâmpinare." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Salvează fiecare modificare automat" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Salvează fiecare modificare pe care o faceți, instant în baza de date. " "Notați că nu puteți reface modificările dacă salvarea automată este activă." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Blochează baza de date după X minute" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Blochează automat baza de date după un număr dat de minute pentru a " "îmbunătăți securitatea." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Curăță clipboardul după X secunde" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "După copierea parolei curățați clipboardul din motive de securitate." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Arată parolele în text simplu" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Arată parolele în câmpurile de intrare în mod implicit." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Dimensiune fereastră" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Ține minte dimensiunea ferestrei." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Ultima bază de date deschisă" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Cale către ultima bază de date deschisă." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Ultimele baze de date deschise" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "O listă a bazelor de date deschise ultima dată." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Ține minte cheia compusă" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Ține minte ultima cheie compusă folosită pentru deblocarea bazei de date." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Ultima cheie compusă folosită" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Cale către ultima cheie folosită pentru deblocarea bazelor de date compuse." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Ține minte metoda de deblocare" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Ține minte ultima metodă de deblocare folosită pentru viitoarele deblocări " "ale bazei de date." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Fă o copie de siguranță a bazei de date la deblocare" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Dacă apare o eroare în timpul salvării bazei de date, o copie de siguranță " "poate fi găsită la ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Ordinea de sortare a grupurilor și intrărilor" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordinea rândurilor în vizualizările grupuri și intrări." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Ultima metodă de deblocare folosită" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Utilizat la stocarea ultimei metode de deblocare folosită și permite un " "proces de deblocare mai rapid." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Utilizează căutare text" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Execută o căutare în toate valorile intrărilor." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Căutarea grupului curent" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Cată intrări numai în grupul curent." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Utilizează majuscule la generarea unei parole" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Utilizează caractere majuscule A-Z când se generează o parolă aleatoare." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Utilizează minuscule când se generează o parolă" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Utilizează caracterele minuscule a-z la generarea unei parole aleatoare." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Utilizează numere la generarea unei parole" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Utilizează numerele 0-9 la generarea unei parole aleatoare." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Utilizează simboluri la generarea unei parole" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Utilizează simboluri non-alfanumerice ASCII la generarea unei parole " "aleatoare." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Lungimea parolei când se generează o parolă" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Număr de caractere pentru generarea unei parole." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Număr de cuvinte pentru generarea unei fraze de acces" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Număr de cuvinte de folosit când se generează o frază de acces." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Separator când se generează o frază de acces" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Separator de cuvinte de folosit la generarea unei fraze de acces." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Lungime" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Caractere" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Cuvinte" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Separator" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Introduceți caracter aici…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Frază de acces" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Proprietăți" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Accesate" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Modificat" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Creat" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Doriți să salvați toate seifurile cu modificări nesalvate?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Selectează seifurile de salvat." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Anulează" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Ieși" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Seifuri recente" #: data/references_dialog.ui:20 msgid "Code" msgstr "Cod" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Proprietate" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titlu" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Nume de utilizator" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Note" #: data/references_dialog.ui:267 msgid "References" msgstr "Referințe" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Sintaxă" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Sintaxa ce ține locul în referințele câmpurilor este următoarea:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Arată codurile câmpului" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identificator" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referință" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Fiecare intrare are un identificator unic numit UUID. Poate fi găsit la " "proprietățile fiecărei intrări." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Modificări nesalvate" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Doriți să scrieți toate modificările în seif?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Ieși fără a salva" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "Nu în_chide" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Salvează și ieși" #: data/search.ui:70 msgid "Enter search term" msgstr "Introduceți un termen de căutare" #: data/search.ui:104 msgid "No search results" msgstr "Niciun rezultat de cătuare" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Mută selecția" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Șterge selecția" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Anulează" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Temă în_chisă" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Utilizează o temă GTK închisă." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Ascunde primul ecran de pornire" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Redeschide seiful deschis ultima dată." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Seif" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Salvează automat" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Salvează fiecare modificare automat." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Deblochează" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Ține minte _cheia compusă" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Ține minte ultima cheie compusă folosită." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Ține minte metoda de _deblocare" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Activează deblocare mai rapidă." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Generarea parolei" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Lungimea parolei" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Număr de caractere pentru generarea unei parole." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Caractere maj_uscule" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Utilizează caractere majuscule A-Z când se generează o parolă." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Caractere minuscu_le" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Utilizează caracterele minuscule a-z la generarea unei parole." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Caractere _numerice" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Utilizează caractere numerice la generarea unei parole." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Caractere _speciale" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Utilizează simboluri non-alfanumerice ASCII la generarea unei parole." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Generarea frazei de acces" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Lungimea frazei de acces" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Introduceți caracter" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Securitate" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Limita de timp pentru blocarea seifului" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Blochează seiful pentru inactivitate după X minute." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Curăță clipboardul" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Curăță clipboardul după X secunde." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Arată câmpurile de parolă" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Arată parolele în text simplu." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Curăță lista recentelor" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Curăță lista de seifuri deschise recent." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "Seif _nou" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Deschide seif" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Seiful este blocat" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Introduceți parola pentru a debloca" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Selectează fișierul de chei de deblocat" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Deschide fișier de chei" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Introduceți parola și selectați fișierul de chei pentru deblocare" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Compusă" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Golește grupul" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Clic pe o căsuță de bifat pentru a selecta" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Caută" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Mod de selectare" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Salvează" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "B_lochează" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "So_rtare" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "U_ltima adăugată" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Configurări sei_f" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Selectează to_ate" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Deselectează _tot" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "D_ublet" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referințe" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Proprietăți" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "Ș_terge" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Intrar_e nouă" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "_Grup nou" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Securizează Seiful cu parole" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Stochează sigur parolele, notele și datele, Creați sau importați un seif Keepass nou." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Nu s-a putut ieși: Nu s-a putut salva seiful" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Parolele nu se potrivesc" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Alege locația pentru fișierul de chei" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Se generează…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Clonează" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Alegeți fișierul de chei curent" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Deschide" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Aplică…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Necunoscut" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-biți" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-biți" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-biți" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Cheia atributului există deja" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Selectează atașamentul" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Adaugă" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Salvează atașament" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Nume de utilizator copiat în clipboard" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Parolă copiată în clipboard" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Titlu nespecificat" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Niciun nume de utilizator specificat" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Alegeți un seif Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Bază de date KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Nu s-a putut deschide fișierul" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Nu s-a putut deschide fișierul: tip Mime nesuportat" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Seif deschis deja" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Alegeți locația pentru seiful Keepass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "_Creează" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Operație renunțată: Se șterge grupul activ curent" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Ștergere completă" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Operație renunțată: Se mută grupul activ curent" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Mutare completă" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Alegeți un fișier de chei" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Alegeți fișier de chei" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Formatul kdb este nesuportat" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Eșec la deblocarea seifului" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Încercați din nou" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Seif salvat" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Nu s-a putut salva seiful" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Așteptați. O altă salvare este în curs de rulare." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Nicio modificare efectuată" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Copiată în clipboard" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Seif blocat din cauza inactivității" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} intrare selectată" msgstr[1] "{} intrări selectate" msgstr[2] "{} de intrări selectate" #~ msgid "Preferences" #~ msgstr "Preferințe" #~ msgid "New" #~ msgstr "Nouă" #~ msgid "Secret_Photo.png" #~ msgstr "Fotografie_secretă.png" #~ msgid "Show/hide password" #~ msgstr "Arată/ascunde parola" #~ msgid "Full-Text Search" #~ msgstr "Căutare text" #~ msgid "Current Group Search" #~ msgstr "Căutare grup curent" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Închide pagina intrării" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Seif nou" #~ msgid "Add" #~ msgstr "Adaugă" #~ msgid "No group title specified" #~ msgstr "Niciun titlu de grup specificat" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Nu s-a putut deschide fișierul „{}”." #~ msgid "Skipped moving group into itself" #~ msgstr "S-a omis mutarea grupului în el însuși" #~ msgid "Database saved" #~ msgstr "Bază de date salvată" #~ msgid "%s locked" #~ msgstr "%s blocat" secrets-5.1/po/ru.po000066400000000000000000001061571415312107300144420ustar00rootroot00000000000000# Russian translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Artem Polishchuk , 2018. # Stas Solovey , 2018. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2018-11-13 14:05+0000\n" "PO-Revision-Date: 2018-11-13 22:22+0300\n" "Last-Translator: Stas Solovey \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 2.2\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in.in:9 #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Менеджер паролей для GNOME" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "Узнайте больше о Сейфе паролей" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "" "Artem Polishchuk , 2018.\n" "Stas Solovey Create or import a new Keepass safe." msgstr "" "Надёжно храните свои пароли, заметки и данные. Создайте или " "импортируйте новый сейф Keepass." #: data/main_window.ui:267 msgid "New…" msgstr "Новый…" #: data/main_window.ui:312 msgid "Open…" msgstr "Открыть…" #: data/main_window.ui:409 msgid "Recent Databases" msgstr "Недавние базы данных" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "Копировать" #: data/notes_dialog.ui:52 msgid "Close" msgstr "Закрыть" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe — это менеджер паролей, который использует формат Keepass v.4. " "Он отлично интегрируется с рабочим столом GNOME и предоставляет простой и " "лаконичный интерфейс для управления базами данных паролей." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:57 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #. Translators: Do NOT translate or transliterate this text (this is an icon file name)! #: data/org.gnome.PasswordSafe.desktop.in.in:6 msgid "@ICON@" msgstr "@ICON@" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;шифрование;защита;пароль;" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:115 msgid "Use dark GTK+ theme" msgstr "Использовать тёмную тему GTK+" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Использовать тёмный вариант вашей темы GTK+. Обратите внимание, что не " "каждая тема GTK+ имеет тёмный вариант." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Повторно открыть последнюю открытую базу данных" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Автоматически открывать экран разблокировки последней открытой базы данных, " "иначе показывать экран приветствия." #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:320 msgid "Save every change automatically" msgstr "Автоматически сохранять каждое изменение" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Мгновенно сохранять все изменения, сделанные в базе данных. Обратите " "внимание: вы не сможете отменять изменения, если включена функция " "автосохранения." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Заблокировать базу данных через X минут" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Автоматически блокировать базу данных по истечении заданного количества " "минут для повышения безопасности." #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:731 msgid "Clear clipboard after X seconds" msgstr "Очистить буфер обмена через X секунд" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "После копирования пароля очистите буфер обмена из соображений безопасности." #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:815 msgid "Display passwords in plain text" msgstr "Отображать пароли в открытом виде" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Показывать пароли в полях ввода по умолчанию." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Размер окна" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Запоминать размер окна." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Последняя открытая база данных" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Путь к последней открытой базе данных." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Последние открытые базы данных" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Список последних открытых баз данных." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Запоминать составной ключ" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Запоминать последний, использованный составной ключ для разблокировки базы " "данных." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Последний использованный составной ключ" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Путь к последнему, использованному ключу для разблокировки составной базы." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Запоминать метод разблокировки" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "Запоминать последний, использованный метод разблокировки базы данных." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Резервное копирование базы данных при разблокировке" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "В случае возникновения ошибки при сохранении базы данных резервную копию " "можно найти в ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Порядок сортировки групп и записей" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Порядок строк в видах группы и записи." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Последний использованный метод разблокировки" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Используется для хранения последнего используемого метода разблокировки и " "для ускорения процесса разблокировки." #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Файл уже существует" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "Хотите заменить его?" #: data/override_dialog.ui:22 data/unlocked_database.ui:1452 msgid "Cancel" msgstr "Отменить" #: data/override_dialog.ui:35 msgid "Override" msgstr "Заменить" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "Свойства" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "Доступен" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "Изменён" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "Создан" #: data/references_dialog.ui:23 msgid "Code" msgstr "Код" #: data/references_dialog.ui:38 data/references_dialog.ui:399 #: data/references_dialog.ui:550 msgid "Property" msgstr "Свойство" #: data/references_dialog.ui:314 data/unlocked_database.ui:1195 msgid "References" msgstr "Ссылки" #: data/references_dialog.ui:342 msgid "Syntax" msgstr "Синтаксис" #: data/references_dialog.ui:357 msgid "The placeholder syntax for field references is the following:" msgstr "Синтаксис заполнителя для ссылок поля следующий:" #: data/references_dialog.ui:398 data/references_dialog.ui:437 msgid "Show Field Codes" msgstr "Отображать коды полей" #: data/references_dialog.ui:438 msgid "Identifier" msgstr "Идентификатор" #: data/references_dialog.ui:520 msgid "Reference" msgstr "Ссылка" #: data/references_dialog.ui:625 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "Каждая запись имеет уникальный идентификатор UUID.\n" "Его можно найти в свойствах записи." #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "Сохранить все сейфы с несохранёнными изменениями?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "Выберите сейфы, которые хотите сохранить." #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/quit_dialog.ui:22 data/unlocked_database.ui:1274 msgid "Back" msgstr "Назад" #: data/quit_dialog.ui:35 msgid "Quit" msgstr "Завершить" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "Несохранённые изменения" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "Внести все изменения в сейф?" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "Отменить" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:761 #: passwordsafe/main_window.py:333 msgid "Save" msgstr "Сохранить" #. Title of the settings dialog #: data/settings_dialog.ui:15 msgid "Settings" msgstr "Параметры" #: data/settings_dialog.ui:98 msgid "Dark Theme" msgstr "Тёмная тема" #: data/settings_dialog.ui:181 msgid "Hide First Start Screen" msgstr "Не показывать стартовый экран" #: data/settings_dialog.ui:198 msgid "Reopen last opened safe" msgstr "Повторно открыть последний открытый сейф" #: data/settings_dialog.ui:254 data/unlocked_database.ui:860 #: passwordsafe/main_window.py:335 msgid "Safe" msgstr "Сейф" #: data/settings_dialog.ui:303 msgid "Save automatically" msgstr "Сохранять автоматически" #: data/settings_dialog.ui:376 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Разблокировать" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:425 msgid "Remember Composite Key" msgstr "Запоминать составной ключ" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:442 msgid "Remember last used composite key" msgstr "Запоминать последний использованный составной ключ" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:508 msgid "Remember Unlock Method" msgstr "Запоминать метод разблокировки" #: data/settings_dialog.ui:525 msgid "Enable faster unlocking" msgstr "Включить быструю разблокировку" #: data/settings_dialog.ui:581 msgid "Security" msgstr "Безопасность" #: data/settings_dialog.ui:630 msgid "Safe Lock Timeout" msgstr "Тайм-аут блокировки сейфа" #: data/settings_dialog.ui:647 msgid "Lock safe on idle after X minutes" msgstr "Блокировать сейф при простое после X минут" #: data/settings_dialog.ui:714 msgid "Clear Clipboard" msgstr "Очистить буфер обмена" #: data/settings_dialog.ui:798 msgid "Show Password Fields" msgstr "Показывать пароли в полях" #: data/settings_dialog.ui:881 msgid "Clear Recent List" msgstr "Очистить недавний список" #: data/settings_dialog.ui:898 msgid "Clear the recently opened safes list" msgstr "Очистить список недавно открытых сейфов" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Приложение" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Создать сейф" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Открыть сейф" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Открыть параметры" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "Сейф" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Заблокировать сейф" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Сохранить сейф" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "Открыть поиск" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Создать запись" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "Создать группу" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Запись" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Скопировать пароль" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "Выйти из страницы записи" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "Введите пароль и выберите файл-ключ для разблокировки" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "Сейф заблокирован" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "Выберите файл-ключ для разблокировки" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "Открыть файл-ключ" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:923 msgid "New Safe" msgstr "Новый сейф" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "Введите пароль для разблокировки" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "Не удалось разблокировать сейф" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "Режим выделения" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "Поиск" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "Пустая группа" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "Нет результатов поиска" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "Введите поисковый запрос" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "Сортировка" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "А-Я" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Я-А" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "Последние добавленные" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "Заблокировать" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "Новая запись" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "Новая группа" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "Настройки сейфа" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "Локальный" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "Полный текст" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "Дубликат" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "Удалить" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "Переместить выделенное" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "Удалить выделенное" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "Выбрать все" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "Снять выбор" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "Нажмите на флажок для выделения" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "Выберите местоположение для файла-ключа" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "Создание…" #. NOTE: With clone is meant a duplicated object, not the process of cloning/duplication; "the" clone #: passwordsafe/database_manager.py:368 msgid "Clone" msgstr "Клонировать" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "Выберите текущий файл-ключ" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Открыть" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Применить…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Неизвестный" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:491 passwordsafe/entry_page.py:554 msgid "Attribute key already exists" msgstr "Атрибут ключа уже существует" #: passwordsafe/entry_row.py:63 msgid "Title not specified" msgstr "Заголовок не указан" #: passwordsafe/entry_row.py:74 msgid "No username specified" msgstr "Не указано имя пользователя" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "Не указано название группы" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:283 msgid "Choose a Keepass safe" msgstr "Выберите сейф Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:288 passwordsafe/main_window.py:341 msgid "KeePass 3.1/4 Database" msgstr "База данных KeePass 3.1/4" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:332 msgid "Choose location for Keepass safe" msgstr "Выберите местоположение для сейфа Keepass" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "Удаление завершено" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "Перемещение завершено" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "Пропуск перемещения группы в саму себя" #: passwordsafe/unlock_database.py:213 msgid "Database already opened" msgstr "База данных уже открыта" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:299 msgid "Choose a keyfile" msgstr "Выберите файл-ключ" #: passwordsafe/unlock_database.py:352 passwordsafe/unlock_database.py:409 msgid "Try again" msgstr "Попробуйте снова" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:418 msgid "Choose Keyfile" msgstr "Выберите файл-ключ" #: passwordsafe/unlocked_database.py:481 msgid "Database saved" msgstr "База данных сохранена" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:484 msgid "Please wait. Another save is running." msgstr "Подождите. Выполняется другое сохранение." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:487 msgid "No changes made" msgstr "Изменений не было" #: passwordsafe/unlocked_database.py:666 msgid "Copied to clipboard" msgstr "Скопировано в буфер обмена" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:812 #, python-format msgid "%s locked" msgstr "%s заблокирован" #: passwordsafe/unlocked_database.py:812 msgid "Keepass safe locked due to inactivity" msgstr "Сейф Keepass заблокирован из-за неактивности" secrets-5.1/po/sl.po000066400000000000000000000670351415312107300144330ustar00rootroot00000000000000# Slovenian translation for PasswordSafe. # Copyright (C) 2020 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # # Matej Urbančič , 2020–. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2020-09-27 23:38+0000\n" "PO-Revision-Date: 2020-09-28 20:45+0200\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 2.4.1\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in.in:9 #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "Matej Urbančič " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:9 msgid "Safety Info" msgstr "" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:10 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" #. Discard all the changes which the user have made to his keepass safe #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/attachment_warning_dialog.ui:23 data/quit_dialog.ui:22 #: data/unlocked_database.ui:1274 msgid "Back" msgstr "Nazaj" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:36 msgid "Proceed" msgstr "" #: data/create_database.ui:74 data/database_settings_dialog.ui:439 #: data/entry_page.ui:1563 data/entry_page.ui:1699 #: data/references_dialog.ui:155 data/references_dialog.ui:263 #: passwordsafe/unlock_database.py:102 msgid "Password" msgstr "Geslo" #: data/create_database.ui:94 msgid "Use a password to secure your safe" msgstr "" #: data/create_database.ui:157 data/database_settings_dialog.ui:579 #: passwordsafe/create_database.py:242 passwordsafe/create_database.py:247 #: passwordsafe/database_settings_dialog.py:184 #: passwordsafe/database_settings_dialog.py:219 #: passwordsafe/database_settings_dialog.py:224 #: passwordsafe/unlock_database.py:105 passwordsafe/unlock_database.py:310 #: passwordsafe/unlock_database.py:432 msgid "Keyfile" msgstr "" #: data/create_database.ui:177 msgid "Use a keyfile to secure your safe" msgstr "" #. NOTE: Composite unlock is a authentification method where both password and keyfile are required #: data/create_database.ui:240 passwordsafe/unlock_database.py:109 msgid "Composite" msgstr "Sestavljeno" #: data/create_database.ui:260 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "" #: data/create_database.ui:303 msgid "Protect your safe" msgstr "" #: data/create_database.ui:415 msgid "Set password for safe" msgstr "" #: data/create_database.ui:430 msgid "Enter Password" msgstr "" #: data/create_database.ui:476 msgid "Password Match Check" msgstr "" #: data/create_database.ui:562 msgid "Repeat password for safe" msgstr "" #: data/create_database.ui:608 msgid "Match Check Failed" msgstr "" #: data/create_database.ui:667 msgid "Please try again" msgstr "Poskusite znova" #. Button to generate a password #: data/create_database.ui:788 data/entry_page.ui:1650 #: passwordsafe/create_database.py:240 #: passwordsafe/database_settings_dialog.py:217 msgid "Generate" msgstr "Ustvari" #: data/create_database.ui:817 msgid "Set keyfile for safe" msgstr "" #: data/create_database.ui:832 msgid "Generate Keyfile" msgstr "" #: data/create_database.ui:887 data/main_window.ui:200 #: data/unlock_database.ui:311 data/unlocked_database.ui:976 msgid "Preferences" msgstr "Možnosti" #: data/create_database.ui:901 data/main_window.ui:214 #: data/unlock_database.ui:325 data/unlocked_database.ui:990 msgid "Keyboard Shortcuts" msgstr "Tipkovne bližnjice" #. "Password Safe" is the application name #: data/create_database.ui:915 data/main_window.ui:228 #: data/unlock_database.ui:339 data/unlocked_database.ui:1004 msgid "About Password Safe" msgstr "" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database.ui:929 data/main_window.ui:355 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:4 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:353 msgid "Password Safe" msgstr "" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:930 msgid "Create Safe" msgstr "Ustvari sef" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #: data/created_database.ui:50 data/unlock_database.ui:286 #: data/unlock_database.ui:354 data/unlocked_database.ui:937 msgid "Open Safe" msgstr "Odpri sef" #: data/database_settings_dialog.ui:55 msgid "Details" msgstr "Podrobnosti" #: data/database_settings_dialog.ui:80 msgid "Path" msgstr "Pot" #: data/database_settings_dialog.ui:97 msgid "File Size" msgstr "Velikost" #: data/database_settings_dialog.ui:114 msgid "Safe Name" msgstr "Ime sefa" #. KeePass is a proper noun #: data/database_settings_dialog.ui:144 msgid "KeePass Version" msgstr "Različica KeePass" #: data/database_settings_dialog.ui:161 msgid "Creation Date" msgstr "Datum ustvarjanja" #: data/database_settings_dialog.ui:178 data/database_settings_dialog.ui:801 msgid "Encryption Algorithm" msgstr "" #: data/database_settings_dialog.ui:195 msgid "Derivation Algorithm" msgstr "" #. Statistics #: data/database_settings_dialog.ui:300 msgid "Stats" msgstr "Statistika" #: data/database_settings_dialog.ui:325 msgid "Number of Groups" msgstr "" #: data/database_settings_dialog.ui:342 msgid "Passwords" msgstr "Gesla" #: data/database_settings_dialog.ui:359 msgid "Number of Entries" msgstr "" #: data/database_settings_dialog.ui:420 data/settings_dialog.ui:14 #: data/settings_dialog.ui:19 msgid "General" msgstr "Splošno" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:461 msgid "New" msgstr "Novo" #: data/database_settings_dialog.ui:480 data/database_settings_dialog.ui:481 msgid "Generate Password" msgstr "" #. Retype the new password to confirm #: data/database_settings_dialog.ui:494 msgid "Confirm" msgstr "Potrdi" #. Current password #: data/database_settings_dialog.ui:524 msgid "Current" msgstr "Trenutna" #: data/database_settings_dialog.ui:632 msgid "Select current keyfile" msgstr "" #: data/database_settings_dialog.ui:708 msgid "Generate new keyfile" msgstr "" #: data/database_settings_dialog.ui:741 data/database_settings_dialog.ui:962 #: passwordsafe/database_settings_dialog.py:335 #: passwordsafe/database_settings_dialog.py:357 msgid "Apply Changes" msgstr "Uveljavi spremembe" #: data/database_settings_dialog.ui:762 msgid "Authentication" msgstr "Overitev" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:834 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bitni" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:851 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bitni" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:868 msgid "AES: 256-bit" msgstr "AES: 256-bitni" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:893 msgid "Key Derivation Function" msgstr "" #: data/entry_page.ui:34 msgid "Add Attachment" msgstr "Dodaj prilogo" #: data/entry_page.ui:76 msgid "Attachments" msgstr "Priloge" #: data/entry_page.ui:163 msgid "Secret_Photo.png" msgstr "" #: data/entry_page.ui:338 msgid "Remove attribute" msgstr "Odstrani atribut" #: data/entry_page.ui:399 msgid "Attributes" msgstr "Atributi" #: data/entry_page.ui:439 msgid "Key" msgstr "Ključ" #: data/entry_page.ui:453 msgid "Value" msgstr "Vrednost" #: data/entry_page.ui:475 msgid "Add attribute" msgstr "Dodaj atribut" #: data/entry_page.ui:530 msgid "Color" msgstr "Barva" #: data/entry_page.ui:825 msgid "Icon" msgstr "Ikona" #: data/entry_page.ui:1197 data/group_page.ui:35 data/references_dialog.ui:65 #: data/references_dialog.ui:235 msgid "Title" msgstr "Naziv" #: data/entry_page.ui:1282 data/group_page.ui:120 data/references_dialog.ui:185 #: data/references_dialog.ui:291 msgid "Notes" msgstr "Opombe" #: data/entry_page.ui:1434 msgid "Length" msgstr "Dolžina" #: data/entry_page.ui:1468 msgid "Characters" msgstr "Znaki" #: data/entry_page.ui:1576 msgid "Words" msgstr "Število besed" #: data/entry_page.ui:1609 msgid "Separator" msgstr "Ločilnik" #: data/entry_page.ui:1626 msgid "Enter character here…" msgstr "" #: data/entry_page.ui:1637 msgid "Passphrase" msgstr "Šifrirno geslo" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1755 msgid "Show/hide password" msgstr "" #: data/entry_page.ui:1936 data/references_dialog.ui:170 #: data/references_dialog.ui:277 msgid "URL" msgstr "Naslov URL" #: data/entry_page.ui:2023 data/references_dialog.ui:92 #: data/references_dialog.ui:249 msgid "Username" msgstr "Uporabniško ime" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:62 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" #: data/main_window.ui:269 msgid "New…" msgstr "Nov …" #: data/main_window.ui:314 msgid "Open…" msgstr "Odpri …" #: data/main_window.ui:411 msgid "Recent Databases" msgstr "" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "Kopiraj" #: data/notes_dialog.ui:52 msgid "Close" msgstr "Zapri" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:99 msgid "Falk Alexander Seidl" msgstr "" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:67 msgid "Use dark GTK+ theme" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:256 msgid "Save every change automatically" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:634 msgid "Clear clipboard after X seconds" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:716 msgid "Display passwords in plain text" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Velikost okna" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Datoteka že obstaja" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "" #: data/override_dialog.ui:22 data/unlocked_database.ui:1452 msgid "Cancel" msgstr "Prekliči" #: data/override_dialog.ui:35 msgid "Override" msgstr "Prepiši" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "Lastnosti" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "Zadnji dostop" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "Datum spremembe" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "Ustvarjeno" #: data/references_dialog.ui:23 msgid "Code" msgstr "Koda" #: data/references_dialog.ui:38 data/references_dialog.ui:403 #: data/references_dialog.ui:554 msgid "Property" msgstr "Lastnosti" #: data/references_dialog.ui:314 data/unlocked_database.ui:1195 msgid "References" msgstr "Sklici" #: data/references_dialog.ui:346 msgid "Syntax" msgstr "Skladnja" #: data/references_dialog.ui:361 msgid "The placeholder syntax for field references is the following:" msgstr "" #: data/references_dialog.ui:402 data/references_dialog.ui:441 msgid "Show Field Codes" msgstr "" #: data/references_dialog.ui:442 msgid "Identifier" msgstr "Določilo" #: data/references_dialog.ui:524 msgid "Reference" msgstr "Sklic" #: data/references_dialog.ui:631 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "" #: data/quit_dialog.ui:35 msgid "Quit" msgstr "Končaj" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "Neshranjene spremembe" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "Zavrzi" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:761 #: passwordsafe/entry_page.py:652 passwordsafe/main_window.py:380 msgid "Save" msgstr "Shrani" #: data/settings_dialog.ui:50 msgid "Dark Theme" msgstr "Temna tema" #: data/settings_dialog.ui:137 msgid "Hide First Start Screen" msgstr "" #: data/settings_dialog.ui:154 msgid "Reopen last opened safe" msgstr "" #: data/settings_dialog.ui:205 data/unlocked_database.ui:860 #: passwordsafe/main_window.py:382 #, fuzzy msgid "Safe" msgstr "Sef" #: data/settings_dialog.ui:239 msgid "Save automatically" msgstr "" #: data/settings_dialog.ui:309 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Odkleni" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:343 msgid "Remember Composite Key" msgstr "" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:360 msgid "Remember last used composite key" msgstr "" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:424 msgid "Remember Unlock Method" msgstr "" #: data/settings_dialog.ui:441 msgid "Enable faster unlocking" msgstr "" #: data/settings_dialog.ui:496 data/settings_dialog.ui:501 msgid "Security" msgstr "Varnost" #: data/settings_dialog.ui:535 msgid "Safe Lock Timeout" msgstr "" #: data/settings_dialog.ui:552 msgid "Lock safe on idle after X minutes" msgstr "" #: data/settings_dialog.ui:617 msgid "Clear Clipboard" msgstr "Počisti odložišče" #: data/settings_dialog.ui:699 msgid "Show Password Fields" msgstr "Pokaži polja gesla" #: data/settings_dialog.ui:780 msgid "Clear Recent List" msgstr "Počisti seznam nedavnih" #: data/settings_dialog.ui:797 msgid "Clear the recently opened safes list" msgstr "" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/shortcuts_overview.ui:18 #, fuzzy msgctxt "Shortcut window description" msgid "Create safe" msgstr "Ustvari sef" #: data/shortcuts_overview.ui:25 #, fuzzy msgctxt "Shortcut window description" msgid "Open safe" msgstr "Odpri sef" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Odpre nastavitve" #: data/shortcuts_overview.ui:41 #, fuzzy msgctxt "Shortcut window description" msgid "Safe" msgstr "Sef" #: data/shortcuts_overview.ui:45 #, fuzzy msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Zaklene sef" #: data/shortcuts_overview.ui:52 #, fuzzy msgctxt "Shortcut window description" msgid "Save safe" msgstr "Shrani sef" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "Odpre iskalno okno" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Ustvari vnos" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "Ustvari skupino" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Vnos" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopiraj geslo" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "Zapre stran vnosa" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:923 msgid "New Safe" msgstr "" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "Vnesite geslo za odklepanje" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "Način izbire" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "Poišči" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "Prazna skupina" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "Razvrščanje" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "A–Z" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Z–A" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "Nazadnje dodano" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "Zakleni" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "Nov vnos" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "Nova skupina" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "Shrani nastavitve" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "Krajevno" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "Polno besedilo" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "Podvoji" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "Izbriši" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "Izbriši izbor" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "Izberi vse" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "Poteka ustvarjanje …" #. NOTE: With clone is meant a duplicated object, not the process of cloning/duplication; "the" clone #: passwordsafe/database_manager.py:384 msgid "Clone" msgstr "Kloniraj" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Odpri" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Uveljavi …" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Neznano" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bitni" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bitni" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bitni" #: passwordsafe/entry_page.py:513 passwordsafe/entry_page.py:576 msgid "Attribute key already exists" msgstr "" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:604 msgid "Select attachment" msgstr "Izbor priloge" #: passwordsafe/entry_page.py:605 msgid "Add" msgstr "Dodaj" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:651 msgid "Save attachment" msgstr "Shrani prilogo" #: passwordsafe/entry_row.py:64 msgid "Title not specified" msgstr "Naziv ni določen" #: passwordsafe/entry_row.py:75 msgid "No username specified" msgstr "" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:297 msgid "Choose a Keepass safe" msgstr "" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:307 passwordsafe/main_window.py:388 msgid "KeePass 3.1/4 Database" msgstr "" #: passwordsafe/main_window.py:336 msgid "Unable to open file \"{}\"." msgstr "" #: passwordsafe/main_window.py:339 msgid "File type {} ({}) is not supported." msgstr "" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:379 msgid "Choose location for Keepass safe" msgstr "" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "" #: passwordsafe/unlock_database.py:221 msgid "Database already opened" msgstr "" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:308 msgid "Choose a keyfile" msgstr "" #: passwordsafe/unlock_database.py:361 passwordsafe/unlock_database.py:418 msgid "Try again" msgstr "Poskusi znova" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:427 msgid "Choose Keyfile" msgstr "" #: passwordsafe/unlocked_database.py:483 msgid "Database saved" msgstr "" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:486 msgid "Please wait. Another save is running." msgstr "" #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:489 msgid "No changes made" msgstr "Ni narejenih sprememb" #: passwordsafe/unlocked_database.py:669 msgid "Copied to clipboard" msgstr "Kopirano v odložišče" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:824 #, python-format msgid "%s locked" msgstr "" #: passwordsafe/unlocked_database.py:824 msgid "Keepass safe locked due to inactivity" msgstr "" secrets-5.1/po/sr.po000066400000000000000000001343731415312107300144410ustar00rootroot00000000000000# Serbian translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Марко Костић , 2018. # Мирослав Николић , 2021. msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-10 08:50+0000\n" "PO-Revision-Date: 2021-05-10 19:09+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Управљајте вашим лозинкама" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Сазнајте више о Сефу за лозинке" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Марко М. Костић \n" "\n" "https://гном.срб — превод Гнома на српски језик" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Безбедносни подаци" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Спољни програми могу направити скривене нешифроване или привремене копије " "ове датотеке у прилогу. Обазриво наставите." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 #| msgid "Back" msgid "_Back" msgstr "_Назад" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 #| msgid "Proceed" msgid "_Proceed" msgstr "_Настави" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Уклони особину" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Боја" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Сеф за лозинке" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Направи сеф" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Поставке" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "Пречице на та_статури" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "О сефу з_а лозинке" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Заштитите ваш сеф" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Лозинка" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Користите лозинку да бисте осигурали ваш сеф." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Кључ-датотека" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Користите кључ-датотеку да бисте осигурали ваш сеф." #: data/create_database.ui:78 msgid "_Composite" msgstr "Двостру_ко" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "Користите лозинку уз кључ-датотеку да бисте осигурали ваш сеф." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Унесите лозинку" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Подесите лозинку за сеф." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Провера подударања лозинке" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Поновите лозинку сефа." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Провера подударања није успела" #: data/create_database.ui:299 #| msgid "Please try again" msgid "Please try again." msgstr "Покушајте поново." #: data/create_database.ui:348 #| msgid "C_onfirm" msgid "_Confirm" msgstr "_Потврди" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Направи кључ-датотеку" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Подеси кључ-датотеку за сеф" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "Напра_ви" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Сеф је успешно направљен" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Отвори сеф" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Појединости" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Путања" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Величина датотеке" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Назив сефа" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Издање Кипеса (KeePass)" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Датум настанка" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Алгоритам шифровања" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Алгоритам извођења" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Статистика" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Број група" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Лозинке" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Број уноса" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Опште" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Лозинка" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Нови" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Направи лозинку" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "П_отврди" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Тренутна" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Кључ-датотека" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Изабери тренутну кључ-датотеку" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Направи нову кључ-датотеку" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "П_римени измене" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Идентификација" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "Ча-ча 20 (ChaCha20): 256-бита" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Туфиш (Twofish): 256-бита" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "АЕС (AES): 256-бита" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Функција извођења кључа" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Примени измене" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "На_слов" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Корисничко име" #: data/entry_page.ui:92 msgid "U_RL" msgstr "У_РЛ" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "Бе_лешке" #: data/entry_page.ui:196 msgid "Icon" msgstr "Иконица" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Прилози" #: data/entry_page.ui:271 #| msgid "Add Attachment" msgid "_Add Attachment" msgstr "_Додај прилог" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Особине" #: data/entry_page.ui:318 msgid "Key" msgstr "Кључ" #: data/entry_page.ui:325 msgid "Value" msgstr "Вредност" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Додај особину" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Копирај корисничко у оставу" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Копирај лозинку у оставу" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Програм" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Направи сеф" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Отвори сеф" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Отвори поставке" #: data/gtk/help-overlay.ui:38 #| msgid "Keyboard Shortcuts" msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Приказује пречице" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Излазак" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Сеф" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Закључај сеф" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Сачувај сеф" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Отвори претрагу" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Направи унос" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Направи групу" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Унос" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Копирај лозинку" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Копирај корисничко" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Иди назад" #: data/main_window.ui:25 msgid "New…" msgstr "Нови…" #: data/main_window.ui:38 msgid "Open…" msgstr "Отвори…" #: data/notes_dialog.ui:18 #| msgid "Copy" msgid "_Copy" msgstr "_Умножи" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 #| msgid "" #| "Password Safe is a password manager which makes use of the Keepass v.4 " #| "format. It integrates perfectly with the GNOME desktop and provides an " #| "easy and uncluttered interface for the management of password databases." msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Сеф за лозинке је управник лозинки који користи Кипес (KeePass) 4 формат. " "Савршено се уклапа у Гномову радно површ и пружа једноставно и прегледно " "сучеље за управљање базама са лозинкама." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Управник лозинки за Гном" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" "keepass;encrypt;secure;кипес;шифровање;безбедно;сигурно;лозинке;kipes;" "šifrovanje;bezbedno;sigurno;lozinke;sifrovanje;safe;sef;сеф;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Користи тамну ГТК тему" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Користи тамну варијанту ваше ГТК+ теме. Знајте да тамна варијанта није " "доступна у свакој ГТК+ теми." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Поново отвори последње отварану базу" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Самостално отвори екран за откључавање последње отваране базе, у супротном " "прикажи екран добродошлице." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Самостално чувај сваку измену" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Самостално сачувај сваку начињену измену у базу. Знајте да не можете " "опозвати измене ако је ово укључено." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Закључај базу након одређеног броја минута" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Самостално закључај базу након датог броја минута да бисте појачали " "безбедност базе." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Очисти оставу након одређеног броја секунди" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Након копирања лозинке, очисти оставу зарад веће безбедности." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Прикажи лозинке као обичан текст" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Подразумевано прикажи лозинке у пољима за унос." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Величина прозора" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Запамти величину прозора." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Последња отворена база" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Путања до последње отворене базе." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Последња отворене базе" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Списак бази отворених прошли пут." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Запамти двоструки кључ" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Запамти последњи двоструки кључ који је коришћен за откључавање базе." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Последњи коришћени двоструки кључ" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Путања до последње коришћеног двоструког кључа за откључавање базе." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Запамти начин откључавања" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Запамти последње коришћени начин откључавања за будућа откључавања базе." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Направи резерву базе при откључавању" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Ако се догоди грешка приликом чувања базе, резерва се може наћи у путањи ~/." "cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Редослед ређања групи и уноса" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Редослед редова у прегледу група и уноса." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Последњи коришћени начин откључавања" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Користи се за чување последњег коришћеног начина откључавања зарад бржег " "откључавања." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Претражуј цео текст" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Претражује вредности свих ставки." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Претрага тренутне групе" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Само претражи ставке у тренутној групи." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Користи велика слова приликом стварања лозинке" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Користи велика слова A-Z приликом стварања насумичне лозинке." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Користи мала слова приликом стварања лозинке" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Користи мала слова a-z приликом стварања насумичне лозинке." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Користи бројеве приликом стварања лозинке" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Користи бројеве 0-9 приликом стварања насумичне лозинке." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Користи симболе слова приликом стварања лозинке" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Користи не-алфанумеричке ASCII симболе приликом стварања насумичне лозинке." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Дужина створене лозинке" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Број засебних знакова приликом стварања лозинке." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Број речи приликом стварања фразе" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Број речи за коришћење приликом стварања фразе." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Одвајач приликом стварања фразе" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Одвајач речи који треба користити приликом стварања фразе." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Дужина" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Знакови" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Речи" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Раздвајач" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Унесите знак овде…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Фраза" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Својства" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "УУИД" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Датум приступа" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Датум измене" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Датум стварања" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Да ли желите да сачувате све сефове где има несачуваних измена?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Изаберите сефове које желите сачувати." #: data/quit_dialog.ui:42 #| msgid "Cancel" msgid "_Cancel" msgstr "_Откажи" #: data/quit_dialog.ui:49 #| msgid "Quit" msgid "_Quit" msgstr "_Изађи" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Недавни сефови" #: data/references_dialog.ui:20 msgid "Code" msgstr "Код" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Својство" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Наслов" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Корисничко име" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "Адреса" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Белешке" #: data/references_dialog.ui:267 msgid "References" msgstr "Референце" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Синтакса" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Подразумевана синтакса за референце у пољима је следећа:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Прикажи кодове поља" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Одредник" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Референца" #: data/references_dialog.ui:503 #| msgid "" #| "Each entry has a unique identifier called UUID.\n" #| "It can be found in the properties of the entry." msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Сваки унос садржи јединствени одредник звани УУИД. Можете га наћи у " "својствима уноса." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Несачуване измене" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Да ли желите да упишете све измене у сеф?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 #| msgid "Quit Without Saving" msgid "_Quit Without Saving" msgstr "_Затвори без чувања" #. _Cancel exiting the program #: data/save_dialog.ui:22 #| msgid "Don't Quit" msgid "_Don't Quit" msgstr "_Не излази " #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 #| msgid "Save and Quit" msgid "_Save and Quit" msgstr "_Сачувај и изађи" #: data/search.ui:70 msgid "Enter search term" msgstr "Унесите појам за претрагу" #: data/search.ui:104 msgid "No search results" msgstr "Нема резултата претраге" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Помери изабрано" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Обриши изабрано" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Откажи" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Та_мна тема" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Користи тамну ГТК тему." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Сакри_ј екран првог покретања" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Поново отвори прошли сеф." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Сеф" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "Чувај _самостално" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Самостално чувај сваку измену." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Откључај" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Запамти двоструки _кључ" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Запамти последњи коришћени двоструки кључ." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Запамти начин откљ_учавања" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Омогући брже откључавање." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Стварање лозинке" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Дужина лозинке" #: data/settings_dialog.ui:120 #| msgid "Number of single characters when generating a password." msgid "Number of characters when generating a password." msgstr "Број знакова приликом стварања лозинке." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "В_елика слова" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Користи велика слова A-Z приликом стварања лозинке." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Ма_ла слова" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Користи мала слова a-z приликом стварања лозинке." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Бро_јеви" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Користи бројеве приликом стварања лозинке." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "По_себни знакови" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Користи не-алфанумеричке ASCII симболе приликом стварања лозинке." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Стварање фразе" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Дужина фразе" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Унеси знак" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Безбедност" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Време истека откључаности сефа" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Закључај сеф након одређеног броја минута у мировању." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Очисти оставу" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Очисти оставу након одређеног броја секунди." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "Откриј _садржај поља за лозинке" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Прикажи лозинке као обичан текст." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Очисти списак скорашњих бази" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Очисти списак скоро отворених сефова." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Нови сеф" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Отвори сеф" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Сеф је закључан" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Унеси лозинку за откључавање" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Изабери кључ-датотеку за откључавање" #: data/unlock_database.ui:239 #| msgid "Open Keyfile" msgid "_Open Keyfile" msgstr "_Отвори кључ-датотеку" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Унеси лозинку и изабери кључ-датотеку за откључавање" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Двоструко" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Празна група" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Кликни на кутију са кућицама за бирање" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Потражи" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Режим избора" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Сачувај" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Закључај" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "_Ређање" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Не_давно додато" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Подешавања се_фа" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Из_абери све" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "По_ништи избор" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "_Удвостручи" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Референце" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "Сво_јства" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Обриши" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Нови _унос" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Нова _група" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 #| msgid "Secure password safe" msgid "Secure Password Safe" msgstr "Безбедан сеф за лозинке" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Безбедно чувајте ваше лозинке, белешке и податке. Направите или " "увезите нови Кипес (Keepass) сеф." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Не могу да изађем: Не могу да сачувам Сеф" #: passwordsafe/create_database.py:115 #| msgid "Password Length" msgid "Passwords do not match" msgstr "Лозинке се не подударају" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Изабери место за кључ-датотеку" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Правим…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Клонирај" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Изабери тренутну кључ-датотеку" #: passwordsafe/database_settings_dialog.py:183 #| msgid "Open" msgid "_Open" msgstr "_Отвори" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Примени…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Непознато" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "АЕС (AES) 256-бита" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "Ча-ча 20 (ChaCha20) 256-бита" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Туфиш (Twofish) 256-бита" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Кључ особине већ постоји" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Изабери прилог" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Додај" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Сачувај прилог" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Корисничко копирано у оставу" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Лозинка копирана у оставу" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Назив није наведено" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Корисничко име није наведено" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Изабери Кипес (Keepass) сеф" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "Кипес (KeePass) 3.1/4 база" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Не могу да отворим датотеку" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Не могу да отворим датотеку: Миме врста није подржана" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Сеф је већ откључан" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Изабери место за Кипес (Keepass) сеф" #: passwordsafe/main_window.py:298 #| msgid "Create" msgid "_Create" msgstr "_Направи" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Радња је прекинута: Бришем тренутно активну групу" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Брисање је обављено" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Радња је прекинута: Премештам тренутно активну групу" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Премештање је обављено" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Изабери кључ-датотеку" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Изабери кључ-датотеку" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 #| msgid "File type {} ({}) is not supported." msgid "The kdb format is not supported" msgstr "Формат кбд није подржан" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Нисам успео да откључам сеф" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Покушај поново" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Сеф је сачуван" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Не могу да сачувам Сеф" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Сачекајте. Друго чување је већ у току." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Нема начињених измена" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Копирано у оставу" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 #| msgid "Keepass safe locked due to inactivity" msgid "Safe locked due to inactivity" msgstr "Сеф је закључан због неактивности" #: passwordsafe/unlocked_headerbar.py:135 #| msgctxt "Shortcut window description" #| msgid "Create entry" msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} изабран унос" msgstr[1] "{} изабрана уноса" msgstr[2] "{} изабраних уноса" msgstr[3] "Један изабран унос" #~ msgid "Secret_Photo.png" #~ msgstr "Тајна_слика.png" #~ msgid "_Full-Text Search" #~ msgstr "Пре_трага целог текста" #~ msgid "_Current Group Search" #~ msgstr "Претра_га тренутне групе" #~ msgid "Generate" #~ msgstr "Направи" #~ msgid "Add" #~ msgstr "Додај" #~ msgid "Save" #~ msgstr "Сачувај" #~ msgid "No group title specified" #~ msgstr "Назив групе није наведен" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Не могу отворити датотеку „{}“." #~ msgid "Skipped moving group into itself" #~ msgstr "Прескачем премештање групе у себе" #~ msgid "%s locked" #~ msgstr "Сеф %s је закључан" #~ msgid "Preferences" #~ msgstr "Поставке" #~ msgid "New" #~ msgstr "Нова" #~ msgid "Show/hide password" #~ msgstr "Прикажи или сакриј лозинку" #~ msgid "Close" #~ msgstr "Затвори" #~ msgid "Discard" #~ msgstr "Одбаци" #~ msgid "First Start" #~ msgstr "Прво покретање" #~ msgid "Timeout" #~ msgstr "Време истека" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Напусти страницу уноса" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Одлазак на родитељску групу" #~ msgid "A-Z" #~ msgstr "А-Ш" #~ msgid "Z-A" #~ msgstr "Ш-А" #~ msgid "New Safe" #~ msgstr "Нови сеф" #~ msgid "Local" #~ msgstr "Месно" #~ msgid "Database saved" #~ msgstr "База је сачувана" #~ msgid "File already exists" #~ msgstr "Датотека већ постоји" #~ msgid "Do you want to override it?" #~ msgstr "Да ли желите да је препишете?" #~ msgid "Override" #~ msgstr "Препиши" #~ msgid "Settings" #~ msgstr "Подешавања" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Edit" #~ msgstr "Уреди" #~ msgid "Create password…" #~ msgstr "Направи лозинку…" #~ msgid "Create group…" #~ msgstr "Направи групу…" secrets-5.1/po/sv.po000066400000000000000000001203141415312107300144330ustar00rootroot00000000000000# Swedish translation for PasswordSafe. # Copyright © 2018-2021 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Anders Jonsson , 2018, 2019, 2020, 2021. # Luna Jernberg , 2020, 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 12:01+0000\n" "PO-Revision-Date: 2021-05-02 17:20+0200\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.2\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Hantera dina lösenord" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Lär dig mer om Password Safe" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "" "Anders Jonsson \n" "Luna Jernberg \n" "\n" "Skicka synpunkter på översättningen till\n" "." #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Säkerhetsinformation" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Det är möjligt att externa program kommer att skapa okrypterade dolda eller " "temporära kopior av denna bilagefil! Fortsätt med aktsamhet." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Bakåt" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "_Fortsätt" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Ta bort attribut" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Färg" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Password Safe" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Skapa kassaskåp" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Inställningar" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Om Password Safe" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Skydda ditt kassaskåp" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Lösenord" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Använd ett lösenord för att säkra ditt kassaskåp." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Nyckelfil" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Använd en nyckelfil för att säkra ditt kassaskåp." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Sammansatt" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Använd ett lösenord i kombination med en nyckelfil för att säkra ditt " "kassaskåp." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Ange lösenord" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Ställ in lösenord för kassaskåp." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Kontroll att lösenord överensstämmer" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Upprepa lösenord för kassaskåp." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Kontroll av överensstämmelse misslyckades" #: data/create_database.ui:299 msgid "Please try again." msgstr "Försök igen." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Bekräfta" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Generera nyckelfil" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Ställ in nyckelfil för kassaskåp" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "_Generera" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Kassaskåp skapades" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "Ö_ppna kassaskåp" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Detaljer" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Sökväg" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Filstorlek" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Namn på kassaskåp" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "KeePass-version" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Datum för skapande" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Krypteringsalgoritm" # https://it-ord.idg.se/ord/key-derivation-function/ #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Genereringsalgoritm" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Statistik" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Antal grupper" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Lösenord" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Antal poster" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Allmänt" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Lösenord" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "_Nytt" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Generera lösenord" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "_Bekräfta" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Aktuellt" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Nyckelfil" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Välj aktuell nyckelfil" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "_Generera ny nyckelfil" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "Ver_kställ ändringar" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Autentisering" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bitars" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bitars" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bitars" # https://it-ord.idg.se/ord/key-derivation-function/ #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Nyckelgenereringsfunktion" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Verkställ ändringar" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Titel" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Användarnamn" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "A_nteckningar" #: data/entry_page.ui:196 msgid "Icon" msgstr "Ikon" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Bilagor" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Lägg till bilaga" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Attribut" #: data/entry_page.ui:318 msgid "Key" msgstr "Nyckel" #: data/entry_page.ui:325 msgid "Value" msgstr "Värde" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Lägg till attribut" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Kopiera användarnamn till urklipp" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Kopiera lösenord till urklipp" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Program" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Skapa kassaskåp" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Öppna kassaskåp" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Öppna inställningar" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Visa kortkommandon" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Avsluta" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Kassaskåp" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Lås kassaskåp" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Spara kassaskåp" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Öppna sökning" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Skapa post" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Skapa grupp" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Post" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Kopiera lösenord" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Kopiera användarnamn" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Gå tillbaka" #: data/main_window.ui:25 msgid "New…" msgstr "Nytt…" #: data/main_window.ui:38 msgid "Open…" msgstr "Öppna…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Kopiera" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Password Safe är en lösenordshanterare som använder KeePass v.4-formatet. " "Den integrerar perfekt med GNOME-skrivbordet och tillhandahåller ett enkelt " "och stilrent gränssnitt för hantering av lösenordsdatabaser." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "En lösenordshanterare för GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;kryptera;säkra;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Använd mörkt GTK-tema" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Använd den mörka varianten av ditt GTK+-tema. Observera att inte alla GTK+-" "teman har en mörk variant." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Öppna senast öppnad databas igen" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Öppna automatiskt upplåsningsskärmen för den senast öppnade databasen, visa " "annars välkomstskärmen." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Spara varje ändring automatiskt" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Spara omedelbart varje ändring du gjort in i databasen. Observera att du " "inte kan återställa ändringar om automatisk sparning är aktiverad." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Lås databasen efter X minuter" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Lås automatiskt din databas efter ett angivet antal minuter för att " "förbättra säkerheten." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Töm urklipp efter X sekunder" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Tömmer urklipp efter att lösenordet kopierats av säkerhetsskäl." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Visa lösenord i klartext" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Visa lösenorden i inmatningsfälten som standard." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Fönsterstorlek" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Kom ihåg fönsterstorleken." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Senast öppnad databas" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Sökväg till den senast öppnade databasen." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Senast öppnade databaser" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "En lista över de senast öppnade databaserna." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Kom ihåg sammansatt nyckel" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Kom ihåg senast använd sammansatt nyckel för databasupplåsning." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Senast använd sammansatt nyckel" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "Sökväg till senast använd nyckel för sammansatt databasupplåsning." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Kom ihåg upplåsningsmetod" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Kom ihåg senast använd upplåsningsmetod för framtida databasupplåsning." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Säkerhetskopiera databasen vid upplåsning" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Om ett fel uppstår under tiden databasen sparas kan en säkerhetskopia hittas " "på ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Sorteringsordning för grupper och poster" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Ordning för raderna i vyerna för grupper och poster." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Senast använd upplåsningsmetod" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Används för att lagra senast använd upplåsningsmetod och för att möjliggöra " "en snabbare upplåsningsprocess." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Använd fulltextsökning" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Utför en sökning över alla värden för poster." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Sök i aktuell grupp" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Sök endast poster i aktuell grupp." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Använd versaler då ett lösenord genereras" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Använd versalerna A-Z då ett slumpmässigt lösenord genereras." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Använd gemener då ett lösenord genereras" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Använd gemenerna a-z då ett slumpmässigt lösenord genereras." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Använd siffror då ett lösenord genereras" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Använd siffrorna 0-9 då ett slumpmässigt lösenord genereras." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Använd symboler då ett lösenord genereras" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Använd icke-alfanumeriska ASCII-symboler då ett slumpmässigt lösenord " "genereras." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Lösenordslängd när ett lösenord genereras" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Antalet enskilda tecken då ett lösenord genereras." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Antalet ord då en lösenfras genereras" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Antalet ord att använda då en lösenfras genereras." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Avskiljare när en lösenfras genereras" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Ordavskiljare att använda när en lösenfras genereras." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Längd" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Tecken" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Ord" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Avgränsare" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Ange tecken här…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Lösenfras" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Egenskaper" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Åtkommen" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Ändrad" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Skapad" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Vill du spara alla kassaskåp med osparade ändringar?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Välj kassaskåpen som du vill spara." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "A_vbryt" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Avsluta" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Senaste kassaskåp" #: data/references_dialog.ui:20 msgid "Code" msgstr "Kod" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Egenskap" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Titel" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Användarnamn" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Anteckningar" #: data/references_dialog.ui:267 msgid "References" msgstr "Referenser" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Syntax" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Platshållarsyntax för fältreferenser är följande:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Visa fältkoder" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Identifierare" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Referens" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Varje post har en unik identifierare kallad UUID. Den kan hittas bland " "postens egenskaper." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Osparade ändringar" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Vill du skriva alla ändringar till kassaskåpet?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "_Avsluta utan att spara" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "Avsluta _inte" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Spara och avsluta" #: data/search.ui:70 msgid "Enter search term" msgstr "Ange sökterm" #: data/search.ui:104 msgid "No search results" msgstr "Inga sökresultat" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Flytta markering" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Ta bort markering" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Avbryt" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Mörkt tema" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Använd mörkt GTK-tema." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "_Dölj första startskärm" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Öppna det senast öppnade kassaskåpet igen." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Kassaskåp" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "_Spara automatiskt" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Spara varje ändring automatiskt." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Lås upp" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "_Kom ihåg sammansatt nyckel" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Kom ihåg senast använd sammansatt nyckel." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Kom ihåg _upplåsningsmetod" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Aktivera snabbare upplåsning." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Lösenordsgenerering" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Lösenordslängd" #: data/settings_dialog.ui:120 msgid "Number of characters when generating a password." msgstr "Antalet tecken då ett lösenord genereras." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "_Versaler" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Använd versalerna A-Z då ett lösenord genereras." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "_Gemener" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Använd gemenerna a-z då ett lösenord genereras." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Numeriska tecken" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Använd siffror då ett lösenord genereras." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "_Specialtecken" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Använd icke-alfanumeriska ASCII-symboler då ett lösenord genereras." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Lösenfrasgenerering" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Lösenfraslängd" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Ange tecken" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Säkerhet" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Tidsgräns för låsning av kassaskåp" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Lås kassaskåpet vid inaktivitet efter X minuter." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Töm urklipp" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Töm urklipp efter X sekunder." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Visa lösenordsfält" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Visa lösenord i klartext." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Töm lista över senaste" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Töm listan över senast öppnade kassaskåp." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "_Nytt kassaskåp" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Öppna kassaskåp" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Kassaskåpet är låst" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Ange lösenord för att låsa upp" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Välj nyckelfil för att låsa upp" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "Ö_ppna nyckelfil" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Ange lösenord och välj nyckelfil för att låsa upp" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Sammansatt" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Tom grupp" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Klicka på en kryssruta för att välja" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Sök" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Markeringsläge" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Spara" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Lås" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "So_rtering" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Ö" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Ö-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Senast _tillagt" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "I_nställningar för kassaskåp" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Markera _alla" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Markera _inget" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "_Duplicera" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "_Referenser" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Egenskaper" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Ta bort" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Ny _post" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Ny _grupp" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Säkert kassaskåp för lösenord" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Lagra säkert dina lösenord, anteckningar och data. Skapa eller " "importera ett nytt Keepass-kassaskåp." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Kunde inte avsluta: det gick inte att spara kassaskåp" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Lösenord stämmer inte överens" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Välj plats för nyckelfilen" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Genererar…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Klon" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Välj aktuell nyckelfil" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "Ö_ppna" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Verkställ…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Okänd" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bitars" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bitars" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bitars" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Attributnyckel finns redan" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Välj bilaga" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Lägg till" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Spara bilaga" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Användarnamn kopierat till urklipp" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Lösenord kopierat till urklipp" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Titel inte angiven" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Inget användarnamn angivet" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Välj ett Keepass-kassaskåp" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4-databas" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Kunde inte öppna fil" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "Kunde inte öppna fil: Mime-typen stöds inte" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Kassaskåpet är redan öppnat" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Välj plats för Keepass-kassaskåp" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "S_kapa" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Åtgärden avbröts: tar bort för närvarande aktiv grupp" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Borttagning slutförd" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Åtgärden avbröts: flyttar för närvarande aktiv grupp" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Flytt slutförd" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Välj en nyckelfil" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Välj nyckelfil" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "KDB-formatet stöds inte" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Misslyckades med att låsa upp kassaskåp" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Försök igen" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Kassaskåp sparat" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Kunde inte spara kassaskåp" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Vänta, en annan sparning körs." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Inga ändringar gjorda" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Kopierat till urklipp" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Kassaskåp låstes på grund av inaktivitet" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} markerad post" msgstr[1] "{} markerade poster" #~ msgid "Secret_Photo.png" #~ msgstr "Hemligt_foto.png" #~ msgid "_Full-Text Search" #~ msgstr "_Fulltextsökning" #~ msgid "_Current Group Search" #~ msgstr "Sök i ak_tuell grupp" #~ msgid "No group title specified" #~ msgstr "Ingen grupptitel angiven" #~ msgid "Skipped moving group into itself" #~ msgstr "Hoppade över att flytta in grupp i sig själv" #~ msgid "Generate" #~ msgstr "Generera" #~ msgid "Add" #~ msgstr "Lägg till" #~ msgid "Save" #~ msgstr "Spara" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Kan inte öppna filen ”{}”." #~ msgid "%s locked" #~ msgstr "%s låstes" #~ msgid "About Password Safe" #~ msgstr "Om Password Safe" #~ msgid "New" #~ msgstr "Nytt" #~ msgid "Show/hide password" #~ msgstr "Visa/dölj lösenord" #~ msgid "Database saved" #~ msgstr "Databasen sparad" #~ msgid "Preferences" #~ msgstr "Inställningar" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tangentbordsgenvägar" #~ msgid "First Start" #~ msgstr "Första start" #~ msgid "Timeout" #~ msgstr "Tidsgräns" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Lämna sida för post" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Navigera till överordnad grupp" #~ msgid "A-Z" #~ msgstr "A-Ö" #~ msgid "Z-A" #~ msgstr "Ö-A" #~ msgid "New Safe" #~ msgstr "Nytt kassaskåp" #~ msgid "Close" #~ msgstr "Stäng" #~ msgid "Discard" #~ msgstr "Förkasta" #~ msgid "Local" #~ msgstr "Lokalt" #~ msgid "File already exists" #~ msgstr "Filen finns redan" #~ msgid "Do you want to override it?" #~ msgstr "Vill du åsidosätta den?" #~ msgid "Override" #~ msgstr "Åsidosätt" #~ msgid "Settings" #~ msgstr "Inställningar" #~ msgid "Edit" #~ msgstr "Redigera" #~ msgid "Create password…" #~ msgstr "Skapa lösenord…" #~ msgid "Create group…" #~ msgstr "Skapa grupp…" #~ msgid "KeePass Client" #~ msgstr "KeePass-klient" #~ msgid "dialog-password" #~ msgstr "dialog-password" #~ msgid "About" #~ msgstr "Om" #~ msgid "16" #~ msgstr "16" #~ msgid "8" #~ msgstr "8" #~ msgctxt "shortcut window" #~ msgid "Create a new safe" #~ msgstr "Skapa ett nytt kassaskåp" #~ msgctxt "shortcut window" #~ msgid "Open an existing safe" #~ msgstr "Öppna ett befintligt kassaskåp" #~ msgctxt "shortcut window" #~ msgid "Copy password on entry page" #~ msgstr "Kopiera lösenord på inmatningssida" #~ msgid "Deleted blank group" #~ msgstr "Tog bort tom grupp" #~ msgid "Group added" #~ msgstr "Grupp lades till" secrets-5.1/po/tr.po000066400000000000000000001016071415312107300144340ustar00rootroot00000000000000# Turkish translation for PasswordSafe. # Copyright (C) 2018 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Emin Tufan Çetin , 2018-2020. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2020-10-01 09:15+0000\n" "PO-Revision-Date: 2020-10-03 14:00+0300\n" "Last-Translator: Emin Tufan Çetin \n" "Language-Team: Türkçe \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 3.32.1\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in.in:9 msgid "Manage your passwords" msgstr "Parolalarınızı yönetin" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "Parola güvenliği hakkında ek bilgi edinin" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "" "Emin Tufan Çetin \n" "Serdar Sağlam " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:9 msgid "Safety Info" msgstr "Güvenlik Bilgisi" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:10 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Dış uygulamalar bu ek dosyasının şifrelenmemiş gizli veya geçici kopyalarını " "oluşturabilir! Lütfen özenle devam edin." #. Discard all the changes which the user have made to his keepass safe #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/attachment_warning_dialog.ui:23 data/unlocked_database.ui:1274 msgid "Back" msgstr "Geri" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:36 msgid "Proceed" msgstr "Devam" #: data/create_database.ui:74 data/database_settings_dialog.ui:439 #: data/entry_page.ui:1563 data/entry_page.ui:1699 #: data/references_dialog.ui:155 data/references_dialog.ui:263 #: passwordsafe/unlock_database.py:102 msgid "Password" msgstr "Parola" #: data/create_database.ui:94 msgid "Use a password to secure your safe" msgstr "Kasanızı korumak için parola kullanın" #: data/create_database.ui:157 data/database_settings_dialog.ui:579 #: passwordsafe/create_database.py:242 passwordsafe/create_database.py:247 #: passwordsafe/database_settings_dialog.py:184 #: passwordsafe/database_settings_dialog.py:219 #: passwordsafe/database_settings_dialog.py:224 #: passwordsafe/unlock_database.py:105 passwordsafe/unlock_database.py:310 #: passwordsafe/unlock_database.py:432 msgid "Keyfile" msgstr "Anahtar dosyası" #: data/create_database.ui:177 msgid "Use a keyfile to secure your safe" msgstr "Güvenlik için anahtar dosyası kullanın" #. NOTE: Composite unlock is a authentification method where both password and keyfile are required #: data/create_database.ui:240 passwordsafe/unlock_database.py:109 msgid "Composite" msgstr "Birleşik" #: data/create_database.ui:260 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "Sıkı güvenlik için anahtar dosyası ile birlikte parola kullanın" #: data/create_database.ui:303 msgid "Protect your safe" msgstr "Kasanızı koruyun" #: data/create_database.ui:415 msgid "Set password for safe" msgstr "Kasa için parola belirle" #: data/create_database.ui:430 msgid "Enter Password" msgstr "Parola Gir" #: data/create_database.ui:476 msgid "Password Match Check" msgstr "Parola Eşleşme Denetimi" #: data/create_database.ui:562 msgid "Repeat password for safe" msgstr "Kasa için parolayı yinele" #: data/create_database.ui:608 msgid "Match Check Failed" msgstr "Eşleşme Denetimi Başarısız" #: data/create_database.ui:667 msgid "Please try again" msgstr "Lütfen yeniden deneyin" #. Button to generate a password #: data/create_database.ui:788 data/entry_page.ui:1650 #: passwordsafe/create_database.py:240 #: passwordsafe/database_settings_dialog.py:217 msgid "Generate" msgstr "Oluştur" #: data/create_database.ui:817 msgid "Set keyfile for safe" msgstr "Kasa için anahtar dosyası ayarla" #: data/create_database.ui:832 msgid "Generate Keyfile" msgstr "Anahtar Dosyası Oluştur" #: data/create_database.ui:887 data/main_window.ui:200 #: data/unlock_database.ui:311 data/unlocked_database.ui:976 msgid "Preferences" msgstr "Tercihler" #: data/create_database.ui:901 data/main_window.ui:214 #: data/unlock_database.ui:325 data/unlocked_database.ui:990 msgid "Keyboard Shortcuts" msgstr "Klavye Kısayolları" #. "Password Safe" is the application name #: data/create_database.ui:915 data/main_window.ui:228 #: data/unlock_database.ui:339 data/unlocked_database.ui:1004 msgid "About Password Safe" msgstr "Parola Kasası Hakkında" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database.ui:929 data/main_window.ui:355 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:4 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:353 msgid "Password Safe" msgstr "Parola Kasası" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:930 msgid "Create Safe" msgstr "Kasa Oluştur" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "Kasa Başarıyla Oluşturuldu" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #: data/created_database.ui:50 data/unlock_database.ui:286 #: data/unlock_database.ui:354 data/unlocked_database.ui:937 msgid "Open Safe" msgstr "Kasayı Aç" #: data/database_settings_dialog.ui:55 msgid "Details" msgstr "Ayrıntılar" #: data/database_settings_dialog.ui:80 msgid "Path" msgstr "Yol" #: data/database_settings_dialog.ui:97 msgid "File Size" msgstr "Dosya Boyutu" #: data/database_settings_dialog.ui:114 msgid "Safe Name" msgstr "Kasa Adı" #. KeePass is a proper noun #: data/database_settings_dialog.ui:144 msgid "KeePass Version" msgstr "KeePass Sürümü" #: data/database_settings_dialog.ui:161 msgid "Creation Date" msgstr "Oluşturma Tarihi" #: data/database_settings_dialog.ui:178 data/database_settings_dialog.ui:801 msgid "Encryption Algorithm" msgstr "Şifreleme Algoritması" #: data/database_settings_dialog.ui:195 msgid "Derivation Algorithm" msgstr "Türetme Algoritması" #. Statistics #: data/database_settings_dialog.ui:300 msgid "Stats" msgstr "İstatistik" #: data/database_settings_dialog.ui:325 msgid "Number of Groups" msgstr "Küme Sayısı" #: data/database_settings_dialog.ui:342 msgid "Passwords" msgstr "Parolalar" #: data/database_settings_dialog.ui:359 msgid "Number of Entries" msgstr "Girdi Sayısı" #: data/database_settings_dialog.ui:420 data/settings_dialog.ui:14 #: data/settings_dialog.ui:19 msgid "General" msgstr "Genel" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:461 msgid "New" msgstr "Yeni" #: data/database_settings_dialog.ui:480 data/database_settings_dialog.ui:481 msgid "Generate Password" msgstr "Parola Oluştur" #. Retype the new password to confirm #: data/database_settings_dialog.ui:494 msgid "Confirm" msgstr "Onayla" #. Current password #: data/database_settings_dialog.ui:524 msgid "Current" msgstr "Şimdiki" #: data/database_settings_dialog.ui:632 msgid "Select current keyfile" msgstr "Geçerli anahtar dosyası seç" #: data/database_settings_dialog.ui:708 msgid "Generate new keyfile" msgstr "Yeni anahtar dosyası oluştur" #: data/database_settings_dialog.ui:741 data/database_settings_dialog.ui:962 #: passwordsafe/database_settings_dialog.py:335 #: passwordsafe/database_settings_dialog.py:357 msgid "Apply Changes" msgstr "Değişiklikleri Uygula" #: data/database_settings_dialog.ui:762 msgid "Authentication" msgstr "Doğrulama" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:834 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bit" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:851 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bit" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:868 msgid "AES: 256-bit" msgstr "AES: 256-bit" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:893 msgid "Key Derivation Function" msgstr "Anahtar Türetme İşlevi" #: data/entry_page.ui:34 msgid "Add Attachment" msgstr "Ek Ekle" #: data/entry_page.ui:76 msgid "Attachments" msgstr "Ekler" #: data/entry_page.ui:163 msgid "Secret_Photo.png" msgstr "Gizli_Foto.png" #: data/entry_page.ui:338 msgid "Remove attribute" msgstr "Özniteliği kaldır" #: data/entry_page.ui:399 msgid "Attributes" msgstr "Öznitelikler" #: data/entry_page.ui:439 msgid "Key" msgstr "Anahtar" #: data/entry_page.ui:453 msgid "Value" msgstr "Değer" #: data/entry_page.ui:475 msgid "Add attribute" msgstr "Öznitelik ekle" #: data/entry_page.ui:530 msgid "Color" msgstr "Renk" #: data/entry_page.ui:825 msgid "Icon" msgstr "Simge" #: data/entry_page.ui:1197 data/group_page.ui:35 data/references_dialog.ui:65 #: data/references_dialog.ui:235 msgid "Title" msgstr "Başlık" #: data/entry_page.ui:1282 data/group_page.ui:120 data/references_dialog.ui:185 #: data/references_dialog.ui:291 msgid "Notes" msgstr "Notlar" #: data/entry_page.ui:1434 msgid "Length" msgstr "Uzunluk" #: data/entry_page.ui:1468 msgid "Characters" msgstr "Karakterler" #: data/entry_page.ui:1576 msgid "Words" msgstr "Sözcükler" #: data/entry_page.ui:1609 msgid "Separator" msgstr "Ayırıcı" #: data/entry_page.ui:1626 msgid "Enter character here…" msgstr "Buraya karakteri girin…" #: data/entry_page.ui:1637 msgid "Passphrase" msgstr "Parola" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1755 msgid "Show/hide password" msgstr "Parolayı göster/gizle" #: data/entry_page.ui:1936 data/references_dialog.ui:170 #: data/references_dialog.ui:277 msgid "URL" msgstr "URL" #: data/entry_page.ui:2023 data/references_dialog.ui:92 #: data/references_dialog.ui:249 msgid "Username" msgstr "Kullanıcı adı" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "Güvenli parola kasası" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:62 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Parolalarınızı, notlarınızı ve verinizi güvenle saklayın. Yeni Keepass " "kasası oluşturun veya içe aktarın" #: data/main_window.ui:269 msgid "New…" msgstr "Yeni…" #: data/main_window.ui:314 msgid "Open…" msgstr "Aç…" #: data/main_window.ui:411 msgid "Recent Databases" msgstr "Son Veri Tabanları" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "Kopyala" #: data/notes_dialog.ui:52 msgid "Close" msgstr "Kapat" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Parola Kasası, Keepass v.4 biçimini kullanan parola yöneticisidir. GNOME " "masaüstüyle kusursuzca tümleşir ve parola veri tabanlarının yönetimi için " "kolay ve düzenli arayüz sunar." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:99 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "GNOME için parola yöneticisi" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;şifrele;güvenli;" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:67 msgid "Use dark GTK+ theme" msgstr "Karanlık GTK+ gövdesi kullan" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "GTK+ gövdenizin karanlık biçimini kullanın. Her GTK+ gövdesinin karanlık " "gövdesi olmadığını unutmayın." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Son açılan veri tabanını yeniden aç" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Son açılan veri tabanının kilit açma ekranını kendiliğinden göster, diğer " "türlü karşılama ekranını göster." #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:256 msgid "Save every change automatically" msgstr "Her değişikliği kendiliğinden kaydet" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Her yaptığınız değişikliği anında veri tabanına kaydedin. Kendiliğinden " "kayıt etkinse değişiklikleri geri alamayacağınızı unutmayın." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Veri tabanını X dakika sonra kilitle" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Güvenliği artırmak için verilen dakika miktarından sonra veri tabanınızı " "kendiliğinden kilitleyin." #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:634 msgid "Clear clipboard after X seconds" msgstr "Panoya X saniye sonra temizle" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Parolayı kopyaladıktan sonra güvenlik için panoyu temizle." #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:716 msgid "Display passwords in plain text" msgstr "Parolaları düz metinde göster" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Girdi alanlarındaki parolaları öntanımlı olarak göster." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Pencere boyutu" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Pencere boyutunu anımsa." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Son açılan veri tabanı" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Son açılan veri tabanının yolu." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Son açılan veri tabanları" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Son açılan veri tabanlarının listesi." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Birleşik anahtarı anımsa" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Veri tabanı kilidini açmak için son kullanılan birleşik anahtarı anımsa." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Son kullanılan birleşik anahtar" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Veri tabanı kilidini açmak için kullanılan son birleşik anahtarın yolu." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Kilit açma yöntemini anımsa" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Gelecek veri tabanı kilit açımları için son kullanılan kilit açma yöntemini " "anımsa." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Kilit açarken veri tabanını yedekle" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Veri tabanını kaydederken hata olursa yedek ~/.cache/passwordsafe/backups " "yolunda bulunabilir" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Kümelerin ve girdilerin sıralama düzeni" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Kümeler ve girdiler görünümündeki satırların düzeni." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Son kullanılan kilit açma yöntemi" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Son kullanılan kilit açma yöntemini depolamak ve hızlı kilit açma süreci " "yaratmak için kullanılır." #: data/override_dialog.ui:8 msgid "File already exists" msgstr "Dosya zaten var" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "Üzerine yazmak ister misiniz?" #: data/override_dialog.ui:22 data/unlocked_database.ui:1452 msgid "Cancel" msgstr "İptal Et" #: data/override_dialog.ui:35 msgid "Override" msgstr "Üzerine Yaz" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "Özellikler" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "Erişildi" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "Düzenlendi" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "Oluştur" #: data/references_dialog.ui:23 msgid "Code" msgstr "Kod" #: data/references_dialog.ui:38 data/references_dialog.ui:403 #: data/references_dialog.ui:554 msgid "Property" msgstr "Özellik" #: data/references_dialog.ui:314 data/unlocked_database.ui:1195 msgid "References" msgstr "Referanslar" #: data/references_dialog.ui:346 msgid "Syntax" msgstr "Sözdizimi" #: data/references_dialog.ui:361 msgid "The placeholder syntax for field references is the following:" msgstr "Alan atıfları için yer tutucu sözdizimi şöyledir:" #: data/references_dialog.ui:402 data/references_dialog.ui:441 msgid "Show Field Codes" msgstr "Alan Kodlarını Göster" #: data/references_dialog.ui:442 msgid "Identifier" msgstr "Tanıtıcı" #: data/references_dialog.ui:524 msgid "Reference" msgstr "Atıf" #: data/references_dialog.ui:631 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "Her girdinin, UUID adlı benzersiz tanımlayıcısı vardır.\n" "Girdinin özelliklerinde bulunabilir." #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:10 msgid "Do you want to save all safes with unsaved changes?" msgstr "Kaydedilmemiş değişikliği olan tüm kasaları kaydetmek ister misiniz?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:11 msgid "Select the safes you want to save." msgstr "Kaydetmek istediğiniz kasaları seçin." #: data/quit_dialog.ui:38 msgid "Quit" msgstr "Çık" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:13 msgid "Unsaved Changes" msgstr "Kaydedilmemiş Değişiklikler" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:14 msgid "Do you want to write all changes to the safe?" msgstr "Tüm değişiklikleri kasaya yazmak ister misiniz?" #: data/settings_dialog.ui:50 msgid "Dark Theme" msgstr "Karanlık Gövde" #: data/settings_dialog.ui:137 msgid "Hide First Start Screen" msgstr "İlk Başlatma Ekranını Gizle" #: data/settings_dialog.ui:154 msgid "Reopen last opened safe" msgstr "Son açılan kasayı yeniden aç" #: data/settings_dialog.ui:205 data/unlocked_database.ui:860 #: passwordsafe/main_window.py:381 msgid "Safe" msgstr "Kasa" #: data/settings_dialog.ui:239 msgid "Save automatically" msgstr "Kendiliğinden kaydet" #: data/settings_dialog.ui:309 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "Kilit Aç" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:343 msgid "Remember Composite Key" msgstr "Birleşik Anahtarı Anımsa" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:360 msgid "Remember last used composite key" msgstr "Son kullanılan birleşik anahtarı anımsa" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:424 msgid "Remember Unlock Method" msgstr "Kilit Açma Yöntemini Anımsa" #: data/settings_dialog.ui:441 msgid "Enable faster unlocking" msgstr "Hızlı kilit açmayı etkinleştir" #: data/settings_dialog.ui:496 data/settings_dialog.ui:501 msgid "Security" msgstr "Güvenlik" #: data/settings_dialog.ui:535 msgid "Safe Lock Timeout" msgstr "Kasa Kilidi Zaman Aşımı" #: data/settings_dialog.ui:552 msgid "Lock safe on idle after X minutes" msgstr "X dakika boşken kasayı kilitle" #: data/settings_dialog.ui:617 msgid "Clear Clipboard" msgstr "Panoyu Temizle" #: data/settings_dialog.ui:699 msgid "Show Password Fields" msgstr "Parola Alanlarını Göster" #: data/settings_dialog.ui:780 msgid "Clear Recent List" msgstr "Son Listeyi Temizle" #: data/settings_dialog.ui:797 msgid "Clear the recently opened safes list" msgstr "Son açılan kasa listesini temizle" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "Uygulama" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Kasa oluştur" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Kasayı aç" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Tercihleri aç" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "Kasa" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Kasayı kilitle" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Kasayı kaydet" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "Aramayı aç" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Girdi oluştur" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "Küme oluştur" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "Girdi" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Parolayı kopyala" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "Girdi sayfasından çık" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "Kilidi açmak için parolayı gir ve anahtar dosyasını seç" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "Kasa Kilitli" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "Kilidi açmak için anahtar dosyası seç" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "Anahtar Dosyası Aç" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:923 msgid "New Safe" msgstr "Yeni Kasa" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "Kilidi açmak için parola gir" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "Kasa kilidi açılamadı" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "Seçim Kipi" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "Ara" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "Boş küme" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "Arama sonucu yok" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "Arama terimi gir" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "Sıralama" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "A-Z" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Z-A" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "Son Eklenen" #: data/unlocked_database.ui:761 passwordsafe/entry_page.py:652 #: passwordsafe/main_window.py:379 msgid "Save" msgstr "Kaydet" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "Kilitle" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "Yeni Girdi" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "Yeni Küme" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "Kasa Ayarları" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "Yerel" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "Tam Metin" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "Yinelenen" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "Sil" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "Seçimi taşı" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "Seçimi sil" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "Tümünü seç" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "Hiçbirini seçme" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "Seçmek için kutuya tıkla" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "Anahtar dosyası için konum seç" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "Oluştur…" #. NOTE: With clone is meant a duplicated object, not the process of cloning/duplication; "the" clone #: passwordsafe/database_manager.py:384 msgid "Clone" msgstr "Klonla" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "Geçerli anahtar dosyasını seçin" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "Aç" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "Onayla…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "Bilinmeyen" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256-bit" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bit" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256-bit" #: passwordsafe/entry_page.py:513 passwordsafe/entry_page.py:576 msgid "Attribute key already exists" msgstr "Anahtar dosyası zaten var" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:604 msgid "Select attachment" msgstr "Ek seç" #: passwordsafe/entry_page.py:605 msgid "Add" msgstr "Ekle" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:651 msgid "Save attachment" msgstr "Eki kaydet" #: passwordsafe/entry_row.py:64 msgid "Title not specified" msgstr "Başlık belirtilmedi" #: passwordsafe/entry_row.py:75 msgid "No username specified" msgstr "Kullanıcı adı belirtilmedi" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "Küme başlığı belirtilmedi" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:296 msgid "Choose a Keepass safe" msgstr "Keepass kasası seç" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:306 passwordsafe/main_window.py:387 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 Veri Tabanı" #: passwordsafe/main_window.py:335 msgid "Unable to open file \"{}\"." msgstr "\"{}\" dosyası açılamadı." #: passwordsafe/main_window.py:338 msgid "File type {} ({}) is not supported." msgstr "{} ({}) dosya türü desteklenmiyor." #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:378 msgid "Choose location for Keepass safe" msgstr "Keepass kasası için konum seç" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "Silme tamamlandı" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "Taşıma tamamlandı" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "Kümeyi kendi içine taşıma atlandı" #: passwordsafe/unlock_database.py:221 msgid "Database already opened" msgstr "Veri tabanı zaten açık" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:308 msgid "Choose a keyfile" msgstr "Anahtar dosyası seç" #: passwordsafe/unlock_database.py:361 passwordsafe/unlock_database.py:418 msgid "Try again" msgstr "Yeniden dene" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:427 msgid "Choose Keyfile" msgstr "Anahtar Dosyası Seç" #: passwordsafe/unlocked_database.py:483 msgid "Database saved" msgstr "Veri tabanı kaydedildi" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:486 msgid "Please wait. Another save is running." msgstr "Lütfen bekleyin. Başka kayıt sürüyor." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:489 msgid "No changes made" msgstr "Değişiklik yapılmadı" #: passwordsafe/unlocked_database.py:630 msgid "Copied to clipboard" msgstr "Panoya kopyalandı" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:801 #, python-format msgid "%s locked" msgstr "%s kilitlendi" #: passwordsafe/unlocked_database.py:801 msgid "Keepass safe locked due to inactivity" msgstr "Keepass kasası durgunluktan kilitlendi" #~ msgid "Discard" #~ msgstr "Vazgeç" #~ msgid "Settings" #~ msgstr "Ayarlar" #~ msgid "@ICON@" #~ msgstr "@ICON@" #~ msgid "Homepage" #~ msgstr "Web Sitesi" #~ msgid "About" #~ msgstr "Hakkında" #~ msgid "New password" #~ msgstr "Yeni parola" #~ msgid "Repeat password" #~ msgstr "Parolayı yinele" #~ msgid "Password generator" #~ msgstr "Parola oluşturucu" #~ msgid "dialog-password" #~ msgstr "dialog-password" #~ msgctxt "shortcut window" #~ msgid "Create a new safe" #~ msgstr "Yeni kasa oluştur" #~ msgctxt "shortcut window" #~ msgid "Open an existing safe" #~ msgstr "Var olan kasayı aç" #~ msgctxt "shortcut window" #~ msgid "Copy password on entry page" #~ msgstr "Girdi sayfasındaki parolayı kopyala" #~ msgid "Create password…" #~ msgstr "Parola oluştur…" #~ msgid "Edit" #~ msgstr "Düzenle" #~ msgid "Shortcuts" #~ msgstr "Kısayollar" #~ msgid "You need to save the database to apply the new password" #~ msgstr "Yeni parolayı uygulamak için veri tabanını kaydetmelisiniz" #~ msgid "Wrong passwords" #~ msgstr "Yanlış parolalar" #~ msgid "Deleted blank group" #~ msgstr "Boş küme silindi" #~ msgid "Deleted blank entry" #~ msgstr "Boş girdi silindi" #~ msgid "Group added" #~ msgstr "Küme eklendi" secrets-5.1/po/uk.po000066400000000000000000001374041415312107300144320ustar00rootroot00000000000000# Ukrainian translation for PasswordSafe. # Copyright (C) 2020 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # # Yuri Chornoivan , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: PasswordSafe gnome-3.30\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-05-02 10:27+0000\n" "PO-Revision-Date: 2021-05-02 15:00+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 20.12.0\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Керування вашими паролями" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Дізнатися більше про «Сейф з паролями»" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Юрій Чорноіван " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Відомості щодо безпеки" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Сторонні програми можуть створити незашифровану приховану або тимчасову " "копію цього файла долучення! Будь ласка, будьте обережні." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Назад" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "П_родовжити" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Вилучити атрибут" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Колір" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Сейф для паролів" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Створення сейфа" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Налаштування" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Клавіатурні скорочення" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Про «Сейф для паролів»" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Захистіть ваш сейф" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "Па_роль" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Скористатися паролем для захисту вашого сейфа." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "_Файл ключа" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Скористатися ключем для захисту вашого сейфа." #: data/create_database.ui:78 msgid "_Composite" msgstr "Сумі_щення" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Скористатися паролем у поєднанні із файлом ключа для захисту вашого сейфа." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Введіть пароль" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Встановлення пароля для сейфа." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Перевірка відповідності паролів" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Повторіть пароль до сейфа." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Перевірку відповідності не пройдено" #: data/create_database.ui:299 msgid "Please try again." msgstr "Будь ласка, повторіть спробу." #: data/create_database.ui:348 msgid "_Confirm" msgstr "_Підтвердити" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Створити файл ключа" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Встановіть файл ключа до сейфа" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:126 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "С_творити" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Сейф успішно створено" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "_Відкрити сейф" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Подробиці" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Шлях" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Розмір файла" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Назва сейфа" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Версія KeePass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Дата створення" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Алгоритм шифрування" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Алгоритм для похідних" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Статистика" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Кількість груп" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Паролі" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Кількість записів" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Загальне" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Пароль" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "С_творити" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Створити пароль" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "П_ідтвердити" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "_Поточний" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:31 msgid "Keyfile" msgstr "Файл ключа" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "Ви_беріть поточний файл ключа" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "С_творити файл ключа" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "З_астосувати зміни" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Розпізнавання" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-бітовий" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-бітовий" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-бітовий" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Функція для похідних ключів" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Застосувати зміни" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "За_головок" #: data/entry_page.ui:54 msgid "_Username" msgstr "_Користувач" #: data/entry_page.ui:92 msgid "U_RL" msgstr "Ад_реса" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Нотатки" #: data/entry_page.ui:196 msgid "Icon" msgstr "Піктограма" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Долучення" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "_Додати долучення" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Атрибути" #: data/entry_page.ui:318 msgid "Key" msgstr "Ключ" #: data/entry_page.ui:325 msgid "Value" msgstr "Значення" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Додати атрибут" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Копіювати ім'я користувача до буфера обміну" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Копіювати пароль до буфера обміну" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Програма" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Створити сейф" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Відкрити сейф" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Відкрити налаштування" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Показати скорочення" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Вийти" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Безпечний" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Замкнути сейф" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Зберегти сейф" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Відкрити пошук" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Створити запис" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Створити групу" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Запис" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Копіювати пароль" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Копіювати ім'я користувача" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Назад" #: data/main_window.ui:25 msgid "New…" msgstr "Створити…" #: data/main_window.ui:38 msgid "Open…" msgstr "Відкрити…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Копіювати" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "«Сейф для паролів» є програмою для керування паролів, яка використовує для " "зберігання даних формат KeePass версії 4. Вона чудово інтегрується до " "стільничного середовища GNOME і надає простий і незахаращений інтерфейс для " "керування базами даних паролів." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Засіб керування паролями для GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encrypt;secure;кіпас;шифрування;шифр;безпека;захист;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Темна тема GTK" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Скористатися темним варіантом вашої теми GTK+. Будь ласка, зауважте, що не у " "кожної теми GTK+ є темний варіант." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Повторно відкривати останню відкриту базу даних" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Автоматично відкривати екран відмикання для останньої відкритої бази даних. " "Якщо не вказано, буде показано вікно вітання." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Зберігати усі зміни автоматично" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Зберігати до бази даних кожну внесену вами зміну негайно. Будь ласка, " "зауважте, що якщо увімкнено автоматичне зберігання, ви не зможете " "скасовувати дії." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Замикати базу даних за вказану кількість хвилин бездіяльності" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Автоматично замикати вашу базу даних, якщо з нею не виконуватиметься ніяких " "дій протягом вказаної кількості хвилин, для вашої безпеки." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Спорожняти буфер обміну за вказану кількість секунд" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "" "Після копіювання пароля спорожняти буфер обміну даними з міркувань захисту." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Показувати паролі у форматі звичайного тексту" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Типово, показувати паролі у полях для введення." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Розмір вікна" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Запам'ятовувати розмір вікна." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Остання відкрита база даних" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Шлях до останньої відкритої бази даних." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Останні відкриті бази даних" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Список останніх відкритих баз даних." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Запам'ятати суміщений ключ" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "" "Запам'ятовувати останній використаний суміщений ключ для відмикання бази " "даних." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Останній використаний суміщений ключ" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Шлях до останнього використаного ключа для відмикання суміщеної бази даних." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Запам'ятати спосіб відмикання" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Запам'ятовувати останній використаний спосіб відмикання для наступного " "відмикання бази даних." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Створювати резервну копію бази даних при відмиканні" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Якщо під час спроби зберегти базу даних станеться помилка, резервну копію " "можна знайти у ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Упорядковування груп і записів" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Порядок, у якому буде показано групи і записи у списку." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Останній використаний спосіб відмикання" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Використовується для зберігання останнього використаного способу відмикання " "і вмикання швидшого процесу відмикання." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Повнотекстовий пошук" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Виконувати пошук у всіх значеннях записів." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Пошук у поточній групі" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Шукати лише у записах поточної групи." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Використовувати літери верхнього регістру при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "" "Використовувати літери верхнього регістру (A-Z) при створенні випадкового " "пароля." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Використовувати літери нижнього регістру при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "" "Використовувати літери нижнього регістру (a-z) при створенні випадкового " "пароля." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Використовувати цифри при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Використовувати символи цифр (0-9) при створенні випадкового пароля." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Використовувати символи при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Використовувати не буквенно-цифрові символи ASCII при створенні випадкового " "пароля." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Довжина пароля при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:122 msgid "Number of single characters when generating a password." msgstr "Кількість окремих символів при створенні пароля." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Кількість слів при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Кількість слів, якими слід скористатися при створенні пароля." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Роздільник при створенні пароля" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Роздільник слів, яким слід скористатися при створенні пароля." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Довжина" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Символи" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Слова" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Роздільник" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Введіть сюди символ…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Пароль" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Властивості" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Доступ" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Змінено" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Створено" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Хочете зберегти усі сейфи із незбереженими змінами?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Виберіть сейфи, які ви хочете зберегти." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Скасувати" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "Ви_йти" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Нещодавні сейфи" #: data/references_dialog.ui:20 msgid "Code" msgstr "Код" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Властивість" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Заголовок" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Користувач" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "Адреса" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Нотатки" #: data/references_dialog.ui:267 msgid "References" msgstr "Посилання" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Синтаксис" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Синтаксис замінників для посилань на поля є таким:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Показувати коди полів" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Ідентифікатор" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Посилання" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "У кожного запису є унікальний ідентифікатор, який має назву UUID. Його можна " "знайти у властивостях запису." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Незбережені зміни" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Хочете записати усі зміни до сейфа?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "В_ийти без збереження" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "_Не виходити" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "З_берегти та вийти" #: data/search.ui:70 msgid "Enter search term" msgstr "Вкажіть критерій пошуку" #: data/search.ui:104 msgid "No search results" msgstr "Нічого не знайдено" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Переміщення позначеного" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Вилучити позначене" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Скасувати" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "_Темна тема" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Використовувати темну тему GTK." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "При_ховати перший початковий екран" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Повторно відкрити останній відкритий сейф." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:301 msgid "Safe" msgstr "Безпечний" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "З_берігати автоматично" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Зберігати усі зміни автоматично." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:342 msgid "Unlock" msgstr "Відімкнути" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Запам'ятати суміщений к_люч" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Запам'ятати останній використаний суміщений ключ." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Запам'ятати спосіб від_микання" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Увімкнути швидке розблокування." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Створення пароля" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Довжина пароля" #: data/settings_dialog.ui:120 #| msgid "Number of single characters when generating a password." msgid "Number of characters when generating a password." msgstr "Кількість символів при створенні пароля." #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Символи _верхнього регістру" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Використовувати літери верхнього регістру (A-Z) при створенні пароля." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Символи _нижнього регістру" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Використовувати літери нижнього регістру (a-z) при створенні пароля." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "_Цифрові символи" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Використовувати цифрові символи при створенні пароля." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Сп_еціальні символи" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "" "Використовувати не буквенно-цифрові символи ASCII при створенні пароля." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Створення фраз паролів" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Довжина фрази пароля" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Введіть символ" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Безпека" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Час очікування на замикання сейфа" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Замикати бездіяльний сейф за вказану кількість хвилин." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Спорожнити буфер обміну" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Спорожняти буфер обміну за вказану кількість секунд." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Показувати поля паролів" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Показувати паролі у форматі звичайного тексту." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Спорожнити список нещодавніх сейфів" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Спорожнити список нещодавно відкритих сейфів." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "С_творити сейф" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Відкрити сейф" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Сейф замкнено" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Введіть пароль для відмикання" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Виберіть файл ключа для відмикання" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "_Відкрити файл ключа" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Введення пароля і вибір файла ключа для відмикання" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:379 msgid "Composite" msgstr "Суміщення" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Порожня група" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Клацніть на пункті, щоб позначити" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Пошук" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Режим вибору" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "З_берегти" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "За_мкнути" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "Вп_орядкування" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_А-Я" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Я-А" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Ос_танні додані" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "Параметри се_йфа" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Позна_чити все" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "С_касувати позначення" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "Зд_ублювати" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "П_осилання" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "_Властивості" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "В_илучити" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "_Новий запис" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "Нова _група" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Безпечний сейф для паролів" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Зберігайте ваші паролі, нотатки і дані безпечно. Створіть або " "імпортуйте нове сховище Keepass." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Неможливо вийти: не вдалося зберегти сейф" #: passwordsafe/create_database.py:115 msgid "Passwords do not match" msgstr "Паролі не збігаються" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:124 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Виберіть розташування файла ключа" #: passwordsafe/create_database.py:141 msgid "Generating…" msgstr "Створюємо…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Клонувати" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Виберіть поточний файл ключа" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Відкрити" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Застосувати…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Невідомий" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES, 256-бітовий" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20, 256-бітовий" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish, 256-бітовий" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Ключ атрибута вже існує" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Виберіть долучення" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "Д_одати" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Збереження долучення" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:102 msgid "Username copied to clipboard" msgstr "Ім'я користувача скопійовано до буфера обміну" #: passwordsafe/entry_row.py:95 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Пароль скопійовано до буфера обміну" #: passwordsafe/entry_row.py:114 passwordsafe/group_row.py:101 msgid "Title not specified" msgstr "Не вказано заголовок" #: passwordsafe/entry_row.py:125 msgid "No username specified" msgstr "Не вказано імені користувача" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:206 msgid "Choose a Keepass safe" msgstr "Виберіть сейф Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:216 passwordsafe/main_window.py:306 msgid "KeePass 3.1/4 Database" msgstr "база даних KeePass 3.1/4" #: passwordsafe/main_window.py:244 msgid "Could not open file" msgstr "Не вдалося відкрити файл" #: passwordsafe/main_window.py:253 msgid "Could not open file: Mime type not supported" msgstr "" "Не вдалося відкрити файл: не передбачено підтримки відповідного типу MIME" #: passwordsafe/main_window.py:263 passwordsafe/unlock_database.py:193 msgid "Safe already opened" msgstr "Сейф вже відкрито" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:295 msgid "Choose location for Keepass safe" msgstr "Виберіть розташування сейфа Keepass" #: passwordsafe/main_window.py:298 msgid "_Create" msgstr "С_творити" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Дію перервано: вилучення поточної активної групи" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Вилучення завершено" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Дію перервано: пересування поточної активної групи" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Пересування завершено" #: passwordsafe/unlock_database.py:216 msgid "Choose a keyfile" msgstr "Виберіть файл ключа" #: passwordsafe/unlock_database.py:263 msgid "Choose Keyfile" msgstr "Виберіть файл ключа" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:413 msgid "The kdb format is not supported" msgstr "Підтримки формату kdb не передбачено" #: passwordsafe/unlock_database.py:503 passwordsafe/unlock_database.py:523 #: passwordsafe/unlock_database.py:537 msgid "Failed to unlock safe" msgstr "Не вдалося відімкнути сейф" #: passwordsafe/unlock_database.py:532 msgid "Try again" msgstr "Спробувати ще раз" #: passwordsafe/unlocked_database.py:423 msgid "Safe saved" msgstr "Сейф збережено" #: passwordsafe/unlocked_database.py:425 msgid "Could not save Safe" msgstr "Не вдалося зберегти сейф" #: passwordsafe/unlocked_database.py:434 msgid "Please wait. Another save is running." msgstr "Будь ласка, зачекайте. Виконуємо зберігання інших даних." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:438 msgid "No changes made" msgstr "Не було внесено жодних змін" #: passwordsafe/unlocked_database.py:474 msgid "Copied to clipboard" msgstr "Скопійовано до буфера обміну" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:550 msgid "Safe locked due to inactivity" msgstr "Сейф замкнено через неактивність" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} позначений запис" msgstr[1] "{} позначені записи" msgstr[2] "{} позначених записів" msgstr[3] "{} позначений запис" #~ msgid "Secret_Photo.png" #~ msgstr "Секретне_фото.png" #~ msgid "_Full-Text Search" #~ msgstr "Повно_текстовий пошук" #~ msgid "_Current Group Search" #~ msgstr "По_шук у поточній групі" #~ msgid "No group title specified" #~ msgstr "Не вказано назви групи" #~ msgid "Skipped moving group into itself" #~ msgstr "Пропущено пересування групи до самої себе" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Не вдалося відкрити файл «{}»." #~ msgid "%s locked" #~ msgstr "%s замкнено" #~| msgid "Enter password to unlock" #~ msgid "password_unlock" #~ msgstr "password_unlock" #~| msgid "Select keyfile to unlock" #~ msgid "keyfile_unlock" #~ msgstr "keyfile_unlock" #~| msgid "Composite" #~ msgid "composite_unlock" #~ msgstr "composite_unlock" #~ msgid "Generate" #~ msgstr "Створити" #~ msgid "Add" #~ msgstr "Додати" #~ msgid "Save" #~ msgstr "Зберегти" #~ msgid "About Password Safe" #~ msgstr "Про «Сейф для паролів»" #~ msgid "New" #~ msgstr "Створити" #~ msgid "Show/hide password" #~ msgstr "Показати/Сховати пароль" #~ msgid "Database saved" #~ msgstr "Базу даних збережено" #~ msgid "Preferences" #~ msgstr "Налаштування" #~ msgid "Close" #~ msgstr "Закрити" #~ msgid "First Start" #~ msgstr "Перший запуск" #~ msgid "Timeout" #~ msgstr "Час очікування" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Вийти зі сторінки введення" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Перейти до батьківської групи" #~ msgid "A-Z" #~ msgstr "А-Я" #~ msgid "Z-A" #~ msgstr "Я-А" #~ msgid "New Safe" #~ msgstr "Створити сейф" #~ msgid "Use local search" #~ msgstr "Локальний пошук" #~ msgid "Discard" #~ msgstr "Відкинути" #~ msgid "Performs a search across all values of entries" #~ msgstr "Виконувати пошук у всіх значеннях записів." #~| msgid "Search" #~ msgid "Local Search" #~ msgstr "Локальний пошук" #~ msgid "Only search entries in the current group and its subgroups" #~ msgstr "Шукати лише у записах поточної групи і її підлеглих груп" #~ msgid "Local" #~ msgstr "Локальна" #~ msgid "File already exists" #~ msgstr "Файл вже існує" #~ msgid "Do you want to override it?" #~ msgstr "Хочете перезаписати його?" #~ msgid "Override" #~ msgstr "Перезаписати" #~ msgid "Settings" #~ msgstr "Параметри" secrets-5.1/po/vi.po000066400000000000000000001207451415312107300144310ustar00rootroot00000000000000# This file is distributed under the same license as the PasswordSafe package. # Trần Ngọc Quân , 2020, 2021. # Antoine Đỗ , 2021. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2021-02-05 07:39+0000\n" "PO-Revision-Date: 2021-02-05 14:44+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 3.38.0\n" #: data/about_dialog.ui.in:8 data/org.gnome.PasswordSafe.appdata.xml.in.in:10 msgid "Manage your passwords" msgstr "Quản lý các mật khẩu của bạn" #: data/about_dialog.ui.in:10 msgid "Learn more about Password Safe" msgstr "Tìm hiểu thêm về Két giữ Mật khẩu" #. Add your name to the translator credits list #: data/about_dialog.ui.in:12 msgid "translator-credits" msgstr "Nhóm Việt hóa GNOME " #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:7 msgid "Safety Info" msgstr "Thông tin an toàn" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:8 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "" "Có thể các ứng dụng bên ngoài sẽ tạo ra các bản sao ẩn hoặc tạm thời không " "được mã hóa của tệp đính kèm này! Vui lòng tiến hành thận trọng." #. Discard all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:12 msgid "_Back" msgstr "_Quay lại" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:21 msgid "_Proceed" msgstr "Đã _xử lý" #: data/attribute_entry_row.ui:60 msgid "Remove attribute" msgstr "Xóa bỏ thuộc tính" #: data/color_entry_row.ui:14 msgid "Color" msgstr "Màu sắc" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database_headerbar.ui:6 data/main_window.ui:17 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:5 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:32 msgid "Password Safe" msgstr "Két giữ mật khẩu" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database_headerbar.ui:7 msgid "Create Safe" msgstr "Tạo két" #: data/create_database_headerbar.ui:43 data/main_window.ui:119 #: data/unlock_database.ui:16 data/unlocked_headerbar.ui:200 msgid "_Preferences" msgstr "_Tùy thích" #: data/create_database_headerbar.ui:47 data/main_window.ui:123 #: data/unlock_database.ui:20 data/unlocked_headerbar.ui:204 msgid "_Keyboard Shortcuts" msgstr "_Phím tắt bàn phím" #. "Password Safe" is the application name #: data/create_database_headerbar.ui:51 data/main_window.ui:127 #: data/unlock_database.ui:24 data/unlocked_headerbar.ui:208 msgid "_About Password Safe" msgstr "_Giới thiệu Két giữ Mật khẩu" #: data/create_database.ui:34 msgid "Protect your safe" msgstr "Bảo vệ két của bạn" #: data/create_database.ui:52 data/password_entry_row.ui:14 msgid "_Password" msgstr "_Mật khẩu" #: data/create_database.ui:53 msgid "Use a password to secure your safe." msgstr "Sử dụng mật khẩu để đảm bảo an toàn cho két của bạn." #: data/create_database.ui:65 msgid "_Keyfile" msgstr "Tập tin _khóa" #: data/create_database.ui:66 msgid "Use a keyfile to secure your safe." msgstr "Sử dụng tập tin khóa để đảm bảo an toàn cho két của bạn." #: data/create_database.ui:78 msgid "_Composite" msgstr "_Hỗn hợp" #: data/create_database.ui:79 msgid "Use a password in combination with a keyfile to secure your safe." msgstr "" "Sử dụng mật khẩu kết hợp với tập tin khóa để đảm bảo an toàn cho két của bạn." #: data/create_database.ui:115 msgid "Enter Password" msgstr "Nhập mật khẩu" #: data/create_database.ui:126 msgid "Set password for safe." msgstr "Đặt mật khẩu cho két của bạn." #: data/create_database.ui:198 msgid "Password Match Check" msgstr "Kiểm tra Khớp cặp Mật khẩu" #: data/create_database.ui:209 msgid "Repeat password for safe." msgstr "Lặp lại mật khẩu cho két." #: data/create_database.ui:288 msgid "Match Check Failed" msgstr "Kiểm tra khớp cặp gặp lỗi" #: data/create_database.ui:299 msgid "Please try again." msgstr "Vui lòng thử lại." #: data/create_database.ui:348 msgid "_Confirm" msgstr "Xác _nhận" #: data/create_database.ui:388 msgid "Generate Keyfile" msgstr "Tạo tập tin khóa" #: data/create_database.ui:399 msgid "Set keyfile for safe" msgstr "Đặt tập tin khóa cho két" #. Button to generate a password #: data/create_database.ui:409 data/password_generator_popover.ui:189 #: passwordsafe/create_database.py:125 #: passwordsafe/database_settings_dialog.py:234 msgid "_Generate" msgstr "Tạ_o" #: data/create_database.ui:448 msgid "Safe Successfully Created" msgstr "Két đã được tạo thành công" #. Menubutton in headerbar for starting the safe opening process (for existing safe) #: data/create_database.ui:457 data/unlock_database.ui:10 #: data/unlocked_headerbar.ui:190 msgid "_Open Safe" msgstr "Mở _Két" #: data/database_settings_dialog.ui:61 msgid "Details" msgstr "Chi tiết" #: data/database_settings_dialog.ui:81 msgid "Path" msgstr "Đường dẫn" #: data/database_settings_dialog.ui:98 msgid "File Size" msgstr "Kích cỡ tập tin" #: data/database_settings_dialog.ui:115 msgid "Safe Name" msgstr "Tên Két" #. KeePass is a proper noun #: data/database_settings_dialog.ui:145 msgid "KeePass Version" msgstr "Phiên bản Keepass" #: data/database_settings_dialog.ui:162 msgid "Creation Date" msgstr "Ngày tạo" #: data/database_settings_dialog.ui:179 data/database_settings_dialog.ui:725 msgid "Encryption Algorithm" msgstr "Thuật toán mã hóa" #: data/database_settings_dialog.ui:196 msgid "Derivation Algorithm" msgstr "Thuật toán dẫn xuất" #. Statistics #: data/database_settings_dialog.ui:296 msgid "Stats" msgstr "Thống kê" #: data/database_settings_dialog.ui:316 msgid "Number of Groups" msgstr "Số nhóm" #: data/database_settings_dialog.ui:333 msgid "Passwords" msgstr "Mật khẩu" #: data/database_settings_dialog.ui:350 msgid "Number of Entries" msgstr "Số mục tin" #: data/database_settings_dialog.ui:406 data/settings_dialog.ui:11 #: data/settings_dialog.ui:15 msgid "General" msgstr "Chung" #: data/database_settings_dialog.ui:426 data/password_generator_popover.ui:128 #: data/references_dialog.ui:142 data/references_dialog.ui:232 #: data/settings_dialog.ui:111 data/unlock_database.ui:174 msgid "Password" msgstr "Mật khẩu" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:443 msgid "_New" msgstr "Két _mới" #: data/database_settings_dialog.ui:464 data/database_settings_dialog.ui:465 msgid "Generate Password" msgstr "Tạo mật khẩu" #. Retype the new password to confirm #: data/database_settings_dialog.ui:478 msgid "C_onfirm" msgstr "Xá_c nhận" #. Current password #: data/database_settings_dialog.ui:510 msgid "_Current" msgstr "H_iện tại" #: data/database_settings_dialog.ui:559 data/unlock_database.ui:275 #: passwordsafe/database_settings_dialog.py:187 #: passwordsafe/database_settings_dialog.py:235 #: passwordsafe/database_settings_dialog.py:239 #: passwordsafe/unlock_database.py:30 msgid "Keyfile" msgstr "Tập tin khóa" #: data/database_settings_dialog.ui:602 msgid "_Select current keyfile" msgstr "_Chọn tập tin khóa hiện tại" #: data/database_settings_dialog.ui:660 msgid "_Generate new keyfile" msgstr "Tạo tậ_p tin khóa mới" #: data/database_settings_dialog.ui:680 msgid "_Apply Changes" msgstr "Áp dụng tha_y đổi" #: data/database_settings_dialog.ui:697 msgid "Authentication" msgstr "Xác thực" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:751 msgid "ChaCha20: 256-bit" msgstr "ChaCha20: 256-bít" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:768 msgid "Twofish: 256-bit" msgstr "Twofish: 256-bít" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:785 msgid "AES: 256-bit" msgstr "AES: 256-bít" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:802 msgid "Key Derivation Function" msgstr "Tính năng dẫn xuất khóa" #: data/database_settings_dialog.ui:856 #: passwordsafe/database_settings_dialog.py:357 #: passwordsafe/database_settings_dialog.py:379 msgid "Apply Changes" msgstr "Áp dụng thay đổi" #: data/entry_page.ui:28 data/group_page.ui:27 msgid "_Title" msgstr "_Tựa đề" #: data/entry_page.ui:54 msgid "_Username" msgstr "Tài _khoản" #: data/entry_page.ui:92 msgid "U_RL" msgstr "U_RL" #: data/entry_page.ui:129 data/group_page.ui:61 msgid "_Notes" msgstr "_Ghi chú" #: data/entry_page.ui:196 msgid "Icon" msgstr "Biểu tượng" #: data/entry_page.ui:231 msgid "Attachments" msgstr "Đính kèm" #: data/entry_page.ui:271 msgid "_Add Attachment" msgstr "Thê_m đính kèm" #: data/entry_page.ui:299 msgid "Attributes" msgstr "Thuộc tính" #: data/entry_page.ui:318 msgid "Key" msgstr "Khóa" #: data/entry_page.ui:325 msgid "Value" msgstr "Giá trị" #: data/entry_page.ui:338 msgid "Add attribute" msgstr "Thêm thuộc tính" #: data/entry_row.ui:93 msgid "Copy username to clipboard" msgstr "Chép tài khoản vào clipboard" #: data/entry_row.ui:108 msgid "Copy password to clipboard" msgstr "Chép mật khẩu vào clipboard" #: data/gtk/help-overlay.ui:13 msgctxt "Shortcut window description" msgid "Application" msgstr "Ứng dụng" #: data/gtk/help-overlay.ui:17 msgctxt "Shortcut window description" msgid "Create safe" msgstr "Tạo két" #: data/gtk/help-overlay.ui:24 msgctxt "Shortcut window description" msgid "Open safe" msgstr "Mở két" #: data/gtk/help-overlay.ui:31 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "Mở Tùy thích" #: data/gtk/help-overlay.ui:38 msgctxt "shortcut window" msgid "Show Shortcuts" msgstr "Hiển thị các phím tắt" #: data/gtk/help-overlay.ui:45 msgctxt "Shortcut window description" msgid "Quit" msgstr "Thoát" #: data/gtk/help-overlay.ui:54 msgctxt "Shortcut window description" msgid "Safe" msgstr "Két" #: data/gtk/help-overlay.ui:58 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "Khóa két" #: data/gtk/help-overlay.ui:65 msgctxt "Shortcut window description" msgid "Save safe" msgstr "Lưu két" #: data/gtk/help-overlay.ui:72 msgctxt "Shortcut window description" msgid "Open search" msgstr "Mở hộp thoại Tìm kiếm" #: data/gtk/help-overlay.ui:79 msgctxt "Shortcut window description" msgid "Create entry" msgstr "Tạo mục tin" #: data/gtk/help-overlay.ui:86 msgctxt "Shortcut window description" msgid "Create group" msgstr "Tạo nhóm" #: data/gtk/help-overlay.ui:95 msgctxt "Shortcut window description" msgid "Entry" msgstr "Mục tin" #: data/gtk/help-overlay.ui:99 msgctxt "Shortcut window description" msgid "Copy password" msgstr "Sao chép mật khẩu" #: data/gtk/help-overlay.ui:106 msgctxt "Shortcut window description" msgid "Copy username" msgstr "Sao chép tài khoản" #: data/gtk/help-overlay.ui:113 msgctxt "Shortcut window description" msgid "Go back" msgstr "Quay lại" #: data/main_window.ui:25 msgid "New…" msgstr "Mới…" #: data/main_window.ui:38 msgid "Open…" msgstr "Mở…" #: data/notes_dialog.ui:18 msgid "_Copy" msgstr "_Sao chép" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:12 msgid "" "Password Safe is a password manager which makes use of the KeePass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "Két giữ Mật khẩu là một chương trình quản lý mật khẩu sử dụng định dạng " "Keepass v.4. Nó được tích hợp hoàn hảo với môi trường máy tính để bàn GNOME " "và cung cấp một giao diện gọn gàng cho quản lý cơ sở dữ liệu mật khẩu." #: data/org.gnome.PasswordSafe.appdata.xml.in.in:163 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "Phần mềm quản lý mật khẩu cho GNOME" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "" "keepass;encrypt;secure;mã hóa;ma hoa;an toàn;an toàn;mật khẩu;mat khau;" #: data/org.gnome.PasswordSafe.gschema.xml:16 msgid "Use dark GTK theme" msgstr "Dùng chủ đề GTK tối" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "" "Sử dụng biến thể tối của chủ đề GTK+ của bạn. Vui lòng chú ý rằng không phải " "chủ đề GTK+ cũng có biến thể tối." #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "Mở lại cơ sở dữ liệu mở cuối cùng" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "" "Tự động mở màn hình mở khóa màn hình của cơ sở dữ liệu đã mở lần cuối, nếu " "không sẽ hiển thị màn hình chào mừng." #: data/org.gnome.PasswordSafe.gschema.xml:26 msgid "Save every change automatically" msgstr "Tự động lưu mỗi khi có thay đổi" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "Lưu mọi thay đổi mà bạn tạo ra ngay lập tức vào cơ sở dữ liệu. Vui lòng chú " "ý rằng bạn không thể hoàn lại như cũ nếu Tự động lưu được bật." #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "Khóa cơ sở dữ liệu sau X phút" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "" "Tự động khóa cơ sở dữ liệu của bạn sau một số phút nhất định để tăng cường " "tính bảo mật." #: data/org.gnome.PasswordSafe.gschema.xml:36 msgid "Clear clipboard after X seconds" msgstr "Xóa clipboard sau X phút" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "Sau khi sao chép mật khẩu xóa clipboard vì lý do bảo mật." #: data/org.gnome.PasswordSafe.gschema.xml:41 msgid "Display passwords in plain text" msgstr "Hiển thị mật khẩu ở dạng văn bản đọc được" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "Hiển thị mật khẩu trong các trường nhập theo mặc định." #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "Kích thước cửa sổ" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "Nhớ kích cỡ của cửa sổ." #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "Cơ sở dữ liệu mở cuối cùng" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "Đường dẫn đến cơ sở dữ liệu đã mở lần cuối." #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "Cơ sở dữ liệu mở cuối cùng" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "Danh sách các cơ sở dữ liệu mở cuối cùng." #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "Nhớ khóa tổ hợp" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "Nhớ phương tổ hợp khóa dùng lần cuối để mở khóa cơ sở dữ liệu." #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "Tổ hợp khóa được sử dụng lần cuối" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "" "Đường dẫn đến khóa được sử dụng cuối cùng để mở khóa cơ sở dữ liệu tổng hợp." #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "Nhớ phương thức mở khóa" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "" "Nhớ phương thức mở khóa dùng lần cuối để mở khóa cơ sở dữ liệu trong tương " "lai." #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "Sao lưu cơ sở dữ liệu khi mở khóa" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "" "Nếu có trục trặc xảy ra khi lưu cơ sở dữ liệu, một bản sao dự phòng có thể " "tìm thấy tại ~/.cache/passwordsafe/backups" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "Thứ tự sắp xếp các nhóm và mục tin" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "Thứ tự của các dòng trong trình bày các nhóm và mục tin." #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "Phương thức mở khóa dùng cuối cùng" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "" "Được sử dụng để lưu trữ phương pháp mở khóa được sử dụng cuối cùng và để cho " "phép quá trình mở khóa nhanh hơn." #: data/org.gnome.PasswordSafe.gschema.xml:91 msgid "Use full-text search" msgstr "Tìm qua toàn văn bản" #: data/org.gnome.PasswordSafe.gschema.xml:92 msgid "Performs a search across all values of entries." msgstr "Thực hiện tìm kiếm trên tất cả các giá trị của mục." #: data/org.gnome.PasswordSafe.gschema.xml:96 msgid "Current group search" msgstr "Tìm nhóm hiện tại" #: data/org.gnome.PasswordSafe.gschema.xml:97 msgid "Only search entries in the current group." msgstr "Chỉ tìm kiếm các mục trong nhóm hiện tại." #: data/org.gnome.PasswordSafe.gschema.xml:101 msgid "Use uppercases when generating a password" msgstr "Sử dụng chữ hoa khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:102 msgid "Use uppercase characters A-Z when generating a random password." msgstr "Sử dụng ký tự chữ hoa A-Z khi tạo mật khẩu ngẫu nhiên." #: data/org.gnome.PasswordSafe.gschema.xml:106 msgid "Use lowercases when generating a password" msgstr "Dùng chữ thường khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:107 msgid "Use lowercase characters a-z when generating a random password." msgstr "Sử dụng ký tự chữ thường a-z khi tạo mật khẩu ngẫu nhiên." #: data/org.gnome.PasswordSafe.gschema.xml:111 msgid "Use numbers when generating a password" msgstr "Dùng chữ số khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:112 msgid "Use numbers 0-9 characters when generating a random password." msgstr "Sử dụng số 0-9 ký tự khi tạo mật khẩu ngẫu nhiên." #: data/org.gnome.PasswordSafe.gschema.xml:116 msgid "Use symbols when generating a password" msgstr "Dùng ký tự đặc biệt khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:117 msgid "Use non-alphanumeric ASCII symbols when generating a random password." msgstr "" "Sử dụng ký hiệu ASCII không phải chữ và số khi tạo mật khẩu ngẫu nhiên." #: data/org.gnome.PasswordSafe.gschema.xml:121 msgid "Password length when generating a password" msgstr "Độ dài mật khẩu khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:122 data/settings_dialog.ui:120 msgid "Number of single characters when generating a password." msgstr "Số ký tự đơn khi tạo mật khẩu." #: data/org.gnome.PasswordSafe.gschema.xml:126 msgid "Number of words when generating a passphrase" msgstr "Số từ khi tạo mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:127 data/settings_dialog.ui:203 msgid "Number of words to use when generating a passphrase." msgstr "Số từ được dùng khi tạo cụm từ mật khẩu." #: data/org.gnome.PasswordSafe.gschema.xml:131 msgid "Separator when generating a passphrase" msgstr "Bộ phân tách khi tạo cụm mật khẩu" #: data/org.gnome.PasswordSafe.gschema.xml:132 data/settings_dialog.ui:220 msgid "Word separator to use when generating a passphrase." msgstr "Bộ phân tách từ khi tạo cụm mật khẩu." #: data/password_generator_popover.ui:45 msgid "Length" msgstr "Độ dài" #: data/password_generator_popover.ui:69 msgid "Characters" msgstr "Ký tự" #: data/password_generator_popover.ui:142 msgid "Words" msgstr "Từ" #: data/password_generator_popover.ui:165 data/settings_dialog.ui:219 msgid "Separator" msgstr "Bộ phân cách" #: data/password_generator_popover.ui:176 msgid "Enter character here…" msgstr "Nhập các ký tự vào đây…" #: data/password_generator_popover.ui:182 msgid "Passphrase" msgstr "Cụm từ mật khẩu" #: data/properties_dialog.ui:13 msgid "Properties" msgstr "Thuộc tính" #: data/properties_dialog.ui:42 data/references_dialog.ui:184 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:59 msgid "Accessed" msgstr "Lúc xem" #: data/properties_dialog.ui:75 msgid "Modified" msgstr "Lúc sửa" #: data/properties_dialog.ui:105 msgid "Created" msgstr "Lúc tạo" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:6 msgid "Do you want to save all safes with unsaved changes?" msgstr "Bạn có muốn lưu lại mọi két với các thay đổi chưa được lựu không?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:7 msgid "Select the safes you want to save." msgstr "Chọn các két bạn muốn ghi lại." #: data/quit_dialog.ui:42 msgid "_Cancel" msgstr "_Hủy" #: data/quit_dialog.ui:49 msgid "_Quit" msgstr "_Thoát" #: data/recent_files_page.ui:37 msgid "Recent Safes" msgstr "Cơ sở dữ liệu Mới dùng" #: data/references_dialog.ui:20 msgid "Code" msgstr "Mã" #: data/references_dialog.ui:34 data/references_dialog.ui:338 #: data/references_dialog.ui:449 msgid "Property" msgstr "Thuộc tính" #: data/references_dialog.ui:59 data/references_dialog.ui:214 msgid "Title" msgstr "Tựa đề" #: data/references_dialog.ui:84 data/references_dialog.ui:223 msgid "Username" msgstr "Tài khoản" #: data/references_dialog.ui:156 data/references_dialog.ui:241 msgid "URL" msgstr "URL" #: data/references_dialog.ui:170 data/references_dialog.ui:250 msgid "Notes" msgstr "Ghi chú" #: data/references_dialog.ui:267 msgid "References" msgstr "Tùy thích" #: data/references_dialog.ui:296 msgid "Syntax" msgstr "Cú pháp" #: data/references_dialog.ui:307 msgid "The placeholder syntax for field references is the following:" msgstr "Cú pháp chỗ dành sẵn cho tham chiếu trường như sau:" #: data/references_dialog.ui:337 data/references_dialog.ui:366 msgid "Show Field Codes" msgstr "Hiện mã trường" #: data/references_dialog.ui:367 msgid "Identifier" msgstr "Định danh" #: data/references_dialog.ui:424 msgid "Reference" msgstr "Tùy thích" #: data/references_dialog.ui:503 msgid "" "Each entry has a unique identifier called UUID. It can be found in the " "properties of the entry." msgstr "" "Mỗi mục có một mã định danh duy nhất được gọi là UUID. Nó có thể được tìm " "thấy trong các thuộc tính của mục tin." #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:7 msgid "Unsaved Changes" msgstr "Thay đổi chưa lưu" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:8 msgid "Do you want to write all changes to the safe?" msgstr "Bạn có muốn ghi tất cả các thay đổi vào két không?" #. _Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:12 msgid "_Quit Without Saving" msgstr "Thoát mà _Không Lưu lại" #. _Cancel exiting the program #: data/save_dialog.ui:22 msgid "_Don't Quit" msgstr "Đừn_g Thoát" #. _Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:29 msgid "_Save and Quit" msgstr "_Lưu và Thoát" #: data/search.ui:70 msgid "Enter search term" msgstr "Nhập chuỗi tìm kiếm" #: data/search.ui:104 msgid "No search results" msgstr "Không tìm thấy kết quả nào" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/selection_ui.ui:12 msgid "Move selection" msgstr "Di chuyển cái được chọn" #. Button tooltip in selection mode to delete every selected entry/group #: data/selection_ui.ui:27 msgid "Delete selection" msgstr "Xóa cái được chọn" #: data/selection_ui.ui:40 msgid "Cancel" msgstr "Hủy" #: data/settings_dialog.ui:19 msgid "_Dark Theme" msgstr "Chủ đề _tối" #: data/settings_dialog.ui:20 msgid "Use dark GTK theme." msgstr "Dùng chủ đề GTK tối." #: data/settings_dialog.ui:34 msgid "_Hide First Start Screen" msgstr "Không Hiển thị _Màn hình Chạy lần đầu" #: data/settings_dialog.ui:35 msgid "Reopen last opened safe." msgstr "Mở lại két mở cuối cùng." #: data/settings_dialog.ui:51 passwordsafe/main_window.py:300 msgid "Safe" msgstr "Két" #: data/settings_dialog.ui:55 msgid "_Save Automatically" msgstr "Tự động Lư_u" #: data/settings_dialog.ui:56 msgid "Save every change automatically." msgstr "Tự động lưu mỗi khi có thay đổi." #: data/settings_dialog.ui:72 data/unlock_database.ui:155 #: data/unlock_database.ui:253 data/unlock_database.ui:341 msgid "Unlock" msgstr "Mở khóa" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:76 msgid "Remember Composite _Key" msgstr "Nhớ Khó_a Tổ hợp" #. A composite key is a authentication method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:77 msgid "Remember last used composite key." msgstr "Nhớ tổ hợp khóa dùng lần cuối." #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:91 msgid "Remember _Unlock Method" msgstr "Nhớ _Phương thức Mở khóa" #: data/settings_dialog.ui:92 msgid "Enable faster unlocking." msgstr "Bật mở khóa nhanh hơn." #: data/settings_dialog.ui:115 msgid "Password Generation" msgstr "Tạo mật khẩu" #: data/settings_dialog.ui:119 msgid "Password Length" msgstr "Độ dài mật khẩu" #: data/settings_dialog.ui:136 msgid "_Uppercase Characters" msgstr "Ký tự H_OA" #: data/settings_dialog.ui:137 msgid "Use uppercase characters A-Z when generating a password." msgstr "Sử dụng ký tự chữ hoa A-Z khi tạo mật khẩu." #: data/settings_dialog.ui:151 msgid "_Lowercase Characters" msgstr "Ký tự thườn_g" #: data/settings_dialog.ui:152 msgid "Use lowercase characters a-z when generating a password." msgstr "Sử dụng ký tự chữ thường a-z khi tạo mật khẩu." #: data/settings_dialog.ui:166 msgid "_Numeric Characters" msgstr "Ký tự chữ _số" #: data/settings_dialog.ui:167 msgid "Use numeric characters when generating a password." msgstr "Sử dụng ký tự chữ số khi tạo mật khẩu." #: data/settings_dialog.ui:181 msgid "_Special Characters" msgstr "Ký tự Đặc _biệt" #: data/settings_dialog.ui:182 msgid "Use non-alphanumeric ASCII symbols when generating a password." msgstr "Sử dụng ký hiệu ASCII không phải chữ và số khi tạo mật khẩu." #: data/settings_dialog.ui:198 msgid "Passphrase Generation" msgstr "Tạo cụm từ mật khẩu" #: data/settings_dialog.ui:202 msgid "Passphrase Length" msgstr "Độ dài cụm từ mật khẩu" #: data/settings_dialog.ui:228 msgid "Enter Character" msgstr "Nhập ký tự" #: data/settings_dialog.ui:241 data/settings_dialog.ui:245 msgid "Security" msgstr "Bảo mật" #: data/settings_dialog.ui:249 msgid "Safe Lock Timeout" msgstr "Thời gian tối đa không dùng sẽ khóa két" #: data/settings_dialog.ui:250 msgid "Lock safe on idle after X minutes." msgstr "Khóa két sau X phút khi hệ thống không làm gì." #: data/settings_dialog.ui:266 msgid "Clear Clipboard" msgstr "Xóa Clipboard" #: data/settings_dialog.ui:267 msgid "Clear clipboard after X seconds." msgstr "Xóa clipboard sau X phút." #: data/settings_dialog.ui:283 msgid "_Show Password Fields" msgstr "_Hiển thị Trường Mật khẩu" #: data/settings_dialog.ui:284 msgid "Display passwords in plain text." msgstr "Hiển thị mật khẩu ở dạng văn bản đọc được." #: data/settings_dialog.ui:298 msgid "Clear Recent List" msgstr "Xóa danh sách mới dùng" #: data/settings_dialog.ui:299 msgid "Clear the recently opened safes list." msgstr "Xóa sạch danh sách lưu các két mới mở gần đây." #. Menubutton in headerbar for starting the safe creation process #: data/unlock_database.ui:6 data/unlocked_headerbar.ui:186 msgid "_New Safe" msgstr "Két _mới" #. Headerbar subtitle for the keepass safe unlock screen. #: data/unlock_database.ui:33 msgid "Open Safe" msgstr "Mở két" #: data/unlock_database.ui:111 data/unlock_database.ui:198 #: data/unlock_database.ui:299 msgid "Safe is Locked" msgstr "Két bị khóa" #: data/unlock_database.ui:123 msgid "Enter password to unlock" msgstr "Nhập mật khẩu để mở khóa" #: data/unlock_database.ui:212 msgid "Select keyfile to unlock" msgstr "Chọn tập tin khóa để mở khóa" #: data/unlock_database.ui:239 msgid "_Open Keyfile" msgstr "Mở _Tập tin khóa" #: data/unlock_database.ui:311 msgid "Enter password and select keyfile to unlock" msgstr "Nhập mật khẩu và chọn tập tin khóa để mở khóa" #. Composite unlock is a authentication method where both password and keyfile are required #: data/unlock_database.ui:378 msgid "Composite" msgstr "Hỗn hợp" #: data/unlocked_database.ui:81 msgid "Empty group" msgstr "Nhóm rỗng" #: data/unlocked_headerbar.ui:68 passwordsafe/unlocked_headerbar.py:132 msgid "Click on a checkbox to select" msgstr "Nhấn vào ô kiểm để chọn" #. Button tooltip in headerbar to open search page #: data/unlocked_headerbar.ui:94 msgid "Search" msgstr "Tìm kiếm" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_headerbar.ui:108 msgid "Selection Mode" msgstr "Chế độ chọn" #: data/unlocked_headerbar.ui:155 passwordsafe/entry_page.py:389 msgid "_Save" msgstr "_Lưu" #: data/unlocked_headerbar.ui:161 msgid "_Lock" msgstr "_Khóa" #: data/unlocked_headerbar.ui:166 msgid "So_rting" msgstr "Sắp _xếp" #: data/unlocked_headerbar.ui:168 msgid "_A-Z" msgstr "_A-Z" #: data/unlocked_headerbar.ui:173 msgid "_Z-A" msgstr "_Z-A" #: data/unlocked_headerbar.ui:178 msgid "_Last Added" msgstr "Được _thêm Lần cuối" #: data/unlocked_headerbar.ui:194 msgid "Sa_fe Settings" msgstr "_Cài đặt Két" #: data/unlocked_headerbar.ui:216 msgid "Select _All" msgstr "Chọn _Tất cả" #: data/unlocked_headerbar.ui:220 msgid "Select _None" msgstr "Không chọn _Gì cả" #: data/unlocked_headerbar.ui:228 msgid "D_uplicate" msgstr "N_hân đôi" #: data/unlocked_headerbar.ui:232 msgid "_References" msgstr "Tù_y chọn" #: data/unlocked_headerbar.ui:236 data/unlocked_headerbar.ui:250 msgid "_Properties" msgstr "Th_uộc tính" #: data/unlocked_headerbar.ui:242 data/unlocked_headerbar.ui:256 msgid "_Delete" msgstr "_Xóa bỏ" #: data/unlocked_headerbar.ui:264 msgid "New _Entry" msgstr "Đề _mục Mới" #: data/unlocked_headerbar.ui:268 msgid "New _Group" msgstr "_Nhóm Mới" #. The umbrella sentence of the application on the first start screen #: data/welcome_page.ui:31 msgid "Secure Password Safe" msgstr "Đảm bảo an toàn cho Két giữ Mật khẩu" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/welcome_page.ui:45 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "Lưu trữ an toàn mật khẩu, ghi chú và dữ liệu của bạn. Tạo hoặc " "nhập một két KeePass mới." #: passwordsafe/application.py:183 msgid "Unable to Quit: Could not save Safe" msgstr "Không thể Thoát: Không thể lưu Két an toàn" #: passwordsafe/create_database.py:114 msgid "Passwords do not match" msgstr "Mật khẩu không khớp" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:123 #: passwordsafe/database_settings_dialog.py:233 msgid "Choose location for keyfile" msgstr "Chọn vị trí cho tập tin khóa" #: passwordsafe/create_database.py:140 msgid "Generating…" msgstr "Đang tạo…" #: passwordsafe/database_manager.py:122 msgid "Clone" msgstr "Nhân đôi" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:182 msgid "Choose current keyfile" msgstr "Chọn tập tin khóa hiện tại" #: passwordsafe/database_settings_dialog.py:183 msgid "_Open" msgstr "_Mở" #: passwordsafe/database_settings_dialog.py:313 #: passwordsafe/database_settings_dialog.py:368 msgid "Apply…" msgstr "Áp dụng…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:410 msgid "Unknown" msgstr "Không hiểu" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:413 msgid "AES 256-bit" msgstr "AES 256-bít" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:416 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256-bít" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:419 msgid "Twofish 256-bit" msgstr "Twofish 256-bít" #: passwordsafe/entry_page.py:247 passwordsafe/entry_page.py:308 msgid "Attribute key already exists" msgstr "Khóa thuộc tính đã sẵn có" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:339 msgid "Select attachment" msgstr "Chọn đính kèm" #: passwordsafe/entry_page.py:340 msgid "_Add" msgstr "_Thêm" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:388 msgid "Save attachment" msgstr "Lưu phần đính kèm" #: passwordsafe/entry_page.py:432 passwordsafe/entry_row.py:101 msgid "Username copied to clipboard" msgstr "Đã sao chép tên người dùng vào khay nhớ tạm" #: passwordsafe/entry_row.py:94 passwordsafe/password_entry_row.py:68 msgid "Password copied to clipboard" msgstr "Đã sao chép mật khẩu vào khay nhớ tạm" #: passwordsafe/entry_row.py:113 passwordsafe/group_row.py:100 msgid "Title not specified" msgstr "Chưa chỉ ra tựa đề" #: passwordsafe/entry_row.py:124 msgid "No username specified" msgstr "Chưa chỉ định tài khoản" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:205 msgid "Choose a Keepass safe" msgstr "Chọn một két Keepass" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:215 passwordsafe/main_window.py:305 msgid "KeePass 3.1/4 Database" msgstr "Cơ sở dữ liệu KeePass 3.1/4" #: passwordsafe/main_window.py:243 msgid "Could not open file" msgstr "Không thể mở tập tin" #: passwordsafe/main_window.py:252 msgid "Could not open file: Mime type not supported" msgstr "Không thể mở tập tin: Kiểu định dạng tập tin không được hỗ trợ" #: passwordsafe/main_window.py:262 passwordsafe/unlock_database.py:191 msgid "Safe already opened" msgstr "Cơ sở dữ liệu đã được mở rồi" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:294 msgid "Choose location for Keepass safe" msgstr "Chọn vị trí cho két Keepass" #: passwordsafe/main_window.py:297 msgid "_Create" msgstr "_Tạo" #: passwordsafe/selection_ui.py:75 msgid "Operation aborted: Deleting currently active group" msgstr "Thao tác bị hủy: Xóa nhóm hiện đang hoạt động" #: passwordsafe/selection_ui.py:87 msgid "Deletion completed" msgstr "Xóa xong" #: passwordsafe/selection_ui.py:129 msgid "Operation aborted: Moving currently active group" msgstr "Thao tác bị hủy: Di chuyển nhóm hiện đang hoạt động" #: passwordsafe/selection_ui.py:146 msgid "Move completed" msgstr "Di chuyển xong" #: passwordsafe/unlock_database.py:214 msgid "Choose a keyfile" msgstr "Chọn một tập tin khóa" #: passwordsafe/unlock_database.py:261 msgid "Choose Keyfile" msgstr "Chọn tập tin khóa" #. NOTE kdb is a an older format for Keepass databases. #: passwordsafe/unlock_database.py:411 msgid "The kdb format is not supported" msgstr "Kiểu tập tin {} ({}) không được hỗ trợ" #: passwordsafe/unlock_database.py:501 passwordsafe/unlock_database.py:521 #: passwordsafe/unlock_database.py:535 msgid "Failed to unlock safe" msgstr "Gặp lỗi khi mở khóa két" #: passwordsafe/unlock_database.py:530 msgid "Try again" msgstr "Thử lại" #: passwordsafe/unlocked_database.py:420 msgid "Safe saved" msgstr "Két đã được lưu" #: passwordsafe/unlocked_database.py:422 msgid "Could not save Safe" msgstr "Không thể lưu Két" #: passwordsafe/unlocked_database.py:431 msgid "Please wait. Another save is running." msgstr "Vui lòng chờ. Đã có tiến trình lưu khác đang chạy." #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:435 msgid "No changes made" msgstr "Không tạo ra thay đổi nào" #: passwordsafe/unlocked_database.py:471 msgid "Copied to clipboard" msgstr "Đã chép vào clipboard" #. NOTE: Notification that a safe has been locked. #: passwordsafe/unlocked_database.py:547 msgid "Safe locked due to inactivity" msgstr "Đã khóa Két do không hoạt động" #: passwordsafe/unlocked_headerbar.py:135 msgid "{} Selected entry" msgid_plural "{} Selected entries" msgstr[0] "{} Mục đã được chọn" #~ msgid "Preferences" #~ msgstr "Tùy chọn" #~ msgid "New" #~ msgstr "Tạo mới" #~ msgid "Secret_Photo.png" #~ msgstr "Secret_Photo.png" #~ msgid "Show/hide password" #~ msgstr "Hiện/ẩn mật khẩu" #~ msgid "First Start" #~ msgstr "Chạy lần đầu" #~ msgid "Full-Text Search" #~ msgstr "Tìm kiếm toàn văn" #~ msgid "Current Group Search" #~ msgstr "Tìm nhóm hiện tại" #~ msgid "Timeout" #~ msgstr "Thời hạn chờ tối đa" #~ msgctxt "Shortcut window description" #~ msgid "Exit entry page" #~ msgstr "Thoát trang mục tin" #~ msgctxt "Shortcut window description" #~ msgid "Navigate to parent group" #~ msgstr "Di chuyển đến nhóm cha mẹ" #~ msgid "A-Z" #~ msgstr "A-Z" #~ msgid "Z-A" #~ msgstr "Z-A" #~ msgid "New Safe" #~ msgstr "Két mới" #~ msgid "Add" #~ msgstr "Thêm" #~ msgid "No group title specified" #~ msgstr "Chưa chỉ ra tựa đề nhóm" #~ msgid "Unable to open file \"{}\"." #~ msgstr "Không thể mở tập tin \"{}\"." #~ msgid "Skipped moving group into itself" #~ msgstr "Bỏ qua vì di chuyển vào chính bản thân nhóm" #~ msgid "Database saved" #~ msgstr "Cơ sở dữ liệu đã được lưu" #~ msgid "%s locked" #~ msgstr "%s bị khóa" #~ msgid "Close" #~ msgstr "Đóng" #~ msgid "Discard" #~ msgstr "Bãi bỏ" #~ msgid "Local" #~ msgstr "Cục bộ" secrets-5.1/po/zh_CN.po000066400000000000000000000753641415312107300150220ustar00rootroot00000000000000# Chinese (China) translation for PasswordSafe. # Copyright (C) 2020 PasswordSafe's COPYRIGHT HOLDER # This file is distributed under the same license as the PasswordSafe package. # Damned , 2020. # msgid "" msgstr "" "Project-Id-Version: PasswordSafe master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/PasswordSafe/issues\n" "POT-Creation-Date: 2020-04-25 20:00+0000\n" "PO-Revision-Date: 2020-09-01 17:07-0400\n" "Last-Translator: \n" "Language-Team: Chinese (China) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.4.1\n" #: data/about_dialog.ui.in:11 data/org.gnome.PasswordSafe.appdata.xml.in.in:9 #: data/org.gnome.PasswordSafe.desktop.in.in:4 msgid "A password manager for GNOME" msgstr "GNOME 的密码管理器" #: data/about_dialog.ui.in:13 msgid "Learn more about Password Safe" msgstr "了解关于密码保险箱的更多信息" #. Add your name to the translator credits list #: data/about_dialog.ui.in:15 msgid "translator-credits" msgstr "" #. Dialog title which informs the user about unsaved changes. #: data/attachment_warning_dialog.ui:9 msgid "Safety Info" msgstr "安全信息" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/attachment_warning_dialog.ui:10 msgid "" "It is possible that external applications will create unencrypted hidden or " "temporary copies of this attachment file! Please proceed with caution." msgstr "外部应用程序可能会创建此附件文件未加密的隐藏或临时副本!请小心继续。" #. Discard all the changes which the user have made to his keepass safe #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/attachment_warning_dialog.ui:23 data/quit_dialog.ui:22 #: data/unlocked_database.ui:1274 msgid "Back" msgstr "后退" #. Save all the changes which the user have made to his keepass safe #: data/attachment_warning_dialog.ui:36 msgid "Proceed" msgstr "继续" #: data/create_database.ui:74 data/database_settings_dialog.ui:439 #: data/entry_page.ui:1563 data/entry_page.ui:1699 #: data/references_dialog.ui:155 data/references_dialog.ui:263 #: passwordsafe/unlock_database.py:94 msgid "Password" msgstr "密码" #: data/create_database.ui:94 msgid "Use a password to secure your safe" msgstr "使用密码保护您的保险箱" #: data/create_database.ui:157 data/database_settings_dialog.ui:579 #: passwordsafe/create_database.py:242 passwordsafe/create_database.py:247 #: passwordsafe/database_settings_dialog.py:184 #: passwordsafe/database_settings_dialog.py:219 #: passwordsafe/database_settings_dialog.py:224 #: passwordsafe/unlock_database.py:97 passwordsafe/unlock_database.py:302 #: passwordsafe/unlock_database.py:424 msgid "Keyfile" msgstr "密钥文件" #: data/create_database.ui:177 msgid "Use a keyfile to secure your safe" msgstr "使用密钥文件保护您的保险箱" #. NOTE: Composite unlock is a authentification method where both password and keyfile are required #: data/create_database.ui:240 passwordsafe/unlock_database.py:101 msgid "Composite" msgstr "组合" #: data/create_database.ui:260 msgid "Use a password in combination with a keyfile to secure your safe" msgstr "使用密码和密钥文件组合保护您的保险箱" #: data/create_database.ui:303 msgid "Protect your safe" msgstr "保护您的保险箱" #: data/create_database.ui:415 msgid "Set password for safe" msgstr "设置保险箱密码" #: data/create_database.ui:430 msgid "Enter Password" msgstr "输入密码" #: data/create_database.ui:476 msgid "Password Match Check" msgstr "密码匹配检查" #: data/create_database.ui:562 msgid "Repeat password for safe" msgstr "重复保险箱密码" #: data/create_database.ui:608 msgid "Match Check Failed" msgstr "匹配检查失败" #: data/create_database.ui:667 msgid "Please try again" msgstr "请重试" #. Button to generate a password #: data/create_database.ui:788 data/entry_page.ui:1650 #: passwordsafe/create_database.py:240 #: passwordsafe/database_settings_dialog.py:217 msgid "Generate" msgstr "生成" #: data/create_database.ui:817 msgid "Set keyfile for safe" msgstr "设置保险箱密钥文件" #: data/create_database.ui:832 msgid "Generate Keyfile" msgstr "生成密钥文件" #: data/create_database.ui:887 data/main_window.ui:200 #: data/unlock_database.ui:311 data/unlocked_database.ui:976 msgid "Preferences" msgstr "首选项" #: data/create_database.ui:901 data/main_window.ui:214 #: data/unlock_database.ui:325 data/unlocked_database.ui:990 msgid "Keyboard Shortcuts" msgstr "键盘快捷键" #. "Password Safe" is the application name #: data/create_database.ui:915 data/main_window.ui:228 #: data/unlock_database.ui:339 data/unlocked_database.ui:1004 msgid "About Password Safe" msgstr "关于密码保险箱" #. Application title in headerbar. #. Application name in the headerbar title #. Application title in headerbar. #: data/create_database.ui:929 data/main_window.ui:355 #: data/org.gnome.PasswordSafe.appdata.xml.in.in:4 #: data/org.gnome.PasswordSafe.desktop.in.in:3 data/unlock_database.ui:353 msgid "Password Safe" msgstr "密码保险箱" #. Headerbar subtitle in keepass safe creation routine. #: data/create_database.ui:930 msgid "Create Safe" msgstr "创建保险箱" #: data/created_database.ui:24 msgid "Safe Successfully Created" msgstr "保险箱创建成功" #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #. Headerbar subtitle for the keepass safe unlock screen. #. Menubutton popover in headerbar for starting the safe opening process (for existing safe) #: data/created_database.ui:50 data/unlock_database.ui:286 #: data/unlock_database.ui:354 data/unlocked_database.ui:937 msgid "Open Safe" msgstr "打开保险箱" #: data/database_settings_dialog.ui:55 msgid "Details" msgstr "详细信息" #: data/database_settings_dialog.ui:80 msgid "Path" msgstr "路径" #: data/database_settings_dialog.ui:97 msgid "File Size" msgstr "文件大小" #: data/database_settings_dialog.ui:114 msgid "Safe Name" msgstr "保险箱名称" #. KeePass is a proper noun #: data/database_settings_dialog.ui:144 msgid "KeePass Version" msgstr "KeePass 版本" #: data/database_settings_dialog.ui:161 msgid "Creation Date" msgstr "创建日期" #: data/database_settings_dialog.ui:178 data/database_settings_dialog.ui:801 msgid "Encryption Algorithm" msgstr "加密算法" #: data/database_settings_dialog.ui:195 msgid "Derivation Algorithm" msgstr "推导算法" #. Statistics #: data/database_settings_dialog.ui:300 msgid "Stats" msgstr "统计信息" #: data/database_settings_dialog.ui:325 msgid "Number of Groups" msgstr "组数" #: data/database_settings_dialog.ui:342 msgid "Passwords" msgstr "密码" #: data/database_settings_dialog.ui:359 msgid "Number of Entries" msgstr "项数" #: data/database_settings_dialog.ui:420 data/settings_dialog.ui:55 msgid "General" msgstr "常规" #. New password (replacement for an old one) #: data/database_settings_dialog.ui:461 msgid "New" msgstr "新的" #: data/database_settings_dialog.ui:480 data/database_settings_dialog.ui:481 msgid "Generate Password" msgstr "生成密码" #. Retype the new password to confirm #: data/database_settings_dialog.ui:494 msgid "Confirm" msgstr "确认" #. Current password #: data/database_settings_dialog.ui:524 msgid "Current" msgstr "当前" #: data/database_settings_dialog.ui:632 msgid "Select current keyfile" msgstr "选择当前密钥文件" #: data/database_settings_dialog.ui:708 msgid "Generate new keyfile" msgstr "生成新密钥文件" #: data/database_settings_dialog.ui:741 data/database_settings_dialog.ui:962 #: passwordsafe/database_settings_dialog.py:335 #: passwordsafe/database_settings_dialog.py:357 msgid "Apply Changes" msgstr "应用更改" #: data/database_settings_dialog.ui:762 msgid "Authentication" msgstr "认证" #. ChaCha20 is a proper name, do not translate #: data/database_settings_dialog.ui:834 msgid "ChaCha20: 256-bit" msgstr "ChaCha20:256 位" #. Twofish is a proper name, do not translate #: data/database_settings_dialog.ui:851 msgid "Twofish: 256-bit" msgstr "Twofish:256 位" #. AES is a proper name, do not translate #: data/database_settings_dialog.ui:868 msgid "AES: 256-bit" msgstr "AES:256 位" #. https://en.wikipedia.org/wiki/Key_derivation_function #: data/database_settings_dialog.ui:893 msgid "Key Derivation Function" msgstr "密钥推导函数" #: data/entry_page.ui:34 msgid "Add Attachment" msgstr "添加附件" #: data/entry_page.ui:76 msgid "Attachments" msgstr "附件" #: data/entry_page.ui:163 msgid "Secret_Photo.png" msgstr "Secret_Photo.png" #: data/entry_page.ui:338 msgid "Remove attribute" msgstr "移除属性" #: data/entry_page.ui:399 msgid "Attributes" msgstr "属性" #: data/entry_page.ui:439 msgid "Key" msgstr "键" #: data/entry_page.ui:453 msgid "Value" msgstr "值" #: data/entry_page.ui:475 msgid "Add attribute" msgstr "添加属性" #: data/entry_page.ui:530 msgid "Color" msgstr "颜色" #: data/entry_page.ui:825 msgid "Icon" msgstr "图标" #: data/entry_page.ui:1197 data/group_page.ui:35 data/references_dialog.ui:65 #: data/references_dialog.ui:235 msgid "Title" msgstr "标题" #: data/entry_page.ui:1282 data/group_page.ui:120 data/references_dialog.ui:185 #: data/references_dialog.ui:291 msgid "Notes" msgstr "备注" #: data/entry_page.ui:1434 msgid "Length" msgstr "长度" #: data/entry_page.ui:1468 msgid "Characters" msgstr "字符" #: data/entry_page.ui:1576 msgid "Words" msgstr "单词" #: data/entry_page.ui:1609 msgid "Separator" msgstr "分隔符" #: data/entry_page.ui:1626 msgid "Enter character here…" msgstr "在此处输入字符…" #: data/entry_page.ui:1637 msgid "Passphrase" msgstr "密码短语" #. Tooltip for button near input field to show or hide the password (clear text) #: data/entry_page.ui:1755 msgid "Show/hide password" msgstr "显示/隐藏密码" #: data/entry_page.ui:1936 data/references_dialog.ui:170 #: data/references_dialog.ui:277 msgid "URL" msgstr "URL" #: data/entry_page.ui:2023 data/references_dialog.ui:92 #: data/references_dialog.ui:249 msgid "Username" msgstr "用户名" #. The umbrella sentence of the application on the first start screen #: data/main_window.ui:43 msgid "Secure password safe" msgstr "保护密码保险箱" #. The subtitle of the umbrella sentence in the first start screen. This is a sentence which gives the user a starting point what he can do if he opens the application for the first time. #: data/main_window.ui:62 msgid "" "Securely store your passwords, notes and data. Create or import a new Keepass safe." msgstr "" "安全地存储您的密码、记录和数据。创建导入一个新的 Keepass 保险" "箱。" #: data/main_window.ui:269 msgid "New…" msgstr "新建…" #: data/main_window.ui:314 msgid "Open…" msgstr "打开…" #: data/main_window.ui:411 msgid "Recent Databases" msgstr "最近的数据库" #: data/notes_dialog.ui:15 msgid "Copy" msgstr "复制" #: data/notes_dialog.ui:52 msgid "Close" msgstr "关闭" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:11 msgid "" "Password Safe is a password manager which makes use of the Keepass v.4 " "format. It integrates perfectly with the GNOME desktop and provides an easy " "and uncluttered interface for the management of password databases." msgstr "" "密码保险箱是一个密码管理器,使用 Keepass v.4 格式。与 GNOME 桌面完美集成,并" "提供简易、整洁的界面来管理密码数据库。" #: data/org.gnome.PasswordSafe.appdata.xml.in.in:99 msgid "Falk Alexander Seidl" msgstr "Falk Alexander Seidl" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/org.gnome.PasswordSafe.desktop.in.in:13 msgid "keepass;encrypt;secure;" msgstr "keepass;encrypt;secure;加密;保护;" #: data/org.gnome.PasswordSafe.gschema.xml:16 data/settings_dialog.ui:121 msgid "Use dark GTK+ theme" msgstr "使用深色 GTK+ 主题" #: data/org.gnome.PasswordSafe.gschema.xml:17 msgid "" "Use the dark variant of your GTK+ theme. Please note that not every GTK+ " "theme has a dark variant." msgstr "使用您的 GTK+ 主题的深色版本。请注意不是每个 GTK+ 主题都有深色版本。" #: data/org.gnome.PasswordSafe.gschema.xml:21 msgid "Reopen last opened database" msgstr "重新打开上一次打开的数据库" #: data/org.gnome.PasswordSafe.gschema.xml:22 msgid "" "Automatically open the unlock screen of the last opened database, otherwise " "show the welcome screen." msgstr "自动打开上一次打开的数据库的解锁界面,否则显示欢迎界面。" #: data/org.gnome.PasswordSafe.gschema.xml:26 data/settings_dialog.ui:326 msgid "Save every change automatically" msgstr "自动保存所有更改" #: data/org.gnome.PasswordSafe.gschema.xml:27 msgid "" "Save every change you made instantly into the database. Please note that you " "cannot revert changes if Autosave is enabled." msgstr "" "将您做出的每个更改立即保存到数据库。请注意在启用自动保存时,您无法还原更改。" #: data/org.gnome.PasswordSafe.gschema.xml:31 msgid "Lock database after X minutes" msgstr "在 X 分钟后锁定数据库" #: data/org.gnome.PasswordSafe.gschema.xml:32 msgid "" "Automatically lock your database after a given amount of minutes to improve " "the security." msgstr "在给定的分钟数后自动锁定您的数据库,以提升安全性。" #: data/org.gnome.PasswordSafe.gschema.xml:36 data/settings_dialog.ui:737 msgid "Clear clipboard after X seconds" msgstr "在 X 秒后清除剪贴板" #: data/org.gnome.PasswordSafe.gschema.xml:37 msgid "After copying the password clear the clipboard for security reasons." msgstr "出于安全考虑,在复制密码后清除剪贴板。" #: data/org.gnome.PasswordSafe.gschema.xml:41 data/settings_dialog.ui:821 msgid "Display passwords in plain text" msgstr "将密码显示为纯文本" #: data/org.gnome.PasswordSafe.gschema.xml:42 msgid "Show the passwords in the entry fields by default." msgstr "默认显示输入字段中的密码。" #: data/org.gnome.PasswordSafe.gschema.xml:46 msgid "Window size" msgstr "窗口大小" #: data/org.gnome.PasswordSafe.gschema.xml:47 msgid "Remember the window size." msgstr "记住窗口大小。" #: data/org.gnome.PasswordSafe.gschema.xml:51 msgid "Last opened database" msgstr "上一次打开的数据库" #: data/org.gnome.PasswordSafe.gschema.xml:52 msgid "Path to the last opened database." msgstr "上一次打开的数据库的路径。" #: data/org.gnome.PasswordSafe.gschema.xml:56 msgid "Last opened databases" msgstr "上一次打开的数据库" #: data/org.gnome.PasswordSafe.gschema.xml:57 msgid "A list of the last opened databases." msgstr "上一次打开的数据库的列表。" #: data/org.gnome.PasswordSafe.gschema.xml:61 msgid "Remember composite key" msgstr "记住组合密钥" #: data/org.gnome.PasswordSafe.gschema.xml:62 msgid "Remember last used composite key for database unlocking." msgstr "记住上一次使用的解锁数据库的组合密钥。" #: data/org.gnome.PasswordSafe.gschema.xml:66 msgid "Last used composite key" msgstr "上一次使用的组合密钥" #: data/org.gnome.PasswordSafe.gschema.xml:67 msgid "Path to last used key for composite database unlocking." msgstr "上一次使用的解锁数据库的组合密钥的路径。" #: data/org.gnome.PasswordSafe.gschema.xml:71 msgid "Remember unlock method" msgstr "记住解锁方式" #: data/org.gnome.PasswordSafe.gschema.xml:72 msgid "Remember last used unlock method for future database unlocking." msgstr "记住上一次使用的解锁方式,用于未来的数据库解锁。" #: data/org.gnome.PasswordSafe.gschema.xml:76 msgid "Backup the database on unlock" msgstr "解锁时备份数据库" #: data/org.gnome.PasswordSafe.gschema.xml:77 msgid "" "If an error occurs while saving the database, a backup can be found at ~/." "cache/passwordsafe/backups" msgstr "如果在保存数据库时出错,可以在 ~/.cache/passwordsafe/backups 找到备份" #: data/org.gnome.PasswordSafe.gschema.xml:81 msgid "Sorting order of groups and entries" msgstr "组和项的排列顺序" #: data/org.gnome.PasswordSafe.gschema.xml:82 msgid "Order of the rows in the groups and entries view." msgstr "组和项的视图中行的顺序。" #: data/org.gnome.PasswordSafe.gschema.xml:86 msgid "Last used unlock method" msgstr "上一次使用的解锁方式" #: data/org.gnome.PasswordSafe.gschema.xml:87 msgid "" "Used to store the last used unlock method and to enable a faster unlock " "process." msgstr "用于存储上一次使用的解锁方式,以及启用快速解锁过程。" #: data/override_dialog.ui:8 msgid "File already exists" msgstr "文件已存在" #: data/override_dialog.ui:9 msgid "Do you want to override it?" msgstr "是否覆盖该文件?" #: data/override_dialog.ui:22 data/unlocked_database.ui:1452 msgid "Cancel" msgstr "取消" #: data/override_dialog.ui:35 msgid "Override" msgstr "覆盖" #: data/properties_dialog.ui:13 data/unlocked_database.ui:1209 msgid "Properties" msgstr "属性" #: data/properties_dialog.ui:48 msgid "Accessed" msgstr "访问时间" #: data/properties_dialog.ui:66 msgid "Modified" msgstr "修改时间" #: data/properties_dialog.ui:85 data/references_dialog.ui:200 msgid "UUID" msgstr "UUID" #: data/properties_dialog.ui:118 msgid "Created" msgstr "创建时间" #: data/references_dialog.ui:23 msgid "Code" msgstr "代码" #: data/references_dialog.ui:38 data/references_dialog.ui:403 #: data/references_dialog.ui:554 msgid "Property" msgstr "属性" #: data/references_dialog.ui:314 data/unlocked_database.ui:1195 msgid "References" msgstr "引用" #: data/references_dialog.ui:346 msgid "Syntax" msgstr "语法" #: data/references_dialog.ui:361 msgid "The placeholder syntax for field references is the following:" msgstr "字段引用的占位符语法如下:" #: data/references_dialog.ui:402 data/references_dialog.ui:441 msgid "Show Field Codes" msgstr "显示字段代码" #: data/references_dialog.ui:442 msgid "Identifier" msgstr "标识符" #: data/references_dialog.ui:524 msgid "Reference" msgstr "引用" #: data/references_dialog.ui:631 msgid "" "Each entry has a unique identifier called UUID.\n" "It can be found in the properties of the entry." msgstr "" "每个项具有唯一的标识符,称为 UUID。\n" "UUID 可以在项的属性中找到。" #. Dialog window title on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:8 msgid "Do you want to save all safes with unsaved changes?" msgstr "是否保存所有包含未保存更改的保险箱?" #. Dialog window subtitle on application quit to inform the user that his safe(s) has unsaved changes with the possibility to select safes he want to save or not. #: data/quit_dialog.ui:9 msgid "Select the safes you want to save." msgstr "选择您要保存的保险箱。" #: data/quit_dialog.ui:35 msgid "Quit" msgstr "退出" #. Dialog title which informs the user about unsaved changes. #: data/save_dialog.ui:8 msgid "Unsaved Changes" msgstr "未保存的更改" #. Dialog subtitle which informs the user about unsaved changes more detailed. #: data/save_dialog.ui:9 msgid "Do you want to write all changes to the safe?" msgstr "是否将所有更改写入保险箱?" #. Discard all the changes which the user have made to his keepass safe #: data/save_dialog.ui:22 msgid "Discard" msgstr "丢弃" #. Save all the changes which the user have made to his keepass safe #: data/save_dialog.ui:35 data/unlocked_database.ui:761 #: passwordsafe/entry_page.py:652 passwordsafe/main_window.py:380 msgid "Save" msgstr "保存" #. Title of the settings dialog #: data/settings_dialog.ui:15 msgid "Settings" msgstr "设置" #: data/settings_dialog.ui:104 msgid "Dark Theme" msgstr "深色主题" #: data/settings_dialog.ui:187 msgid "Hide First Start Screen" msgstr "隐藏首次启动界面" #: data/settings_dialog.ui:204 msgid "Reopen last opened safe" msgstr "重新打开上一次打开的保险箱" #: data/settings_dialog.ui:260 data/unlocked_database.ui:860 #: passwordsafe/main_window.py:382 msgid "Safe" msgstr "保险箱" #: data/settings_dialog.ui:309 msgid "Save automatically" msgstr "自动保存" #: data/settings_dialog.ui:382 data/unlock_database.ui:84 #: data/unlock_database.ui:226 data/unlock_database.ui:468 msgid "Unlock" msgstr "解锁" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:431 msgid "Remember Composite Key" msgstr "记住组合密钥" #. A composite key is a authentification method where the user needs both password and keyfile for unlocking his safe #: data/settings_dialog.ui:448 msgid "Remember last used composite key" msgstr "记住上一次使用的组合密钥" #. There are 3 unlock methods: password, keyfile, composite (password+keyfile) #: data/settings_dialog.ui:514 msgid "Remember Unlock Method" msgstr "记住解锁方式" #: data/settings_dialog.ui:531 msgid "Enable faster unlocking" msgstr "启用快速解锁" #: data/settings_dialog.ui:587 msgid "Security" msgstr "安全性" #: data/settings_dialog.ui:636 msgid "Safe Lock Timeout" msgstr "保险箱锁定超时" #: data/settings_dialog.ui:653 msgid "Lock safe on idle after X minutes" msgstr "在空闲 X 分钟后锁定保险箱" #: data/settings_dialog.ui:720 msgid "Clear Clipboard" msgstr "清除剪贴板" #: data/settings_dialog.ui:804 msgid "Show Password Fields" msgstr "显示密码字段" #: data/settings_dialog.ui:887 msgid "Clear Recent List" msgstr "清除最近列表" #: data/settings_dialog.ui:904 msgid "Clear the recently opened safes list" msgstr "清除最近打开的保险箱列表" #: data/shortcuts_overview.ui:14 msgctxt "Shortcut window description" msgid "Application" msgstr "应用程序" #: data/shortcuts_overview.ui:18 msgctxt "Shortcut window description" msgid "Create safe" msgstr "创建保险箱" #: data/shortcuts_overview.ui:25 msgctxt "Shortcut window description" msgid "Open safe" msgstr "打开保险箱" #: data/shortcuts_overview.ui:32 msgctxt "Shortcut window description" msgid "Open preferences" msgstr "打开首选项" #: data/shortcuts_overview.ui:41 msgctxt "Shortcut window description" msgid "Safe" msgstr "保险箱" #: data/shortcuts_overview.ui:45 msgctxt "Shortcut window description" msgid "Lock safe" msgstr "锁定保险箱" #: data/shortcuts_overview.ui:52 msgctxt "Shortcut window description" msgid "Save safe" msgstr "保存保险箱" #: data/shortcuts_overview.ui:59 msgctxt "Shortcut window description" msgid "Open search" msgstr "打开搜索" #: data/shortcuts_overview.ui:66 msgctxt "Shortcut window description" msgid "Create entry" msgstr "创建项" #: data/shortcuts_overview.ui:73 msgctxt "Shortcut window description" msgid "Create group" msgstr "创建组" #: data/shortcuts_overview.ui:82 msgctxt "Shortcut window description" msgid "Entry" msgstr "项" #: data/shortcuts_overview.ui:86 msgctxt "Shortcut window description" msgid "Copy password" msgstr "复制密码" #: data/shortcuts_overview.ui:93 msgctxt "Shortcut window description" msgid "Exit entry page" msgstr "退出项页面" #: data/unlock_database.ui:27 msgid "Enter password and select keyfile to unlock" msgstr "输入密码并选择密钥文件以解锁" #: data/unlock_database.ui:43 data/unlock_database.ui:175 #: data/unlock_database.ui:515 msgid "Safe is Locked" msgstr "保险箱已锁定" #: data/unlock_database.ui:159 msgid "Select keyfile to unlock" msgstr "选择密钥文件以解锁" #: data/unlock_database.ui:208 msgid "Open Keyfile" msgstr "打开密钥文件" #. Menubutton popover in headerbar for starting the safe creation process #: data/unlock_database.ui:272 data/unlocked_database.ui:923 msgid "New Safe" msgstr "新建保险箱" #: data/unlock_database.ui:499 msgid "Enter password to unlock" msgstr "输入密码以解锁" #: data/unlock_database.ui:590 msgid "Failed to unlock safe" msgstr "保险箱解锁失败" #. Button tooltip in headerbar to switch to selection mode where the user can tick password entries and groups #: data/unlocked_database.ui:21 data/unlocked_database.ui:1299 msgid "Selection Mode" msgstr "选择模式" #. Button tooltip in headerbar to open search page #: data/unlocked_database.ui:43 msgid "Search" msgstr "搜索" #: data/unlocked_database.ui:211 msgid "Empty group" msgstr "空组" #: data/unlocked_database.ui:267 msgid "No search results" msgstr "无搜索结果" #: data/unlocked_database.ui:620 msgid "Enter search term" msgstr "输入搜索词" #: data/unlocked_database.ui:683 data/unlocked_database.ui:827 msgid "Sorting" msgstr "排序" #. This string depicts the alphabet from the beginning to the end (first character to last one). #: data/unlocked_database.ui:700 msgid "A-Z" msgstr "A-Z" #. This string depicts the alphabet in reversed order, from the end to the start (last character to first one). #: data/unlocked_database.ui:714 msgid "Z-A" msgstr "Z-A" #. This is a modelbutton in a popover to sort entries by last added #: data/unlocked_database.ui:728 msgid "Last Added" msgstr "添加时间" #: data/unlocked_database.ui:783 msgid "Lock" msgstr "锁定" #: data/unlocked_database.ui:874 msgid "New Entry" msgstr "新建项" #: data/unlocked_database.ui:888 msgid "New Group" msgstr "新建组" #. Open settings for safe (e.g. password changing) #: data/unlocked_database.ui:951 msgid "Safe Settings" msgstr "保险箱设置" #: data/unlocked_database.ui:1066 msgid "Local" msgstr "本地" #: data/unlocked_database.ui:1078 msgid "Full Text" msgstr "全文" #: data/unlocked_database.ui:1181 msgid "Duplicate" msgstr "复制" #: data/unlocked_database.ui:1234 msgid "Delete" msgstr "删除" #. Button tooltip in selection mode to move every selected entry/group to another place #: data/unlocked_database.ui:1415 msgid "Move selection" msgstr "移动选定内容" #. Button tooltip in selection mode to delete every selected entry/group #: data/unlocked_database.ui:1435 msgid "Delete selection" msgstr "删除选定内容" #: data/unlocked_database.ui:1482 msgid "Select all" msgstr "全选" #: data/unlocked_database.ui:1496 msgid "Select none" msgstr "全部不选" #: data/unlocked_database.ui:1526 msgid "Click on a checkbox to select" msgstr "点击复选框进行选择" #. NOTE: Filechooser title for generating a new keyfile #: passwordsafe/create_database.py:239 #: passwordsafe/database_settings_dialog.py:216 msgid "Choose location for keyfile" msgstr "选择密钥文件的位置" #: passwordsafe/create_database.py:259 msgid "Generating…" msgstr "正在生成…" #. NOTE: With clone is meant a duplicated object, not the process of cloning/duplication; "the" clone #: passwordsafe/database_manager.py:384 msgid "Clone" msgstr "副本" #. NOTE: Filechooser title for choosing current used keyfile #: passwordsafe/database_settings_dialog.py:178 msgid "Choose current keyfile" msgstr "选择当前密钥文件" #: passwordsafe/database_settings_dialog.py:179 msgid "Open" msgstr "打开" #: passwordsafe/database_settings_dialog.py:290 #: passwordsafe/database_settings_dialog.py:346 msgid "Apply…" msgstr "应用…" #. Encryption Algorithm #: passwordsafe/database_settings_dialog.py:388 msgid "Unknown" msgstr "未知" #. NOTE: AES is a proper name #: passwordsafe/database_settings_dialog.py:391 msgid "AES 256-bit" msgstr "AES 256 位" #. NOTE: ChaCha20 is a proper name #: passwordsafe/database_settings_dialog.py:394 msgid "ChaCha20 256-bit" msgstr "ChaCha20 256 位" #. NOTE: Twofish is a proper name #: passwordsafe/database_settings_dialog.py:397 msgid "Twofish 256-bit" msgstr "Twofish 256 位" #: passwordsafe/entry_page.py:513 passwordsafe/entry_page.py:576 msgid "Attribute key already exists" msgstr "属性的键已存在" #. NOTE: Filechooser title for selecting attachment file #: passwordsafe/entry_page.py:604 msgid "Select attachment" msgstr "选择附件" #: passwordsafe/entry_page.py:605 msgid "Add" msgstr "添加" #. NOTE: Filechooser title for downloading an attachment #: passwordsafe/entry_page.py:651 msgid "Save attachment" msgstr "保存附件" #: passwordsafe/entry_row.py:64 msgid "Title not specified" msgstr "未指定标题" #: passwordsafe/entry_row.py:75 msgid "No username specified" msgstr "未指定用户名" #: passwordsafe/group_row.py:37 msgid "No group title specified" msgstr "未指定组标题" #. NOTE: Filechooser title for opening an existing keepass safe kdbx file #: passwordsafe/main_window.py:297 msgid "Choose a Keepass safe" msgstr "选择 Keepass 保险箱" #. NOTE: KeePass + version number is a proper name, do not translate #: passwordsafe/main_window.py:307 passwordsafe/main_window.py:388 msgid "KeePass 3.1/4 Database" msgstr "KeePass 3.1/4 数据库" #: passwordsafe/main_window.py:336 msgid "Unable to open file \"{}\"." msgstr "无法打开文件“{}”。" #: passwordsafe/main_window.py:339 msgid "File type {} ({}) is not supported." msgstr "文件类型 {} ({}) 不受支持。" #. NOTE: Filechooser title for creating a new keepass safe kdbx file #: passwordsafe/main_window.py:379 msgid "Choose location for Keepass safe" msgstr "选择 Keepass 保险箱的位置" #: passwordsafe/selection_ui.py:175 msgid "Deletion completed" msgstr "删除完毕" #: passwordsafe/selection_ui.py:242 msgid "Move completed" msgstr "移动完毕" #: passwordsafe/selection_ui.py:244 msgid "Skipped moving group into itself" msgstr "已跳过将组移动到自身的操作" #: passwordsafe/unlock_database.py:214 msgid "Database already opened" msgstr "数据库已打开" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:300 msgid "Choose a keyfile" msgstr "选择密钥文件" #: passwordsafe/unlock_database.py:353 passwordsafe/unlock_database.py:410 msgid "Try again" msgstr "重试" #. NOTE: Keyfile filechooser title #: passwordsafe/unlock_database.py:419 msgid "Choose Keyfile" msgstr "选择密钥文件" #: passwordsafe/unlocked_database.py:483 msgid "Database saved" msgstr "数据库已保存" #. NOTE: In-app notification to inform the user that already an unfinished save job is running #: passwordsafe/unlocked_database.py:486 msgid "Please wait. Another save is running." msgstr "请稍候。正在运行另一项保存任务。" #. NOTE: In-app notification to inform the user that no save is necessary because there where no changes made #: passwordsafe/unlocked_database.py:489 msgid "No changes made" msgstr "未进行更改" #: passwordsafe/unlocked_database.py:669 msgid "Copied to clipboard" msgstr "已复制到剪贴板" #. NOTE: Notification that a safe has been locked, Notification title has the safe file name in it #: passwordsafe/unlocked_database.py:824 #, python-format msgid "%s locked" msgstr "%s 已锁定" #: passwordsafe/unlocked_database.py:824 msgid "Keepass safe locked due to inactivity" msgstr "Keepass 保险箱由于不活动而被锁定" secrets-5.1/profile.dat000066400000000000000000011566631415312107300152000ustar00rootroot00000000000000)~3)rg|a>g|a>{0/usr/lib/python3/dist-packages/dateutil/tz/tz.pyi__call__)rrg|a>g|a>0)rr()iiga7K?ga7K?{/usr/lib/python3.8/typing.pyi$__init_subclass__)r gW7>gW7>r i__new__)rg |X>g |X>*/usr/lib/python3/dist-packages/gi/types.py_setup_native_vfuncs)~rg>0$?g>0$?r_type_register)rgC1 >gC1 >4/usr/lib/python3/dist-packages/gi/_propertyhelper.pyibinstall_properties)rgC1?gC1?2/usr/lib/python3/dist-packages/gi/_signalhelper.pyinstall_signals)rrg0A~*?g0A~*?/usr/lib/python3.8/copyreg.pyc _slotnames)rrgƼq>gƼq>)/usr/lib/python3.8/enum.pyi{ __setattr__)r'gr5(?gr5(?0)rr*)i'i'g=Y}$@?g=Y}$@?{1/usr/lib/python3/dist-packages/gi/_gtktemplate.py6register_template)r-gۮ#P>gۮ#P>rL _setup_vfuncs)Pr1gPVy5z?gPVy5z?r)rrg|~/?g|~/?r)rrgN$!#?gN$!#?r% )8r5gM3?gM3?0)rr))r-r-gr8.>gr8.>{%/usr/lib/python3/dist-packages/six.pyibwrapper)r-r-gr8.>gr8.>0)rr')r;gS2b9>gS2b9>{H/usr/local/lib/python3.8/site-packages/passwordsafe/unlocked_database.py&UnlockedDatabase)rrg|6>g|6>G/usr/local/lib/python3.8/site-packages/passwordsafe/database_manager.pyDatabaseManager)rrgVMٻ>gVMٻ>)8/usr/lib/python3/dist-packages/dateutil/relativedelta.py relativedelta)rrgPtʔ3>gPtʔ3>)1/usr/lib/python3/dist-packages/pykeepass/group.pyGroup)rrg9 ">g9 ">)7/usr/lib/python3/dist-packages/pykeepass/baseelement.pyrH BaseElement)r r gW >gW >)6/usr/lib/python3/dist-packages/pykeepass/attachment.py Attachment)rrg1 Y*>g1 Y*>)1/usr/lib/python3/dist-packages/pykeepass/entry.pyEntry) rRg" '>g" '>) /usr/lib/python3.8/subprocess.pyiPopen)rrg/qܰ>g/qܰ>)rSr#CalledProcessError)rrgkĨx>gkĨx>)rSTimeoutExpired)rrgdeH`h>gdeH`h>)&/usr/lib/python3.8/logging/__init__.pyi LoggerAdapter)rrg aGyl>g aGyl>)/usr/lib/python3.8/threading.pyiThread)rrg1 >g1 >0)rr()r]gmZ2?gmZ2?{&iO_code_to_timestamp_pyc)r]r]gmZ2?gmZ2?0)rr&)iig=P?g=P?{!/usr/lib/python3.8/sre_compile.pyi_optimize_charset)iig=P?g=P?0)rr+)@rfgms ?gms ?{rci _mk_bitmap)rfrfgms ?gms ?0)rr")iig9vU?g9vU?{/usr/lib/python3.8/base64.py"_bytes_from_decode_data)iigW&'T?gW&'T?/usr/lib/python3.8/os.pyiencode)rHrHgW&>gW&>roi fsencode)r r g2.>g2.>0)rr#)ixixg. 1P?g. 1P?{/usr/lib/python3.8/uuid.pyr]__init__)rMrMg4tw;>g4tw;>/usr/lib/python3.8/ntpath.py| splitdrive)rrgX4l>gX4l>?/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/AES.py)rrg+u>g+u>E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_gcm.pyO_get_ghash_portable)rrg~ y>g~ y>rW_get_ghash_clmul)rrgn?>gn?>=/usr/local/lib/python3.8/dist-packages/pycparser/plyparser.pyt_create_param_rules)Erg;ŷ ?g;ŷ ?)4/usr/local/lib/python3.8/dist-packages/cffi/model.py/ _get_c_name)iigsN?.?gsN?.?rrrv)rgtOe!?gtOe!?rirv)rg\w%?g\w%?)ri)rv)!rgU ¢C\?gU ¢C\?6/usr/local/lib/python3.8/dist-packages/cffi/cparser.py _preprocess)rgf3s(?gf3s(?rA _setup_fields)iigOOp2?gOOp2?riobj_get_property)rrgs[A>gs[A>/usr/lib/python3.8/locale.pyi normalize)rgne>gne>*/usr/lib/python3.8/collections/__init__.pyi9 namedtuple)#rgh$0@ ?gh$0@ ?0)rr!)iig[IA?g[IA?{/usr/lib/python3.8/pathlib.py? parse_parts)rrg3>g3>;/usr/local/lib/python3.8/dist-packages/pycparser/ply/lex.pyi _statetoken)Mrgs=K<?gs=K<?)ri2_declare)r1r1gB ࢝?gB ࢝?rSiz_use_posix_spawn)rrgIvXu>gIvXu>6/usr/lib/python3/dist-packages/gi/overrides/GObject.pyrr~)*rg5 ?g5 ?3/usr/lib/python3/dist-packages/gi/overrides/GLib.pyr}r~)rErEgylN>gylN>-/usr/lib/python3/dist-packages/gi/importer.pyx load_module)rrg s9`?g s9`?B/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/_raw_api.pyi!load_pycryptodome_raw_lib)rgJ?gJ?2/usr/local/lib/python3.8/dist-packages/cffi/api.pyimupdate_accessors)rgtn?gtn?/usr/lib/python3.8/gettext.pyit_parse)rHrHg >g >rifind)r-r-g>M!L>g>M!L>r)r-r-gK>gK>r)rglDA?glDA?roie get_exec_path)rrg9 U>g9 U>/usr/lib/python3.8/posixpath.pyiNnormpath)rgڹJ&?gڹJ&?rirelpath)rrgNq<7>gNq<7>0)rr")ryryg |,*?g |,*?{rn find_module)rHrHg>qd?g>qd?r)rHrHg̱ >g̱ >7/usr/lib/python3/dist-packages/gi/overrides/__init__.pyKload_overrides)rHrHg7" >g7" >roverride)Rrg2 ?g2 ?0)rr )i?i?gʮh?g]h?{r)rrg?g?))rRrRgv>i>gv>i>ri signature)r-r-g4RJcH ?g4RJcH ?r)rrgoT?goT?rb_preprocess_extern_python)r}r}g.>g.>ri3r)r}r}gNkTX?gNkTX?riU_get_type_and_quals)i5i5gCEq^ ?gCEq^ ?)/usr/lib/python3.8/tokenize.py:group)rBrBgo>go>rS_all_string_prefixes)HrgJr?gJr?./usr/lib/python3/dist-packages/gi/docstring.pyr_generate_callable_info_doc)rg8 h ?g8 h ?=/usr/local/lib/python3.8/dist-packages/Cryptodome/__init__.pyrr~)rrgZeG >gZeG >/usr/lib/python3.8/sre_parse.pyiaddgroup)rrgkcG_>gkcG_>riexpand_template)_rg2?g2?r)rrgbO*?g;)?r)rrgFBLx~>gFBLx~>(/usr/lib/python3.8/encodings/__init__.py+normalize_encoding)rg5V>g5V>r_> _path_join)i i g _?g _?r_i&cache_from_source)iigR1?gR1?0)rr!)i4i4gJKYDgL>0)rr )r g,@Fڙ>g,@Fڙ>{ri _read_tzfile)rRrRg T9>g T9>r _expand_lang)rErEg肸zg>g肸zg>0)rr%)rrgkT>gkT>{ri _joinrealpath)rrgkT>gkT>0)rr!)r-r-gl&%>gl&%>{ri^_replace_encoding)r-r-gl&%>gl&%>0)rr!)rrg>?g>?{9/usr/lib/python3/dist-packages/dateutil/parser/_parser.pyi;_convert)rrg'>g'>rCLexer)$rge)(>ge)(>ri_add_integer_constant)rrg>!ky>g>!ky>/usr/lib/python3.8/socket.pyrr~)rrg|.>g|.>r, snake_case)rrgn)(?gn)(?r) r&g1>g1>r)rrgUɔN>gUɔN>r)rrg0N|>g0N|>0)rr")vr(g?g?{ri$ splitroot)rrgX>gX>rit_ppline_FILENAME)r$r$g2sL?g2sL?)rrMqualify)Ir.gJ×BM?gJ×BM?0)rr!)iig-W?g-W?{ri+suffix)rrg',l>g',l>r7 _token_coord)iig3 V?g3 V?rXi+ _fixupParents)rrgn!P>gn!P>rdsplit)rrg!ʴ>g!ʴ>rbasename)r-r-g|e>g|e>rdirname)r@g3~>g3~>0)rr")iig1Um`?g1Um`?{rxr9)rrg|a>g|a>r+)r$r$gܰf`>gܰf`>r)rrgJ]ʪ>gJ]ʪ>rif_parse_constant)rHrHgFHy>gFHy>r7)rrg91>g91>r=)rrg@ӑ&U>g@ӑ&U>)r_rfr)iigTe`?gTe`?0)rr&)iigu4Y?gu4Y?{/usr/lib/python3.8/pkgutil.pyi extend_path)rrg]z;x>g]z;x>$/usr/lib/python3.8/importlib/util.pyr. find_spec)rHrHg^9>g^9>)r_iz_find_parent_path_names)rlrlg7>>g7>>r_irL)i^i^gP3?gP3?)iparent)i+i+g3OFF+?g3OFF+?rOi_find_and_load_unlocked)iigs';?gs';?r_D _path_split)iig6i9?g6i9?r)iigX,?gX,?0)rr!)rrg ]> ?g ]> ?{/usr/lib/python3.8/platform.pyi[ _syscmd_uname)rrg$z>g$z>5/usr/lib/python3/dist-packages/pykeepass/pykeepass.pyi_find)rrgu>gu>rt)rrg䱀>g䱀>/usr/lib/python3.8/pdb.pyr-r~)rlrlgfR^?gfR^?r)rrg^QA%>g^QA%>ri_process_macros)rrg阬>g阬>r)rlrlg J>g J>0)rr%)iig ]x@?g ]x@?{+/usr/lib/python3/dist-packages/gi/module.pyr __getattr__)reg`vJe\=?g`vJe\=?/usr/lib/python3.8/re.pyiescape)0rigl!z?gl!z?0)rr!)rrg¼C>g¼C>{)r^r)rrg¼C>g¼C>0)rr&)iigkכPgQҎ>/usr/lib/python3.8/shutil.pyrr~)rrg?Y>g?Y>rVtemplate)rrgG?gG?ri7 get_pfunctions)rxgsaN"?gsaN"?r)iig@0?g@0?r)rrg%~Z>g%~Z>rD)rHrHg兗>g兗>r i _is_dunder)iig^[$2?g^[$2?/usr/lib/python3.8/token.pyJ )rrg[ؐ>g[ؐ>/usr/lib/python3.8/signal.pyrR)}rgXj{?gXj{?runpack)rrg|=>g|=>riS __getitem__)r}r}g=?g=?)ri{__bool__)rrgv>gv>r"r/r)iEiEgg!o>r)rrgwB[[?gwB[[?r.)iZiZg/z7?g/z7?r)rrgob)%?gob)%?r)r1r1gl?gl?r)rv)rfrfg%t>g%t>r)r&r&g:ܳS>g:ܳS>rHi find_loader)rHrHgJ>gJ>r)rrg,6d?g,6d?(/usr/lib/python3.8/importlib/__init__.pym import_module)iEiEg7?g7?rJ)rHrHgtHI{O>gtHI{O>r<isabs)rg)D.?g)D.?rGjoin)rg҂Ò?g҂Ò?r)4rgB>gB>r_i _fill_cache)r+r+gi>1?gi>1?0)rr$)iigCVA?gCVA?{:/usr/local/lib/python3.8/dist-packages/cffi/commontypes.pyrr~)3rgҊ!>gҊ!>ry)iigl۟?gl۟?r)rrgIufe&?gIufe&?r_i _get_cached)rgw|5?gw|5?0)rr#)i2i2gbn):?gbn):?{r)r/r/g>Z>g>Z>r)ixixg}!/?g}!/?r)iyiyg=̛?g=̛?r)izizgcFfT?gcFfT?r)i{i{g416?g416?0)rr#)rBrBgŷ>gŷ>{r)rBrBgŷ>gŷ>0)rr()rgOJN?gOJN?{rir)r}r}g6 ?g6 ?r)org^ k?g^ k?0)rr")i i gh#|?gh#|?{:/usr/lib/python3/dist-packages/dateutil/parser/__init__.py__deprecated_private_func)rrg2b*>g2b*>rr__deprecate_private_class)r-r-g_>g_>rOr_get_string_field)i i g([fy?g([fy?rZ)rrgFt>gFt>-/usr/lib/python3/dist-packages/gi/__init__.pyr}r~)rrg%@i>g%@i>rOi6_module_repr_from_spec)rgCh}N=?gCh}N=?rQ) rg1S(E ?g1S(E ?rOi_handle_fromlist)rrgRU- ?gRU- ?r_r _write_atomic)rrgZ$?gZ$?0)rr)rrg-+>g-+>{rkr-r~)rrg-+>g-+>0)rr#)rrg DY>g DY>{r i__mro_entries__)rrg DY>g DY>0)rr.)rrgʵWՁb ?gʵWՁb ?{r)rrgʵWՁb ?gʵWՁb ?0)rr)iigcR38?gcR38?{rr~)rrg#>g#>rSi_execute_child)rrg!3l>g!3l>r_common_type_names)rg[?g[?r)rrgxVќ?gxVќ?rrr~)r8r8g5 ?g5 ?rZi_set_tstate_lock)rrgzqE->gzqE->r)iigVܦ@&?gVܦ@&?)!/usr/lib/python3.8/_weakrefset.pyradd)rg&b>g&b>r)rrg"H?g"H?0)rr#)rRrRgw;>gw;>{r)rrgii>gii>r)rrgJ>gJ>0)rr!)rrgGV>gGV>{/usr/lib/python3.8/hashlib.pyr@r~)rrgGV>gGV>0)rr))rrgCi>gCi>{rci_bytes_to_codes)rrgCi>gCi>0)rr')rrg~l~; >g~l~; >{r)rrg~l~; >g~l~; >0)rr )i@4i@4gaZx?gaZx?{r7)r-r-grs+>grs+>r8rr~)rrg*#&,>g*#&,>ri}rv)rrg^lx>g^lx>0/usr/lib/python3/dist-packages/construct/core.pyi_sizeof)rrgM7܉>gM7܉>rit_ID)iig֞1J`C?g֞1J`C?)ribegin)i i gjQ?gjQ?riH get_tokens)rrg>g>)rig get_literals)rrgɆՏ>gɆՏ>rix get_states)rrgU#>gU#>ri_lex)rrgs>gs>/usr/lib/python3.8/copy.pyBcopy)rrg}>g}>rr__get_builtin_constructor)r&r&g=>g=>)ri get_start)rrg>!ky>g>!ky>)ri get_error_func)rrg=Y͞>g=Y͞>ri r)rrg\|׎L>g\|׎L>)ri get_precedence)rrgg֎>gg֎>ri yacc)rrg6|]>g6|]>/usr/lib/python3.8/inspect.pyi getmodule)rrg4g+r >)r_is_type_in_scope)i5i5g'dž,?g'dž,?riw_build_declarations)iig/0?g/0?riparseopt_notrack)iig86O6di?g86O6di?ri_declare_function)rrgx>gx>r)iig6O3?g6O3?rresolve_common_type)r@r@g'G>g'G>r iJrv) rgǔ@>gǔ@>r irv)(rgo; dx>go; dx>r iOr)rrg[f>g[f>r )rrg& .>g& .>r)r&r&gCHZM~[>gCHZM~[>r\_get_pytype_hint)iGiGg "R"?g "R"?)ri3 _get_minimum)r@r@g+WG>g+WG>)ri6 _get_maximum)r@r@grx>0>grx>0>r)rHrHg̑×>g̑×>)rget_required_version)rrgGm>gGm>rsr)rrg,i)+>g,i)+>)rigettext)r-r-g70&7s>g70&7s>riR translation)r-r-gV&hc>gV&hc>)ribindtextdomain)rrgw$>gw$>ridgettext)r-r-gI>gI>r)r-r-gU%nß>gU%nß>r)rrg *(h>g *(h>rT opengroup)r}r}g l&?g l&?ri' _class_escape)r(g3*d?oP?g3*d?oP?ric_escape)i@i@g%&?g%&?r%i _find_new_)rMrMgR,m>gR,m>rcr_compile)'r/g&B>g&B>r%i6_create_pseudo_member_)rrg4vxU>g4vxU>r)rrg uIiU>g uIiU>rFsearch_function)rrg;\>>g;\>>rOcb)iig5Ǻ3?g5Ǻ3?rOi_find_and_load)iIiIgǪ6:?gǪ6:?r)rrgw>gw>0)rr')r;gr*|?gD6;?{rr5get_cached_btype)rrgb@y%>ġ075?rrdeprecated_attr)r@gZ\?gZ\?r)rrgJk ?>gJk ?>r)rrgy);>gy);>r%rVr)rMrMgpKXx>gpKXx>r0)rrg3z>g3z>0)rr )iNiNg,&1f.?g,&1f.?{r7)rrgvDt>gvDt>riM global_cache)rrg&>g&>rXih basicConfig)rrg*N">g*N">)r*rrv)r&r&gz >gz >)r*rv)r-r-gA>gA>r)r r gK?{>gK?{>rA)rrgbO>gbO>rOie_load_backward_compatible)rrgrd>grd>rOi_load_unlocked)rLgl߽R(?gl߽R(?0)rr!)rRrRg +>g +>{rZ)rRrRg +>g +>0)rr")iig;jc?g;jc?{rZ)rrgcAJ]>gcAJ]>:/usr/lib/python3/dist-packages/construct/lib/containers.pyrv)rrgK>gK>$/usr/lib/python3.8/_compat_pickle.pyrr~)rrg~<8>g~<8>riVrv)r@r@gdƔu#>gdƔu#>rirv)rHrHgK\b?gK\b?);/usr/local/lib/python3.8/dist-packages/pycparser/yacctab.pyrr~)rrgv>gv>rreadtab)r-r-gmi8|`>gmi8|`>rv)rrgs7*e6>gs7*e6>rrr~)rrg X>g X>ri9set_defaulted_states)rrg >g >r_)rrgM3>gM3>r )rrgs7*e6>gs7*e6>r|rr~)rrgǏ˔ >gǏ˔ >r)rrg6K ?g6K ?rinew_init)rErEgٮ>gٮ>r)r-r-g>ވG>g>ވG>rA)zr`gA ?gA ?r%i _convert_)r r g M2O >g M2O >r%i~ _decompose)rrg2L>g2L>rcicompile)rrg&ƟA+>g&ƟA+>/usr/lib/python3.8/weakref.pyiupdate)rRrRg^L>g^L>0)rr#)iig&OXz?g&OXz?{rirv)rRrRgc$A>gc$A>ri get_rules)rrgl!rAPJ>gl!rAPJ>r[)iig"Z,?g"Z,?r])rrg )Ӱ>g )Ӱ>rXiP _clear_cache)rrg°>g°>0)rr#)rqg"gMy%Y>ri _reconstruct)r-r-gW͞>gW͞>r )rrg,i)+>g,i)+>2/usr/lib/python3/dist-packages/gi/overrides/Gdk.pyEvent)rrgF>gF>r^)rrgQ>gQ>ra)r r gf ?gf ?/usr/lib/python3.8/functools.pyrlupdate_wrapper)r{gۇ5?gۇ5?0)rr)r}gjB?gjB?{)ri_uniq)r}r}gjB?gjB?0)rr")r-r-gܤ#jI>gܤ#jI>{rn)r-r-gܤ#jI>gܤ#jI>0)rr&)r-r-g!ǔ>g!ǔ>{)r%im _high_bit)r-r-g!ǔ>g!ǔ>0)rr$)erg_ X?g_ X?{)ruibytes)rrg(&e&>g(&e&>)r_. _pack_uint32)r#r#gf?gf?0)rr)iigQ@T?gQ@T?{rt)iigG^ tP?gG^ tP?r_r_unpack_uint32)iigsͰ0?gsͰ0?0)rr")rrg~k>g~k>{B/usr/local/lib/python3.8/site-packages/passwordsafe/main_window.pyi.on_application_shutdown)rrg~k>g~k>0)rr#)iigJEcl?gJEcl?{r=Nrv)rrg#>g#>r=ientry_instance_creation)iigʴcudD?gʴcudD?r )rg9w9 ?g9w9 ?r)rrgߒMU>gߒMU>r[rx_xpath)iig6eN?g6eN?rq)rrgeVS>geVS>)rPr` __setitem__)r5r5gCxw}>gCxw}>/usr/lib/python3.8/datetime.pyrr~)rMrMga삖>ga삖>r)r@r@gn>gn>ri _parse_args)rrg&>g&>/usr/lib/python3.8/pickle.pyrr~)rrg`eG|>g`eG|>F/usr/local/lib/python3.8/site-packages/passwordsafe/unlock_database.pyi_open_database_page)rrg~,>g~,>rW)rrg]O'|>g]O'|>)ri_names_to_funcs)rrg<?g<?rl)rrge7Gq?ge7Gq?/usr/lib/python3.8/opcode.pyrname_op)rMrMgZ>gZ>rrjrel_op)rrg^VMT>g^VMT>rrjabs_op)r@r@g9xm>g9xm>rrr~)r&r&gz7w>gz7w>ri read_table)i6i6g`] ?g`] ?r)rrgZ䮐>gZ䮐>rv)rrg""?g""?ri__add_declaration_specifier)rg#{ ?g#{ ?r)iigYT;8"?gYT;8"?rip_parameter_list)rrg> ?g> ?r)i6i6gn%{dj?gn%{dj?rrLbuild_backend_type)rrgVfk>gVfk>r)r}r}g&&Ms>g&&Ms>r)rg_$?g_$?r)rrgP|{9>gP|{9>r r_collect_type_vars)2rgua>gua>r _remove_dups_flatten)r r g\U07>g\U07>r _tp_cache)rrg\XtA6>g\XtA6>rXiG_addHandlerRef)rrgCY>gCY>rXi5 addHandler)rrgkcG_>gkcG_>2/usr/lib/python3/dist-packages/gi/overrides/Gtk.pyr}r~)r3r3g7>g7>2/usr/lib/python3/dist-packages/gi/overrides/Gio.pyrr~)rrghEa>ghEa>4/usr/lib/python3/dist-packages/gi/overrides/Pango.pyrr~)rrgX;>gX;>8/usr/lib/python3/dist-packages/gi/overrides/GdkPixbuf.pyrEr~)rrgX)>gX)>rur}r~)rrg f]I>g f]I>r)rgP+?gP+?1/usr/lib/python3/dist-packages/gi/_ossighelper.pyr3register_sigint_fallback)rrg嬟>g嬟>rZrr~)rrg#u| >g#u| >r)rrg)e5E>g)e5E>8/usr/lib/python3/dist-packages/gi/repository/__init__.pyrr~)rrg*>g*>rcrget_interfaces_for_object)rrg[)d?g[)d?ri mro)iLiLgXB]E?gXB]E?r)iCiCg?g?r)r@r@gdƔu#>gdƔu#>r>)r@r@gҾ?gҾ?rw_cdef)rrg/ >g/ >rrdlopen)rrg2\Md>g2\Md>r)rrg|>g|>r)rrgl."}>gl."}>r#)iig`8?g`8?)rrappend)iig!v̗9?g!v̗9?ri _parse_sub)i%i%g=F .)?g=F .)?r)iig2v'?g2v'?r)rRrRg$%>g$%>riparse_template)rrg>g>r%rr)rgu?gu?rA)rg ?g ?r%i_find_data_type)r r g8gW>g8gW>r-)i7i7g*T?g*T?rb)i5i5g)5/?g)5/?rc)rrgA|>gA|>rc_compile_charset)ibibgNah/?gNah/?rci_get_literal_prefix)rrg.>g.>rci_get_charset_prefix)rrgq@>gq@>rci _compile_info)i.i.g#f?g#f?rciV_code)rrgQ4>gQ4>r)rrgkhub ?gkhub ?r)rBrBg>g>0)rr#)iig1Ae4?g1Ae4?{/usr/lib/python3.8/calendar.pyr_localized_month)rrg'G>g'G>r)i}i}gxO0?gxO0?!/usr/local/bin/gnome-passwordsafer-r~)rrg+(,ۥ>g+(,ۥ>r)rrgz7_>gz7_>/usr/lib/python3.8/warnings.py _add_filter)rrgO?gO?0)rr#)i@i@g^::?gJ@?{r)rrgT#]>gT#]>rip_translation_unit_2)rrgҨ?gҨ?r)r@r@gU>gU>r])rrg>g>r!)rrgY) >gY) >r)rrgUfG8>gUfG8>r)rfrfg7?g7?r)rrg& z?>g& z?>r)rrg^&Ɍ>g^&Ɍ>r_i _get_spec)rrgjR>gjR>)r_irrv)rrgd"1?gg!/۶>8?0)rr )rrgҎ/b>gҎ/b>{r)rrgҎ/b>gҎ/b>0)rr#)iigax??gax??{r)iigO];?gO];?r)rrgoO.?goO.?0)rr")iigsM?gsM?{rt)iig!GM?g!GM?rSi communicate)rrgme>gme>0)rr$)r r gRj>gRj>{r)rrgG>gG>r)rrgDhGF>gDhGF>0)rr!)rrg֐6?g;a?{r)rrgwE>gwE>rl)rrg( ?g\?rv)rrg{4m(?g0M9^?ra)r r gB?gBY ?rc)rrg>gKun>0)rr$)rrg^a\Қ ?g^a\Қ ?{r )rrgxo>gxo>rJf _encode_time)rrgrԎƪ>grԎƪ>rZ)rrg2.>g2.>)9/usr/lib/python3/dist-packages/construct/lib/py3compat.py bytes2str)`r gXsU1*?gXsU1*?r)rMrMg5u >g5u >)roidecode)rrg^s=>g^s=>0)rr&)rrgpf2>gpf2>{r)rrgpf2>gpf2>0)rr")iigtV[?g9e?{6/usr/lib/python3/dist-packages/construct/lib/binary.pyr@ integer2bits)rg pL%)?g pL%)?rr bytes2bits)iig#h*P?gDW?ri bits2bytes)rrg8A?gYQ?0)rr#)rrg^s=>g^s=>{r=)rrg^s=>g^s=>0)rr#)rrg>g>{r)rrg>g>0)rr()rrga.>ga.>{r)rrga.>ga.>0)rr,)r-r-g!>g8&?{r)r-r-g!>g8&?0)rr0)r&r&gt>gt>{r ir )r&r&gt>gt>0)rr )rMrMgK>gK>{rA)rMrMgK>gK>0)rr4)rxrxg0HO`?g"q}b?{)rrr)r-r-g>g>rir)r-r-ge w֊>ge w֊>)ri_create)r-r-g(1_&־>g(1_&־>ri _from_parts)rrgy0b7>gy0b7>rir)rMrMgaJ>gaJ>ri3r)rrgR+e| >gR+e| >rir)rrgBw>gBw>r i3r)r r g*P3>g*P3>r)rrg ?>g ?>r )rrg!>g!>)r"Z __newobj__)r-r-g!g1>g!g1>rA)r*gh \VE?gh \VE?r0)rrg?Vv>g?Vv>)rhiCr)rrg >g >/usr/lib/python3.8/abc.pyr$r)r;r;g]HT?gAL~xX?)/usr/lib/python3.8/codecs.pyrkr)rrgBY>gBY>rOi_init_module_attrs)rrgy>gy>0)rr*)iigd5Dә?ghx4ö?{r=rr~)rrg?ga LY?N/usr/local/lib/python3.8/site-packages/passwordsafe/custom_keypress_handler.pyrr~)rrgFk?g >{?E/usr/local/lib/python3.8/site-packages/passwordsafe/pathbar_button.pyrr~)rrg;i #?g[CZ??O/usr/local/lib/python3.8/site-packages/passwordsafe/database_settings_dialog.pyrr~)rrgos>gɘUT?A/usr/local/lib/python3.8/site-packages/passwordsafe/entry_page.pyrr~)rrg=a,>gvj(_?E/usr/local/lib/python3.8/site-packages/passwordsafe/history_buffer.pyrr~)r-r-g?g#KXE?C/usr/local/lib/python3.8/site-packages/passwordsafe/notes_dialog.pyrr~)rrgʖ$Pv?gcCg4:?Q/usr/local/lib/python3.8/site-packages/passwordsafe/password_generator_popover.pyrr~)rrg$?gk?D/usr/local/lib/python3.8/site-packages/passwordsafe/scrolled_page.pyrr~)rrg%G2?g/"L?rnrr~)rrg9 $?g.Y8?A/usr/local/lib/python3.8/site-packages/passwordsafe/group_page.pyrr~)rrg7ry>g~C >@/usr/local/lib/python3.8/site-packages/passwordsafe/group_row.pyrr~)rrg7Cy8?g‘2?>/usr/local/lib/python3.8/site-packages/passwordsafe/pathbar.pyrr~)rrg _=Lͮ?gz̛oM5?H/usr/local/lib/python3.8/site-packages/passwordsafe/properties_dialog.pyrr~)rrg',>g2?H/usr/local/lib/python3.8/site-packages/passwordsafe/references_dialog.pyrr~)rrgc7>g;%>)D/usr/local/lib/python3.8/site-packages/passwordsafe/responsive_ui.pyrr~)rrgr{+ Z>gsy>=/usr/local/lib/python3.8/site-packages/passwordsafe/search.pyrr~)rrg p^?gY` 8?C/usr/local/lib/python3.8/site-packages/passwordsafe/selection_ui.pyrr~)rrgT`8??g1?E/usr/local/lib/python3.8/site-packages/passwordsafe/error_info_bar.pyrr~)rrgHծ?g}C?F/usr/local/lib/python3.8/site-packages/passwordsafe/settings_dialog.pyrr~)rrg?gtW?);/usr/local/lib/python3.8/dist-packages/argon2/exceptions.pyr-r~)r@r@ggf%?g3yX&?:/usr/local/lib/python3.8/dist-packages/argon2/low_level.pyrr~)rrg\e>gL}[1h@?A/usr/local/lib/python3.8/dist-packages/argon2/_password_hasher.pyrr~)rrgZ~?g@?7/usr/local/lib/python3.8/dist-packages/argon2/_utils.pyr-r~)rrgGV ģn?g ? ?C/usr/local/lib/python3.8/site-packages/passwordsafe/color_widget.pyrr~)r-r-gV1F0?gg{ ?rArr~)rrgn?gr!f?)?/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/common.pyr3Reparsed)rrg\5?gԬ?r`rr~)rrgAE0A?g kB?D/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/ChaCha20.pyrPr~)rrgmk?gPd*K?C/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/Salsa20.pyr r~)rrgC)$?g?@/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/twofish.pyr r~)r-r-gt?ggˤ?B/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/pytwofish.py%r~)rrg5 ?g> ?ri __get_gettz)rrg#CB>gLP7Tz?rrr~)r&r&g٨3?gvkS9?5/usr/lib/python3/dist-packages/dateutil/tz/_common.pyrr~)rrg9z?g/1?8/usr/lib/python3/dist-packages/dateutil/tz/_factories.pyrr~)rrg3~?g[ޞN?;/usr/lib/python3/dist-packages/dateutil/parser/isoparser.pyrr~)rrg䆓q>g.d E?)6/usr/lib/python3/dist-packages/pykeepass/exceptions.pyr-r~)rrg3̭?gOR?r)rMrMgI83?g4?rDrr~)rrgヽh8>g3?)2/usr/lib/python3/dist-packages/dateutil/_common.pyrr~)rrgԴ>g&y?6/usr/lib/python3/dist-packages/dateutil/tz/__init__.pyrr~)rrgJV?g?rGrr~)rrgJ/2i>g-?rJrr~)rrg3=>g'wE?r)r-r-gèPO?gҥ?)ri>parser)rrg?gJ7NN?)ric_result)rrg³?g +Ŝ?)ria _tzparser)rrg;?g`?rrr~)rrg?صk/?g N&J?rrr~)rRrRgȯ'1?g17?)/usr/lib/python3.8/gzip.pyrr~)rrgR|?g)^I$3?rLrr~)rrgL >gh-?rOrr~)rrgOX>gv?rurr~)rrgy@?gm#;«M?)/usr/lib/python3.8/pprint.pyr&r~)rrg2w?gat"?r[rr~)rrg ?gC{l?/usr/lib/python3.8/numbers.pyrr~)r@r@gLpu?g#YUij]C?1/usr/lib/python3/dist-packages/construct/debug.pyrr~)rrg@N?gVɓ?r])r-r-gAa ?g-(?)/usr/lib/python3.8/cmd.pyrr~)rrg_Gr?g; Kv ?)/usr/lib/python3.8/bdb.pyrr~)rrgSdE$?g ')?/usr/lib/python3.8/code.pyrr~)rrgBVn?gy9^?/usr/lib/python3.8/codeop.pyrr~)rrgJ{w ?g]sF?rPrr~)rrg"?grf3 O ?)9/usr/lib/python3/dist-packages/construct/lib/bitstream.pyrr~)rrgVf۞]?gJJ?3/usr/lib/python3/dist-packages/construct/lib/hex.pyrr~)r@r@gzL(?g?u7*?0/usr/lib/python3/dist-packages/construct/expr.pyrr~)rrgwP&?gN+?rq)r r ga-?g".?/usr/lib/python3.8/bz2.pyrr~)rrg=;>g0@$<?)"/usr/lib/python3.8/_compression.pyrr~)rrgצ>gs%?/usr/lib/python3.8/lzma.pyrr~)rrgE/ӑ>gr8V ?/usr/lib/python3.8/imp.pyrr~)rrgm*#?gwL#$?r)rrg,C*?g<BQ5?rrr~)rrg_*[@?gj(%Q?rr-r~)jrgCn?ggru?r)rrgt+|d0?g%Q7?/usr/lib/python3.8/tempfile.pyrr~)r@r@g򆵪!?g"|uY'?"/usr/lib/python3.8/urllib/parse.pyrr~)rMrMg2$>=?g:L>?rrPr~)rrg"` ?g?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_ocb.pyrPr~)rrgPr?gɜ1C?G/usr/local/lib/python3.8/site-packages/passwordsafe/created_database.pyrr~)rrgEh Ԑ(>gVv\?rrr~)rrg!'b?gY`2?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_ccm.pyrPr~)rrgz)?gms ?A/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/BLAKE2s.pyrPr~)rrgЎ ?g[ ?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_eax.pyrPr~)rrgOaN>gb?>/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/CMAC.pyr~)rrgܰ=?gn? ?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_siv.pyrPr~)rrg xPC?g)"?A/usr/local/lib/python3.8/dist-packages/Cryptodome/Protocol/KDF.pyr r~)rrg%?gak?>/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/SHA1.pyrr~)rrg  ?gI ?@/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/SHA256.pyrr~)rrg;X] ?g.mY:?>/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/HMAC.pyrlr~)rrgft !Q>g%X?=/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/MD5.pyrr~)rrgY` 8?g\4> ?I/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_openpgp.pyrPr~)rrg,-絧>ga d?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_cbc.pyrPr~)rrgHpA?ge]Jy ?)D/usr/local/lib/python3.8/dist-packages/Cryptodome/Random/__init__.pyrr~)rrgrm>g HS>E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_cfb.pyrr~)rrgwm?gb+˄?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_ofb.pyrr~)rrgA?gX?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_ctr.pyrr~)rrgi\J ?gBJ ?)9/usr/local/lib/python3.8/dist-packages/pycparser/c_ast.pyrBr~)1rgY-PUZ?g hѷ\?rrr~)rrgK;% ?g|me0?rrlr~)rrg$ )?g_d $0?rrr~)rrg#Yۖ?gB9?)rr&r~)r-r-g91?gR?rrr~)rrg2ß1?g2eОp?E/usr/local/lib/python3.8/site-packages/passwordsafe/config_manager.pyrr~)rrg~;A>g6(RB?E/usr/local/lib/python3.8/site-packages/passwordsafe/container_page.pyrr~)rrge{?gKښA?F/usr/local/lib/python3.8/site-packages/passwordsafe/create_database.pyrr~)rrg͌7_?g먋?/usr/lib/python3.8/hmac.pyrr~)rrgh?gH*P?/usr/lib/python3.8/dis.pyrr~)rrg g3mP?gTw ?rrr~)rrg;?g%6D?rZ)rrg-jWS/?gCN?rSrRr~)r@r@gNfF$?g!n+?rrr~)rrg9z?g)p (?)4/usr/local/lib/python3.8/dist-packages/cffi/error.pyrr~)r@r@g KW!?g47a"?rrr~)rErEgIm>?g@?rrr~)rrgR0?g> K?r rr~)r r g5L?g2T˞Pd?rXrr~)rErEgr@?g:@|x?/usr/lib/python3.8/traceback.pyrr~)r-r-gT8$?gx+!?r)rrgJ3+%?geIU'?/usr/lib/python3.8/string.pyrr~)r-r-gV3.?gAIe?B/usr/local/lib/python3.8/site-packages/passwordsafe/application.pyrr~)rrg #E?gf:m?r)rrgd=o2i?g6uZ?r*rr~)rrg71?ga81?r)rrg1#˔/H?go^?r)rrgxLw?g(-?r)rrgl?gc )G*?r)rrg3I3?g.H?,/usr/lib/python3/dist-packages/gi/_option.pyrr~)r-r-g T?gX72X#?r)r@r@gpĐ%>:/?g4JZ? /usr/lib/python3.8/__future__.pyrr~)rrg6>g~Is>r)r&r&gȐ5?g`i4G:?r)rrg6?g+CrCT?r!)r-r-g\(#?g҅-}1?/usr/lib/python3.8/selectors.pyrr~)r r gE: ?gxa(??rrr~)rrgaR`)>gV]>rcrr~)rrgyi>g<y >rrr~)rrg2[^|{?g&I(!?)rr/Property)rrgJ*?g5`2h?rrr~)rrgZ H>g)z?)rrSignal)rrg~h0?g:D ?rrr~)rrgש6[ ?gF7?rrr~)rrgDI?gt1?r)rrg9ZYx?g]ݾ)?)+/usr/lib/python3/dist-packages/gi/_error.pyr;r~)rrg!v ?gL( ?/usr/lib/python3.8/random.pyrr~)rrgOx?g[g?E/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/_mode_ecb.pyrr~)rrg@ɨ(>g(>rrPr~)r-r-gF*<?g3 ?ri>_make_ffi_library)rrgݦF?ghsԅJ?rrr~)rrgiJl>gd?0)rr%)r}rgø A?g'I{?{)r8r1_import_module)rrg^L>g^L>rJ)rHrHg|m?gXKq&?r2)rrgt>gt>rOrX_call_with_frames_removed)-r}gMpJ9?g'I{?0)rr)r r g(H>g(H>{r$)r r g(H>g(H>0)rr)rrg˼?gf?{rU)rHrHgBi絋>g㭃?rk)rRrRgbN[>gZeG >r in__class_getitem__)rrgrG͑tQ>gǔ@>0)rr)r}r}g>v?gEun3E ?{r )r r g_|>gEW#>rA)rrgXT>g Ɯ?rb)rrga~ϑZ>ga~ϑZ>0)rr#)rErEg$c2I>g$c2I>{rr)rrgz >gz >)rr'evaluate)rrgngnri~_io_add_watch_get_args)rrgw4>gw4>r.)rrgvDt>gvDt>r"rMpickle)rrg7_6K>g7_6K>)r"r} constructor)rrgJ hG|>gJ hG|>0)rr")rrgUX%h޹?gUX%h޹?{r)rrgUX%h޹?gUX%h޹?0)rr")rrg%?g%?{r8r__get__)rrgGVg}>gGVg}>rs)rrg'14>g'14>r)r@r@g?g?0)rr)r@r@gt.F?gt.F?{r)rrgeU "?geU "?r)rrg_ң"?g_ң"?rs)rrg{8<%?g{8<%?r)rrg^/dUF)?g^/dUF)?ror_get_exports_list)rrg "?g "?0)rr!)rrg o>g o>{r$)rrg o>g o>0)rr)rgmMK7t?g(@{r)rrgvw&?g}x>&?rW)rrgn?g#uO?r)rrg\V{?g7,~L?rr6c2py)rrgjW)?g'ڍn*?r)rrgì\j?gQJj?r)rrRgƪnR?g28OW?0)rr!)rrge'6?ge'6?{)rrr)rrge'6?ge'6?0)rr")i&i(g2Fm?g&̱?{ri _set_tzdata)rrg|4[ȍ>g|4[ȍ>)rp_fold)rrg1MS>g1MS>r)rrglrkڹ>glrkڹ>r)rrg;;S>g;;S>?/usr/local/lib/python3.8/dist-packages/future/utils/__init__.pyrr~)rrgUfG8>gUfG8>r])rlrlg;(6 ?g;(6 ?)rrr)rRrRgK a>gK a>)rrr)rrgjG3?g)[?rW)rrgK>gK>)rizr)rrg5_?g5_?r)rrg<α>g<α>r)rrg g5_P>g g5_P>rs)r{r{g ,*)J?g ,*)J?r{__get_openssl_constructor)rrgE>gE>rv)rrg>vqT8?g>vqT8?)ri r)rrgFz!?gFz!?rSiI_close_pipe_fds)rrggSCt>ggSCt>r)rrg5I10>g5I10>)rilineno)iigP1?gP1?)ri lexpos)iig T_0D?g T_0D?r)r}r}gUQO8>gUQO8>)rrr)iSiSg9w?g9w?rC)rrgt;l>gt;l>ri_parse_function_type)rrgKc?gKc?r)iig@ɉ%R?gy}lo?r)qr1g 3ufE?gtW?r)rRrRg`ZlDD>g`ZlDD>r)rrgZ?gZ?r!)r-r-gW2e>gW2e>rcrfget_parent_for_object)r#Yg$e@?gYms|?r)rrgH"WR?gw+w?r.)rrg_x4?g_x4?)ri@_default_getter)rrg `ʃ>g `ʃ>r)rrg#(w\>g8nTNK>)rrPrd)iiEg[d5b?g!rٜ?r)iigGg=G?gGg=G?r)r1r1gѥΏ?gѥΏ?r)r r g>g>rird)rrgB-B>gB-B>r)rrgL`d>gL`d>r%ry __prepare__)rMrMg;3T>g;3T>rA)r{r{g""?g""?r+)r/r/g<) ; ?g/8]@+?) /usr/lib/python3.8/contextlib.pyrrv)rrg!z5>g!z5>rx)iigg :[uZ?gP[b?r_i_get_parent_path)rlrlg >g >rOi  _module_repr)rrg$!m ?g$!m ?r.)iigkg?gkg?rH)rrgDP-̉ ?g~ H6?0)rr")r?gyCn ?gyCn ?{r)rrg9.5>g9.5>r)rHrHg͑Ř>g͑Ř>rZ)rrgP Bϟ>gP Bϟ>r])rrg?Y>g?Y>r)rrgةs8>gةs8>r)r1r1g2!K?g2!K?rrr~)rrga삖>ga삖>r)rrg*F>g*F>r)rrg:0y>g:0y>0)rr")iigyHAf?g_i?{ro)rrgƟn$>gƟn$>r8 is_package)rrgid[>gid[>r7)r-r-g#?,>>g#?,>>r&)rrgT?,>gT?,>r)rrgl>gl>rq)r@r@g" '>g" '>)ri_NormalAccessor)rrgxz)e>gxz)e>rxrr~)rrg-S>g-S>r)rrg7)>g7)>r)rrgBb] >gBb] >rl)rrgpuGR?gpuGR?)riB set_regex)rBrBgXEU>gXEU>rr)r-r-gʽ學>gʽ學>rs)r{r{gPӣ?gPӣ?r)rrg,e)?g,e)?rZ)rrgnA>gnA>r)rrg_q>g_q>r/)i4i4gX?gX?r)rrgKU.͹>gKU.͹>rSi _get_devnull)rrgx

gx

r )rrg.>g.>r)rrg5=ܙ>g5=ܙ>ri TreeModelSort)rrgO>gO>riButton)rrgٽ3c>gٽ3c>r*r'r)r-r-gz=?\>gz=?\>rt)rrgǔ@>gǔ@>r)rrg/>g]XT:?rr ensure_socket_not_inheritable)rrgHpA>gHpA>r)rrg5m/G>g5m/G>r)rrg^QA%>g^QA%>r)rrgC'e>gB">)r"socket)rrgC'e>gC'e>r!)rrgz >gz >r)rrgwe>gwe>rr+_setup_class_methods)r}r}g ;T?g ;T?r.)rUgn{#?gn{#?rrfind_vfunc_info_in_interface)r1r1gι?gι?rrfind_vfunc_conflict_in_bases)rUrUgOiZl)?gOiZl)?r)rLrLg@ /?g@ /?r)rrgi6v&?gi6v&?r)rrg5>Y>g5>Y>r)rrgwk >gwk >r!)rrgq@>gq@>)r%rM_is_descriptor)ioiog1:?g1:?rA)r`r`g;u#?g;u#?rG)rRrRgL?IK>gL?IK>rg)r@r@gs>gs>r)iTiTg%il~8?g%il~8?r<)rrg}&?g}&?rOispec_from_loader)rTrTgeR1?geR1?rOi%module_from_spec)rrga5"?ga5"?rH)rrgKP(?gZh?rJ)iig.n )?g.n )?r)i|i|gxӮ)rrg \MI+?g MG?{rr__hash__);g?A㑑&?gF?)r iIra)rrgܩt>gܩt>)r ira)rMrMgь@>gь@>0)rr)rrga\@>ga\@>{r)rrga\@>ga\@>0)rr%)irirg~F?gR?{rArt get_group)rrg<>g<>rAr{get_icon)iigC?gC?rAi get_entry_color)iiggg>CA?ggg>CA?rifromutc)rrgIך>gIך>r)rrgX)>gX)>r8rr)rrgG)R>gG)R>r)rrg{ t>g{ t>rirv)rrg7w>g7w>r)rrg11\6>g11\6>rt)iigzr֝/?gzr֝/?rO)rHrHg>g>r )r-r-g 3>g 3>)rxrl _get_bothseps)rrgc>gc>rw)rrg>)6>g>)6>r)rrgW9؎>gW9؎>rirv)rrg6_>g6_>rig__mul__)rrggrirv)rrg8Q?g8Q?)ri{_check_int_field)rrg!>g!>)ri_check_tzinfo_arg)rrgU>gU>r$)rrg O0k{>g O0k{>r&)rrg>qd>g>qd>rW)rrgHg>gHg>rinput)r}r}gS!>gS!>r)rrgbb>gbb>r)r@r@gk!>gk!>rl)ririg$>g$>r)r-r-gjWI>gjWI>rr)r-r-gU }>gU }>rj)iigY7?gY7?r)rrg9.5>g9.5>r)rrgkͤ>gkͤ>rv)rrg,D?g,D?)rrismodule)rrg'n??g'n??r)rrgB~>ga?)rrx_type_modify_decl)rrgbb{D ?gbb{D ?ri2_fix_decl_name_type)i i g؝f7?g؝f7?r)iig&b(D?g&b(D?)rr)iig)vf?g)vf?)ri6length_is_unknown)rrg:C>g:C>)riB get_typecache)rrg/W '>g/W '>ri_internal_parse)rrgC5.Zi>gC5.Zi>ri _parse_decl)rgoj볘?goj볘?ri*parse_type_and_quals)rrg1!'>g1!'>)ri@_extract_quals)iigAqS%?gAqS%?riL_get_type_pointer)iigbԦ!?gbԦ!?r)i i gÌ.C?gÌ.C?r/)r1r1g ,>g ,>ri _as_func_arg)iig7J ?g7J ?rD)r>r>g0Cs>g0Cs>r )rRrRgO,FA>gO,FA>rSirv)rrg: >g: >)r r _type_check)rg/>@?g/>@?r)rCrCg9?>?g9?>?r _subs_tvars)rrgI>gI>r)rrg8>g8>r i[r)rMrMg_)tߗ>g_)tߗ>r)rfrfg7'E>g7'E>r ir)rrgd#ws>gd#ws>)r i__eq__)rrg!a KF>g!a KF>)r iy )rrg[[{>g[[{>r)rrgrs+>grs+>r)r@r@gQ};>gQ};>r{)r}r}gA#>gA#>)rXr _checkLevel)rrgv_>gv_>rXi getLogger)rrgI^qG>gI^qG>r5)rrgQҎ>gQҎ>rn)r-r-g ]c>g ]c>r))rrgW E>gW E>rN)r-r-g>!ky>g>!ky>rrr!)rrgqf>gqf>r)r@r@gNs>gNs>rb)iigIgE,2K>r)rrgwvG?gwvG?rV)r1r1g|>g|>rrv)iig ؿ?g ؿ?r)rg?g?rr_generate_doc_dispatch)rrgSY?gSY?rr{rv)rRrRga-%hm>ga-%hm>r)i.i.ge7^\??ge7^\??r)i:i:g;7?g;7?r)rGrGg%֦?g%֦?rrrequire_version)r-r-g(/>g(/>rr)seed)rrgoẳ>goẳ>r)rrgDhGF>gDhGF>r)rrggr)rrgĻo>gĻo>rrG_typeof_locked)rrgyHc>gyHc>rr?typeof)rrgI>gI>rrLnew)rrgjR>gjR>ri%cast)rrg~(eE>g~(eE>ri$_load_backend_lib)rrgc>gc>r)rrg>7?g>7?r)rrg3ܫOl>g3ܫOl>rr)iigo7Y?go7Y?rr}rv)rrgzc3>gzc3>)ri fix_flags)rrgxt[>gxt[>r)rrgQT_>gQT_>rf)ririgo' b>go' b>rgi!r.)ixixg:wM:?g:wM:?r)r`r`g[ i?g[ i?r2)iig2b5?g2b5?rA)r`r`gF?gF?r%i_create_)r`r`gɜ1C?gɜ1C?r%iJr)rrg>|p>g>|p>r%i/ _missing_)rrgl=ݣ>gl=ݣ>r%iT__or__)r-r-gY) >gY) >r%iZ__and__)rrgR-I?gR-I?)rciSisstring)rrg9oK?g9oK?)ryi lru_cache)rrg-t>g-t>rHi get_loader)rHrHg; Q>g; Q>rG)rrgƊhN>gƊhN>r)rrg#$v>g#$v>rr simplefilter)rrgEx>gEx>r)rrgM#3>gM#3>rn)rrg">g">rq)r r gHw]>gHw]>)rr_get_sep)rgaCy+?gaCy+?r)rrgsh9>gsh9>ritabspath)rrgL̔>gL̔>r)rrgʔA{>gʔA{>r)rrgÍӑ >gÍӑ >!/usr/lib/python3.8/genericpath.pyr commonprefix)rrgǏ˔ >gǏ˔ >r)ititgv4?gv4?rrv)r r gΆP3'>gΆP3'>r)rrg|.<>g|.<>r2)rrgavt>gavt>)rOi _sanity_check)iEiEg/30?g/30?r)i|i|gtǁ?gtǁ?r_iB_compile_bytecode)rUrUg횋_ ?g횋_ ?r_iget_data)r~r~g3nv4 ?g3nv4 ?0)rr%)iigsAZY^6?gsAZY^6?{r)r-r-g|e>g|e>r )r r gR>)4>gR>)4>)r idruntime_checkable)r r gՙ,$>gՙ,$>rN)r-r-gl>gl>)rcrr)rrg @(?g @(?rV)r r g[\L?g[\L?)r%i_check_for_existing_members)r$r$g?g?r)r5r5g@?g@?r%i _get_mixins_)rPrPgL?gL?0)rr)r3r3g^)Ӂ?g^)Ӂ?{r)rrg?}>g?}>r)rrg.bQq>g.bQq>r_i__iter__)rrgg7{>gg7{>0)rr)i1i8gxF|-u?g`N{?{rjr3set_key)rrg m>g m>rjrdecrypt)rrgbnā>gbnā>rjr#encrypt)rrg\́>g\́>)ri _get_ttinfo)r-r-g:+>g:+>r)rrg-T>g-T>rt)iig#57?g#57?r)iigs:!?gs:!?r))rrgpmUм5>gpmUм5>rw)rrg꛵>g꛵>rB)rrgjWI>gjWI>)ri#name)rrg"`>g"`>r0)rrgy);>gy);>rR)rrgƊhN>gƊhN>rq)rrg3">g3">r)rrg#>g#>rw)r}r}gV>gV>r)rrgoả>goả>)rir)rrgkNu>gkNu>rl)rrgku>gku>r)rrgm#>gm#>riTp_init_declarator_list)r;r;gZd5(?gu:ʧ:?ri]p_init_declarator)r;r;gM (?gZ|9?riap_direct_xxx_declarator_3)r5r5g:$4 ?gn 5M?ri p_pointer)rg+u\#?gn" 35?rip_parameter_type_list)r1r1g$+?g~4Z&?r)rrg#d0?gߨPA?rip_parameter_declaration_2)r r gHV >gHV >rip_direct_abstract_declarator_3)rrg i>ge0s>ri p_assignment_expression)rrg&>gO*D?riAp_conditional_expression)rrgS$Ȍ>g&?riJp_binary_expression)rrg4oI>g"ʉ?)r__len__)iigOP2?gOP2?r[)iig Q"?g Q"?r)i6i6gOo?gOo?r/)rrg1g>g1g>r)rrgS.>gS.>)r r_check_generic)rrg@>g@>r)rrg!>g!>r')r r g;2r>g;2r>r)rMrMgXw1>gXw1>r)rrgz >gz >r)rrgpŷ>gpŷ>rXidebug)rrgClf>gClf>rE)rrgC'e>gC'e>rZil notify_all)rrgWzߋ>>gWzߋ>>r)rrgBu)>gBu)>r.)rrg )>g )>r)rrg~l~; >g~l~; >r)rrgԻ;U>gԻ;U>)rrgroups)iigW*= %?gW*= %?)rr)iigdk1O9?gdk1O9?)ritell)ivivgvg0Qů>r))rrgDH?gDH?r)iigËb"?gpE4J/+?r)iig_A?g|#sQ?r)rrgmk>gmk>r)rrg5|;$ݸ>g5|;$ݸ>r)rrgd"T>gd"T>)r%rrz)rrg&FY?g&FY?)r%r  _is_sunder)rrgF?gF?r)rPrPg]>g]>r-)iDiDg>?g>?rb)iiges߮,?ges߮,?rc)rrg?Yuy>g?Yuy>rg)rfrfgƷc)>gƷc)>r)rrgdeH`h>gdeH`h>rci_simple)rrg`O7.?g1n,@?)rci_generate_overlap_table)r}r}gl=>gl=>r)rrgk`>gk`>r)rQrQg'LL>g'LL>r)rrg{*=>g{*=>r9icallback)rrg/q>g/q>r7)rrg >g >r=)rrgkhG>gkhG>r)rrg2E2>g2E2>r)iigu%l#?gu%l#?rS)iig++&?g++&?r_i _classify_pyc)r g4wڲ-?g4wڲ-?r_iQget_code)rrg+#VY>g+#VY>0)rr)iig³#?g³#?{rrUgetwidth)iig+/ؑ#?g+/ؑ#?r)rrgX >gX >0)rr)iig9-1_?g9-1_?{r )iig7)^?g7)^?r)r5r5g䩚b?g䩚b?r)rrgPNA<>gPNA<>0)rr)r>rg㉚?g㩘aV?{r)rrgrm>g)y?)r9l __enter__)rrgcl}>gYKhFK?)r9u__exit__)rrgP3bn?g2/9N;@?0)rr)i i gņ};?gņ};?{rrrv)rrg+ |;>g+ |;>r&)rrgAy>gAy>r))rrgm>gm>r)i{i{gBi絋8?gBi絋8?0)rr)rrgҶ?gҶ?{r)rrgҶ?gҶ?0)rr )rMrMgٍ6>gٍ6>{r$)rMrMgٍ6>gٍ6>0)rr")iig݄?g3a?{r")rrg"&T>g"&T>r)rrg#s2_d>g#s2_d>r)r*r*g\$$?g\$$?)riLrv)r3r3gx.<>gx.<>r)rrgȳ.>gȳ.>)rr_create_opt_rule)rHrHgKN6>gKN6>r)rrg~̜h6?g~̜h6?r))rrgG)R>gG)R>r)i i g2R?g2R?r)rrg#u| >g#u| >rb)rg?ԫc:?g?ԫc:?rr_setup_methods)i i g׫tu?g׫tu?rS)r}r}gbKj3?gbKj3?r)iigFQ?gFQ?r)iFiFgKjt?0B?gKjt?0B?r)iigeT^??geT^??)rrUr9)rrg,>g,>r)r1r1gm`ڈC ?gm`ڈC ?r)r r gɜ,^>gɜ,^>r)rMrMgȮ>gȮ>rA)r`r`gK`.:=%?g4ۂM?rx)iigF1?gF1?rQ)rbrbgkn9?gkn9?0)rr!)rrgélB?gélB?{r[)rrg`>g`>r)rrg-0=2>g-0=2>r)r$r$gboA?gboA?r)rrg]TH>g]TH>0)rr)rrgm>g-?{r)rrgm>g-?0)rr)r r g{%t>g{%t>{ra)r r g{%t>g{%t>0)rr)rrg&e_m>g&e_m>{r)rrg&e_m>g&e_m>0)rr)rrg\{s>g\{s>{r9ir)rrg\{s>g\{s>0)rr)rrg ]c>g ]c>{r)rrg ]c>g ]c>0)rr)rrgtA>gtA>{r)rrgU r>gU r>r)rrg>g>0)rr)rrgd7i?gd7i?{r)rrg! wC>g! wC>r)rrg-#)rPrPg-P(?g-P(?{r)rrg ͋%B>g ͋%B>)rrr)r;r;g?i&?g?i&?0)rr,)r)g+!?g+!?{r)rrgH>gH>)rir)rrg-t>g-t>)rir)rrgJ'XX>gJ'XX>0)rr.)rrgaE?gN߯%F?{r)rrgaE?gN߯%F?0)rr/)rrg%֦?g%֦?{rSir)rrg\XtA6>g\XtA6>r)rrgmf$?gmf$?0)rr/)r.gIlr?gIlr?{r )rrg78?g78?r)rrgP?gP?r)r/gr?gr?0)rr#)i| i| gg_!MN?gg_!MN?{r5)iigpBhיO1?gpBhיO1?rOr_get_module_lock)iig΁9?g΁9?)rOi_r)iWiWgË1?gË1?0)rr#)i| i| gz'noL?gz'noL?{r5)iigz(?gz(?r1)iig6?g6?)rOicr)iWiWg5?g5?0)rr%)rBrBg+-Xp`?g+-Xp`?{r)rBrBg+-Xp`?g+-Xp`?0)rr!)rrgT0t2?gT0t2?{rOirL)rrgT0t2?gT0t2?0)rr )i i gU)3?gU)3?{)rOi rL)i i gU)3?gU)3?0)rr%)rrg5:?g Ra¥?{r)rrg5:?g Ra¥?0)rr#)rrgCMf3?gb%e?{r)rrgCMf3?gb%e?0)rr#)rBrBgw+ X?gw+ X?{r)rBrBgw+ X?gw+ X?0)rr')rUrUg=Bsr1?g=Bsr1?{r)rUrUg=Bsr1?g=Bsr1?0)rr*)r@r@gw/VH?gw/VH?{rZiBstart)r@r@gw/VH?gw/VH?0)rr')i0i0g>|G?g>|G?{ri rv)rrg \M>g \M>rrrrv)rrg[,!>g[,!>rrr5rv)rrg]+-eq>g]+-eq>r)rrgR>gR>r)rrgR>gR>r)rrg#f>g#f>r)rrg/ >g/ >rZiwait)r@r@g$Iuܶ>g$Iuܶ>rZirv)r r g|n>g|n>r)rrgL̔>gL̔>r)rrg创>g创>)rOrrv)iig6^hF?g6^hF?0)rr#)i7i7gbK?gbK?{)rZi _set_ident)rrg->g->)rZicurrent_thread)rrgs~c>gs~c>)rOracquire)iig!p(9?g!p(9?)rOgrelease)iig:$G>?g:$G>?0)rr')rrgA/b>gA/b>{)rZi_set_native_id)rrgA/b>gA/b>0)rr')rrgcӖb>gcӖb>{r)rrgcӖb>gcӖb>0)rr-)r&r&g,>g,>{)rXr _acquireLock)r&r&g,>g,>0)rr-)r&r&g^ދK/>g^ދK/>{)rX _releaseLock)r&r&g^ދK/>g^ދK/>0)rr,)9rUg T?g T?{r)r}r}gЦ#>gЦ#>)rZi_acquire_restore)r@r@gVu*>gVu*>)rZi _is_owned)r r g'>g'>rC)rRrRg*6R?g*6R?r)rrg?>g?>ri_get_cached_btype)rMrMg=/>g=/>0)rr,)r r g?4?s ?g?4?s ?{r)r}r}gaN[>gaN[>)rZr _release_save)r@r@gi:I>gi:I>rZiUnotify)rrgg?gg?0)rr.)r r gM7w^>gM7w^>{)rZr)r r gM7w^>gM7w^>0)rr-)r r ggV!|K>ggV!|K>{)rZrr)r r ggV!|K>ggV!|K>0)rr)iig92m?g92m?{)rrexists)r r gYxa4?gYxa4?rr isfile)rrgF0ZT%?gF0ZT%?)r_r1 _path_stat)iigFq?gFq?0)rr)rrgo!>go!>{r)rrgo!>go!>0)rr)r r g2IYi^?g2IYi^?{r)r r g2IYi^?g2IYi^?0)rr)rrgy?gy?{rrislink)rrgy?gy?0)rr)rrgҺN>gҺN>{rXiuname)rrgҺN>gҺN>0)rr()r-r-gk:>gk:>{r)rrg*8@Y>g*8@Y>r)rrgLjZ>gLjZ>r)rrgne>gne>0)rr)rrguy?guy?{)rSi _try_wait)rrguy?guy?0)rr)rlrlg(GW?g(GW?{rH)rrg`?g`?r)rrgV?gV?0)rr)rrgr?gr?{r)rrg3sK?g3sK?)r9i} _exit_wrapper)rrg \Y3)>g \Y3)>0)rr)rrg+l?g+l?{r)rrg+l?g+l?0)rr)rrg(mxp?g(mxp?{rSi _get_handles)rrgеP?gеP?r)rrgt"*>gt"*>0)rr#)rrgP# k>gP# k>{rSi_handle_exitstatus)rrgP# k>gP# k>0)rr!)rrgDhGF>gDhGF>{ry)rrgDhGF>gDhGF>0)rr#)rrgrA>grA>{ry)rrgrA>grA>0)rr)rrg/2Җ>g/2Җ>{r)rrg/2Җ>g/2Җ>0)rr')rrg1 >g1 >{r"iset_inheritable)rrg1 >g1 >0)rr)i`i`g>=3?g>=3?{rw)rrg-`>g-`>rB)rrg謹>g謹>r)rrg>qd>g>qd>rq)r r g58߀}>g58߀}>)rrnormcase)rrgjR>gjR>r)rrgjM>gjM>r)]rgNǤ>gNǤ>r7)rrgWrz(>gWrz(>r:)r-r-gNXM:>>gNXM:>>r=)rrg#Ⱥ>g#Ⱥ>r)rrg 1`q>g 1`q>r)rrg1O>g1O>rirealpath)rrg˔/Z>g˔/Z>r)rrg$ RD>g$ RD>r)iig"?g"?r_iuspec_from_file_location)rrgNĢ?gNĢ?0)rr)rrg:e?g:e?{r^)rrg:e?g:e?0)rr)rUrUgM?gM?{r)rUrUgM?gM?0)rr)rrg.yG)?g.yG)?{ro)rrg)+?g)+?r)rrgv ?gv ?r)rrg$!0 ?g$!0 ?0)rr)r~r~gEO?gEO?{r)r~r~gEO?gEO?0)rr)rrg>g>{r)rrg>g>0)rr )rrgC—2>gC—2>{ri,rv)rrgC—2>gC—2>0)rr )rrgynV>g J?{)r-i getwriter)rrgynV>g J?0)rr&)rrgM]>gM]>{)r-i?r )rrgM]>gM]>0)rr )rrg;j2>g;j2>{rrsignal)rrg;j2>g;j2>0)rr#)rrg~ዲ[$>g~ዲ[$>{rr getsignal)rrg~ዲ[$>g~ዲ[$>0)rr')rrgL&k >gL&k >{rr3wakeup_on_signal)rrgL&k >gL&k >0)rr )r;r;gq@?gq@?{r+)r;r;gq@?gq@?0)rr$)rrgh?gfv4u)?{)r,r4register)rrgh?gfv4u)?0)rr))rrgV/x>g4?'?{)r,r __instancecheck__)rrgV/x>g4?'?0)rr))rrgѣdD!?g}O&?{)r,r8__subclasscheck__)rrgѣdD!?g}O&?0)rr)rrgf녧>gf녧>{rc)rrgf녧>gf녧>0)rr)rrg5V>g5V>{ri)rrg5V>g5V>0)rr0)r r g 0>g 0>{rC)r@r@g_ >g_ >)r9i_push_exit_callback)rrg!2o)>g!2o)>0)rr-)rrgh㈵>gh㈵>{r#)rrgh㈵>gh㈵>0)rr0)rrgg{r\)rrgg0)rr)rrg5 0?g5 0?{re)rrg5 0?g5 0?0)rr$)rrg[p>g[p>{rb)rrg[p>g[p>0)rr&)rrgsgs{r-)rrga~ϑZ>ga~ϑZ>rb)rrgClf>gClf>r)r-r-g >g >0)rr$)rrg g>g g>{rb)rrg g>g g>0)rr&)rrgEaJ6>gEaJ6>{r-)rrg6>g6>rb)rrg>g>0)rr&)iC iC g}a![?g}a![?{ri1token)iig[zY?g[zY?r)rrgi|>gi|>r)rgz=?\ ?gz=?\ ?rr _tokenize)r@r@gr >gr >0)rr$)iigfH?gfH?{r)iigfH?gfH?0)rr')rrgɴ>gɴ>{r)rrgɴ>gɴ>0)rr()iigx!|?gx!|?{rit_PPHASH)r$r$gH!?gH!?r)iig3+?g3+?r_)rrg~0O>g~0O>rgr(match)rrgFĿb&?gFĿb&?0)rr))rrgu(HO?gu(HO?{r)r}r}gZ#sN?gZ#sN?)rXivalidate)rrg]'>g]'>0)rr&)ivivgxt!?g:?{)rrb_remove_line_directives)r}r}g FB?g FB?)rrC_put_back_line_directives)r}r}gno;?gno;?r)r6r6gYE}gv?ggP7v?rgsub)rrg1'h']?g`DZj?0)rr*)r}r}gpnUY?gpnUY?{r)r}r}gpnUY?gpnUY?0)rr+)rrg#?g#?{r)r$r$gHLyB"?gHLyB"?rgfinditer)rrgcӖb>gcӖb>0)rr!)rrgs7Ѿ>gs7Ѿ>{r)rrgs7Ѿ>gs7Ѿ>0)rr%)rrgdNx/>gdNx/>{)!/usr/lib/python3.8/_bootlocale.pyrgetpreferredencoding)rrgdNx/>gdNx/>0)rr$)rrg8W>g8W>{r)rrg8W>g8W>0)rr()rrgdU]i?gdU]i?{r)rrgdU]i?gdU]i?0)rr)rrgUe>gUe>{r)rrgUe>gUe>0)rr)rrgj q>gj q>{r)rrgj q>gj q>0)rr)rrgڭxó>gڭxó>{r)rrgڭxó>gڭxó>0)rr8)rrg#>g#>{ri_datetime_to_timestamp)r-r-gP3bn>gP3bn>r)rrgN>gN>0)rr)rrgE)u>gE)u>{rAiXset_element_atime)rrgE)u>gE)u>0)rr")rrg vz>g vz>{rn)rrg vz>g vz>0)rr1)r@r@gx.Bg ?gx.Bg ?{r)r-r-g(.2>g(.2>)rprkenfold)rrgcl>gcl>rJr_datetime_to_utc)rrgԠ>gԠ>0)rr4)rrg729>gZso!?{r)rrg729>gZso!?0)rr/)rrg 3>g 3>{rn)rrg%eޮ>g%eޮ>r)rrg𹍲>g𹍲>0)rr$)rrg[?g[?{r"i. socketpair)rrg[?g[?0)rr))rrg2o}?g2o}?{)r"i _real_close)rrg2o}?g2o}?0)rr-)rrg nA9>g nA9>{r)rrg nA9>g nA9>0)rr-)r@r@g7_6K>g7_6K>{r)r-r-g'4P>g'4P>r)rrgo>go>0)rr2)rrgC:>gC:>{r)rrgC:>gC:>0)rr%)iigֲ"_?gֲ"_?{rkr b64decode)iigֲ"_?gֲ"_?0)rr%)r-r-g>g>{)rkr b64encode)r-r-g>g>0)rr")rrgK?Ql?gK?Ql?{rirv)rrgK?Ql?gK?Ql?0)rr)r-r-g.B >g.B >{r)rrg6_Cu>g6_Cu>r)rrg34>g34>r)rrg#Ⱥ>g#Ⱥ>0)rr )iig}di.?g}di.?{r)rrgz g>gz g>r)rrgҴ>gҴ>r)rrg-ZU>g-ZU>r )rErEg#?g#?r)iigkkф&?gkkф&?0)rr,)rrg8babe?g8babe?{r)rrg8babe?g8babe?0)rr()rrgPԠ?gPԠ?{r)rrgPԠ?gPԠ?0)rr&)rrg>g>{ri_find_last_transition)rrg>g>0)rrr~)rrggrAس>ggrAس>{rrr)rrggrAس>ggrAس>0)r=rrv)rrgj|(?g$hݣ?{r)rrgj|(?g$hݣ?0)r=rassemble_listbox)rrgz[R٣?gs=?{r)rrgz[R٣?gs=?0)r=r@ set_headerbar)rrgz:?g.a:?{r=rr)rrgz:?g.a:?0)r7rHDatabaseSettingsDialog)rrg5y>gDFS?{rrr0)rrg5y>gDFS?0)r=rXbind_accelerator)rrgd;:?g7}R?{r=r@r)rrgpjlu6?ghYQ?rOrk initialize)rrg 2.?gMb?0)r=r;set_browser_headerbar)rrgCn74?g@Lq>=d?{r=iJ switch_page)rrgCn74?g@Lq>=d?0)r=rshow_page_of_new_directory)rrgl—?g,?{r)rrgl—?g,?0)r=iBadd_page)rrgxK\n?g&sn?{r=rr)rrg; J]?g; J]?rOr_prepare_search_page)rrg\_?g Nqf`?0)r=iJr)rrg$nE?gS`y?{r)rrg$nE?gS`y?0)r=imcurrent_element)rMrMg(3>g(3>{r)r@r@gh3>gh3>r)rrgʔ>gʔ>r=iuget_current_page)r@r@g.>g.>r=idestroy_scheduled_stack_page)rrgpۣ10>gpۣ10>0)r=iqr)rrg+WG>g+WG>{r)rrgۮ#P>gۮ#P>r)rrgWzߋ>>gWzߋ>>0)r=iur)r@r@gPBb?gD 0P?{)rMr action_bar)rrgM,bk>gBR ?rMrheaderbar_title)rrg## ?gc@?)rMUheaderbar_selection_button)rrgj/?g?R[:?0)r=ir )rrgw4>g/;?{r)rrgw4>g/;?0)r=igroup_instance_creation)rrg7'E>g7'E>{rrrun)rrg7'E>g7'E>0)r=ir)rrgTI*\?gC@ @{r)rrgTI*\?gC@ @0)r=ihstart_database_lock_timer)rrgD ?g40|jC?{r)rrgD ?g40|jC?0)r=is cancel_timers)rrg5ż>gĝ\!?{r)rrg5ż>gĝ\!?0)r=istart_save_loop)rrg֏>gR;{B?{r)rrg֏>gR;{B?0)r=ishow_loading_indicator)rrg,$d?gt}3h?{r)rrg,$d?gt}3h?0)r=iremove_loading_indicator)rrg\ݳB?g\ݳB?{r)rrg\ݳB?g\ݳB?0)r=iregister_dbus_signal)rrgoB?gdW^?{r)rrgoB?gdW^?0)r=iunregister_dbus_signal)rrg'Ag]B?gǔxB?{r)rrg'Ag]B?gǔxB?0)r=r>r?)rrg2E?g^Ӭ&?{r)rrg2E?g^Ӭ&?0)r=rr~)rrgː*?gZp+?{r)rrgː*?gZp+?0)r3r rv)rrgI^qG>gI^qG>{r)rrgI^qG>gI^qG>0)r3rlregister_custom_events)rrg9w>gcՀ>)?{r)rrg9w>gcՀ>)?0)r3_on_button_released)rrge ?ge ?{r)rrge ?ge ?0)r3rCustomKeypressHandler)rrgh>gh>{r)rrgh>gh>0)r3rr~)rrg)g_s?g[?{r)rrg)g_s?g[?0)r5r PathbarButton)rrgnO5|>gnO5|>{r)rrgnO5|>gnO5|>0)r5rr~)rrgID>gzt@?{r)rrgID>gzt@?0)r7rr~)rrg\K ?gσz`~q?{r)rrg\K ?gσz`~q?0)I/usr/local/lib/python3.8/site-packages/passwordsafe/password_generator.pyrr~)rrgxas>g-Ћ]?{r)rrgxas>g-Ћ]?0)r9rPrv)rrg@/>g@/>{r)rrg@/>g@/>0)r9r EntryPage)rrgs>gs>{r)rrgs>gs>0)r9rr~)rrgȨ?gҸDc?{r)rrgȨ?gҸDc?0)K/usr/local/lib/python3.8/site-packages/passwordsafe/passphrase_generator.pyrr~)rrg0;k >gV(R<>{r)rrg0;k >gV(R<>0)r;r@HistoryEntryBuffer)rrg>g>{r)rrg>g>0)r;rHistoryTextBuffer)rrg𹍲>g𹍲>{r)rrg𹍲>g𹍲>0)r;rLogic)rrg%m>g%m>{r)rrg%m>g%m>0)r;rr~)rrg"3>gz-V|S?{r)rrg"3>gz-V|S?0)r=r@ NotesDialog)rrg"_y7?g"_y7?{r)rrg"_y7?g"_y7?0)r=rr~)rrg1Ap>g 2iV-;?{r)rrg1Ap>g 2iV-;?0)r?rPasswordGeneratorPopover)rrgs& ?gg7`{Y?{r)rrgs& ?gg7`{Y?0)r?rr~)rrg.HLr ?gAWr?{r)rrg.HLr ?gAWr?0)rArrv)rrg/p2׍j-?gJyi?{r)rrg6<?g+h̷MW?r)rrgf$?gis[?0)rAr ScrolledPage)rrgy S>gtSY"?{r)rrgy S>gtSY"?0)rArr~)rrgLg M?{r)rrgLg M?0)rnrassemble_entry_row)iig|ܘ?gt)O?{rm)iig|ܘ?gt)O?0)rnr}rv)iig5*O?gj@{r)iig5*O?gj@0);/usr/local/lib/python3.8/site-packages/passwordsafe/icon.pyr get_icon_name)iigQݖ]?gQݖ]?{rnrr')iigQݖ]?gQݖ]?0)rnrEntryRow)rrgV?gV?{r)rrgV?gV?0)rnrr~)rrgS?gsT?{r)rrgS?gsT?0)r(rr~)rrg"b>gt;l>{r)rrg"b>gt;l>0)rDrrv)rrgP# k>gP# k>{r)rrgP# k>gP# k>0)rDr GroupPage)rrg<2)Eo>g<2)Eo>{r)rrg<2)Eo>g<2)Eo>0)rDrr~)rrg?p>g%ɦn?{r)rrg?p>g%ɦn?0)rFrGroupRow)rrgw !>gw !>{r)rrgw !>gw !>0)rFrr~)rrgCie~>geF4?{r)rrgCie~>geF4?0)rHrrv)rrg66w.k?g!P5.?{r)rrg66w.k?g!P5.?0)rHrlassemble_pathbar)rrg'K?gdR#E?{rHrrv)rrg'K?gdR#E?0)rHr/first_appearance)rrgZ<h2?g㑲$ąA?{rHrlr.)rrgZ<h2?g㑲$ąA?0)rHrset_active_style)rrg}%?gp?'?{rHr/r0)rrg}%?gp?'?0)rHrPathbar)rrgS3(>gS3(>{r)rrgS3(>gS3(>0)rHrr~)rrg ?gYzS?{r)rrg ?gYzS?0)rJrPropertiesDialog)rrgT#h>gT#h>{r)rrgT#h>gT#h>0)rJrr~)rrg3">g[Z?{r)rrg3">g[Z?0)rLrr~)rrga# >gU?{r)rrga# >gU?0)rLr@ReferencesDialog)rrg)>g)>{r)rrg)>g)>0)rMrrv)rrgz >gz >{r)rrgz >gz >0)rMrr )rrgeW4G>g Ϸ+"?{r=r;r)rrgeW4G>g Ϸ+"?0)rMrr )rrg6%Q[4?gRzg=$+>r7)rrgbX?g T"0?0)rMr@ ResponsiveUI)rrgyR4>gyR4>{r)rrgyR4>gyR4>0)rMr r)rrg!?g4@?{r)rrg-N{32?gx}â%?r7)rrgnh?gG S&6?0)rMrr~)rrg#}{<>gә2rAv?{r)rrg#}{<>gә2rAv?0)rOrrv)rrg".&>g".&>{r)rrg".&>g".&>0)rOrkr)rrg4=r?g@ם?{r)rrg4=r?g@ם?0)rOrr)rrg//?gq?{r)rrg//?gq?0)rOrBSearch)rrg5Kz>g5Kz>{r)rrg5Kz>g5Kz>0)rOrr~)rrg_0Jߊ?gt?{r)rrg_0Jߊ?gt?0)rQrPrv)rrg6,>g6,>{r)rrg6,>g6,>0)rQrlr)rrgt=>?gv&?{r)rrgt=>?gv&?0)rQr& SelectionUI)rrg9cm2>gWB.?{r)rrg9cm2>gWB.?0)rQrr~)rrg-E?gq3?{r)rrg-E?gq3?0)rSr@ ErrorInfoBar)rrgܟ>gܟ>{r)rrgܟ>gܟ>0)rSrr~)rrg7&J!>gOX?{r)rrg7&J!>gOX?0)rUrr~)rrg@F6>gB?{r)rrg@F6>gB?0)rUr SettingsDialog)rrgqA>gqA>{r)rrgqA>gqA>0)>/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/kdbx4.pyrr~)rrg2g8?g( ~U?{r)rrg2g8?g( ~U?0)9/usr/local/lib/python3.8/dist-packages/argon2/__init__.pyr-r~)rrg\ ?g[Qq?{r)rrg\ ?g[Qq?0)rVr Argon2Error)rrg;^>g;^>{r)rrg;^>g;^>0)rVrHVerificationError)rrg[f>g[f>{r)rrg[f>g[f>0)rVr}VerifyMismatchError)rrgD6>gD6>{r)rrgD6>gD6>0)rV HashingError)rrgRISĮ>gRISĮ>{r)rrgRISĮ>gRISĮ>0)rVr InvalidHash)rrg{f>g{f>{r)rrg{f>g{f>0)rVr-r~)rrgXӁ`>g:De(?{r)rrgXӁ`>g:De(?0)rXr/Type)rrgr >g^VMT?{r)rrgr >g^VMT?0)rXrr~)rrgW8 ?gD3kYJT?{r)rrgW8 ?gD3kYJT?0)8/usr/local/lib/python3.8/dist-packages/argon2/_legacy.pyrr~)rrgg ?ge]S?{r)rrgg ?ge]S?0)rZrPasswordHasher)rrgmA>gmA>{r)rrgmA>gmA>0)rZrr~)rrg¼?g'^qE?{r)rrg¼?g'^qE?0)r\r Parameters)rrg̴>g̴>{r)rrg̴>g̴>0)r\r-r~)rrg#מp?g_ X?{r)rrg#מp?g_ X?0)1/usr/lib/python3/dist-packages/pykeepass/xpath.pyrr~)rrgTx{>gTx{>{r)rrgTx{>gTx{>0)rArtrg)rrg |>gUVw?{)rAicheck_is_group)rrg |>gUVw?0)rAr{ri)iig'=?gh~A?{rm)iig'=?gh~A?0)rAi rk)iig 2^z?gA?{rm)iig 2^z?gA?0)r^r ColorEntryRow)rrg%,O>g=>{r)rrg%,O>g=>0)r^rr~)rrgOn ?g-¢?{r)rrgOn ?g-¢?0)rAiXr)rrgը1>gﺧ@`?{r)rrgը1>gﺧ@`?0)rAiget_root_group)rrgxe7>g;`G?{r)rrghEa>gF7?r)rrg(U>g{7?0)rAirK)rrgXbk>g1(7x?{r)rrg R<>gPDg?r)rrgr >gv^h?0)rArBrC)rrg,epW7?gr!e[?{r)rrg,epW7?gr!e[?0)rArr~)rrg*Ӛr?g}??{r)rrg*Ӛr?g}??0)r^rColor)rrg#Q0>gC"?{r)rrg#Q0>gC"?0)r^r  ColorButton)rrg #?gxDP ?{r)rrg #?gxDP ?0)A/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/__init__.pyrr~)rrg?8>guG?{r)rrg?8>guG?0)=/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/kdbx.pyrr~)rrgo)E ?gW#b?{r)rrgo)E ?gW#b?0)>/usr/lib/python3/dist-packages/pykeepass/kdbx_parsing/kdbx3.pyrr~)rrg[FD?g E?{r)rrg[FD?g E?0)r`rBHeaderChecksumError)rrgt跛>gt跛>{r)rrgt跛>gt跛>0)r`rCredentialsError)rrghJ)5>ghJ)5>{r)rrghJ)5>ghJ)5>0)r`r PayloadChecksumError)rrg*#&,>g*#&,>{r)rrg*#&,>g*#&,>0)r`rrv)rrg.:j>grqQ?{r>rr~)r-r-g)R>ga삖>rRrr~)rrg.Tm>gAn>0)r`rP DynamicDict)rrgFX>gFX>{r)rrgFX>gFX>0)r`rra)rrgd5>gd5>{r)rrgd5>gd5>0)r`r3ra)rrg-z>gvda?{rV)rrg:`>g̋L ?rW)rrgM>g!=$(?0)r`rXML)rrgܟ>gܟ>{r)rrgܟ>gܟ>0)r`rrv)rrg%|C>gٵO?{r`rL Unprotect)rrg%|C>gٵO?0)r`rUUnprotectedStream)rrg4>g4>{r)rrg4>g4>0)r`ARCFourVariantStream)rrg>g>{r)rrg>g>0)r` Salsa20Stream)rrgZ8_ٱ>gZ8_ٱ>{r)rrgZ8_ٱ>gZ8_ٱ>0)r`ChaCha20Stream)rrg 4PSȱ>g 4PSȱ>{r)rrg 4PSȱ>g 4PSȱ>0)r`rLr[)rrgYt:>g,?) ?{rV)rrgҼ>gӡf ?rW)rrgg2>g?0)r`i Concatenated)rrgo7>go7>{r)rrgo7>go7>0)r`iDecryptedPayload)rrgd%>gd%>{r)rrgd%>gd%>0)r`i* AES256Payload)rrgNz>gNz>{r)rrgNz>gNz>0)r`i/ChaCha20Payload)rrg{b >g{b >{r)rrg{b >g{b >0)r`i4TwoFishPayload)rrg&i>g&i>{r)rrg&i>g&i>0)r`i9 Decompressed)rrgPП>gPП>{r)rrgPП>gPП>0)r`rr~)rrgxCf#?gf-g?{r)rrgxCf#?gf-g?0)rdrChaCha20Cipher)rrgh>gh>{r)rrgh>gh>0)rdrPr~)rrgE˫?gn7b?{r)rrgE˫?gn7b?0)rfr Salsa20Cipher)rrg{D>g{D>{r)rrg{D>g{D>0)rfr r~)rrgQo^>g^i?{r)rrgQo^>g^i?0)rhr BlockCipher)rrg n>g n>{r)rrg n>g n>0)rhr~CBC)rrg1MS>g1MS>{r)rrg1MS>g1MS>0)rhipython_Twofish)rrg+c>g+c>{r)rrg+c>g+c>0)rhr r~)rrg-S8'?gia?{r)rrg-S8'?gia?0)rjrirv)rrg|4[ȍ>gZ?{ri)rrg|4[ȍ>gZ?0)rjr3r)rrg^ti}?g W!?{)rjrirv)rrg^ti}?g W!?0)rjrr)rrg7TPr>gg]5?{ri)rrg7TPr>gg]5?0)rjr#r)rrgL3g>g? W7?{ri)rrgL3g>g? W7?0)rjrTwofish)rrgǗ]>gǗ]>{r)rrgǗ]>gǗ]>0)rjrotr32)rCrCgˤX?gˤX?{rji:r)rrgGH>gGH>rjibr)rrgNÙZ>gNÙZ>0)rjrotl32)prugm?gm?{rjir)r1r1goR?goR?rq)rrge>ge>rr)rrgvg 9>gvg 9>0)rjrrv)rrg[\?g[\?{r)rrg[\?g[\?0)rjrTWI)rrg1r[>g1r[>{r)rrg1r[>g1r[>0)rjrbbyte)i@'i@'g衁Zs?g衁Zs?{)rjr gen_mk_tab)i i g4hUo?g4hUo?)rjr h_fun)i@i@g S*I?g S*I?rq)r{gL>/?gL>/?rr)r{r{gP؅쪪?gP؅쪪?0)rjqp)iigl Yd?gl Yd?{)rjgen_qtab)iigl Yd?gl Yd?0)rjr~r)rrg` JsM?g7k?{rv)rrg` JsM?g7k?0)rjrgen_mtab)rrgoj?goj?{rv)rrgoj?goj?0)rjrry)rrg%?gGŇ?{rv)rrg%?gGŇ?0)rjr rz)r1r1gX?gbOb?{rv)r1r1gX?gbOb?0)rjimds_rem)rrg%.?g%.?{rv)rrg%.?g%.?0)rjir)rrg2?g!ٕ?{r)rrg2?g!ٕ?0)rji:r)rrg Vz,?gç]15?{r)rrg Vz,?gç]15?0)rjibr)rrgH+?gHh4?{r)rrgH+?gHh4?0)rjrkr~)rrg3m!?g+7U?{r)rrg3m!?g+7U?0)A/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/Padding.pyrlr~)rrgx>gx>{r)rrgx>gx>0)rir#)rrg;>g릫s9 ?{ro)rrg;>g릫s9 ?0)risr)rrgm͸>gm͸>{r )rrgm͸>gm͸>0)rir )rrggJ?gKQ?{ro)rrggJ?gKQ?0)rir)r-r-gN`J>g~g9q>ri  is_ambiguous)rrg创>g创>ri(_resolve_ambiguous_time)rrgk>gSy{?0)rir)r@r@g/2,>gwI$>{ri _find_ttinfo)rrgm#>gCYB>rl)rrgIך>gIך>r)r-r-g>gu0)rir)rrgvfiD>gJMC?{)ri5 utcoffset)rrgvfiD>gJMC?0)rirm)rrgJFz>g.?{rrr)rrgJFz>g.?0)ri r)rrg LK>g1O?{rl)rrg-n<>gm-a7'>r)rrg?Wxbx>gg >0)ri(r)rrg(Vʑ>ggy?{r)rrg(Vʑ>ggy?0)ri5r)rrgxo>gz ?{r)rrgxo>gz ?0)ritzfile)rrgbn,eo>g[>{r)rrgbn,eo>g[>0)rijtzrange)rrgg{r)rrgg0)ri tzstr)rrgJV>gJV>{r)rrgJV>gJV>0)ri_tzicalvtzcomp)rrgS.>gS.>{r)rrgS.>gS.>0)ri _tzicalvtz)rrg)`@>g5,2>{r)rrg)`@>g5,2>0)ritzical)rrg}s>g}s>{r)rrg}s>g}s>0)ri rv)rrgZķ}}>gbdV>{rl)rrgZķ}}>gbdV>0)rir)r-r-g~{s ?g:`OY?{r)rrgeЏRt?gH~Y?r)rrgecU>gP%@>0)ri6rp)rrgً ?g W?{r)rrgً ?g W?0)ri GettzFunc)rrgumD7>gumD7>{r)rrgumD7>gumD7>0)rirm)rrgL[ _>g먋?{rn)rrgL[ _>g먋?0)rir)r-r-gL>gs ?{r)rrgNV >gԐN2>r)rrg>g8# >0)ri_get_supported_offset)rRrRg2S>g2S>{r )rRrRg2S>g2S>0)rrr~)rrg̞*l%?g.ӂYi?{r)rrg̞*l%?g.ӂYi?0)rprtzname_in_python2)rrgSB>gSB>{)rir)rrgosԭ>gosԭ>)rir)rrg`Ⱥ>g`Ⱥ>)rpi  tzrangebase)rrgPd>gPd>rrtzutc)rrgxԣ>gxԣ>rr]tzoffset)rrgӋ5>gӋ5>)rtzlocal)rrgjR>gjR>0)rprkr)rrg8ͧ>g>{rl)rrg8ͧ>g>0)rpr]_validate_fromutc_inputs)r-r-gCUM>g z:Jj?{)rprs_tzinfo)rrg0>g`ma>r)rrg8š>g e>r)rrgo&>g[\L>0)rpr$r%)rrgLV>g_>{r)rrgLV>g_>0)rprsr)rrgrƪ>gmQ4?{r)rrgrƪ>gmQ4?0)rpi r)rrg >gW[-H>{r)rrg >gW[-H>0)rprr~)rrg={>g~#?{r)rrg={>g~#?0)rrrrv)rrgE2>gE2>{r7)rrgE2>gE2>0)rrrr)rrg p^>g p^>{rn)rrg p^>g p^>0)rrr _TzSingleton)rrg(&e&>g(&e&>{r)rrg(&e&>g(&e&>0)rrrB _TzFactory)rrgq:>gq:>{r)rrgq:>gq:>0)rrrrv)rrg{/+Q>g|?y_b ?{r7)rrg{/+Q>g|?y_b ?0)rrr _TzOffsetFactory)rrguj>guj>{r)rrguj>guj>0)rrr5rv)rrg%mdr>g+;>]>{r7)rrg%mdr>g+;>]>0)rrr3 _TzStrFactory)rrgoẳ>goẳ>{r)rrgoẳ>goẳ>0)rrrr~)rrg%r>gD# ?{r)rrg%r>gD# ?0)1/usr/lib/python3/dist-packages/dateutil/tz/win.pyrr~)rrga2>gpG$?{r)rrga2>gpG$?0)rtr} _takes_ascii)rrg>φ>gR-?{rtr isoparser)rrg>φ>gR-?0)rtrrv)rrg肸zg>g肸zg>{rs)rrg肸zg>g肸zg>0)rtrr)rrgH۫\>gdz)D?{r)rrgH۫\>gdz)D?0)rtrr~)rrg@>gHPF?{r)rrg@>gHPF?0)rur-rT)rrgrԎƪ>grԎƪ>{r)rrgrԎƪ>grԎƪ>0)rurrU)rrg{UMa>g{UMa>{r)rrg{UMa>g{UMa>0)rurrS)rrgk:>gk:>{r)rrgk:>gk:>0)rurH BinaryError)rrgVM٫>gVM٫>{r)rrgVM٫>gVM٫>0)rur-r~)rrgg>g0e ?{r)rrgg>g0e ?0)r8r1r)rrg j>g5u >{)r8r_resolve)rrg j>g5u >0)r8Xrv)r*r*gQX+?gQX+?{)r8rrv)rrgz?gz?)r8r{rv)rrg-EC??g-EC??0)r8rr)rrg>gd<>{rrrA)rrg#8=_>gU>r)rrgJhrͿ>g"C>0)r8rt _LazyDescr)rrg?߲̔>g?߲̔>{r)rrg?߲̔>g?߲̔>0)r8rrv)rrg*{9?g8?{r)rrg*{9?g8?0)r8rr)rrg7aÞ>gÏbgr>{r)rrg7aÞ>gÏbgr>0)r8rJ MovedModule)rrg>g>{r)rrg>g>0)r8rrv)rrg]?g]?{r)rrg]?g]?0)r8ry _LazyModule)rrg& 4>g& 4>{r)rrg& 4>g& 4>0)r8r{rv)rrgL+^)?gw8 1?{r)rrgL+^)?gw8 1?0)r8MovedAttribute)rrg@Y>g@Y>{r)rrg@Y>g@Y>0)r8rv)rrg4>g4>{r)rrg4>g4>0)r8r  _add_module)5rg?g?{r)rrg?g?0)r8r _get_module)r@r@g+B8>g+B8>{)r8iModule_six_moves_urllib)r@r@g+B8>g+B8>0)r8rr)r-r-gѩ&+>gѩ&+>{rOiq_find_spec_legacy)r-r-gѩ&+>gѩ&+>0)r8r __get_module)rrg">g">{rn)rrgw>gw>rB)rrgGDYAѱ>gGDYAѱ>0)r8rr)rrg>gF+%J>{rH)rrg>gF+%J>0)r8rCrD)rrgM7܉>gKun>{r[)rrgM7܉>gKun>0)r8r_SixMetaPathImporter)rrgv(>gv(>{r)rrgv(>gv(>0)r8 _MovedItems)rrg4vxU>g4vxU>{r)rrg4vxU>g4vxU>0)r8iDModule_six_moves_urllib_parse)rrgZ픫>gZ픫>{r)rrgZ픫>gZ픫>0)r8inModule_six_moves_urllib_error)rrg#u| >g#u| >{r)rrg#u| >g#u| >0)r8iModule_six_moves_urllib_request)rrg >g >{r)rrg >g >0)r8i Module_six_moves_urllib_response)rrgPП>gPП>{r)rrgPП>gPП>0)r8i#Module_six_moves_urllib_robotparser)rrgs7*e6>gs7*e6>{r)rrgs7*e6>gs7*e6>0)r8ir)rrgl_Kg>gP>{r)rrgl_Kg>gP>0)r8ibr9)r-r-gY+?g(UJIB-?{rn)r-r-gY+?g(UJIB-?0)r8i` add_metaclass)r-r-gI>gI>{rn)r-r-gI>gI>0)r8rr~)rrg}hp@?gh#`yZ?{r)rrg}hp@?gh#`yZ?0)rrr~)rrgb>gb>{r)rrgb>gb>0)/usr/lib/python3.8/decimal.pyrr~)rrgq@qD ?gaByY`?{r)rrgq@qD ?gaByY`?0)rDrr)rrgM3>gǖy>{rv)rrgM3>gǖy>0)rDrErF)rrgx

gYuW>{r)rrgx

gYuW>0)rDrr~)rrg+M?g33A?{r)rrg+M?g33A?0)rwrrv)r r gDM>gDM>{)rDrr)r r gDM>gDM>0)rwrweekday)rrgt>gt>{r)rrgt>gt>0)rwrr~)rrgkĨx>g eY:?{r)rrgkĨx>g eY:?0)ryr&DeprecatedTzFormatWarning)rrg >g >{r)rrg >g >0)ryrr~)rrg_ ?gi/&q?{r)rrg_ ?gi/&q?0)rrr)rrgh>g$yg>{r)rrgh>g$yg>0)rr]r)rrg~3!>g{.>{r)rrg~3!>g{.>0)rrr)rrg)|:>gl@[>{r)rrg)|:>gl@[>0)riLrv)rRrRgi?g.T2& ?{r )rRrRgi?g.T2& ?0)riH_ttinfo)rrgn>gn>{r)rrgn>gn>0)ri}rv)rrgLQ>gF s^?{r )rrgLQ>gF s^?0)riu_tzfile)rrg7d8>g7d8>{r)rrg7d8>g7d8>0)rirv)rrgS?gߤMU?{ro)rrgS?gߤMU?0)rGrrv)rrg?g?{r)rrg?g?0)rGrHrI)rrg=Vw[z>g T9>{r)rrg=Vw[z>g T9>0)rGrr~)rrgޱ☈^?g;06v ?{r)rrgޱ☈^?g;06v ?0)rJr$r)i i g:giO?6?r)r@r@gV?gKOQ(BK?r)rrg*@p>g9g:?rm)iig9?g+y?0)rJrr)rrg:UY;>g7c6\?{r)rrg:UY;>g7c6\?0)rJrr)rrg"*^?gX^?{)rJ_set_times_property)rrg"*^?gX^?0)rJrr)rrg`t ?g `?{)rJr~atime)rrg`t ?g `?0)rJr~r)rrg@N'>geG|`?{r)rrg@N'>geG|`?0)rJrHrK)rrg?gB9?{r)rrg?gB9?0)rJrr~)rrgH4w?gm Zfq?{r)rrgH4w?gm Zfq?0)3/usr/lib/python3/dist-packages/dateutil/__init__.pyrr~)rrgN>g @@?{r)rrgN>g @@?0)3/usr/lib/python3/dist-packages/dateutil/_version.pyrr~)rrg|;k>g|;k>{r)rrg|;k>g|;k>0)rrr)rrg *E>gLS.>{rrr~)rrg *E>gLS.>0)rr private_class)r-r-g}|!h>g}|!h>{r)r-r-g}|!h>g}|!h>0)rrr)r-r-g >g=LD?{r)r-r-g >g=LD?0)rrr~)rrgo?g鮖?{r)rrgo?g鮖?0)rr_timelex)rrg_]J>gAD_9?{r)rrg_]J>gAD_9?0)rr _resultbase)rrg_q>g_q>{r)rrg_q>g_q>0)ri,rv)rrgYwض?gÞq?I&?{)ri?rv)rrgYwض?gÞq?I&?0)ri;r)r r g[?g Qa?{r)r r g[?g Qa?0)r parserinfo)rrg+Qg>>g+Qg>>{r)rrg+Qg>>g+Qg>>0)ri_ymd)rrg34>g34>{r)rrg34>g34>0)ri?rv)rrg,2>gTYš&?{r)rrg,2>gTYš&?0)rir})rrgF>gF>{r)rrgF>gF>0)ri>r|)rrg(>g' ?{r)rrg(>g' ?0)rih_attr)rrgʪJS뚼>gʪJS뚼>{r)rrgʪJS뚼>gʪJS뚼>0)ricr})rrgOa>gn)(?{r)rrgOa>gn)(?0)riar~)rrgV+J>ge$?{r)rrgV+J>ge$?0)ri; ParserError)rrgºn>gºn>{r)rrgºn>gºn>0)riGUnknownTimezoneWarning)rrgQ>gQ>{r)rrgQ>gQ>0)rrr~)rrg2b*?gɐN?{r)rrg2b*?gɐN?0)rrIllegalMonthError)rrgv>gv>{r)rrgv>gv>0)rrPIllegalWeekdayError)rrg) >g) >{r)rrg) >g) >0)rrr)rrgg(>gg(>{r)rrgg(>gg(>0)rr3rv)rrgՎ>gՎ>{r)rrgՎ>gՎ>0)rrr)rrgۏ>gjG&f?{r)rrgۏ>gjG&f?0)rrr)rrgs7>gs7>{)rr_localized_day)rrgs7>gs7>0)rr}rv)rrg|.>g|.>{r)rrg|.>g|.>0)rrr)rrg7 >g,>{r)rrg7 >g,>0)rrrv)rrgf*1>g(['>{r)rrgf*1>g(['>0)rrsetfirstweekday)rrgη>gη>{)rrrv)rrgη>gη>0)rCalendar)rrg`8>g`8>{r)rrg`8>g`8>0)ri% TextCalendar)rrgȔ\E>gȔ\E>{r)rrgȔ\E>gȔ\E>0)ri HTMLCalendar)rrgq@>gq@>{r)rrgq@>gq@>0)ri"different_locale)rrgA:Ź>gA:Ź>{r)rrgA:Ź>gA:Ź>0)ri.LocaleTextCalendar)rrgeVS>geVS>{r)rrgeVS>geVS>0)riMLocaleHTMLCalendar)rrg:h͔xn>g:h͔xn>{r)rrg:h͔xn>g:h͔xn>0)rrr~)rrg?g}m8WX=?{r)rrg?g}m8WX=?0)r8r_add_doc)rrgp]>gp]>{r)rrgp]>gp]>0)rrcy_wrap)rrg>g>{r)rrg>g>0)rr} _PaddedFile)rrgU>gU>{r)rrgU>gU>0)rr BadGzipFile)rrgbiJ>gbiJ>{r)rrgbiJ>gbiJ>0)rrGzipFile)rrg 1 >g 1 >{r)rrg 1 >g 1 >0)ri _GzipReader)rrg ~>g ~>{r)rrg ~>g ~>0)rrr~)rrgk&$?gۨF6?{r)rrgk&$?gۨF6?0)rLrMrN)rrgÆI2>g˄n>{r)rrgÆI2>g˄n>0)rLrr~)rrg{[a?gKymј?{r)rrg{[a?gKymј?0)rOrr)i i g~N?g$?{)rOytitle)iigr't?gD]>nf?)rOr)username)iigAE0q?g ?)rOrget_custom_property)iigoUxm?g^[_&?0)rOrr)iig ^?g`W?{rm)iig ^?g`W?0)rOr)r)iig􀋫PX?g}9^?{rm)iig􀋫PX?g}9^?0)rOrr)iig?Y?gG?{rh)iig?Y?gG?0)rOrr)iigF`E^b?gV?{rj)iigF`E^b?gV?0)rOrPrQ)rrgvg/?gk$z?{r)rrgvg/?gk$z?0)rOrr~)rrgS~4Z?gbS&4?{r)rrgS~4Z?gbS&4?0)ruiKurn)rrgߓͤ ?ge5y#?{r)rrg/6>g(?r)rrg*>gD9P?r)r@r@gQwy>g (?0)rurUUID)rrgZ5?gZ5?{r)rrgZ5?gZ5?0)rurr~)rrg5m ?g?{r)rrg5m ?g?0)rXi[rY)rrg0[?gq1?{rl)rrg0[?gq1?0)rXirm)rrg] ?gg*_?{r)rrgԀ>g*_?0)rXr-r~)rrg^?g9@q?{r)rrg^?g9@q?0)rrr)rrgS'Ѷ>g>{rr _build_impl)rrgS'Ѷ>g>0)//usr/lib/python3/dist-packages/lxml/__init__.pyr-r~)rrgavt>gavt>{r)rrgavt>gavt>0)rrJ PrettyPrinter)rrg= ?g= ?{r)rrg= ?g= ?0)rr&r~)rrgn?g"-G('?{r)rrgn?g"-G('?0)4/usr/lib/python3/dist-packages/pykeepass/__init__.pyrr~)rrgx>gwK?{r)rrgx>gwK?0)r[rversion)rrgS!>g=E?{r)rrgS!>g=E?0)r[rtree)rrgyFԤ?ge'i?{r)rrgyFԤ?ge'i?0)r[r6 root_group)rrgB2>g?F?{)rAirM)rrgB2>g?F?0)r[rxr)i i g8Q?g 0?{)rJr$r)i i gI?gpX@t?rZ)rrgx?g5 y?0)r[ir\)rrgf*91hD ?g`L ^jz?{)r[iR find_groups)rrgf*91hD ?g`L ^jz?0)r[iRr)rrgT ?gYdz?{rf)rrg/>g3ޱ3w?)r[r6r)rrgXJ>g?F?0)r[r PyKeePass)rrg~?g~?{r)rrg~?g~?0)r[rr~)rrg|GZ(?gp֞a(?{r)rrg|GZ(?gp֞a(?0)9/usr/local/lib/python3.8/dist-packages/future/__init__.pyrr~)rrguUJʞ>guUJʞ>{r)rrguUJʞ>guUJʞ>0)r'r3python_2_unicode_compatible)rrgxt[>gxt[>{rz)rrg1)>g1)>r)rrgkcG_>gkcG_>r)rrgb֎r>gb֎r>r)rrgI^qG>gI^qG>0)r'rr~)rrgK?g#0ӥ \?{r)rrgK?g#0ӥ \?0)rrMNumber)rrg#f>g#f>{r)rrg#f>g#f>0)rrCComplex)rrg |c?gbx?{r)rrg |c?gbx?0)rReal)rrg@br=?g_?{r)rrg@br=?g_?0)ri Rational)rrgb >g4Ň>{r)rrgb >g4Ň>0)ri&Integral)rrg /YG>g)h?{r)rrg /YG>g)h?0)rrr~)rrg`?gBE?{r)rrg`?gBE?0)rurSafeUUID)rrgOA9 >ghI ?{r)rrgOA9 >ghI ?0)rur]rv)iig민?gn΢&?{r)iig͛?gCf?r)rrg'?g?0)rui__str__)rrg۠)M\?g۠)M\?{)ruiKr)rrg۠)M\?g۠)M\?0)ruir)rrgB&U>g%,}4>{rZ)rrgB&U>g%,}4>0)rrProbe)rrg-zW4>g-zW4>{r)rrg-zW4>g-zW4>0)rrDebugger)rrg],)>g],)>{r)rrg],)>g],)>0)rrr~)rrgT+t9N!?g?{r)rrgT+t9N!?g?0)r^rRestart)rrgt d>gt d>{r)rrgt d>gt d>0)r^r_rstr)rrgz]>gz]>{r)rrgz]>gz]>0)r^Pdb)rrgNZN ?gNZN ?{r)rrgNZN ?gNZN ?0)r^r-r~)rrggu*?gЬo׀E|?{r)rrggu*?gЬo׀E|?0)rrCmd)rrgQ>gQ>{r)rrgQ>gQ>0)rrr~)rrgR =>g?{r)rrgR =>g?0)rrBdbQuit)rrgEև>gEև>{r)rrgEև>gEև>0)rrBdb)rrg2| >g2| >{r)rrg2| >g2| >0)ri Breakpoint)rrg_>g_>{r)rrg_>g_>0)riSTdb)rrg `>g `>{r)rrg `>g `>0)rrr~)rrg7Q7D?gA.?{r)rrg7Q7D?gA.?0)rrInteractiveInterpreter)rrg=Y>g=Y>{r)rrg=Y>g=Y>0)rrGInteractiveConsole)rrgԪ>gԪ>{r)rrgԪ>gԪ>0)rrr~)rrg4$>g˲M?{r)rrg4$>g˲M?0)rrr)rrg)n >g_j>{r)rrg)n >g_j>0)rr*Compile)rrgS>gS>{r)rrgS>gS>0)rrsCommandCompiler)rrg q>g q>{r)rrg q>g q>0)rrr~)rrgYt:>gEe?b&?{r)rrgYt:>gEe?b&?0)/usr/lib/python3.8/glob.pyrr~)rrg |X>gU#^FO?{r)rrg |X>gU#^FO?0)rr _safe_key)rrgnJ>gnJ>{r)rrgnJ>gnJ>0)rPi; ListContainer)rrg'E>g֤^>{r)rrg'E>g֤^>0)rPrr~)rrggn?gU}Q?{r)rrggn?gU}Q?0)rrHr~)rrg5M0&?g5M0&?{rrr~)rrg5M0&?g5M0&?0)rrint2byte)ia ia gſ J?gſ J?{r)iigR/ l@?gR/ l@?rhr~)iig}s%?g}s%?rr~)rrgM ǟ?gM ǟ?rrr)r r g$*?g$*?0)rr r )r r g}_0s?gL7OI?{r)r r g}_0s?gL7OI?0)rrPr~)rrg}7,?g}7,?{r)rrg}7,?g}7,?0)rr iterateints)iigk+~?gk+~?{r)iigk+~?gk+~?0)rrr~)rrg#n?gV?y;?{r)rrg#n?gV?y;?0)rr@r)rrgR(Ec?g'…ei?{)rrr~)rrgR(Ec?g'…ei?0)rrr~)rrgJ0?gR~k?{rrr~)rrgJ0?gR~k?0)rrr)iigutF_BN>ggz>BN>{r)rrggz>BN>ggz>BN>0)rr.RebufferedBytesIO)rrg9G>g9G>{r)rrg9G>g9G>0)rrr~)rrg!_>gPӊp4?{r)rrg!_>gPӊp4?0)rr@HexDisplayedInteger)rrg[p>g[p>{r)rrg[p>g[p>0)rrHexDisplayedBytes)rrg>g>{r)rrg>g>0)rrHexDisplayedDict)rrgӡ)'>gӡ)'>{r)rrgӡ)'>gӡ)'>0)rr;HexDumpDisplayedBytes)rrg8澚؃>g8澚؃>{r)rrg8澚؃>g8澚؃>0)rrkHexDumpDisplayedDict)rrgOS>gOS>{r)rrgOS>gOS>0)rrr)rrgKՔiG'?g=4?{r)rrgKՔiG'?g=4?0)rrr)rrgVL["?g_U??{r)rrgVL["?g_U??0)rrr~)rrgisQ?g@`P?{r)rrgisQ?g@`P?0)rrr)rrghՎ^>g?X>{rW)rrghՎ^>g?X>0)rrC ExprMixin)rrg Z>g Z>{r)rrg Z>g Z>0)rr)UniExpr)rrgT#h>gT#h>{r)rrgT#h>gT#h>0)rrrv)rrgQ"k>gQ"k>{)rrr)rrgQ"k>gQ"k>0)rroBinExpr)rrg`j+>g`j+>{r)rrg`j+>g`j+>0)rrbrv)rfrfgwT?gwT?{)rr;rd)rrg6,?g6,?r)rrgI{>gI{>0)rr;rd)rrg8Z$?gzIac.?{rV)rrg, ?gtc+?rQrr~)rrgQ$>g>rW)rCrCgWɼ,?g?im ?0)rrPath)rrgV >gV >{r)rrgV >gV >0)rrv)rrgZwb>gZwb>{r)rrgZwb>gZwb>0)rPath2)rrgv#q>gv#q>{r)rrgv#q>gv#q>0)rrrv)rrg*=Ed>g*=Ed>{r )rrgkcG_>gkcG_>r)r@r@gRW>gRW>0)rr r)rrg~܉>g]:b >{rW)rrg~܉>g]:b >0)rrRFuncPath)rrgH!>gH!>{r)rrgH!>gH!>0)rrr~)rrg5gT ?g:Pt2?{r)rrg5gT ?g:Pt2?0)3/usr/lib/python3/dist-packages/construct/version.pyrr~)rrg1 Y*>g1 Y*>{r)rrg1 Y*>g1 Y*>0)rrrr~)rrg6A:?gI x?{r)rrg6A:?gI x?0)rr;BZ2File)rrg}1!>g}1!>{r)rrg}1!>g}1!>0)rrr~)rrg*{+^ ?g엂Ga?{r)rrg*{+^ ?g엂Ga?0)rr BaseStream)rrg34>g34>{r)rrg34>g34>0)rrDecompressReader)rrgX)>gX)>{r)rrgX)>gX)>0)rrr~)rrg.>gau\&?{r)rrg.>gau\&?0)rr>LZMAFile)rrg_h]>g_h]>{r)rrg_h]>g_h]>0)rrr~)rrg^9?g ~fP?{r)rrg^9?g ~fP?0)rr NullImporter)rrg7d8>g7d8>{r)rrg7d8>g7d8>0)rrQ_HackedGetData)rrgw>gw>{r)rrgw>gw>0)rr_LoadSourceCompatibility)rrgl9?>gl9?>{r)rrgl9?>gl9?>0)r_LoadCompiledCompatibility)rrge w֊>ge w֊>{r)rrge w֊>ge w֊>0)rrr~)rrg\cwV?gJL90?{r)rrg\cwV?gJL90?0)8/usr/lib/python3/dist-packages/construct/lib/__init__.pyrr~)rrg-Tz$?g{?{r)rrg-Tz$?g{?0)rPr decorator)rrg Ns>g Ns>{rPi;r)rrgn$@>gn$@>rPr Container)rrg~;A>g~;A>0)rPrrecursion_lock)rrgpB>gpB>{r;)rrgLSF>gLSF>r<)rrgQ/T=>gQ/T=>0)rPrrd)rrg 59R?g 59R?{)r[rr)rrgRx^>gRx^>)r[rr)rMrMg#Sj>g#Sj>r)r@r@g'eRC>g'eRC>0)rPrr&)rrg =?gLP?{rO)rrgK9z?gK9z?r)rrga/M>gv>i>riisizeof)rrg8.>gh?0)rPr`r)rUrUghT"?g W# %?{)rPrr&)rrg,u>g-bm>rO)ririg(?1 ?gG2]"?0)rPrQrv)rrg -4&?giuV1gC ?r?)rrgC>g 3>0)rPrr=)rrgS`$>g/1 >{r)rrgS`$>g/1 >0)ritime)rrgm׆Z>gm׆Z>{r)rrgm׆Z>gm׆Z>0)rir)r-r-gm/L>gEfz?{r)r-r-gm/L>gEfz?0)ridatetime)rrgq[>gq[>{r)rrgq[>gq[>0)rir!)r-r-g&U@>g!u>{r)r-r-g&U@>g!u>0)ritimezone)rrg%{>g#9dQ?{r)rrg%{>g#9dQ?0)rrr~)rrgZ{2$?g wIS?{r)rrgZ{2$?g wIS?0)rxrlrp)rrgO*]>gEh>{rB)rrgO*]>gEh>0)ri _Selector)rrgZ픻>gZ픻>{r)rrgZ픻>gZ픻>0)ri_TerminatingSelector)rrg<>g<>{r)rrg<>g<>0)ri_PreciseSelector)rrgj/>gj/>{r)rrgj/>gj/>0)ri _WildcardSelector)rrg@>g@>{r)rrg@>g@>0)ri,_RecursiveWildcardSelector)rrg ]c>g ]c>{r)rrg ]c>g ]c>0)riX _PathParents)rrg)+$>g)+$>{r)rrg)+$>g)+$>0)rr_WindowsFlavour)rrgC C9d?gG# ?{r)rrgC C9d?gG# ?0)ri$r*)rrg7)>gHw]>{r)rrg7)>gHw]>0)ri _PosixFlavour)rrg 3?g 3?{r)rrg 3?g 3?0)ri _Accessor)rrg{w>g{w>{r)rrg{w>g{w>0)rirE)rrg >g;X] >{r)rrg >g;X] >0)rxryrz)rrg7}?>g%n>{rB)rrg7}?>g%n>0)rxrCr9)rrglqB?g{fU2?{)rxrr<)rrglqB?g{fU2?0)rxrr<)rrgՎ0]>ghf(?{r7)rrgĒZR>g%PKW ?r )rrgYVPh>gXw1>0)rxrr~)rrgD?gQq?{r)rrgD?gQq?0)rrrv)rrgT"">gT"">{r)rrgT"">gT"">0)rrr)rrgf?C?gS?{r)rrgf?C?gS?0)rr5_Flavour)rrgRr>gRr>{r)rrgRr>gRr>0)rr4)rrg[ەG>g[ەG>{rrrJ)rrg[ەG>g[ەG>0)rrVr4)rrgjH>gjH>{rO)rrgjH>gjH>0)rir)rrgpɗ>g1X%?{r")rrgpɗ>g1X%?0)rir#)rrg`$>gg ?{rir)rrg`$>gg ?0)ri#r)rrg T>g8>{r0)rrg T>g8>0)ri+r1)rrgHQZ>gz g>{ri_open_database_success)rrgHQZ>gz g>0)ritPurePath)rrgd?gd?{r)rrgd?gd?0)ri PurePosixPath)rrg`֎Y+>g`֎Y+>{r)rrg`֎Y+>g`֎Y+>0)riPureWindowsPath)rrguU7>guU7>{r)rrguU7>guU7>0)rir)rrg5O>gs+$?{rQ)rrg5O>gs+$?0)ri_init)rrg]E~>g]E~>{rP)rrg]E~>g]E~>0)rir*)rrg$,>g$,>{r)rrg$,>g$,>0)ri  PosixPath)rrgOSY>gOSY>{r)rrgOSY>gOSY>0)ri WindowsPath)rrg8Z>g8Z>{r)rrg8Z>g8Z>0)rrr~)rrgd1#/?gr]Gv?{r)rrgd1#/?gr]Gv?0)/usr/lib/python3.8/fnmatch.pyrr~)rrg^gx{;N>{r)rrgx{;N>gx{;N>0)rim LazyContainer)rrg.>g.>{r)rrg.>g.>0)ri LazyStruct)rrgF>gF>{r)rrgF>gF>0)riLazyListContainer)rrgB>gB>{r)rrgB>gB>0)ri LazyArray)rrgT5>gT5>{r)rrgT5>gT5>0)rif LazyBound)rrg!;i>g!;i>{r)rrg!;i>g!;i>0)ri ExprAdapter)rrg]|z>g]|z>{r)rrg]|z>g]|z>0)riExprSymmetricAdapter)rrgW2e>gW2e>{r)rrgW2e>gW2e>0)ri ExprValidator)rrgȯ'>gȯ'>{r)rrgȯ'>gȯ'>0)ri!Slicing)rrg^w>g^w>{r)rrg^w>g^w>0)riHIndexing)rrgP-?>gP-?>{r)rrgP-?>gP-?>0)rr-r~)rrgRNF>?g%?{r)rrgRNF>?g%?0)rr. PickleError)rrg{b >g{b >{r)rrg{b >g{b >0)rr PicklingError)rrgPSLW>gPSLW>{r)rrgPSLW>gPSLW>0)rr$UnpicklingError)rrgRISĮ>gRISĮ>{r)rrgRISĮ>gRISĮ>0)ra_Stop)rrg#$vɴ>g#$vɴ>{r)rrg#$vɴ>g#$vɴ>0)rr)rrgkѩ;$?giW3U?{r)rrgkѩ;$?giW3U?0)rr,_Framer)rrg,e>g,e>{r)rrg,e>g,e>0)ri _Unframer)rrgSbw?>gSbw?>{r)rrgSbw?>gSbw?>0)ri_Pickler)rrg]ĝ)y>g]ĝ)y>{r)rrg]ĝ)y>g]ĝ)y>0)rin _Unpickler)rrgwӕ9?gwӕ9?{r)rrgwӕ9?gwӕ9?0)rrr~)rrgs ?g![p?{r)rrgs ?g![p?0)rSrr)rrgmS0>gmS0>{rR)rrgmS0>gmS0>0)rSrbr)r r g(?g(?{rR)r r g(?g(?0)rSrr~)rrg0TV%?gK7ݎ/?{r)rrg0TV%?gK7ݎ/?0)ri_RandomNameSequence)rrgsn3>gsn3>{r)rrgsn3>gsn3>0)ri!_TemporaryFileCloser)rrgfkDc>gfkDc>{r)rrgfkDc>gfkDc>0)riL_TemporaryFileWrapper)rrg +>g +>{r)rrg +>g +>0)riSpooledTemporaryFile)rrgpBhיO>gpBhיO>{r)rrgpBhיO>gpBhיO>0)riTemporaryDirectory)rrgaB\>gaB\>{r)rrgaB\>gaB\>0)rrr~)rrgsѱ?g&*(W~?{r)rrgsѱ?g&*(W~?0)rrrError)rrg(/>g(/>{r)rrg(/>g(/>0)rrr SameFileError)rrgt8_)!>gt8_)!>{r)rrgt8_)!>gt8_)!>0)rrrSpecialFileError)rrgeq~>geq~>{r)rrgeq~>geq~>0)rrr/ ExecError)rrgHg-h>gHg-h>{r)rrgHg-h>gHg-h>0)rrr ReadError)rrgV,d>gV,d>{r)rrgV,d>gV,d>0)rrr RegistryError)rrg >g >{r)rrg >g >0)rrrt_GiveupOnFastCopy)rrg=zhq>g=zhq>{r)rrg=zhq>g=zhq>0)ri! BytesInteger)rrg_q>g_q>{r)rrg_q>g_q>0)rirv)r-r-gU=U>gFMc>{)riBit)rrg]/M>g*=p!>)riNibble)rrgQR>gDžkΑ>)riOctet)rrgH>g]E~>0)ris BitsInteger)rrgg1y>gg1y>{r)rrgg1y>gg1y>0)rir|)rrgJ>g>{rr singleton)rrgJ>g>0)rir})rrg,wA&>g._wR>{r)rrg,wA&>g._wR>0)rir~)rrgQIV>g, BL>{r)rrgQIV>g, BL>0)riInt8ub)rrg.w>g*U?{r)rrg.w>g*U?0)riInt16ub)rrgk>gg>{r)rrgk>gg>0)riInt32ub)rrgt>g>gYm>{r)rrgt>g>gYm>0)riInt64ub)rrgyHc>gJ>{r)rrgyHc>gJ>0)riInt8sb)rrgcAJ]>gDP>{r)rrgcAJ]>gDP>0)riInt16sb)rrga/M>gpt{>{r)rrga/M>gpt{>0)riInt32sb)rrgQ$>gT"B>{r)rrgQ$>gT"B>0)riInt64sb)rrgT >g>{r)rrgT >g>0)riInt8ul)rrg"`>gYaG)>{r)rrg"`>gYaG)>0)riInt16ul)rrg\>gbG>{r)rrg\>gbG>0)riInt32ul)rrg6>g5Km>{r)rrg6>g5Km>0)riInt64ul)rrg8o>g|>{r)rrg8o>g|>0)riInt8sl)rrg@D=Y>>gd-<>{r)rrg@D=Y>>gd-<>0)ri Int16sl)rrg-t>gR{>{r)rrg-t>gR{>0)riInt32sl)rrgXw1>g[P>{r)rrgXw1>g[P>0)riInt64sl)rrg70&7s>g)!E>{r)rrg70&7s>g)!E>0)riInt8un)rrgrY>g X>{r)rrgrY>g X>0)riInt16un)rrgߋL>gBq>{r)rrgߋL>gBq>0)ri!Int32un)rrg!o>giF>{r)rrg!o>giF>0)ri%Int64un)rrgr%>gՕ~=8>{r)rrgr%>gՕ~=8>0)ri*Int8sn)rrgQ>guO>{r)rrgQ>guO>0)ri.Int16sn)rrgQ؎>gB>h>{r)rrgQ؎>gB>h>0)ri2Int32sn)rrg9_zh>gy0>و>{r)rrg9_zh>gy0>و>0)ri6Int64sn)rrg`>gi&o>{r)rrg`>gi&o>0)ri@Float16b)rrg4>g6Ȟ>{r)rrg4>g6Ȟ>0)riDFloat16l)rrgr%>g+F>{r)rrgr%>g+F>0)riHFloat16n)rrg:>Y>g:o2U>{r)rrg:>Y>g:o2U>0)riMFloat32b)rrg+P>g>{r)rrg+P>g>0)riQFloat32l)rrg0:=>gC0eO->{r)rrg0:=>gC0eO->0)riUFloat32n)rrg`Ⱥ>gIs3>{r)rrg`Ⱥ>gIs3>0)riZFloat64b)rrgH7>gCk5>{r)rrgH7>gCk5>0)ri^Float64l)rrg}ub>gÇ|>{r)rrg}ub>gÇ|>0)ribFloat64n)rrgrY>gk>yE>{r)rrgrY>gk>yE>0)rimInt24ub)rrg`;f>gI3_#>{r)rrg`;f>gI3_#>0)riqInt24ul)rrgLn.;>gNz 1>{r)rrgLn.;>gNz 1>0)riuInt24un)rrg3@>ggz>{r)rrg3@>ggz>0)riyInt24sb)rrg"&T>g|,i>{r)rrg"&T>g|,i>0)ri}Int24sl)rrgTe>g hVͫ>{r)rrgTe>g hVͫ>0)riInt24sn)rrgr~V>g,\m>{r)rrgr~V>g,\m>0)riVarInt)rrgba>gba>{r)rrgba>gba>0)rirv)rrg:~t>gsJv}>{)ri8 GreedyString)rrg:~t>gsJv}>0)ri StringEncoded)rrg*(8>g*(8>{r)rrg*(8>g*(8>0)ri8r)rrgmdr$>gUS@[?{rV)rrgmdr$>gUS@[?0)riir)rrgKU.ͩ>gKU.ͩ>{)ri r)rrgKU.ͩ>gKU.ͩ>0)riSFlag)rrgK˱>gK˱>{r)rrgK˱>gK˱>0)ris EnumInteger)rrgc>gc>{r)rrgc>gc>0)rixEnumIntegerString)rrg&p>g&p>{r)rrg&p>g&p>0)riEnum)rrgϯH2n>gϯH2n>{r)rrgϯH2n>gϯH2n>0)riBitwisableString)rrgEև>gEև>{r)rrgEև>gEև>0)ri FlagsEnum)rrg%m>g%m>{r)rrg%m>g%m>0)riXr~)r@r@g27ˤ>g27ˤ>{rT)r@r@g27ˤ>g27ˤ>0)riVrv)r@r@g!$B?g60 ?{rV)rrgرDy|>gX7~?rW)rrgf>g3F['k>rb)rrg\-)>ggn?0)riCMapping)rrg\XtA6>g\XtA6>{r)rrg\XtA6>g\XtA6>0)rir)rHrHg)`@>g)`@>{rU)rHrHg)`@>g)`@>0)rir)rrg&5 ?g&5 ?{rO)rrg&5 ?g&5 ?0)rir)rrgkd\?gkd\?{rrr)rrgC^tQ>gC^tQ>rU)rHrHgb+˄>gb+˄>0)rirv)rHrHgc6?g5Xsi?{rV)r r g0o%?ge?r))rrg:C?g| ?rW)rrgߦ%M?g*(?riQ BitStruct)rrg;do- ?gq!?0)rir)r-r-gW>gcW>{)rrr)r-r-gW>gcW>0)rir)rrg@_&?g?^=?{r?)rrg@_&?g?^=?0)ripStruct)rrg.;\\>g.;\\>{r)rrg.;\\>g.;\\>0)riSequence)rrg9xm>g9xm>{r)rrg9xm>g9xm>0)riArray)rrgU<>gU<>{r)rrgU<>gU<>0)ri GreedyRange)rrg{֯ ?>g{֯ ?>{r)rrg{֯ ?>g{֯ ?>0)ri- rv)rrg#>gƏ1w-!?{rV)rrg0IS}>gD/?rW)rrgI>gGM>0)ri RepeatUntil)rrge*>ge*>{r)rrge*>ge*>0)ri| rv)rrg| c0$?g @fQ8?{)ri_ __rtruediv__)r/r/gg{1#?g?7?rr)rrgI>g)+$>0)ri r)rrg'ҳ>g|`>{rir)rrg'ҳ>g|`>0)rii Renamed)rrgG#>gG#>{r)rrgG#>gG#>0)ri Const)rrgHg>gHg>{r)rrgHg>gHg>0)ri rv)rrg`_N>gB##>{rV)rrg" '>gv~+>rW)rrg+c>g h[n>0)ri Computed)rrgx]=>gx]=>{r)rrgx]=>gx]=>0)ri7 rv)rrg}1!>gK>{r)rrg}1!>gK>0)ri Index)rrgm,>gm,>{r)rrgm,>gm,>0)riG Rebuild)rrg#Sj>g#Sj>{r)rrg#Sj>g#Sj>0)riv Default)rrgEY_>gEY_>{r)rrgEY_>gEY_>0)ri Check)rrgUp>gUp>{r)rrgUp>gUp>0)ri rv)rrgGH%D>gNcr>{r)rrgGH%D>gNcr>0)ri rt)rrg DY>g DY>{r)rrg DY>g DY>0)ri FocusedSeq)rrg>g>{r)rrg>g>0)rin Pickled)rrg=[>g=[>{r)rrg=[>g=[>0)ri Numpy)rrg/_¿>g/_¿>{r)rrg/_¿>g/_¿>0)ri NamedTuple)rrgH>gH>{r)rrgH>gH>0)ri4 Hex)rrgg?gg?{r)rrgg?gg?0)rip HexDump)rrg*>g*>{r)rrg*>g*>0)ri Union)rrg 2>g 2>{r)rrg 2>g 2>0)riR Select)rrgW@,0>gW@,0>{r)rrgW@,0>gW@,0>0)ri rv)r-r-gW >gW˩>{rV)rrgnA>gKm=>rW)rrǵ k>gO>0)ri IfThenElse)rrgϠi#>gϠi#>{r)rrgϠi#>gϠi#>0)ri$r)rrg\]>g\]>{r)rRrRg+޻>g+޻>rk)rRrRgw>gw>0)rirv)rRrRgE+K&?g 9 -?{rV)rrg ?g#?r))rrgV?A>gƧ?|?rW)rrg,s7?gwGvQf?rZ)rrgȑ>gz3U>0)ri Switch)rrgI>gI>{r)rrgI>gI>0)riHStopIf)rrgnA>gnA>{r)rrgnA>gnA>0)ri}Padding)rrg0| ?g^x#H?{rV)rrgD>gEN?rW)rrg(/>gi&o>rb)rrg$/^>gM?0)rirv)rrg'(j>gyq ?{)ri}r)rrg'(j>gyq ?0)rir)rrgc)׈>gT t#>{r)rrgc)׈>gT t#>0)riPadded)rrg+(,ۥ>g+(,ۥ>{r)rrg+(,ۥ>g+(,ۥ>0)riAligned)rrg>g>{r)rrg>g>0)riQr)rrg~sd>g{?@a6?{rb)rrg~sd>g{?@a6?0)rirv)rrgӍx)_>g.>{rV)rrg!>grW)rrg T>g>0)rioPointer)rrgr8>gr8>{r)rrgr8>gr8>0)rirv)rrg&p>gF_*;>{rV)rrg&p>gF_*;>0)riPeek)rrgb2p>gb2p>{r)rrgb2p>gb2p>0)riSeek)rrggSCt>ggSCt>{r)rrggSCt>ggSCt>0)ri5rv)rrgZ{[E>g/9N:>{r)rrgZ{[E>g/9N:>0)ri!Tell)rrgPH6pj>gPH6pj>{r)rrgPH6pj>gPH6pj>0)riWrv)rrgR>gwt>{r)rrgR>gwt>0)riFPass)rrgQ/J>gQ/J>{r)rrgQ/J>gQ/J>0)ri|rv)rrgFX>gKy/>{r)rrgFX>gKy/>0)rik Terminated)rrg%m>g%m>{r)rrg%m>g%m>0)riRawCopy)rrgaJ>gaJ>{r)rrgaJ>gaJ>0)ri BitsSwapped)rrgg8>gJ@d?{rb)rrgg8>gJ@d?0)ri rv)r r g֪w?gZIj I?{rV)r@r@g86?E>gd?rW)rrgzByU>g'܋e>0)riPrefixed)rrgJt>gJt>{r)rrgJt>gJt>0)rii FixedSized)rrgK>gK>{r)rrgK>gK>0)riNullTerminated)rrg(.2>g(.2>{r)rrg(.2>g(.2>0)ri NullStripped)rrgPZ>gPZ>{r)rrgPZ>gPZ>0)ri4 RestreamData)rrg.g8A>g.g8A>{r)rrg.g8A>g.g8A>0)rirv)rrg]8w>gRnl$?{rir)rrg8>gq7Rw>riBitwise)rrgD)>glByE>0)rir)rrg R㳹>g R㳹>{r?)rrg R㳹>g R㳹>0)rih Transformed)rrgP|{9>gP|{9>{r)rrgP|{9>gP|{9>0)ri Restreamed)rrgMD٘->gMD٘->{r)rrgMD٘->gMD٘->0)ri ProcessXor)rrgR ]G>gR ]G>{r)rrgR ]G>gR ]G>0)riKr)r r gPM+NP?gPM+NP?{)riKr~)r r gPM+NP?gPM+NP?0)riKr~)rrg7,'P?g4ϕ1P?{)ri-ProcessRotateLeft)rrg7,'P?g4ϕ1P?0)ri-r)rrgL R>g;9}Q?{r)rrgL R>g;9}Q?0)rirv)r r gޒ}?g~?{rV)r-r-gPq+1>gPW&>rW)rrgPd>g=!Z>0)riChecksum)rrgs=)>gs=)>{r)rrgs=)>gs=)>0)ri Compressed)rrgvDt>gvDt>{r)rrgvDt>gvDt>0)ri Rebuffered)rrg$9\>g$9\>{r)rrg$9\>g$9\>0)ri=Lazy)rrg7d8>g7d8>{r)rrg7d8>g7d8>0)rr_ResultMixinStr)rrg+/\ʷF>g+/\ʷF>{r)rrg+/\ʷF>g+/\ʷF>0)rrN_ResultMixinBytes)rrgk!>gk!>{r)rrgk!>gk!>0)rr_NetlocResultMixinBase)rrg5>Y>g5>Y>{r)rrg5>Y>g5>Y>0)rrC_NetlocResultMixinStr)rrgGw,>gGw,>{r)rrgGw,>gGw,>0)rr/_NetlocResultMixinBytes)rrg`֎Y+>g`֎Y+>{r)rrg`֎Y+>g`֎Y+>0)ri; DefragResult)rrgZ픻>gZ픻>{r)rrgZ픻>gZ픻>0)riC SplitResult)rrg$6_->g$6_->{r)rrg$6_->g$6_->0)riH ParseResult)rrgz >gz >{r)rrgz >gz >0)riNDefragResultBytes)rrg3z>g3z>{r)rrg3z>g3z>0)riVSplitResultBytes)rrg{Sx>g{Sx>{r)rrg{Sx>g{Sx>0)ri[ParseResultBytes)rrg*/0>g*/0>{r)rrg*/0>g*/0>0)ria_fix_result_transcoding)rrg^>g^>{r)rrg^>g^>0)riQuoter)rrg9w>g9w>{r)rrg9w>g9w>0)rrr~)rrgԛ? ?g|f`?{r)rrgԛ? ?g|f`?0)4/usr/lib/python3/dist-packages/construct/__init__.pyrr)rrg5 ?g5 ?{rrr~)rrg5 ?g5 ?0)rr)rrgpj݃^>gpj݃^>{r)rrgpj݃^>gpj݃^>0)rrr~)rrg_1ݓ:?gx\֪?{r)rrg_1ݓ:?gx\֪?0)rrConstructError)rrg6S։>g6S։>{r)rrg6S։>g6S։>0)rr SizeofError)rrgN}#>gN}#>{r)rrgN}#>gN}#>0)rrAdaptationError)rrg>!ky>g>!ky>{r)rrg>!ky>g>!ky>0)rr ValidationError)rrg7N>g7N>{r)rrg7N>g7N>0)rr  StreamError)rrg#@>g#@>{r)rrg#@>g#@>0)rrFormatFieldError)rrg\>g\>{r)rrg\>g\>0)rrP IntegerError)rrgJ>gJ>{r)rrgJ>gJ>0)rr StringError)rrgjWI>gjWI>{r)rrgjWI>gjWI>0)rr MappingError)rrg9o6>g9o6>{r)rrg9o6>g9o6>0)rrk RangeError)rrg )ʬ>g )ʬ>{r)rrg )ʬ>g )ʬ>0)rr/ RepeatError)rrg&e_m>g&e_m>{r)rrg&e_m>g&e_m>0)rr ConstError)rrgC@>gC@>{r)rrgC@>gC@>0)rrIndexFieldError)rrgl앴>gl앴>{r)rrgl앴>gl앴>0)rr CheckError)rrgׯ>gׯ>{r)rrgׯ>gׯ>0)rr ExplicitError)rrgmk>gmk>{r)rrgmk>gmk>0)rrNamedTupleError)rrg}w>g}w>{r)rrg}w>g}w>0)rrTimestampError)rrg\MN>g\MN>{r)rrg\MN>g\MN>0)rr UnionError)rrgz7_>gz7_>{r)rrgz7_>gz7_>0)rr3 SelectError)rrg#>g#>{r)rrg#>g#>0)rrU SwitchError)rrg{f>g{f>{r)rrg{f>g{f>0)rrcStopFieldError)rrg܅>g܅>{r)rrg܅>g܅>0)r= PaddingError)rrgv%bGlB>gv%bGlB>{r)rrgv%bGlB>gv%bGlB>0)rrTerminatedError)rrgA:ũ>gA:ũ>{r)rrgA:ũ>gA:ũ>0)rr RawCopyError)rrg0>g0>{r)rrg0>g0>0)rC RotationError)rrgޛȔ[Ϫ>gޛȔ[Ϫ>{r)rrgޛȔ[Ϫ>gޛȔ[Ϫ>0)rr ChecksumError)rrg*\˭>g*\˭>{r)rrg*\˭>g*\˭>0)rr CancelParsing)rrgu>gu>{r)rrgu>gu>0)rrr)rrgH;$k7?gT,+ .oQ?{r)rrgH;$k7?gT,+ .oQ?0)rroCodeGen)rrgi>gi>{r)rrgi>gi>0)rKsyGen)rrgU%;>gU%;>{r)rrgU%;>gU%;>0)rr'r)rrg)y>gD?vo>{)rir)rrg)y>gD?vo>0)rr rv)r?r?g ЖC7?g ЖC7?{)rirv)r-r-g&#7>g&#7>rU)rHrHg_>g_>)ri rv)rrg#U>g#U>)ri7 rv)rrg5>g5>)ri rv)rrg5>g5>)ri rv)r-r-g1uN>g1uN>rk)rRrRgXxar>gXxar>)ri5rv)rrg-b>g-b>)riWrv)rrgo}P>go}P>)ri|rv)rrgd|̀>gd|̀>)rirv)r r gn@>gn@>r)r@r@ggr|>ggr|>rt)rrgo!AQ'?go!AQ'?)riCrv)rrgK>gK>r)rrg@nP?g@nP?)ri=rv)rrg*U+>g*U+>0)riir@)rrgX>gt2)?{r)rrg*RCS>g7s?r)rrg3k$g3>g%?0)ri_r)r/r/g2d"?gHӡ@?{rV)rrgJrB?goGm/?r))r r gpB>g`J/?rW)r&r&gU@?gMDKj ?rb)rrg/Z>gQ/Zb?0)rigrs)rrgO*]>gz%">{rV)rrgO*]>gz%">0)rr Construct)rrgY8R?gY8R?{r)rrgY8R?gY8R?0)rirv)rrgDp^#8?g]gUC?{rV)r r g!X/h>gw|HF?r))rrg)y>gO>rW)rrg]%P?gC Dk?)r`rrv)rrg@cG_>gxu>)r`rrv)rrg ?>g?)rirv)rrgK@)>gV{4>rT)r@r@goW;̏>gҸ?)ri- rv)rrgyi>gt=>?)ri| rv)rrgm"?gkt,r,?rq)rrgs >gRU- >)rirv)rrgFCVl>gHW- 8>)rirv)rrgDH>gHć>)ri rv)r r gXj{>gQ-?)rirv)rrga>goz%>0)ri Subconstruct)rrgb >gb >{r)rrgb >gb >0)riAdapter)rrgÇ5<>gÇ5<>{r)rrgÇ5<>gÇ5<>0)riSymmetricAdapter)rrg<>g<>{r)rrg<>g<>0)ri Validator)rrg%9>g%9>{r)rrg%9>g%9>0)riTunnel)rrgq8>gq8>{r)rrgq8>gq8>0)riCompiled)rrg͸@>g͸@>{r)rrg͸@>g͸@>0)riCrv)rrguD2?gH$ ?{rV)rrgfn>gnX>r))rrg&Z>gguo>rW)r-r-gKy5>g!>0)riBytes)rrgh+eS>gh+eS>{r)rrgh+eS>gh+eS>0)ri_ GreedyBytes)rrg9o6>g9o6>{r)rrg9o6>g9o6>0)rir)rrgbkr6 >gb$,?{r)rrgbkr6 >gb$,?0)rirv)rrg7r6?g#Zq??{)rir)rrgW?ew>gQgo?)rir)rrg5?>g_)tߗ>)rir)rrg?3+Lm>gpyDF>)rir)rrg|.<>gQpԱ>)rir)rrg>gDcV>)rir)rrg>g+>)rir)rrg>gIѐ7~>)rir)rrgix*>gj>)rir)rrgb74>g8>)rir)rrg(>g奆)>)rir)rrg>g9Y>)rir)rrgy^9a>gr>)rir)rrg>\5y>gm/L>)ri r)rrgB7]>gk$ >)rir)rrg*Qb>gW>)rir)rrgIqV9>gv(>)rir)rrg)'!+ԧ>gUnoB>)rir)rrgynV>gJ_M>)ri!r)rrg͸@>gPd>)ri%r)rrg?٫1>g[3>)ri*r)rrgь"a>g"{>)ri.r)rrgl=>gx>)ri2r)rrgzW>g}oAj>)ri6r)rrg}1!>g+Y>)ri@r)rrg)J>gLt>)riDr)rrgN1$}>gQ/T=>)riHr)rrg>gd'L>)riMr)rrgLb>g,Y >)riQr)rrgU>g]E>)riUr)rrg܊fi>gG+:>)riZr)rrg )>gٚ (>)ri^r)rrgr'婟>g5=wn>)ribr)rrg㥑R>g .>0)ri FormatField)rrg}s>g}s>{r)rrg}s>g}s>0)ri=rv)rrgS>gb >?{)rimr)rrgcX>g1Ap>)riqr)rrgo}P>gS.>)riur)rrgK|>gbJ>)riyr)rrg^L>gHl>)ri}r)rrgRj>g#vQ<>)rir)rrg,c>gPxz>0)rr@GcmMode)rrg6>g6>{r)rrg6>g6>0)rrPr~)rrgsF?gyil?{r)rrgsF?gyil?0)G/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/_cpu_features.pyr have_aes_ni)rrgvή>gvUt?{r{)rrgvή>gvUt?0)r%r have_clmul)rrg"sl>gHQ 2?{r)rrg"sl>gHQ 2?0)r%rPr~)rrgGF>gňGYp?{r)rrgGF>gňGYp?0)rrOcbMode)rrg}b>g}b>{r)rrg}b>g}b>0)rrPr~)rrg}a?gK@ ?{r)rrg}a?gK@ ?0)r|r}r~)rrgӐ?g6j~/?{r)rrgӐ?g6j~/?0)rrCreatedDatabase)rrgZb#>gZb#>{r)rrgZb#>gZb#>0)rrr~)rrg,>gWI4?{r)rrg,>gWI4?0)rr KeyFileFilter)rrg p^>g p^>{r)rrg p^>g p^>0)rrrv)rrgB UZ>g/p?{riestart_database_opening_routine)rrgB UZ>g/p?0)ri{ru)rrge>gjck&>{ri_check_date_fields)rrg~2>gj䟋>)ri_check_time_fields)rrgL>gƮ@6>0)rir.)r@r@gQ_>g5|$?{r )r-r-g`U<|9>gr%)rrgL̔>g.\>0)rir/)r@r@gx59.>g☐^>{r )r-r-gG0>g\>r&)rrgT5>gg$>0)rirv)r@r@g7_6K>g\0b>{r )r-r-gClf>gBꮠ{>r&)rrgkcG_>gkcG_>0)rir)rMrMgmb ,?guAK4?{rirC)rrg-lz4>gv5>r)rrg H&?g\K0?)ri__neg__)rrgN'92>gMJ?0)rir1)rrg_ >g& ?{r0)rrgnA>gK>r)rrg1b*>g6X]2>0)rr$_assemble_stack)rrg-Un?gw p|?{ri_on_database_locked_changed)rrg-Un?gw p|?0)rr_set_headerbar)rrg8 Tq?gk;pEtr?{r3)rrg8 Tq?gk;pEtr?0)rr_connect_events)rrg69B'5?g]m>?{rr$r2)rrg69B'5?g]m>?0)r"_on_password_unlock_button_clicked)rrg}%0?gĊJMr?{r)rrg}%0?gĊJMr?0)ria_open_database_update_entries)rrgYÌuE?gYÌuE?{riu_open_database)rrgYÌuE?gYÌuE?0)riur<)rrgu/PW?gY֨$>q?{rr8r9)rrgu/PW?gY֨$>q?0)rirR)rrgO?gp{H?{r)rrgO?gp{H?0)rir)rrgʖE^_p?g][?{rQ)rrgʖE^_p?g][?0)ri_clear_input_fields)rrg.>0??g>N+??{r)rrg.>0??g>N+??0)rir4)rrgҋD?gFO%?{)rrrv)rrgҋD?gFO%?0)rr>UnlockDatabase)rrg+;>]>g+;>]>{r)rrg+;>]>g+;>]>0)rrr~)rrg\ %?g6WDf?{r)rrg\ %?g6WDf?0)rr_days_before_year)r-r-g*%W>g*%W>{r)r-r-g*%W>g*%W>0)rr_days_in_month)r@r@g_q>g_q>{r-)r@r@g_q>g_q>0)ri timedelta)rrg 0>g 0>{r)rrg 0>g 0>0)ri3r)rrg9D9/>gyQe>{r)rrg9D9/>gyQe>0)ridate)rrgI>gI>{r)rrgI>gI>0)riutzinfo)rrgF<>gF<>{r)rrgF<>gF<>0)rir)rrg>CW7>ghu?{r)rrg>CW7>ghu?0)rrUCcmMode)rrgÈ>gÈ>{r)rrgÈ>gÈ>0)rrPr~)rrgL?g hsPM?{r)rrgL?g hsPM?0)@/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/strxor.pyrPr~)rrg\>gW+?{r)rrg\>gW+?0)B/usr/local/lib/python3.8/dist-packages/Cryptodome/Hash/__init__.pyrr~)rrgAQ>܌ձ>gAQ>܌ձ>{r)rrgAQ>܌ձ>gAQ>܌ձ>0)rr BLAKE2s_Hash)rrg@>g@>{r)rrg@>g@>0)rrPr~)rrgG80?gfuK[?{r)rrgG80?gfuK[?0)rrEaxMode)rrge>ge>{r)rrge>ge>0)rrPr~)rrg t?gicI?{r)rrg t?gicI?0)rr$CMAC)rrgq>gq>{r)rrgq>gq>0)rrr~)rrgwm ?g[4K?{r)rrgwm ?g[4K?0)rrSivMode)rrgeP>geP>{r)rrgeP>geP>0)rrPr~)rrgpZj?g-{?{r)rrgpZj?g-{?0)F/usr/local/lib/python3.8/dist-packages/Cryptodome/Protocol/__init__.pyrPr~)rrgEc >gEc >{r)rrgEc >gEc >0)rr7_S2V)rrgkc>gkc>{r)rrgkc>gkc>0)rr r~)rrg*5?g/?{r)rrg*5?g/?0)rrSHA1Hash)rrg.3y>g.3y>{r)rrg.3y>g.3y>0)rrr~)rrg 7"}?gr-p?{r)rrg 7"}?gr-p?0)rr SHA256Hash)rrg]TH>g]TH>{r)rrg]TH>g]TH>0)rrr~)rrgvtY?g4w͌?{r)rrgvtY?g4w͌?0)rrHMAC)rrg^g^{r)rrg^g^0)rrlr~)rrg#p?g % ?{r)rrg#p?g % ?0)rrMD5Hash)rrgyq>gyq>{r)rrgyq>gyq>0)rrr~)rrg-(?gg_?{r)rrg-(?gg_?0)rrr)rrgc>gH^\?{r)rrgc>gH^\?0)rrr)rrgqT ?g 2e?{r)rrg">gdvY;Y?r)rrg:o2U>g 1R?0)rrr)rrgm>gkS\?{r)rrgm>gkS\?0)rrr)rrgL>>gz?{r)rrgL>>gz?0)rr_GHASH)rrg(rI5>g(rI5>{r)rrg(rI5>g(rI5>0)rrenum)rrg0 >g0 >{r)rrg0 >g0 >0)@/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/number.pyr r~)rrg<LJ?gs?{r)rrg<LJ?gs?0)rr OpenPgpMode)rrg.>g.>{r)rrg.>g.>0)rrPr~)rrg2RW>gkf?{r)rrg2RW>gkf?0)rrrS)rrgɠ">gɠ">{r)rrgɠ">gɠ">0)rr3CfbMode)rrgnX>gnX>{r)rrgnX>gnX>0)rrPr~)rrgo?>gr@O?{r)rrgo?>gr@O?0)rrCbcMode)rrgUfG8>gUfG8>{r)rrgUfG8>gUfG8>0)rr  _UrandomRNG)rrg1&>g1&>{r)rrg1&>g1&>0)rrr~)rrg|>gk]8?{r)rrg|>gk]8?0)rrr~)rrg.g ?{r)rrg.g ?0)rr3OfbMode)rrg">g">{r)rrg">g">0)rrr~)rrgrQ-">gN?{r)rrgrQ-">gN?0)rrCtrMode)rrgu7mT>gu7mT>{r)rrgu7mT>gu7mT>0)rrr~)rrg?9?g}֓^s?{r)rrg?9?g}֓^s?0):/usr/local/lib/python3.8/dist-packages/pycparser/lextab.pyrr~)rrgcg ͔''>{r)rrg ͔''>g ͔''>0)rirv)iig5]}H6?g5]}H6?{riQp_direct_xxx_declarator_1)iigp%6?gp%6?r)rrgiUMu>giUMu>ri^p_abstract_declarator_1)rrgX)>gX)>r)rrgt#>gt#>0)riTypeDecl)rrg>g>{r)rrg>g>0)rirv)rrgLp ?gLp ?{r)rrgLp ?gLp ?0)riTypedef)rrg>qd>g>qd>{r)rrg>qd>g>qd>0)rirv)r r g >I/X>g >I/X>{r)r r g >I/X>g >I/X>0)riTypename)rrg C:>g C:>{r)rrg C:>g C:>0)riUnaryOp)rrga/M>ga/M>{r)rrga/M>ga/M>0)rir)rrg _n>g _n>{r)rrg _n>g _n>0)riWhile)rrg+8/6>g+8/6>{r)rrg+8/6>g+8/6>0)ri-Pragma)rrg@~Z>g@~Z>{r)rrg@~Z>g@~Z>0)rrBr~)rrgr*?gFd(^?{r)rrgr*?gFd(^?0)rr rv)rrg睉7>g|͠?T?{rrrv)rrg睉7>g|͠?T?0)rrbuild)rrgb ?gy~?{rg)rrgb ?gy~?0)rrT reset_lineno)r}r}gU=|}?gU=|}?{rr]parse)r}r}gU=|}?gU=|}?0)rr.ry)r}r}gV ?g҈s{'?{r)r}r}gV ?g҈s{'?0)rr/r)iiga3c j?g.DA?{r)iiga3c j?g.DA?0)rir)r$r$g:j*?g [+[C?{r)r$r$g:j*?g [+[C?0)rir,)r$r$gNs?gC&?{r)r$r$gNs?gC&?0)ri&t_ppline_LINE_NUMBER)r$r$gÀl,=?gÀl,=?{r)r$r$gÀl,=?gÀl,=?0)ri/t_ppline_NEWLINE)r$r$gu[A)?gEsl9?{r)r$r$gu[A)?gEsl9?0)ri`r)i3i3gįA?gO?{r)i3i3gįA?gO?0)rit_INT_CONST_DEC)rHrHgc>gc>{r)rHrHgc>gc>0)rir)iigsO0b?gyZu?{r)iigsO0b?gyZu?0)rrr)rrgPsWN"?g3*?{r)rrgPsWN"?g3*?0)rrr~)rrgݮ ?gomPw?{r)rrgݮ ?gomPw?0)rrULexError)rrg肸zg>g肸zg>{r)rrg肸zg>g肸zg>0)rrfLexToken)rrg~ yº>g~ yº>{r)rrg~ yº>g~ yº>0)rr/rv)rrg`>g`>{r)rrg`>g`>0)rr PlyLogger)rrgbΑg'>gbΑg'>{r)rrgbΑg'>gbΑg'>0)rr NullLogger)rrgCHZM~[>gCHZM~[>{r)rrgCHZM~[>gCHZM~[>0)rrrv)rrg'̤K>g'̤K>{r)rrg'̤K>g'̤K>0)rrXrY)rrg#?gȃvm~?{r)rrg#?gȃvm~?0)rrxry)r}r}gor?gQ3 ?{)rr.ry)r}r}gor?gQ3 ?0)rir)r4r4gQڿ9?g-P??{r)r$r$gbmӝ-?gLA2?)ri/rm)r$r$g,L$?g/m)?rW)rrg,YM>gΥ>0)ri1r)iige`Ysĕ?g:q?{)rr/r)iige`Ysĕ?g:q?0)rrLexer)rrgDcV>gDcV>{r)rrgDcV>gDcV>0)rir)rrg)-s?g޻Y#?{rW)rrg)-s?g޻Y#?0)rir)rrgp+R;?gEtoHA?{rl)rrgp+R;?gEtoHA?0)ri/rv)rrg>g>{r)rrg>g>0)ri:get_all)rrgu?/>gKžT?{r)rrgu?/>gKžT?0)riHr)rrg g>giJl>{ri:rt)rrg g>giJl>0)rigr)rrgT#h>gE>{ru)rrgT#h>gE>0)rixr)rrg/>g0D4>{ru)rrg/>g0D4>0)rir)rrgca?gca?{rl)rrgca?gca?0)rir)rrge(>ge(>{rrr)rrge(>ge(>0)rir)rrg&DV=>gfM?{rv)rrg&DV=>gfM?0)rirm)rrg&r9?g0T?{ru)rrg&r9?g0T?0)ri. LexerReflect)rrg; w?g; w?{r)rrg; w?g; w?0)rizr)rrgUr/4?g?7:?{r)rrgUr/4?g?7:?0)ri_r)rrg3,?gȰw?{)rrrh)rrg3,?gȰw?0)riBrG)rBrBgu.>g@zy?{r)rBrBgu.>g@zy?0)riATOKEN)rBrBg^*\>g^*\>{r)rBrBg^*\>g^*\>0)rrlr~)rrgϿyK b?g tr?{r)rrgϿyK b?g tr?0)rr3rt)rrgL>gL>{r)rrgL>gL>0)rrr)r-r-gI=?g"Jb9!?{r)r-r-gI=?g"Jb9!?0)rirs)r-r-gVM>gsC?{r)r-r-gVM>gsC?0)rrr~)rrg0r?gO?{r)rrg0r?gO?0)rrrv)iig,lL?g,lL?{)rr_coord)iig,lL?g,lL?0)rrCoord)rrgR<ܦ)>gR<ܦ)>{r)rrgR<ܦ)>gR<ܦ)>0)rrP ParseError)rrgQ>gQ>{r)rrgQ>gQ>0)rroptrule)iig\oyK?gWD`?{r)iig\oyK?gWD`?0)rrr)rHrHglJ+?g DL?{rg)rHrHglJ+?g DL?0)rrry)iigKal?grq?{r2)iigKal?grq?0)rr3r4)iig33t?g\Re1?{ri5p_type_specifier_no_typeid)rLrLge Se\T?gA;l?r])iigre`?gk-w?r)rrgZD:ZJ?g~hjb?r)r r gu?guL'?r)rrgWH?>g @?rip_typedef_name)r{r{gֵF?gx;tP_?ri p_identifier)rrg2+_?g:D?ri p_constant_1)rHrHg PS?g)R<(?0)rrl PLYParser)rrgƼq>gƼq>{r)rrgƼq>gƼq>0)rr1decorate)rrgZb#>gZb#>{rrBCParser)rrgZb#>gZb#>0)rr3 parameterized)rrgiB>giB>{r)rrgiB>giB>0)rrtru)rrgH(?gx%WI?{r)rrgH(?gx%WI?0)rr param_rule)iigƢzS?g؋?{r)iigƢzS?g؋?0)rrr)rrg츕?g/eq<&?{rs)rrg츕?g/eq<&?0)rr&r~)rrg >gl?{r)rrg >gl?0)B/usr/local/lib/python3.8/dist-packages/pycparser/ast_transforms.pyrRr~)rrg6_>geD?{r)rrg6_>geD?0)rr,)rrgdDr?gdDr?{r)rrgdDr?gdDr?0)rr2)rrgrh!>grh!>{rC)rrgrh!>grh!>0)rr0)rrgR1[;>gR1[;>{rC)rrgR1[;>gR1[;>0)rr.)rrghg/>ghg/>{rC)rrghg/>ghg/>0)rr-)rrg`~>g`~>{rC)rrg`~>g`~>0)rr1)rrg>g>{rC)rrg>g>0)rr$)rrgcKa>gcKa>{r)rrgcKa>gcKa>0)rr$)rrg*8@Y>g*8@Y>{r)rrg*8@Y>g*8@Y>0)rr&)rrg3z>g3z>{r)rrg3z>g3z>0)rr*)rrg/˸>g/˸>{r)rrg/˸>g/˸>0)rr1)rrg<,>g<,>{r)rrg<,>g<,>0)rr<)rrgrr?grr?{riBaccessor_function)rrgrr?grr?0)rrrv)rrg҉ ?ge?{rrc do_activate)rrg҉ ?ge?0)rr$assemble_window)rrgҩ׉]?gҩY?{rrrv)rrgҩ׉]?gҩY?0)rrcreate_headerbar)rrgjлv?g|?{rr$r)rrgjлv?g|?0)rr4load_custom_css)rrg .@ki?gõuxw?{r)rrg .@ki?gõuxw?0)rr apply_theme)rrgG?gi?{r)rrgG?gi?0)rrdo_size_allocate)rrg!\CL?g\OF?{ricreate_container)rrgW⾼M?gy?r)rErEgg ?gwhE?0)rrl UnlockMethod)rrg#>gN~?{r)rrg#>gN~?0)rr change_layout)rrg%![?g?=?{rrr)rrg%![?g?=?0)rr@set_headerbar_button_layout)rrgwd?gh?{rrr)rrg\*?gM  ?rrr)rrgDq3?gDq3?0)rrfirst_start_screen)rrgFjwPy?gS|?{r)rrgFjwPy?gS|?0)rir)rrg*??g0-/Q?{ri create_tab)rrg*??g0-/Q?0)rier,)rrg<@P?g)ì_?{rrr)rrg<@P?g)ì_?0)rir)rrg\>\?g!*8?{r+)rrg\>\?g!*8?0)riupdate_tab_bar_visibility)rrgm!?gS2TS!?{r)rrgm!?gS2TS!?0)ri on_tab_switch)rrgǒq@q?gCq?{r)rrgǒq@q?gCq?0)ri#save_window_size)rrgm L1?gK?{r)rrgm L1?gK?0)ri'do_delete_event)rrg/פ13?g:Ŗ]a?{r)rrg/פ13?g:Ŗ]a?0)ri.r)rrg|t<&?gPt\?{)rron_quit)rrg|t<&?gPt\?0)riadd_row_popover_actions)rrgBot;?g$?@?{r)rrgBot;?g$?@?0)ri'add_database_menubutton_popover_actions)rrg>m'&|;?gaJv٠@?{r)rrg>m'&|;?gaJv٠@?0)riadd_selection_actions)rrgp HH?gRI"?{r)rrgp HH?gRI"?0)riadd_global_accelerator_actions)rrg>?{rrr5)rrga ?gt=>?0)rrB MainWindow)rrg5}?g--qL?{r)rrg5}?g--qL?0)rrr~)rrg ,g ?gL"/&W?{r)rrg ,g ?gL"/&W?0)rrget_dark_theme)rrgfFN ?gfFN ?{rrr)rrgfFN ?gfFN ?0)rr1get_database_lock_timeout)rrg?g?{r=ihr)rrg?g?0)rrget_first_start_screen)rrg$?g$?{r)rrg$?g$?0)rrget_last_opened_database)rrgH.,?gH.,?{r)rrgH.,?gH.,?0)rr{set_last_opened_database)rrgUڒ?gUڒ?{r)rrgUڒ?gUڒ?0)rrget_window_size)rrgs!?gs!?{r)rrgs!?gs!?0)rrset_window_size)rrgW@)?g B?{ri#r)rrgW@)?g B?0)rr3get_sort_order)rrgxY87?gxY87?{r)rrgxY87?gxY87?0)rget_last_opened_list)rrgq ?gq ?{r)rrgq ?gq ?0)rrset_last_opened_list)rrgNuh`)?g\P]?{r)rrgNuh`)?g\P]?0)rrget_remember_composite_key)rrgx3>gx3>{r7)rrgx3>gx3>0)rget_last_used_composite_key)rrg J ?g J ?{r7)rrg J ?g J ?0)rrget_remember_unlock_method)rrg\7u ?g\7u ?{r7)rrg֏>g֏>rQ)rrg+Q^?g+Q^?0)rrget_unlock_method)rrg׌g+?g׌g+?{r7)rrg׌g+?g׌g+?0)rrset_unlock_method)rrgh26?gh26?{rQ)rrgh26?gh26?0)riget_development_backup_mode)rrg >g >{r)rrg >g >0)rrr~)rrgo k3?g&2L?{r)rrgo k3?g&2L?0)rrrv)rrgƗX2*?g?-@h,?{r)rrgƗX2*?g?-@h,?0)rrr)rrgA/>gA/>{r)rrg >g >r)rrg(ݴ>g(ݴ>0)rr get_headerbar)rrgD\nK>gD\nK>{)rir)rrgD\nK>gD\nK>0)rr@ ContainerPage)rrgʽ>gʽ>{r)rrgʽ>gʽ>0)rrr~)rrg6w1>g*3A?{r)rrg6w1>g*3A?0)rrCreateDatabase)rrg4d>g4d>{r)rrg4d>g4d>0)rrr~)rrgWu ?g _]?{r)rrgWu ?g _]?0)H/usr/local/lib/python3.8/site-packages/passwordsafe/keyfile_generator.pyrr~)rrgu->gϐp?{r)rrgu->gϐp?0)/usr/lib/python3.8/secrets.pyrr~)rrg>?gO)?{r)rrg>?gO)?0)rkrlrm)iighf?g`}*q?{r)iighf?g`}*q?0)rkrr)r-r-g1yO">gw]:/>{r)rrgIc->gx0 >rZ)rrg8qo>gC@>0)rkrr)iigԣd?gvF?{r)iigԣd?gvF?0)rkr-r~)rrg I'?g*L@]M?{r)rrg I'?g*L@]M?0)/usr/lib/python3.8/struct.pyr-r~)rrg4;l>gݳD-?{r)rrg4;l>gݳD-?0)rrr)iig_?g_?{r)iig_?g_?0)rrEr)iig)֥?g)֥?{r)iig)֥?g)֥?0)rrrP)rrgJKQU>gJKQU>{r)rrgJKQU>gJKQU>0)rrr~)rrgi%?gE)V?{r)rrgi%?gE)V?0)rrr)rrgJ3>g]E?{r()rrgJ3>g]E?0)rr)r*)rHrHgCg$9?{rrr~)rrg>gn>r)rrg; Q>g#CB ?0)riBytecode)rrgl>gl>{r)rrgl>gl>0)rrr~)rrgQ!?gMȒ/$d?{r)rrgQ!?gMȒ/$d?0)rrkr)rrgRާ=4"?gRާ=4"?{r)rrgRާ=4"?gRާ=4"?0)rr/def_op)rrg;:ҙ?g;:ҙ?{r)rMrMg5oE>g5oE>r)rrg.b>g.b>r)r@r@gBY>gBY>r)rhrhgK6J1 ?gK6J1 ?0)rrr)rMrMg@RTw>gmtA>{r)rMrMg@RTw>gmtA>0)rrr)rrgE‡&>gE'>{r)rrgE‡&>gE'>0)rrr)r@r@g,pc>gRW>{r)r@r@g,pc>gRW>0)rrr~)rrgH?g5MS?{r)rrgH?g5MS?0)rr;Node)rrg\~>g\~>{r)rrg\~>g\~>0)rr NodeVisitor)rrg ͔''>g ͔''>{r)rrg ͔''>g ͔''>0)rrrv)rCrCgƒ7L ?gƒ7L ?{r)r r g4?g4?r)rrg*o>g*o>0)rrb ArrayDecl)rrg5=ܙ>g5=ܙ>{r)rrg5=ܙ>g5=ܙ>0)rrArrayRef)rrgX >gX >{r)rrgX >gX >0)rr/ Assignment)rrg>\>g>\>{r)rrg>\>g>\>0)rrBinaryOp)rrgrs+>grs+>{r)rrgrs+>grs+>0)rrBreak)rrgo,Nl>go,Nl>{r)rrgo,Nl>go,Nl>0)ri Case)rrg|L>g|L>{r)rrg|L>g|L>0)ri"Cast)rrgC#C>gC#C>{r)rrgC#C>gC#C>0)ri7Compound)rrgOSY>gOSY>{r)rrgOSY>gOSY>0)riICompoundLiteral)rrg-T>g-T>{r)rrg-T>g-T>0)ri`rv)rHrHgY/>gY/>{r)rHrHgY/>gY/>0)ri^Constant)rrg2nDV>g2nDV>{r)rrg2nDV>g2nDV>0)rioContinue)rrg8[Mx>g8[Mx>{r)rrg8[Mx>g8[Mx>0)rirv)i0i0gDRGn=?gDRGn=?{r)i0i0gDRGn=?gDRGn=?0)ri}Decl)rrgrY>grY>{r)rrgrY>grY>0)riDeclList)rrguP>guP>{r)rrguP>guP>0)rir)rrg\%h>g\%h>{r)rrg\%h>g\%h>0)riDoWhile)rrg|L>g|L>{r)rrg|L>g|L>0)ri EllipsisParam)rrgߋL>gߋL>{r)rrgߋL>gߋL>0)riEmptyStatement)rrg\MN>g\MN>{r)rrg\MN>g\MN>0)rir)rrgyj8>gyj8>{r)rrgyj8>gyj8>0)ri Enumerator)rrg6]\>g6]\>{r)rrg6]\>g6]\>0)riEnumeratorList)rrg抵lk>g抵lk>{r)rrg抵lk>g抵lk>0)ri%ExprList)rrge w֊>ge w֊>{r)rrge w֊>ge w֊>0)ri9rv)r}r}gҡs?gҡs?{rip_translation_unit_or_empty)r}r}gҡs?gҡs?0)ri7FileAST)rrg7C>g7C>{r)rrg7C>g7C>0)riIFor)rrg>g>{r)rrg>g>0)rifFuncCall)rrgCaJ>gCaJ>{r)rrgCaJ>gCaJ>0)ri}rv)r1r1gr*"s?gr*"s?{rip_direct_xxx_declarator_6)r1r1gr*"s?gr*"s?0)ri{FuncDecl)rrgc[Mq1>gc[Mq1>{r)rrgc[Mq1>gc[Mq1>0)riFuncDef)rrgLَ2>gLَ2>{r)rrgLَ2>gLَ2>0)riGoto)rrgPnD*>gPnD*>{r)rrgPnD*>gPnD*>0)rirv)rrg<ړ>g<ړ>{r)rrg<ړ>g<ړ>0)riID)rrg5'\u>g5'\u>{r)rrg5'\u>g5'\u>0)rirv)i(i(gՐM=?gՐM=?{r|)iig|R,?g|R,?r})rLrLg}p#?g}p#?r)r{r{gb}4?gb}4?0)riIdentifierType)rrg^-j>g^-j>{r)rrg^-j>g^-j>0)riIf)rrg6#>g6#>{r)rrg6#>g6#>0)riInitList)rrgDf>gDf>{r)rrgDf>gDf>0)riLabel)rrgn>gn>{r)rrgn>gn>0)riNamedInitializer)rrgSJF>gSJF>{r)rrgSJF>gSJF>0)ri/rv)r1r1gC,{?gC,{?{r)r1r1gC,{?gC,{?0)ri- ParamList)rrg>g>{r)rrg>g>0)riArv)rrg۵p ?g۵p ?{r)rrg۵p ?g۵p ?0)ri?PtrDecl)rrgB$gP>gB$gP>{r)rrgB$gP>gB$gP>0)riQReturn)rrgcAJ]>gcAJ]>{r)rrgcAJ]>gcAJ]>0)ribr)rrg[>g[>{r)rrg[>g[>0)riu StructRef)rrgpۣ10>gpۣ10>{r)rrgpۣ10>gpۣ10>0)rir)rrg 8E>g 8E>{r)rrg 8E>g 8E>0)riGrammar)rrg(rI5>g(rI5>{r)rrg(rI5>g(rI5>0)ri VersionError)rrg87i>g87i>{r)rrg87i>g87i>0)rirv)rrgGy>gGy>{r)rrgGy>gGy>0)rir)rrgLؼ7?gWR!ʇ?{r)rrgLؼ7?gWR!ʇ?0)ribind_callables)rrgt"?gJl2?{r)rrgt"?gJl2?0)riLRTable)rrg"OY>g"OY>{r)rrg"OY>g"OY>0)ri) LALRError)rrgUɔN>gUɔN>{r)rrgUɔN>gUɔN>0)ri3LRGeneratedTable)rrgt>gt>{r)rrgt>gt>0)riy rv)rrg̴>g̴>{r)rrg̴>g̴>0)ri rt)rrgNsP>g4dᐲp?{r)rrgNsP>g4dᐲp?0)ri r)rrgp>p>ggS>{r)rrgp>p>ggS>0)ri r)rrg8~6?gRt&?{r)rrg8~6?gRt&?0)ri r)rrg>\5y>g2w>{ri rt)rrg>\5y>g2w>0)ri r)rrg*ꂰ >gɜ,^>{r )rrg*ꂰ >gɜ,^>0)ri r)rrgBꮠ{>gͨf'>{r )rrgBꮠ{>gͨf'>0)ri r)rrg>!ky>g|)v>{r )rrg>!ky>g|)v>0)riD r)rrg@?gi  &[?{rv)rrg@?gi  &[?0)ri7 rw)rrg`/Y /N?gip?{r )rrg`/Y /N?gip?0)rix ParserReflect)rrg`-C#?g`-C#?{r)rrg`-C#?g`-C#?0)ri r)rrgr?g 2;.?{r)rrgr?g 2;.?0)ri r)rrgzWBؚ?g VXM?{rg)rrgzWBؚ?g VXM?0)rrr~)rrgsT$?g}Y?{r)rrgsT$?g}Y?0)rrrz)rrgC=B"?gWLQG+?{r)rrgC=B"?gWLQG+?0)rir)rrg*7?gNF?{rv)rrg*7?gNF?0)riz EndOfBlock)rrgư>gư>{r)rrgư>gư>0)ri| BlockFinder)rrgHw]>gHw]>{r)rrgHw]>gHw]>0)rih _void)rrg%W>g%W>{r)rrg%W>g%W>0)ril _empty)rrg T>g T>{r)rrg T>g T>0)rip _ParameterKind)rrgE>gin3"?{r)rrgE>gin3"?0)ri Parameter)rrg @1>g @1>{r)rrg @1>g @1>0)ri( BoundArguments)rrg3>C>g3>C>{r)rrg3>C>g3>C>0)ri Signature)rrg`纱>g`纱>{r)rrg`纱>g`纱>0)rrr~)rrg+p* 9?g_dDz?{r)rrg+p* 9?g_dDz?0)rrC Instruction)rrgK4_]ɹ>gK4_]ɹ>{r)rrgK4_]ɹ>gK4_]ɹ>0)rSi2rD)rrgn8O>g /#?{r,)rrgi䈨>g9xpc>r)rrgL>gz"?0)rSiIr,)rrg?D-`1?gJk ?F?{r)rrg?D-`1?gJk ?F?0)rSirw)rrg1 Y*>gM?{r)rrg1 Y*>gM?0)rSi`r)r r g%x;>gxnb ?{r)r r g%x;>gxnb ?0)rSir)rrgBLr6?gj~?{r)rrgBLr6?gj~?0)rSirz)rrgͤ>>g%7>{rSi_wait)rrgͤ>>g%7>0)rSi_internal_poll)rrgz2>gz2>{)rSi__del__)rrgE/w>gE/w>)rSipoll)rrgR<ܦ)>gR<ܦ)>0)rSirp)rrg>gu;w?{r )rrg>gu;w?0)rSir )rrg݊X9|>g2j!?{)rSi2rD)rrg݊X9|>g2j!?0)rSirT)rrgǝ̅>g>{r)rrgǝ̅>g>0)rSrRr~)rrgV?gIQ?{r)rrgV?gIQ?0)rrrv)rrg`'>< ?gK|b1?{)rr _get_parser)rrg`'>< ?gK|b1?0)rr]rk)r}r}g2U~2?gE%,,?{r)r}r}g2U~2?gE%,,?0)rrr)rrg6#vC(?gAJwg-?{r)rrg6#vC(?gAJwg-?0)rrr)rrgo8G"?gָ2&?{r)rrgo8G"?gָ2&?0)rrr)i5i5g25qX?gH2s[?{)rr_lex_type_lookup_func)i5i5g25qX?gH2s[?0)rrr )i5i5g IH?g]Sc?{r)i5i5g IH?g]Sc?0)rr/_get_yacc_lookahead_token)r1r1g ]> ?g ]> ?{r)r1r1g ]> ?g ]> ?0)rrxr{)rrgY:?gF#͏'=?{riKp_xxx_declarator_2)r{r{g~1\B/?g;S1?r)r r g&?L?gz?r)r1r1gۉ?g4\c!?r_)rrg3">g]ĝ)y>0)ri[r)iig>| @?g>| @?{r|)iig>| @?g>| @?0)ri2r})iigQyh?g|Mp?{r)iigfUhF]ph?gn+5p?r)r r gt?gB_T4E?0)ri_r)i i g[X?ghc;B]?{ri"p_declaration_specifiers_no_type_1)rrgp,Ǵ0?grD3?ri"p_declaration_specifiers_no_type_2)r3r3g>=V1?gu`@4?rip_declaration_specifiers_4)rrg">\1>gzB>rip_declaration_specifiers_5)rrg/7K?g:Bs-P?ri!p_declaration_specifiers_6)rrgN%?g5h,?0)riwr)ivivgew?gMR?{ri p_decl_body)rsrsgϨO+e?gy>v?rip_parameter_declaration_1)rrgD|3j?gz?0)rir)r}r}goI ?glv2.?{r)r}r}goI ?glv2.?0)ri p_translation_unit_1)r}r}gC<?gҫ?{r)r}r}gC<?gҫ?0)rir)rrg*!8;?gqP?{r)rrg*!8;?gqP?0)ri!p_external_declaration_2)rsrsg5Gc/?gkTPB?{r)rsrsg5Gc/?gkTPB?0)rir* )rsrsg5?F?g*|?{r)rsrsg5?F?g*|?0)ri p_declaration)rsrsgEhc1?g7PÑD?{r)rsrsgEhc1?g7PÑD?0)rir )rrgh0?g,~6OJ?{r)rrgh0?g,~6OJ?0)rir" )r3r3g[xze0?gR]ukJ?{r)r3r3g[xze0?gR]ukJ?0)rir$ )rrgt>g's>{r)rrgt>g's>0)rir& )rrgvY H?gy^Rqb?{r)rrgvY H?gy^Rqb?0)ri!r( )rrg)A?gp1S?{r)rrg)A?gp1S?0)ri'p_storage_class_specifier)r3r3go'?glvZ:?{r)r3r3go'?glvZ:?0)ri5r~)rLrLg=&V?gi6CK!w?{r)rLrLg=&V?gi6CK!w?0)riEp_type_specifier)i}i}gD?gU X?{r)i}i}gD?gU X?0)riMp_type_qualifier)rrgupӦu!?g#R4?{r)rrgupӦu!?g#R4?0)riTr)r;r;gtFM@?g͕_U?{r)r;r;gtFM@?g͕_U?0)ri]r)r;r;gL?g)%U[?{r)r;r;gL?g)%U[?0)ri? p_declarator)r;r;gg73?gwӝ(G?{r)r;r;gg73?gwӝ(G?0)riEp_xxx_declarator_1)iig؋nK =?g4T?{r5 )r{r{g'> =?g4T?0)riQr^)iig|.c?g \?{r5 )iig|.c?g \?0)ri[p_direct_xxx_declarator_2)rrgfLg>g ʧ#>{r5 )rrgfLg>g ʧ#>0)riar)r r gnrв4?gE?{r5 )r r gnrв4?gE?0)rir)r1r1gPLpI?gr\ZW?{r5 )r1r1gPLpI?gr\ZW?0)rir)rrgYQ?gV%D3q?{r)rrgYQ?gV%D3q?0)rir)r1r1gwrc&?gȍM@?{r)r1r1gwrc&?gȍM@?0)rir)rrg)eҋQ?g>Be?{r)rrg)eҋQ?g>Be?0)rir, )rrgQi=Y?gWϐ΁?{r)rrgQi=Y?gWϐ΁?0)rir)r r gClg?g+a 3?{r)r r gClg?g+a 3?0)ri^r`)rrg:3 >gp/⛣>{r)rrg:3 >gp/⛣>0)rikp_abstract_declarator_3)rrgx!>g PP>{r)rrgx!>g PP>0)rir)rrg d ?g[OGp#?{r)rrg d ?g[OGp#?0)rir)r{r{guz4mI?gjEi?{r)r{r{guz4mI?gjEi?0)ri r)rrg9LֿS?g/ ?{r)rrg9LֿS?g/ ?0)riAr)rrgnzL ?g),h"?{r)rrgnzL ?g),h"?0)riJr)rrgɶ ?g]DU!?{r)rrgɶ ?g]DU!?0)ridp_cast_expression_1)rrgD!U?gQm >M?{r)rrgD!U?gQm >M?0)rilp_unary_expression_1)rrgd>?gB C?{r)rrgd>?gB C?0)rip_postfix_expression_1)rrg?gһl3?{r)rrg?gһl3?0)rip_primary_expression_1)rrgꞥƬ`>g>{r)rrgꞥƬ`>g>0)rip_primary_expression_2)rHrHgcKE>guJ ?{r)rHrHgcKE>guJ ?0)rir)rrg%5?gțT%?{r)rrg%5?gțT%?0)rir)rHrHgnD%?gV;?{r)rHrHgnD%?gV;?0)ri9p_empty)iViVg8 =?gku(EF?{r)iViVg8 =?gku(EF?0)rrBr)rrgm1?g[>un ?{r)rrgm1?g[>un ?0)rrr~)rrgT dm?g~f4O×?{r)rrgT dm?g~f4O×?0)@/usr/local/lib/python3.8/dist-packages/pycparser/ply/__init__.pyrr~)rrgn7ߍ>gn7ߍ>{r)rrgn7ߍ>gn7ߍ>0)rrrv)rrgZ픻>gZ픻>{r)rrgZ픻>gZ픻>0)rrrq)rrgBY[%>gBY[%>{r)rrgBY[%>gBY[%>0)rrrr)rrg%W>g%W>{r)rrg%W>g%W>0)rrN YaccError)rrg{f>g{f>{r)rrg{f>g{f>0)rr8 YaccSymbol)rrgY#>gY#>{r)rrgY#>gY#>0)rrv)r}r}gP V ?gP V ?{r)r}r}gP V ?gP V ?0)rr~r)iigˡ'}?g;ز?{rrr|)iig?&C?gpE4J/K?r)r$r$gZշ?gW ?ri r- )r}r}g?֚>g>D..?r)i}i}gR5?g'h=?ri!r. )rsrsg6%?gsr .?r) )iig/i8?g6ml@?rir/ )rsrsgQ(?g1?r )rrgEE Va"?g(?r! )r;r;gEP !?gu+'?r# )rrg#z;9>g8qo>r% )rrgjg1?gxAP 8?r' )iigx7[1?gN6l#7?ri'r0 )r3r3ghsp?gop_&?r})rLrLg5[3?g3\pH;?riEr1 )i}i}g'=?gKىE?riMr2 )rrg`' ?g  ?r)rrggt`i{,?gvi=(3?r)r;r;g=*?g^-U2?ri?r3 )r;r;g+?gIo2?riEr4 )iig Lp6?g~ ??r )iig`3?g@ S:?r])iigwgB?geI?ri[r6 )rrg)e5E>geyX>r)rurug슁b?g %!?r)r~r~g TF/?gX$`Sk5?r)rrgjHUO,?g2 e 3?r)r1r1g,$?gJgu?r)ihihgJucA?g |ôG?r+ )iig1e[=?g2BC?r)rHrHg}>gnZ-6>r_)rrgxF>gJ]ʪ>rikr7 )rrg5_>gm(1,>r)rrg38>g )>r)r{r{gB;&?g2g/?r)rrg%W>g]E*>r)rrg2_?gSY?r)rrg_Э>g>܇>ridr8 )rrgr־>g~n >rilr9 )rrgx蕔>g\ Xc>rir: )rrgj/>gtc?rir; )rrg%>go>rir< )rHrHgV>g:#>r)rrg zy~t>g$LS/>r)r r gW>gmi?0)rrr)iig+3ʊn?g+3ʊn?{rB )iigv4?gv4?r)r}r}gϱr>gϱr>rC )r}r}gB]-Bt>gB]-Bt>r)rrg?g?rD )rsrsg>v*?g>v*?r) )rsrsgE`?gE`?rE )rsrsg;F:?g;F:?r )rrgj ?gj ?r! )r3r3g&] ?g&] ?r# )rrgnAи>gnAи>r% )rrgP.Ʃ(?gP.Ʃ(?r' )rrg~jWI?g~jWI?rF )r3r3gI^ ?gI^ ?r})rLrLgW =+?gW =+?rG )i}i}gM^F.?gM^F.?rH )rrgKvY?gKvY?r)r;r;gk%[#N?gk%[#N?r)r;r;gwm "?gwm "?rI )r;r;gbچ?gbچ?rJ )iiguS< '?guS< '?r )r{r{gϥ?gϥ?r])iigO{C7?gO{C7?rK )rrg9xm>g9xm>r)r r g>l{ >g>l{ >r)r1r1g1Ir?g1Ir?r)rrg_ ?g_ ?r)r1r1g"y?g"y?r)rrg ձ$?g ձ$?r+ )rrg9@)?g9@)?r)r r g}^ r>g}^ r>r_)rrg;ƥ>g;ƥ>rL )rrgfkDc>gfkDc>r)rrg.n>g.n>r)r{r{g[ =?g[ =?r)rrgLSF>gLSF>r)rrgH>gH>r)rrg)e`>g)e`>rM )rrg@C6>g@C6>rN )rrg;>g;>rO )rrgg>gg>rP )rrgnlε7>gnlε7>rQ )rHrHg0R9>g0R9>r)rrgPd>gPd>r)rHrHg͝b>g͝b>)ri9r= )iViVgɄx.?gɄx.?0)rrr)iig/X#K?go5R?{rrr)iig/X#K?go5R?0)rir-)iigw^G?gO?{r2)iigw^G?gO?0)ri r.)iigp$+Z?g !b?{r2)iigp$+Z?g !b?0)rrYaccProduction)rrgyCn>gyCn>{r)rrgyCn>gyCn>0)rirv)rrgX;>gGR?{r)rrgX;>gGR?0)ri9r\)rrgbCSP3O?g6] R?{)rirv)rrgbCSP3O?g6] R?0)riCrk)r}r}g$"?g=dC?{rj)r}r}g$"?g=dC?0)rir )r}r}gzL=?g9?{)riCrk)r}r}gzL=?g9?0)riLRParser)rrgVy?>gVy?>{r)rrgVy?>gVy?>0)ri Production)rrg~>g~>{r)rrg~>g~>0)rifrv)i6i6gx(3?gx(3?{r)i6i6gx(3?gx(3?0)rivbind)i6i6g7 mܕo#?g7 mܕo#?{)rir )i6i6g7 mܕo#?g7 mܕo#?0)rieMiniProduction)rrgz >gz >{r)rrgz >gz >0)riLRItem)rrgwϡ>gwϡ>{r)rrgwϡ>gwϡ>0)ri GrammarError)rrg8š>g8š>{r)rrg8š>g8š>0)rr&)rrg]2>g]2>{r()rrg]2>g]2>0)rr')rrg}V">g}V">{r()rrg}V">g}V">0)rr))rrgI>gI>{r()rrgI>gI>0)rr))rrg<?.d>g<?.d>{r()rrg<?.d>g<?.d>0)rr))rrg>g>{r()rrg>g>0)rr))rrgМ)|>gМ)|>{r()rrgМ)|>gМ)|>0)rr PkgConfigError)rrggSCt>ggSCt>{r)rrggSCt>ggSCt>0)rrr~)rrg;2r>gHZH#?{r)rrg;2r>gHZH#?0)rrMr-)rrg־g7?g(:?{r)rrg־g7?g(:?0)rrr)iig_.j{9?gvMD?{)rrQr)iig_.j{9?gvMD?0)rr5r=)rr;gp H"?gZ?{r)rMrMgzv3?gTi9-:?rir)rrgNe>gׁpv0?ri<r)rrgj>g)K++?rX)rrg`?gZ?0)rrr)rrgC1?gSr6?{)rrT _get_items)rrgC1?gSr6?0)rrTrc )rrgߖ K3?g=<E?{rr}r)rrg+;L?g<?r`)rbrbgbx0?gGePA?0)rr BaseTypeByIdentity)rrg7TPr>g7TPr>{r)rrg7TPr>g7TPr>0)rr}r)rrkg] &'?gqR9(?{r<)rrg}z#?>g/Q ?rd )rr gS.>gi]?r/)rBrBg#M1>g#M1>rX)rrgt>g?0)rrra)rcrbgPP',3=?gSnRR?{)rrr:)rrgRV ?gƣ3?)rrr_)rr}gPDq0?g~jC?r<)r;r;g9?g3l<;?rX)rMrMg3? ?g~ g~<8>{r)rrg~<8>g~<8>0)rrrv)rrg|P>g|P>{r)rrg|P>g|P>0)rrr)rrg 4B>ge"\ ?{r<)rrg 4B>ge"\ ?0)rr VoidType)rrgǔ@>gǔ@>{r)rrgǔ@>gǔ@>0)rrhBasePrimitiveType)rrg%X>g%X>{r)rrg%X>g%X>0)rrrv)rrgA >gA >{r)rrg|>g|>r )r@r@gXm$'>gXm$'>0)rrUr)rrg=o>gv);'?{r<)rrg=o>gv);'?0)rr PrimitiveType)rrgv(:>gv(:>{r)rrgv(:>gv(:>0)rr3UnknownIntegerType)rrg">g">{r)rrg">g">0)rrUnknownFloatType)rrg};h>g};h>{r)rrg};h>g};h>0)rrQr)rrgO=?gjjQ?{r)rrgO=?gjjQ?0)rrrv)rrgd}R?g.hc?{)rr.as_function_pointer)rrg HE@?gyAQ?r/)rrg4HZC?gU?0)rr$BaseFunctionType)rrg?Y>g?Y>{r)rrg?Y>g?Y>0)rr.rl )rrgs'Cw+?ghr* U?{r)rrgs'Cw+?ghr* U?0)rr}RawFunctionType)rrg+/\ʷF>g+/\ʷF>{r)rrg+/\ʷF>g+/\ʷF>0)rrLr)rrgLp?g_޳iA?{r<)rrgLp?g_޳iA?0)rrFunctionPtrType)rrgM#3>gM#3>{r)rrgM#3>gM#3>0)rirv)rrg[NXVD?g4J>S?{)riConstPointerType)rrgX͑>g,k7}>rb )rrg=>g r0~>r)rrgR>gIb>r)rrgGֶ@?g`5O?r)rPrPgJ@?gA&U$(?0)rir)rrg,r1>gY:?{r<)rrg,r1>gY:?0)ri PointerType)rrg4_>g4_>{r)rrg4_>g4_>0)rirp )rrg>FbJp_>g3s~>{r)rrg>FbJp_>g3s~>0)riNamedPointerType)rrgt5fV>gt5fV>{r)rrgt5fV>gt5fV>0)ri)rv)rrgM&?gcEz*?{r)rrg+c>g[>r)rCrCg6W&?gKsU*?0)ri6r)rrgD?vo>g:`>{rb )rrgD?vo>g:`>0)ri<r)rrgKK3@>gx˥V75?{r<)rrgKK3@>gx˥V75?0)ri% ArrayType)rrg >g >{r)rrg >g >0)riKbuild_c_name_with_marker)rrgbǻ>gbǻ>{)riOforce_the_name)rrgrdqA>grdqA>)ri^rv)rrgg>gg>0)riOru )rrgpnA&>g}oAj>{ri0 unknown_type)rrgpnA&>g}oAj>0)riGStructOrUnionOrEnum)rrgjWI>gjWI>{r)rrgjWI>gjWI>0)ri^rv)rrgTD>g[,>{rv )rrgTD>g[,>0)riX StructOrUnion)rrg8>g8>{r)rrg8>g8>0)ri StructType)rrg(j>g(j>{r)rrg(j>g(j>0)ri UnionType)rrg(e>g(e>{r)rrg(e>g(e>0)riEnumType)rrgp >gp >{r)rrgp >gp >0)ri0rw )rrgt.Fz>gqBi>{r)rrgt.Fz>gqBi>0)riBr)rrgw>gY>{r)rrgw>gY>0)riMrD)rrgyc*?gc9B?{)rrr)rrg^QA%>g$ <?)rrUr)rrg!>@?g20P$(&?r)rrgZQi?gʑ:?ra )rrgqW? ?gŢ$*!?rb )rrgox>g?0)rrr~)rrg ?gbpE?{r)rrg ?gbpE?0)rrr )r}r}g*:?g}3?{r)r}r}g*:?g}3?0)rrr)r}r}g,epW?gkFP?{r)r}r}g,epW?gkFP?0)rr_warn_for_string_literal)r}r}gq^'-?gq^'-?{r)r}r}gq^'-?gq^'-?0)rrbr)r}r}g R[S?ga|PE?{r)r}r}g R[S?ga|PE?0)rrCr)r}r}g/B?gİ=_%>?{r)r}r}g/B?gİ=_%>?0)rrr )rrgNs>g>{rrr)rrgNs>g>0)rrr)r}r}gl^W?gXǂ?{r)r}r}gl^W?gXǂ?0)rrr)r}r}g=Z0J?gPc?{r)r}r}g=Z0J?gPc?0)ri)rv)rrgS->g&y(ڞ>{r)rrgS->g&y(ڞ>0)ri3r)r}r}gs@N?g!c?{r)rrgYL?gN=5?r)rrg,9@?gyW!?0)riqrk)rrgVۇ?gA7v?{r)rrgVۇ?gA7v?0)rir)rrgUn??glfr?{)riqrk)rrgUn??glfr?0)ri_add_constants)rrg>g>{r)rrg>g>0)rir )rrgnE>g*vO ?{r_)rrgnE>g*vO ?0)rir`)rrge?g[5$?{r)rrge?g[5$?0)rir )rrg7W7?gïLPba?{r)rrg7W7?gïLPba?0)rir)rrgK)n0b =?go.?{r)rrgK)n0b =?go.?0)ri' parse_type)rrgyM">g&*?{r)rrgyM">g&*?0)ri*r)rrg(t>g_?{)ri'r )rrg(t>g_?0)ri2r)r1r1g +PX.?gUO5?{r)rrgVM>gbb>r)rrg>Z>g~>r )rrg2=\M+-?g^ 4?0)ri@r)iigj;Q?g8+nT?{r)iigj;Q?g8+nT?0)riLr)r.r.glH?g+uYi?{r )rrg!4#?gpnW?r)rrg{dd C?gX[?0)riUr)r1iBg4ξ9~?ga?{r)rrgE>g/RyR^2?r)rrgSC_=?gz:?r)rrgQMk>g֦##?r)rrUg~>k?gGщXR[s?rir)r gda?gѴTv?r/)rrgz!V?gVc]?0)rir)rrg)I?gI M?{r/)rrg)I?gI M?0)rir0)rrg@EX?g>T??{r)rrg@EX?g>T??0)rir)r r g^_:?gw-uG?{r )r r g^_:?gw-uG?0)rifrE)rrg+c?g <!?{r)rrg+c?g <!?0)ri'Parser)rrgS!>gS!>{r)rrgS!>gS!>0)rrr~)rrgUUDZ?g;J<أ?{r)rrgUUDZ?g;J<أ?0)rr r)rxrxglQ1?g2?{r)rxrxglQ1?g2?0)rrr~)rrgL?ga*/ ?{r)rrgL?ga*/ ?0)gc)׈>{r)rrgc)׈>gc)׈>0)rSr#rU)rrgP x|>gTSU>{r)rrgP x|>gTSU>0)rSrVrW)rrgS>gL_V>{r)rrgS>gL_V>0)rSr _cleanup)rrg-n<>g-n<>{r)rrg-n<>g-n<>0)rSip check_output)rrg^k ?g`?{rW)rrg^k ?g`?0)rSirv)rrg6hf>g6hf>{rSir)rrg6hf>g6hf>0)rSiCompletedProcess)rrg-t>g-t>{r)rrg-t>g-t>0)rSir)rrgJ![YL?g ?{rSipr )rrgJ![YL?g ?0)rSizr)rrgq( i>gih?{r)rrgq( i>gih?0)rSirv)rrgy}2;P?g%^ݷ?{r )rrgy}2;P?g%^ݷ?0)rSir)rrgf ^>gf ^>{r )rrgf ^>gf ^>0)rSir)rrgq7Rw>gwr>{r )rrgq7Rw>gwr>0)rSir )rrgC>g<]>{r )rrgC>g<]>0)rSirI)rrg䱀>g3΃?{rv)rrg䱀>g3΃?0)rSir)rrg&5?g WN?{r )rrg&5?g WN?0)rSir )rrgc >g[J>{r )rrgc >g[J>0)r rr)rrgIr^/?g3?{)r ifr)r r g"!B!?g{Bk&?r)r@r@g֭'<,>g+p?)r iVr)rrgE>g(H>r)rrgqA]t>gV>)r ir)rrggip?gY ?)r ivr)rrgo>g'>0)r r|r)r@r@g2H) >g2H) >{r)r@r@g2H) >g2H) >0)r rr)rrg7̱kd/?g$"5?{r)rfrfg'I*?gi 2?r)r@r@gd]?gRg8G?0)r rr)rrg)vqq ?gMB?{r)rrg)vqq ?gMB?0)r rr)rRrRg/F>g:9/?{r)rrg>>gD>r)rrgߋ>gq1F>0)r rr)rMrMgnL'?gV| ?{r)rMrMgnL'?gV| ?0)r rinner)rrg$v,?gEYf?{rrr~)rrg >gS|P_"?rAr r&)rrg >g*Vg?)r(rr~)rrg{>gۮ#P>)rQr&r;)rrg>g7- +?r@)r r g2Bl?g(MAT?rrBr)rrgB UZ>g~?r)r@r@g V>gޗWA?r i.IO)rrg x>g83 @ ?r iBinaryIO)rrg抵lk>gL,N?r iTextIO)rrg )>grJfe!?r)r@r@gn]M>gv;6?rr& Application)rrgDL>gbT'.?0)r rr)rrgj %Z?gJE)*?{)r i, _SpecialForm)rrg[u>g ??)r i _GenericAlias)rrga-%hm>gQ ?)r i_VariadicGenericAlias)rrg.>gZշ?)r iMGeneric)rrg|4[ȍ>gďh?0)r ir )r@r@gBSP.>gBSP.>{r)r@r@gBSP.>gBSP.>0)r i_Final)rrgl9?>gl9?>{r)rrgl9?>gl9?>0)r i" _Immutable)rrg-n<>g-n<>{r)rrg-n<>g-n<>0)r i3r)r r gb>g'I>{r)r r gb>g'I>0)r i@rv)r r gmj>gmj>{r)r r gmj>gmj>0)r iIra)rrg~Is?g6,?{r rr )rrg~Is?g6,?0)r ifr)rkrkg¨ ?gzs+?{r)rkrkg¨ ?gzs+?0)r i[r)rMrgR'?gC V?{r )rrMgR'?gC V?0)r i,r )rrg>g^?{r)rrg>g^?0)r i ForwardRef)rrg Su>%>g Su>%>{r)rrg Su>%>g Su>%>0)r iVr)r&r&g{f>gmB>{r)r&r&g{f>gmB>0)r iJrv)rrgG]oI?g0(n=?{r)rrgG]oI?g0(n=?0)r iTypeVar)rrg hS>g hS>{r)rrg hS>g hS>0)r irz)iig3S)@?gO6}N?{)r ir&)iig3S)@?gO6}N?0)r ir)rsrsglS ?glS ?{r)rsrsglS ?glS ?0)r irv)rfrfgNM?g!Zm?{r)rMrMgz&?gsVMfH?)r i copy_with)rrg}a?g,Er>g[HZfA?gv`?r)rrg >gXEU?0)r ir)rrg>gqҿ#?{r)rrg>gqҿ#?0)r ir)rrg0Q?gTI?{r )rrg0Q?gTI?0)r ir )rrgʔA{?g ѭ??{r)rrgʔA{?g ѭ??0)r ir)rrgA>gQk>{r)rrgW];>gLiԽ>r)r@r@g+/\ʷF>g*m >0)r ira)rMrMg^H?gy;>1 ?{r )rMrMg^H?gy;>1 ?0)r ir)r@r@gf8>gQ~*%>{r)r@r@gf8>gQ~*%>0)r ir&)iigEV?go_b?{r)iigU?g- ikb?r)r-r-gC>g +>0)r ir )rrgNi>gi& ?{r)rrgNi>gi& ?0)r ir )rrgQVI>g6?{r)rrgQVI>g6?0)r ivr)rrg^>>g93 @?{r)rrg^>>g93 @?0)r iyr)rrgS'>gUv—/>{r)rrgS'>gUv—/>0)r inr )rrg\$?g85?{r )rrg\$?g85?0)r ir )r&r&g!?gGZ*?{rrr)rrg:\!aW>g />r)r-r-g]YEa?gU@?r )r r gu)t?gQ?0)r iMr )rrgCY>gAŦ?{r)rrgCY>gAŦ?0)r i _TypingEmpty)rrgSJF>gSJF>{r)rrgSJF>gSJF>0)r i_TypingEllipsis)rrgQҎ>gQҎ>{r)rrgQҎ>gQҎ>0)r i _ProtocolMeta)rrg4q0>g4q0>{r)rrg4q0>g4q0>0)r i)r)rHrHgm>gm>{rrr )r r g9.5>g9.5>r )r r g8澚؃>g8澚؃>0)r i$r )r r g8@?gz"0?{r )r r g8@?gz"0?0)r iProtocol)rrgGVg}>gGVg}>{r)rrgGVg}>gGVg}>0)r idr)r r g͡3>g5_W>{r)r r g͡3>g5_W>0)r ir )r>r>ge{?g%՟{a?{r)r>r>ge{?g%՟{a?0)r i SupportsInt)rrg E>g=SPt>{r)rrg E>g=SPt>0)r i SupportsFloat)rrg)'!+ԧ>g~2>{r)rrg)'!+ԧ>g~2>0)r iSupportsComplex)rrgZ Z>gm\>{r)rrgZ Z>gm\>0)r i SupportsBytes)rrgqPP>gV&hc>{r)rrgqPP>gV&hc>0)r i SupportsIndex)rrg%U `>g#?,>>{r)rrg%U `>g#?,>>0)r i# SupportsAbs)rrg\>g$hP>{r)rrg\>g$hP>0)r i- SupportsRound)rrg/9N:>gih>{r)rrg/9N:>gih>0)r iOr)rrglAc>g"Ж >{r)rrglAc>g"Ж >0)r iMNamedTupleMeta)rrgQk⹺>gQk⹺>{r)rrgQk⹺>gQk⹺>0)r ilr)rrgÔ/>gÔ/>{r)rrgÔ/>gÔ/>0)r ir~)rrg=Yͮ>g=Yͮ>{r )rrg=Yͮ>g=Yͮ>0)r ir)rrgAO>gY: ?{r)rrgAO>gY: ?0)r i_TypedDictMeta)rrg5I10>g5I10>{r)rrg5I10>g5I10>0)r i TypedDict)rrgbnā>gbnā>{r)rrgbnā>gbnā>0)r i.r )rrg慀n?g]2*?{r)rrg慀n?g]2*?0)r ir )rrg zy~t>gޠ?{r)rrg zy~t>gޠ?0)r ir )rrgO#X>gC}%?{r)rrgO#X>gC}%?0)r iio)rrg6S։>g6S։>{r)rrg6S։>g6S։>0)r ire)rrgע \M>gע \M>{r)rrgע \M>gע \M>0)r rr~)rrgϏ8u5?gv?{r)rrgϏ8u5?gv?0)rXir)rrgFt?gY+?{rQ)rrg>g2=)ߨ>r)rrgP>gnU?0)rXiW NullHandler)rrg{;ӕ>g{;ӕ>{r)rrg{;ӕ>g{;ӕ>0)rXrr~)rrg (J)?gmƵ?{r)rrg (J)?gmƵ?0)rre FrameSummary)rrgh|m>gh|m>{r)rrgh|m>gh|m>0)ri> StackSummary)rrgً>gً>{r)rrgً>gً>0)riTracebackException)rrg^`>g^`>{r)rrg^`>g^`>0)rrr~)rrg]1?gh`|Z?{r)rrg]1?gh`|Z?0)/usr/lib/python3.8/linecache.pyrr~)rrgiw>>g={{?{r)rrgiw>>g={{?0)rr TokenInfo)rrggg>ggg>{r)rrggg>ggg>0)rrr)rBrBgs5?gg ?{)rrcany)rrgbދ>g^9>)rrmaybe)rrgyR4>gz >r)rrga7x>gL?0)rrcr )rrg=o>gGT>{r)rrg=o>gGT>0)rrr )rrg >gP3bn>{r)rrg >gP3bn>0)rrkr)rrg0#?g0;k ?{r)rrg0#?g0;k ?0)rrr)r-r-gf?ggkh?{r)r-r-gf?ggkh?0)rr TokenError)rrg >g >{r)rrg >g >0)rStopTokenizing)rrg>`2W>g>`2W>{r)rrg>`2W>g>`2W>0)rrG Untokenizer)rrgI{>gI{>{r)rrgI{>gI{>0)rrr~)rrgdm:?gRGy}?{r)rrgdm:?gRGy}?0)r|r}r~)rrg7?gJe#?{r])rrg7?gJe#?0)r|rr~)rrgY-C+?ghb*?{r)rrgY-C+?ghb*?0)rrrv)rrg>grCG\d?{r)rrg>grCG\d?0)rrU_TemplateMetaclass)rrg>g>{r)rrg>g>0)rr1Template)rrg#(w\>g#(w\>{r)rrg#(w\>g#(w\>0)rr Formatter)rrg;r>g;r>{r)rrg;r>g;r>0)rrr~)rrg̑# >gMUDg?{r)rrg̑# >gMUDg?0)rrrv)rrgp}.8?gvHL?{r)rrgp}.8?gvHL?0)rr; do_startup)rrgJ"/?gʹ?{r)rrgJ"/?gʹ?0)rr/do_command_line)rrg'fmC1?gAޟ_O?{r)rrg'fmC1?gAޟ_O?0)rrassemble_application_menu)rrgwI?gM\jU?{rr;r )rrgwI?gM\jU?0)rrcr)rrg4(?gy.@?{rr/r )rrg4(?gy.@?0)rrr)rrgUG׬Q?gV^͹]?{ri'r)rrgUG׬Q?gV^͹]?0)rradd_menubutton_popover_actions)rrg9F3?ggJ7?{r)rrg9F3?ggJ7?0)rr&r )rrgA)G?gW?{r)rrgA)G?gW?0)rrr)rrgz0?gG H?{r)rrgz0?gG H?0)rrr~)rrgB9?g(_?{r)rrgB9?g(_?0)rXrr)rrg_>gw >{rXiZrv)rrgSei >gDqY>rXiprv)r-r-gJz>gCdc>rXi}setLevel)rrg(A$:>gOt+Ļ>0)rXrrP)r&r&gϺ5?g/?h$ ?{rXr_register_at_fork_reinit_lock)rrg`n>g4:>r)rrg8o>g%>r)rrgZ.9>g />rn)rrgNXM:>>g>r)rrg8VMK>gV >rXi isEnabledFor)rrg ߈/>gju~>rE)rrg5I10>gٶtA=>0)rXrRrS)r&r&gak>g荆G?{r )rrgU>gĸ|ȹ>r)rrg>>gVkO3Q>r)rrgy~>gVSK">rn)rrgoẳ>gYTWM >r)rrgbIb>g>r )rrg~?>g K>rE)rrg,i)+>gj q>0)rXrr )rrgqk캖>gnTe ?{rXiw createLock)rrgqk캖>gnTe ?0)rXi LogRecord)rrg>g>{r)rrg>g>0)rXirv)rrg7rS>g7rS>{rXi+rv)rrg7rS>g7rS>0)rXir)rrg2_>g)}t?{r )rrg2_>g)}t?0)rXi PercentStyle)rrg>gf8J`?{r)rrg>gf8J`?0)rXiStrFormatStyle)rrgM#3>gyck?{r)rrgM#3>gyck?0)rXiStringTemplateStyle)rrgѩ&+>gѩ&+>{r)rrgѩ&+>gѩ&+>0)rXi+rv)rrgb镇>g)'!+ԧ?{r)rrg \M>gӱ>?rE)rrgwX>gBVn?0)rXir )rrg ʧ#>g ʧ#>{r)rrg ʧ#>g ʧ#>0)rXiBufferingFormatter)rrgJP>gJP>{r)rrgJP>gJP>0)rXiFilter)rrgj^\J`>gj^\J`>{r)rrgj^\J`>gj^\J`>0)rXirv)r@r@g!>g!>{r )rrg>g>r )r-r-g~ >g~ >0)rXiFilterer)rrgOt+>gOt+>{r)rrgOt+>gOt+>0)rXiGr)rrgneO#\>gG%B?{r )rrgneO#\>gG%B?0)rXiZrv)rrg>gT+S #?{)rXirv)rrgq:\h>geO(b?)rXirv)rrgGF>gdV?0)rXiwr )rrgȃ!>gr?aa?{r )rrgȃ!>gr?aa?0)rXi setFormatter)rrg3Rq?>g3Rq?>{rE)rrg3Rq?>g3Rq?>0)rXiQHandler)rrgw ?>gw ?>{r)rrgw ?>gw ?>0)rXirv)rrg6;R>gvQ@kl?{rE)rrg6;R>gvQ@kl?0)rXi StreamHandler)rrg}l>g}l>{r)rrg}l>g}l>0)rXia FileHandler)rrgtޙ>gtޙ>{r)rrgtޙ>gtޙ>0)rXirv)rrgӳ5/B >gѾ>?{r)rrgӳ5/B >gѾ>?0)rXi_StderrHandler)rrg>g>{r)rrg>g>0)rXirv)rrg#>g#>{r5)rrg#>g#>0)rXir)rrgC#C>gC#C>{r5)rrgC#C>gC#C>0)rXi PlaceHolder)rrg/q>g/q>{r)rrg/q>g/q>0)rXirv)rrg \ ?>g \ ?>{r)rrg \ ?>g \ ?>0)rXir)rrg=E?gd8#?{)rXir)rrg=E?gd8#?0)rXi+r6)rrg:D> ?g*.?{r)rrg:D> ?g*.?0)rXiPro)rrgiھz>gδI>{r )rrgiھz>gδI>0)rXiManager)rrg=Vw[z>g=Vw[z>{r)rrg=Vw[z>g=Vw[z>0)rXiprv)r-r-gV+J?g`|L?{r)rrg2R>gͼ?)rXirv)rrgQ؎>gt.Fz>0)rXi}r )rrg)O[>g(\?{rE)rrg)O[>g(\?0)rXir)i i g_9^Ip?g/4"~?{r)i i gnH1>p?g7}?r)rrgwc>g{s ?0)rXi5r)rrg E>gi3>{rE)rrg E>gi3>0)rXigetEffectiveLevel)rrg{{>g{{>{r )rrg{{>g{{>0)rXir )i i g9MbWk?gbyk?{)rXir)i i g9MbWk?gbyk?0)rXiaLogger)rrg{>g{>{r)rrg{>g{>0)rXirv)rrgYTWM >g4\B>{r)rrgYTWM >g4\B>0)rXi RootLogger)rrgCw>gCw>{r)rrgCw>gCw>0)rXirY)rrg^ދK/>goT &>{r)rrg^ދK/>goT &>0)rXihrF)rrg=P?gA0?{r )rrg=P?gA0?0)rXir)rrgL͌>gq%?{r)rrg/q>gCd?r)rrgԬ>gnN?0)rrPyGTKDeprecationWarning)rrg͔ɵ>g͔ɵ>{r)rrg͔ɵ>g͔ɵ>0)rr_FreezeNotifyManager)rrg!>g!>{r)rrg!>g!>0)rWidget)rrg4[>g/?{r)rrg4[>g/?0)rrr=)rrg;(B/>g?9`?{r)rrg;(B/>g?9`?0)rr]Editable)rrg׎>g @b{?{r)rrg׎>g @b{?0)rAction)rrg1;]ۺ>g>(>{r)rrg1;]ۺ>g>(>0)r RadioAction)rrgOPgG(>g( }{=>{r)rrgOPgG(>g( }{=>0)rr ActionGroup)rrg0fld.>g>{r)rrg0fld.>g>0)ri UIManager)rrg@~Z>g@~Z>{r)rrg@~Z>g@~Z>0)riComboBox)rrgug?{r)rrgug?0)riBox)rrg6S։>gv>{r)rrg6S։>gv>0)ri SizeGroup)rrg;xo>gN n$1?{r)rrg;xo>gN n$1?0)riMenuItem)rrgS>g5,2>{r)rrgS>g5,2>0)riBuilder)rrgFS6ߚ>gFS6ߚ>{r)rrgFS6ߚ>gFS6ߚ>0)rirv)rrg +>gNMqse?{r)rrg +>gNMqse?0)riWindow)rrgPП>gPП>{r)rrgPП>gPП>0)ri Dialog)rrgu>v>gȩc>{r)rrgu>v>gȩc>0)rih MessageDialog)rrgވ>g}V">{r)rrgވ>g}V">0)ri~ColorSelectionDialog)rrg<q>g&#7>{r)rrg<q>g&#7>0)riFileChooserDialog)rrg#>gwkG>{r)rrg#>gwkG>0)riFontSelectionDialog)rrgD@#0(?gY X\(?{r)rrgD@#0(?gY X\(?0)riRecentChooserDialog)rrgg:>{r)rrgg:>0)riIconView)rrgE:>gi fB?{r)rrgE:>gi fB?0)ri ToolButton)rrgΛ>gVDW>{r)rrgΛ>gVDW>0)ri IMContext)rrg:_ S>g%H#?{r)rrg:_ S>g%H#?0)ri RecentInfo)rrg=+Y>g"~ &?{r)rrg=+Y>g"~ &?0)ri TextBuffer)rrg2 >g:Ac$?{r)rrg2 >g:Ac$?0)riTextIter)rrgD >gJ &gJ &gB-\!?{r)rrglӎ>gB-\!?0)rirK)rrg#vQ<>gZb#>{r)rrg#vQ<>gZb#>0)ri ListStore)rrg hVͫ>g hVͫ>{r)rrg hVͫ>g hVͫ>0)ri1 TreeModelRow)rrgP>gP>{r)rrgP>gP>0)riTreeModelRowIter)rrg A>g A>{r)rrg A>g A>0)riTreePath)rrgB~>gB~>{r)rrgB~>gB~>0)ri TreeStore)rrg R>g R>{r)rrg R>g R>0)ri;TreeView)rrgR j>g0DB?{r)rrgR j>g0DB?0)rijTreeViewColumn)rrg[=X>gZb3%?{r)rrg[=X>gZb3%?0)ri TreeSelection)rrgHl>gHl>{r)rrgHl>gHl>0)rirv)rrg͌2V>g"?{r)rrg͌2V>g"?0)riset_focus_on_click)rrg{0?g{0?{r)rrg{0?g{0?0)rirM)rrg T,>gǝ3n>{r)rrg T,>gǝ3n>0)ri LinkButton)rrg( 0>gјl>{r)rrg( 0>gјl>0)rir)rrgN4>g0 7>{r)rrgN4>g0 7>0)ri Adjustment)rrgC)'r>g o>{r)rrgC)'r>g o>0)riTable)rrgS (s>gfn+-?{r)rrgS (s>gfn+-?0)riScrolledWindow)rrgΥ>g'>{r)rrgΥ>g'>0)ri HScrollbar)rrg`{|>g!aM>>{r)rrg`{|>g!aM>>0)ri VScrollbar)rrgۚLT>gn&%>{r)rrgۚLT>gn&%>0)riPaned)rrg]z;x>g]z;x>{r)rrg]z;x>g]z;x>0)ri,Arrow)rrg ۤ>giZ>{r)rrg ۤ>giZ>0)ri4IconSet)rrg8>g8>{r)rrg8>g8>0)riFViewport)rrg>g{"x>{r)rrg>g{"x>0)riPTreeModelFilter)rrgHw]>gHw]>{r)rrgHw]>gHw]>0)ri^Menu)rrg$>g$>{r)rrg$>g$>0)rr}r~)rrgk !~?gKua?{r)rrgk !~?gKua?0)r*r+r,)r-r-gt P?g3T?{rN)r-r-gt P?g3T?0)r*rrv)r&r&gRh>garC>{r?rr%)rrgs$EeD>gg:>)r^rrL)rrggv(:>r^r rO)rrg=7q>g8š>0)r*r)Child)rrg?߲̔>g?߲̔>{r)rrg?߲̔>g?߲̔>0)r*r*rv)rrgJ]ʪ>gJ]ʪ>{)r*rr)rrgJ]ʪ>gJ]ʪ>0)r*r] CallThing)rrg`>g`>{r)rrg`>g`>0)r*r{rv)rrg`>g`>{r )rrg`>g`>0)r*rr)rrgoXM>gCYB>{r )rrgoXM>gCYB>0)r*rCallback)rrg-0=2>g-0=2>{r)rrg-0=2>g-0=2>0)r*rvalidate_resource_path)r-r-gf$.?E?gNP?{rN)r-r-gf$.?E?gNP?0)r*rGrv)r-r-g~Q>gE{M>{r>)rrg1x>g r|x>r])rrg+Tg>g>0)r*r'r)r-r-g+eC?gq G.p?{r>)rrghb\?!?gF57?r])rrg;OP??gQ90nam?0)r*rr )rrg$6_->g$6_->{r)rrg$6_->g$6_->0)r*rr~)rrg2f>gĮ "3?{r)rrg2f>gĮ "3?0)rr _warn_init)r r g>g>{)rrT VolumeMonitor)rrgRISľ>gRISľ>)rrDBusAnnotationInfo)rrg3z>g3z>)rr  DBusArgInfo)rrgNXM:>>gNXM:>>)rrDBusMethodInfo)rrg/ >g/ >)rrDBusSignalInfo)rrgw4>gw4>)rrDBusInterfaceInfo)rrgasAg>gasAg>)rr DBusNodeInfo)rrgZ>gZ>0)rrTr! )rrgXbk>gBԮ>{r)rrgXbk>gBԮ>0)rrr" )rrg >g-`>{r)rrg >g-`>0)rr r# )rrgEh>gZeG >{r)rrgEh>gZeG >0)rrr$ )rrgVM>gjR>{r)rrgVM>gjR>0)rrr% )rrgR>g7_6K>{r)rrgR>g7_6K>0)rrr& )rrg؂>gfBaQ[>{r)rrg؂>gfBaQ[>0)rrr' )rrg%E1>gŗױ>{r)rrg%E1>gŗױ>0)rr ActionMap)rrgpbGѻ>gpbGѻ>{r)rrgpbGѻ>gpbGѻ>0)rrFileEnumerator)rrg C:>g C:>{r)rrg C:>g C:>0)rrRr )rrgy>gy>{r)rrgy>gy>0)rrSettings)rrg'̤K>g@>{r)rrg'̤K>g@>0)ri1_DBusProxyMethodCall)rrg0s>g0s>{r)rrg0s>g0s>0)rit DBusProxy)rrg>g>{r)rrg>g>0)ri ListModel)rrgEfz>gEfz>{r)rrgEfz>gEfz>0)rir )rrgT~5>gT~5>{r)rrgT~5>gT~5>0)rrr~)rrgr1?gp?{r)rrgr1?gp?0)rrFontDescription)rrg >g >{r)rrg >g >0)rrLayout)rrg+/\ʷF>g+/\ʷF>{r)rrg+/\ʷF>g+/\ʷF>0)rrr~)rrg3g ?gkf?{r)rrg3g ?gkf?0)rrPPixbuf)rrgL'(1G>gL'(1G>{r)rrgL'(1G>gL'(1G>0)rrEr~)rrg35m7?g]VBb?{r)rrg35m7?g]VBb?0)rurrN)rrg>g>{r)rrg>g>0)rurRGBA)rrgVUw>gVUw>{r)rrgVUw>gVUw>0)rurbr )rrg8>g8>{r)rrg8>g8>0)rurvrw)rrg639>gUٝ?{r)rrg639>gUٝ?0)rui6 DragContext)rrgY>gY>{r)rrgY>gY>0)rui>Cursor)rrg y|m>g y|m>{r)rrg y|m>g y|m>0)rur}r~)rrgEA?gwF?#?{r)rrgEA?gwF?#?0)rr OptionGroup)rrg-jW1>g-jW1>{r)rrg-jW1>g-jW1>0)rr OptionParser)rrg°>g°>{r)rrg°>g°>0)rrr~)rrgG #1?gdY/@?{r)rrgG #1?gdY/@?0)rr+Value)rrgnr>gnr>{r)rrgnr>gnr>0)ri_HandlerBlockManager)rrgvԷ1>gvԷ1>{r)rrgvԷ1>gvԷ1>0)rir )rrg絝Ԑ>g絝Ԑ>{r)rrg絝Ԑ>g絝Ԑ>0)ri _signalmethod)r@r@g,?g tr|pK?{riObject)r@r@g,?g tr|pK?0)rir: )rrgZT$\Q?g-O?{r)rrgZT$\Q?g-O?0)riBinding)rrgK?{>gK?{>{r)rrgK?{>gK?{>0)rrr~)rrgW,S?g Ph?{r)rrgW,S?g Ph?0)rrr)rrgN$@g9&@{r)rrgN$@g9&@0)rr>r )rrg">g">{r)rrg">g">0)rr rP)rrgܵ>gkB]>{r)rrgܵ>gkB]>0)rr3r)rrg{[9b3?g1|J?{rrr)rrg{[9b3?g1|J?0)rr{sigint_handler_is_default)rrg>!ky>g pL%?{rr&sigint_handler_set_and_restore_default)rrg}|!h>g_>r)rrgq:|S >g$b2?0)rrr? )rrgr>g$,?{r< )rrgr>g$,?0)rris_main_thread)rrg( >gk4~>{r)rrg( >gk4~>0)rr3r)rrg$,>gm]`7?{r< )rrg$,>gm]`7?0)rrr~)rrg]6?g @?{r)rrg]6?g @?0)rrrv)rRrRg Fi>g Fi>{r)rRrRg Fi>g Fi>0)rr_Feature)rrg<>g<>{r)rrg<>g<>0)rrr~)rrg>gUDW?{r)rrg>gUDW?0)rrRr)r/r/grN$L ?g^aT#?{r%ir)r/r/grN$L ?g^aT#?0)rrr)rrgJ Xpo>gJ Xpo>{rB )rrgJ Xpo>gJ Xpo>0)rr}r)rrg*\r>g*\r>{rB )rrg*\r>g*\r>0)rr  _int_to_enum)rrgy è?g +^* f)?{r)rrgjޫ5>g1?r)rrgM,bk>g#?0)rr _enum_to_int)rrgBOKP>gBOKP>{r)rrgBOKP>gBOKP>0)rrr)rrgm>gF ?{r> )rrgm>gF ?0)rrr)rrg>g@%F(?{rr{r= )rrgLe>gfO?r> )rrg̑# >gz?rrr~)rrgl>g2 ?0)rrr~)rrg Hh?g[_w?{r)rrg Hh?g[_w?0)rZrRLock)r-r-gUC>gUC>{r)rrg>qd>g>qd>r )rrgDf>gDf>0)rZrk_RLock)rrg[fJ>g[fJ>{r)rrg[fJ>g[fJ>0)rZrxrv)r r gx9#?gx9#?{rE)r r gx9#?gx9#?0)rZr_r)r r g+Qg>>gƟ\?{rZiset)rrgb2U0*>g>>rZirD)r@r@g:'i>g2S>0)rZrr)r r g;>gR0N>{rI )rrg;D9W>gt d>rK )r@r@g?>g1>0)rZrr[)r@r@gdQ>gn>{rC)r@r@gdQ>gn>0)rZirV)r@r@g1 4*>g.^f>{rC)r@r@g1 4*>g.^f>0)rZirW)r r gp[J[>gBѕ>{rC)r@r@gN}#>gҴ>r\)rrgCHZM~[>gXI>0)rZirD)r@r@g(XQi?gXwU?{rK )r@r@g(XQi?gXwU?0)rZiUr])rrgeWdg?g[ոU?{r)rrgeWdg?g[ոU?0)rZilr)rrg'i;>gR>)4?{rI )rrg'i;>gR>)4?0)rZr/ Condition)rrgj+P>gj+P>{r)rrgj+P>gj+P>0)rZix Semaphore)rrg)e`>g)e`>{r)rrg)e`>g)e`>0)rZiBoundedSemaphore)rrg8ͧ>g8ͧ>{r)rrg8ͧ>g8ͧ>0)rZirv)r r gQpԱ ?g$zՋ ,?{rZirv)rrgv^& ?g .[*?rZirv)rrgvԷ1>gtW>0)rZiis_set)rrgNV >gNV >{r=)r@r@gE˔4Q>gE˔4Q>)rZiVdaemon)r-r-gڭx>gڭx>0)rZirJ )rrgϗoa@>g4+#?{)rZicancel)rrgTs>gd[f?rZirv)rrg0 7>g#?0)rZirD)r@r@gZ?gUW?{r=)r@r@gZ?gUW?0)rZirw)rrg{ t>g{ t>{r)rrg{ t>g{ t>0)rZi=Barrier)rrg>g>{r)rrg>g>0)rZiBrokenBarrierError)rrg°>g°>{r)rrg°>g°>0)rZi_newname)r@r@gfK ?gfK ?{rO )r@r@gfK ?gfK ?0)rZirv)rrg>K{0?g-E?{r)rrgI>g/X?r=ir)rrg zy~t?g9V?r=ir)rrgj?gfXC?r;)rrgj?gkj~(?rP )rrg;z?g tA?rT )rrgh 6\>g+1\?0)rZiBr>)r@r@g(!(?gibdb?{r)rrgv۫>g =f7?r)rrgIvXu>gd`+ 5?rX )rrg  s>gKJgP,;=?r;)rrg'et?gT$F?0)rZirG)rrgH >g0>{rT )rrgH >g0>0)rZirM)rrg g>gE>{rT )rrg g>gE>0)rZir)rrgf}E?gG&vL?{rT )rrgf}E?gG&vL?0)rZir)rrgbQ5x>gbQ5x>{rrr@ )rrgbQ5x>gbQ5x>0)rZiGrR )rrg<>g<>{rO )r@r@g9'Ɨ(>g9'Ɨ(>r)rrg>g>0)rZiVrR )r-r-g?+>gg>{r)rrgd#ws>g\>rX )rrg^&Ɍ>gt跛>r;)rrg>g+NSf>0)rZir[)rrg6K>g5%N>{r)rrg6K>g5%N>0)rZi_make_invoke_excepthook)rrgWa?gWa?{rO )rrgWa?gWa?0)rZirv)rrg!Z>gsV ?{r)rrg!Z>gsV ?0)rZirS )rrg+o>gq>34 ?{)r=isr)rrg+o>gq>34 ?0)rZiTimer)rrg38>g38>{r)rrg38>g38>0)rZirv)rrgsA>gk%?{r)rrgsA>gk%?0)rZi _MainThread)rrge8;>ge8;>{r)rrge8;>ge8;>0)rZi _DummyThread)rrgdOӰ>gdOӰ>{r)rrgdOӰ>gdOӰ>0)rZirH)rrg=%/>g5Na;D?{rZ )rrgC@>g]>rO )r@r@g=O{N>gwb?0)rZrr~)rrgQLx?g8$F?{r)rrgQLx?g8$F?0)rr3Option)rrg+>gx?{r)rrg+>gx?0)rrr!)rrMg iY?g(_?{r)rRrRgj Y>?gӢ>?)rrUr)rrgvz%Q?g(_?0)rrt_VariantCreator)rrg)=Z>g eA?{r)rrg)=Z>g eA?0)rrUr)rrg/ ?gGbP`?{)rrr)rrgGz&J?g ʷAd8?)rrr)rrgpU-w?gCpZ?0)rrjr )rrg eLo6?g eLo6?{r)rrgCAСq>gCAСq>r3)rrgI>gI>r)rrgUb(?gUb(?r)rrg ߤ>g ߤ>r )rrg#?g#?r)rRrRgL%?gL%?r)rRrRge ?ge ?0)rrr)r&r&g2'y0?gO'A?{r )rrg-?gнZ?r)rRrRg{5%?gt g>{r)rrg>g>0)ri get_string)rrgi͙1?gi͙1?{r)rrgi͙1?gi͙1?0)riMainLoop)rrg&B7>g&B7>{r)rrg&B7>g&B7>0)ri MainContext)rrg,UP >g,UP >{r)rrg,UP >g,UP >0)riSource)rrgj.ߍ>g3p ?{r)rrgj.ߍ>g3p ?0)ri<Idle)rrgW>gL>{r)rrgW>gL>0)riKTimeout)rrg߈5/c>g߈5/c>{r)rrg߈5/c>g߈5/c>0)ri~r)rrg:>gkJ>{ri io_add_watch)rrg:>gkJ>0)riri )rrgF(?gVDW-?{r)rrgF(?gVDW-?0)ri IOChannel)rrgʔ>gT 0f(?{r)rrgʔ>gT 0f(?0)riPollFD)rrg絝Ԑ>g絝Ԑ>{r)rrg絝Ԑ>g絝Ԑ>0)rr}r~)rrgNA?g A.V?{r)rrgNA?g A.V?0)r"r/r)ixixg -7'4?giDFA?{rB )ixixg -7'4?giDFA?0)r"rr)iyiyg|0> 3?g"r@?{rB )iyiyg|0> 3?g"r@?0)r"rtr)izizg}8ޣRz3?gؐ@?{rB )izizg}8ޣRz3?gؐ@?0)r"rr)i{i{g33?gI\bq@?{rB )i{i{g33?gI\bq@?0)r"r/_GiveupOnSendfile)rrg[􊆰>g[􊆰>{r)rrg[􊆰>g[􊆰>0)r"rrv)rrgO J>gO J>{r)rrgO J>gO J>0)r"ir)rrg]˄\>g,?{)r"iclose)rrg]˄\>g,?0)r"irm )rrg)>g,CYN?{)r9i*r)rrg)>g,CYN?0)r"ir)rrgֲWMGh>gZ2Š<>{rO)rrgֲWMGh>gZ2Š<>0)r"rQrR)rrg!-Ƨ?g=g}?{r)rrg!-Ƨ?g=g}?0)r"i.r)rrg(&e&>g2hC?{r)rrg(&e&>g2hC?0)r"irSocketIO)rrgx?v>gx?v>{r)rrgx?v>gx?v>0)r"rr~)rrgݙ4?g)?{r)rrgݙ4?g)?0)rr_SelectorMapping)rrg: >g: >{r)rrg: >g: >0)rr1 BaseSelector)rrgWH?>gyl>{r)rrgWH?>gyl>0)rr_BaseSelectorImpl)rrgdw>gdw>{r)rrgdw>gdw>0)ri"SelectSelector)rrg1!'>g1!'>{r)rrg1!'>g1!'>0)riU_PollLikeSelector)rrg7_6K>g7_6K>{r)rrg7_6K>g7_6K>0)ri PollSelector)rrg@D=Y>>g@D=Y>>{r)rrg@D=Y>>g@D=Y>>0)ri EpollSelector)rrgw>gw>{r)rrgw>gw>0)rrr~)rrg3?gufHd?{r)rrg3?gufHd?0)%/usr/lib/python3.8/collections/abc.pyrr~)rrg,1Po?g,1Po?{r)rrg,1Po?g,1Po?0)rrr~)rrg ;^?gDKkv?{r)rrg ;^?gDKkv?0)rr_check_require_version)r r gjD?g*x?{r< )r r gjD?g*x?0)rrget_import_stacklevel)rHrHg-v ?g-v ?{r)rHrHg-v ?g-v ?0)rkrv)rrgՎ>gՎ>{r)rrgՎ>gՎ>0)rrr)rrglx$f?gCPk!c&?{r)rrglx$f?gCPk!c&?0)rrr)r-rHgP$I?gG.50?{rH)rHr-gP$I?gG.50?0)rrJDynamicImporter)rrg$h%>g$h%>{r)rrg$h%>g$h%>0)rrr~)rrgGͼ?g>גjt?{r)rrgGͼ?g>גjt?0)rcrfr3)r(r8gPL?gr-[y?{rb)r8r(gPL?gr-[y?0)rcrr)r8r8g i~X?g-9|?&?{rb)r8r8g i~X?g-9|?&?0)rcrrv)rHrHgY?gHa+L?{rcr_get_introspection_module)rHrHgY?gHa+L?0)rcrr)rrgj-?g̒G A;?{rb)rrgj-?g̒G A;?0)rcrrd)rigg?gt ^Z?{rrr!)rrgA->\?gJ?r)r-r-g%?gC:?r7)rrgWg!?gfhDJ?r)rrgr\!?g7dH?r )rrg@ >gTp?rir )rrg=hF ?gn(0?rir )rrgnoG ?gNX)?r)rrg@Nn?g[,?r)rHrHg6g8dM?g1z{?r)rrgI} Zd%?gWnZ c?r)rrg!/zJ?gsI^hqp`?r)r&r&goEWO?g~Ӑ?r)rrgR P>gpۣ10?r9 )rrgO.2C>g?! ?r)rrg+.??gpDT+a?)rr3r_ )rrga'>gS>r)rrgQ״?g_Ⱥ-?)rrtr` )rrg9\ ?gՀq @?)ri<rf )rrg@*:=>g1JÉ>rh )rrga# >gcG>rirj )rrg M?g&`/"?r)rrgNQ?gX)S]i?0)rcrIntrospectionModule)rrgngn{r)rrgngn0)rcr_r| )r}r}g3gI?g薗PP?{r)rrg$6_->g$6_->r)rrg~>g~>r)rrgюӿ>gюӿ>r)rrg2L>g2L>r)rrg C>g C>r)rrg:0y>g:0y>r)rrgPd>gPd>r)rrga;>ga;>r)rHrHgkC?g|޺ P?0)rcrr~)rrgV(d ?gjyj?{r)rrgV(d ?gjyj?0)rr$r%)rrg#k+P7?g0̮ rw?{r.)rrg#k+P7?g0̮ rw?0)rrr)r?r?gsⓩ}?g`QSe?{r)rrg2Ȓvw?gWpx?riDrv)rTrTga?uV?g=)e?0)rr+rT)r8r8g=V7;?g?vH?{r)r8r8g=V7;?g?vH?0)rrr)rrgLbj?gZ"Ty?{r)r8r8gזPN?gKk\?r )rTrTgtHb?gAer?0)rr3_setup_constants)rrg2 1?g~q6?{r)rrg2 1?g~q6?0)rr/r0)r1r1g@&i?g1#v?{r)r1r1g@&i?g1#v?0)rrr)rrgNEX?gӡe)e?{r)rrgNEX?gӡe)e?0)rrMetaClassHelper)rrg`6 ->g`6 ->{r)rrg`6 ->g`6 ->0)rrrW)rrg3hV=?gFJ?{r.)rrgQ R>gFJ?rV)r1rgb?;?g W0H?0)rrrY)r@rg,Q?geΎlg?{r.)r@r@g&?geΎlg?rX)r.r@gOjP?gh%f?0)rrrv)rrg__?g|?{r)rrg__?g|?0)rrr)rrgW4?g,:fo?{rrrv)rrgW4?g,:fo?0)rr_GObjectMetaBase)rrg;_j>g;_j>{r)rrg;_j>g;_j>0)rrrv)rg!^2j?gר?{r)rrgk)i#I?g}(H?rr4r)rrgT*>gYY]?r)rrg0A>g߯?rb)rrg1UYMd?gGOX?0)rrr)rrgW =?gsA?{r)rrgMsN5%?g{~ʑz?r )rrg§N֠>g|%ߤ?r)rrgg֎>g+w?rb)rrg1?gy 呄?0)rrR GObjectMeta)rrgb/"pu>gb/"pu>{r)rrgb/"pu>gb/"pu>0)ri(r)iigb!Lq?gb!Lq?{r)iigb!Lq?gb!Lq?0)ri r)rrg?gJt?{)rrr)rrg?gJt?0)ri=nothing)rMrMgO>gO>{r)rMrMgO>gO>0)riDrv)rrg>%ښZ?gTulg?{r)rrgl$?g/?r)rrgV(-?gaH7X?rb)ririgS?gi?0)riA StructMeta)rrgW1_Վ>gW1_Վ>{r)rrgW1_Վ>gW1_Վ>0)rrr~)rrgmhV+K?g."aJe?{r)rrgmhV+K?g."aJe?0)//usr/lib/python3/dist-packages/gi/_constants.pyrr~)rrgg{?gĠ$?{r)rrgg{?gĠ$?0)rrkset_doc_string_generator)rrgW9؎>gW9؎>{rrr~)rrgW9؎>gW9؎>0)rrgenerate_doc_string)rrg#?g󶗅?{r} )rrg#?g󶗅?0)rrr)iGiGg;ꅎ_pT?ghv`?{r)iGiGg;ꅎ_pT?ghv`?0)rrr)rrg٤>Xu?gsd?{r)rrg٤>Xu?gsd?0)rrr)rrgM X@?g7SI?{)rrr )rrgM X@?g7SI?0)rrr~)rrg#ș ?g&j?{r)rrg#ș ?g&j?0)rr __metaclass__)rrgr >gr >{r)rrgr >gr >0)rr{rv)r@r@g17?gr,?{r<)rrgÁ\>gH\y)r?r )rrg|L>g~ ?r@)rrg&'>g0$u]?r )rrga ,8?g!W?0)rr+r)rrg¡z>gdeH`h>{r} )rrg¡z>gdeH`h>0)rr)rrggp$h}>g7J7>{r<)rrggp$h}>g7J7>0)rr getter)r r g鴺>g鴺>{r)r@r@g"y;>g"y;>)rr r)rrg$6_->g$6_->0)rrsetter)rrg肸zg>g肸zg>{r<)rrg肸zg>g肸zg>0)rr_type_from_python)r@r@ge >ge >{r)r@r@ge >ge >0)ri  _get_default)r@r@gw'>gw'>{r)r@r@gw'>gw'>0)ri_check_default)r@r@gf?gaJv٠?{r)r@r@gf?gaJv٠?0)ri3r)r@r@g>g6<+>{r)r@r@g>g6<+>0)ri6r)r@r@gp>g|)v>{r)r@r@gp>g|)v>0)ri@r5)rrgݔ ~.>g V>{)rr+r)rrgݔ ~.>g V>0)riOget_pspec_args)r@r@g4_^>g4_^>{r)r@r@g4_^>g4_^>0)rr/r)rrg>g|[{?{r)rrg>g|[{?0)rir)rrg. ">g#>{r)rrg. ">g#>0)ribr)rrg) [?g&e?{r )rrg) [?g&e?0)rrr~)rrgj$X?gƿF"?{r)rrgj$X?gƿF"?0)rr. BoundSignal)rrg#Sj>g#Sj>{r)rrg#Sj>g#Sj>0)rrr)rrg?>g8E ?{r)rrg?>g8E ?0)rrSignalOverride)rrgx

gx

{r)rrgx

gx

0)rrr )rrg+b`?g25f?{r )rrg+b`?g25f?0)rrr~)rrgo>gpXk!?{r)rrgo>gpXk!?0)rrrv)rHrHg#?g#?{r)rHrHg#?g#?0)rrPrd)iEigL\;g?g$Os?{r} )rvrbgH@4?gke?r)r r g 1>g:vnwb>r)rrg?=~a>gHAc?)r7rHr)rrggǂ>g2`cS?)r=rXr)rrg"Is>gN*H?r7)rrg3_ >g_Mf<:R?r)rrg7>gtr!>)r=iBr)rrgn7ߍ>g!Z >rY )rrgQ4?>g5>)r=ir)r@r@g=γ>gUU?)r=ir)rrg#f>gQR>r<)rrg>g(>r:)rrgݔ ~.>g>6(@?r )rrg |X>g]Aٲ>r>)rrgD\nK>gygX;>r*)rrgzW>gλyO?rm)iig__?g~D7g?rB)rrg%,}4>g}w>rE)rrgZKs禾>g@/>r/)rrgdG5>g?=~a>r1)rrg=Y>go(>)rHrr2)rrg!>gRЅB>rG)rrgoV>gb\J?)rMrr8)rrgs;N>gy0>و>r)rrg!o>g?bӑK?r)r-r-gx?v>gs:3?rR)rrg(˺>g-PwM?r])rrg@ >g@\L$r?r@)rrg4>gg>r )rrg8T tM~>g1?<>r7)rrg7P>gJ;rc?rrr6)rrg>gjtȂ>r=)rrg*ꂰ >g&#7>r;)rrg70&7s>gNT?r)rrgs7Ѿ>g݈>)rir>)rrgd.i&k>gCyr>r)rrg nA9>gmep1B?r )rRrRgጡiw>gϑv4c?r)rrg=趝>g% gߺ]>)rr@r)rrgb9}>g &^G?r)rrgxW-t>gS&>r)r-r-g  >gx^R?r)rRrRg`>gWE7Z?)rir)rrgG>gSXM>r )rrgc >g޼{>r)rrg2H>gr{>rir)rrg>ge >rir)rrgk>gǷV>rir)rrgA|>gB>>rir)rrg*P3>g>>)ri r)rrg\>gqe>r )r-r-g8g(>gc{3^E?r)rrg.\>gn\L?r)rrg<#8>gѯu??r )r-r-g8eo>g>o>r )r-r-gنr)>gR"I1'?rrr )rrg*Ue>g/:[k9?rrr )rrgӅV>gd#ws>r )rrg͌2V>g)i[S?r)rrgT >ggkN)?)r*rr )r r g1>g{V8?rN)rrg|k>gP?r)r-r-gkD>g~܉>r)rrg(e>g4ڒ>r)rrgL>gk`>r)rMrMg~}hw,?gF@ ?rh )rrg\J1>gRW>)rr5)rrg~%D>g_GZ6?r)rrg; $(>g,NX1?0)rrOverridesProxyModule)rrgf^ʝ>gf^ʝ>{r)rrgf^ʝ>gf^ʝ>0)rrrv)r@r@gWWA?gWWA?{r)r@r@gWWA?gWWA?0)rrr)r;r;gߗۇ?g.5ɀ.?{r} )r;r;gߗۇ?g.5ɀ.?0)rr$_DeprecatedAttribute)rrgl!rAPJ>gl!rAPJ>{r)rrgl!rAPJ>gl!rAPJ>0)rrr)rrHg-g{>{r)rrg9xpc>g{>0)rrr)rrgn&nP?g.U=\?{r)rrgi BB?gQO?r)rrg6z|V(?g6?r)rrg-}?gWe?r)rrg/=N >g$1>r)rrgɜ4*?g&%%?r)r-r-g Q[# ?g_?r)r@r@g#.?g]-2?0)rr/ deprecated)r-r-gH?go#0?{)rire )rrg>g>_)?r )rrgP>g(_l>r)rrg¢d>gNq?0)rrr?)r@r@gۃ7?g2d@?{r)rrgVR2?g:u9?r)rrgl?gj?0)rir_)rrg_| x?gSzBx?{r)rrg_/-k#?gta?)rArrv)rrgGg?g#g?r/)rrgZ?g:8؛?r3)rrg~Bir?gY|?r)rrg !?g݁DWE_!?)rrrv)rrgo(?g9³N?)rirv)rrgOke?g^ kue?)rirv)rrg?d?g ,KK?0)rr~deprecated_init)r r g.Tp ?g.Tp ?{)rr r )rrg& .>g& .>)rr r )rrgeVS>geVS>)rrr )rrg-T>g-T>)rir )rrg>g>r~ )rrgZwb>gZwb>)rir )rrgQ؎>gQ؎>)ri r )rrgG)R>gG)R>)rihr )rrgz7_>gz7_>)ri~r )rrgƘ#>gƘ#>)rir )rrgOq>gOq>)rir )rrg| S>g| S>)rir )rrg(/>g(/>rir )rrg0Qů>g0Qů>)rir )rrgl!rAPJ>gl!rAPJ>rJ)rrgoAW>goAW>ri;r )rrgP>gP>rL)rrgVfk>gVfk>)rir )rrg%/->g%/->)rir)rrgl앴>gl앴>)rir )rrg>g>r )rrg 5>g 5>)rir )rrg,CYN>g,CYN>)rir )rrg/~>g/~>)rir )rrgOPgG(>gOPgG(>)ri,r )rrg׎>g׎>)riFr )rrgx

gx

r)rrg C:>g C:>)rrr* )rrgvDt>gvDt>0)riDstrip_boolean_result)rrg 2NaH?g>7?{)rr r )rrg_@_>g^ i-?)rrr=)rrg(3>gzm*?)rr]r )rrgȉ>g+tV۲?)rir )rrg$>g+KM?r )r-r-gp>gBb fA?)rir )rrg}z>>g9ҧ#?)rir )rrg?EX>gx r%?)rir )rrgG)R>g:#?)rir )rrg~/b>g#Z̥;?)ri'r )r@r@go9?gXAg`F?)rir )rrgS>gڑ ?r )r-r-g / >gsg!A?)rijr )rrg&d 4G>g{w$?r)rrgHsa- >gh(?r)rrgoC?g:3?0)rrr~)rrgsv ?gPHǐ5?{r)rrgsv ?gPHǐ5?0)rr!)rrgL& G?gL& G?{rb)rrgL& G?gL& G?0)rr8)r@r@g-95?g-95?{rb)r@r@g-95?g-95?0)rr")r r grrg&H?grrg&H?{rb)r r grrg&H?grrg&H?0)rr9)rrgUeN>?gUeN>?{rb)rrgUeN>?gUeN>?0)rr0)rrg ?g ?{r)rrg ?g ?0)rrr )r@r@g)r@r@gU>gU>{rE )rrg/9N:>g/9N:>r> )rrgAgG>gAgG>rF )rrg͌2V>g͌2V>0)rr))rrgE>g?{r)rrgE>g?0)rr&)rrgSIl?gSIl?{r)rrgSIl?gSIl?0)rr+)rrg g5_P>g g5_P>{r)rrg g5_P>g g5_P>0)rr/)rrgk@>gk@>{r)rrgk@>gk@>0)rr0)r}r}gM9R»x9?gM9R»x9?{r)rrg 0Hp6?g 0Hp6?r)rrg{>g{>r )rrgP >gP >0)rr-)rrg`Ⱥ>g`Ⱥ>{r )rrg`Ⱥ>g`Ⱥ>0)rr.)reregȍZl?gȍZl?{rb)reregȍZl?gȍZl?0)rr1)r}r}g} ?g} ?{rb)r}r}g} ?g} ?0)rr1)rrg/o.?g/o.?{r)rrg/o.?g/o.?0)rr0)rrgkR%?gkR%?{r.)rMrMgf_?gf_?rV)r r g ̹?g ̹?rX)rrgarL?garL?0)rr3)rrgrz>grz>{rr3r )rrgrz>grz>0)rr-)r8r8gl/?gl/?{r2)r8r8gl/?gl/?0)rr.)r8r8gGZ?gGZ?{r)r8r8gGZ?gGZ?0)rr-)r8r8gއW)?gއW)?{r)r8r8gއW)?gއW)?0)rr1)r8r8gy7?gy7?{r)r8r8gy7?gy7?0)rr0)r8r8gWl1of?gWl1of?{r )r8r8gWl1of?gWl1of?0)rr-)rXrXg=&xaP?g=&xaP?{r.)rrgc'X:?gc'X:?r)r#r#g0ݹj}5?g0ݹj}5?rX)rrgnN1?gnN1?0)rr0)rrg?g?{r.)rrg?g?0)rr3)r8r8gYZ<%?gYZ<%?{rS)r8r8gYZ<%?gYZ<%?0)rr.)rrg݈Og#?g݈Og#?{rb)rrg݈Og#?g݈Og#?0)rr,)rrg|>g|>{rb)rrg|>g|>0)rr/)rrg8.PC5>g8.PC5>{rb)rrg8.PC5>g8.PC5>0)rr-)rrg!o3?g!o3?{r)rrg!o3?g!o3?0)rr.)r}r}gOH?gOH?{r)rrgJI-9?gJI-9?rS)r(r(gj)?gj)?r )rrg/r4?g/r4?0)rr+)r@r@gﭣ>gﭣ>{r )r@r@gﭣ>gﭣ>0)rr;)rMrMgKsY>gKsY>{r.)rMrMgKsY>gKsY>0)rr8)iig95?g95?{r2)rrgf*1>gf*1>rb)r~r~gn!tB{?gn!tB{?r)rrg?g?r )rrgsZ1.?gsZ1.?r)r1r1g=Ԑqx3?g=Ԑqx3?0)rr6)iigR& P?gR& P?{r )iigR& P?gR& P?0)rr1)rrg1['?g1['?{r)rrg1['?g1['?0)rr+)iGiGg"?g"?{r)iGiGg"?g"?0)rr5)rrg&B7>g&B7>{r)rrg&B7>g&B7>0)rr1)rrgHU_"?gHU_"?{r)rrgHU_"?gHU_"?0)rr4)rrg}r ]?g}r ]?{r)rrg}r ]?g}r ]?0)rr0)iig^zs(?g^zs(?{r)iig^zs(?g^zs(?0)rr.)rrgŹ<>gŹ<>{r)rrgŹ<>gŹ<>0)rr.)r5r5gu>gu>{r)r5r5gu>gu>0)rr.)rrg4/?g4/?{r)rrg4/?g4/?0)rr.)rrg ʭ?g ʭ?{r)rrg ʭ?g ʭ?0)rr+)iig g)iigsbJY{?gsbJY{?{r)iig%텃V?g%텃V?r2)r#r#gҊt5/?gҊt5/?r)rrgFd)9?gFd)9?r)iig'0)9U?g'0)9U?r.)iig%tzV?g%tzV?rV)r]r]g(?g(?rX)ililg;U?g;U?r)rrgJ["?gJ["?r)rrgC:?gC:?0)rr6)rereg`q&?g`q&?{rb)rereg`q&?g`q&?0)rr1)i]i]gG$A?gG$A?{r2)r#r#g[y?g[y?r)rrgv$v.%?gv$v.%?rb)rrgS;>gS;>r)rrg.4!3T+?g.4!3T+?r)rrgN?gN?0)rr5)rrglU2?glU2?{r )rRrRgw f>gw f>r)rrg!P1?g!P1?0)rr7)rrg* ?g* ?{r)rrg* ?g* ?0)rr7)rrg3Uf?g3Uf?{r)rrg3Uf?g3Uf?0)rr3)rrg"z*u?g"z*u?{r)rrg"z*u?g"z*u?0)rr8)r r g[i_?g[i_?{r)rrgi !R?gi !R?r)r-r-g$P K?g$P K?0)rr)r@r@gfN?gfN?{r)rrg>!ky>g>!ky>r)rrgkT>gkT>r)r-r-g)6tg?g)6tg?0)rr-)rHrHgz ̆ F?gz ̆ F?{rcrrv)rHrHgz ̆ F?gz ̆ F?0)rr2)iig tPب[?g tPب[?{rb)iig tPب[?g tPب[?0)rr6)rHrHg X ?g X ?{r )rHrHg X ?g X ?0)rr1)r&r&g)K>g)K>{r )r&r&g)K>g)K>0)rr;)r-r-gP >gP >{r)r-r-gP >gP >0)rr@)rHrHgzH?gzH?{r)rHrHgzH?gzH?0)rr3)r r gxT-?gxT-?{rrrw )rHrHgS>9Gs>gS>9Gs>r)rHrHg T, ?g T, ?0)rr)rrg.9Vx?g.9Vx?{r rr~)rrg.9Vx?g.9Vx?0)rr*)rrg&?g&?{rb)rkrkg5[#?g5[#?)rir )rrgt;؟>gt;؟>0)rr3)rrg_sqD?g_sqD?{r)rrg_sqD?g_sqD?0)rr.)i i g?g?{r)rrgΙD>gΙD>r)rrgNt?gNt?r)rrgor>gor>)r3rlr)r-r-gl hZ&?gl hZ&?r*)i i g2a F?g2a F?r3)rrg!gA>g!gA>r)r@r@g&d?g&d?r)rrg4?g4?)rQrlr)r-r-gY;!?gY;!?r)rrg₨s>g₨s>r )rrg5?֘ ?g5?֘ ?r)rrgkv>gkv>r)rrgTg?gTg?r)rrg!Ѵ?g!Ѵ?r)rrgZ;>gZ;>r )rrg_?g_?r )rrgk?gk?r )rrg Sص>g Sص>r )rrgOm?gOm?r )rrg2w?g2w?r )rrgy ΝB?gy ΝB?r )rrg/>W?g/>W?0)rrinstall_excepthook)rrgqƔ$>gqƔ$>{r)rrgqƔ$>gqƔ$>0)rr-r~)rrg?X8?gT(@{r)rrg?X8?gT(@0)rr_DummyStaticModule)rrg=J>g=J>{r)rrg=J>g=J>0)rrr)r-r-gԮ ?g;o P?{r)rrg22>gMMqs7?r)rrgg ?gW[t\D?0)rrr)rrgSg{> k?{r )r-r-gHֱ>g+/\ʷF>r{ )rHrHg[ i>g,%>0)rr}r~)rrg[g?gp/?{r)rrg[g?gp/?0)rr;GError)rrg~5ϋ>g~5ϋ>{r)rrg~5ϋ>g~5ϋ>0)rr;r~)rrg8[d>gXӁ`?{r)rrg8[d>gXӁ`?0)0/usr/lib/python3/dist-packages/cairo/__init__.pyrr~)rrg( "?gsP(c?{r)rrg( "?gsP(c?0)rrJr )rrg*>g*>{r)rrg*>g*>0)rr)r)rrg">ggW툭 ?{rrkrv)rrg">ggW툭 ?0)rrRandom)rrg|m>g|m>{r)rrg|m>g|m>0)rir)rrgPП>gPП>{r )rrgPП>gPП>0)ri SystemRandom)rrgFS6ߚ>gFS6ߚ>{r)rrgFS6ߚ>gFS6ߚ>0)rrr~)rrg! ?gHX9S?{r)rrg! ?gHX9S?0)/usr/lib/python3.8/bisect.pyrr~)rrg&%>gCu@#?{r)rrg&%>gCu@#?0)rrr)rrgFmĎ$>gFmĎ$>{r)rrgFmĎ$>gFmĎ$>0)rrr~)rrg4vxU>g;饫9>{r)rrg4vxU>g;饫9>0)D/usr/local/lib/python3.8/dist-packages/Cryptodome/Cipher/__init__.pyr r~)rrgG rEu%?g&ʯ+?{r)rrgG rEu%?g&ʯ+?0)rrEcbMode)rrglgA>glgA>{r)rrglgA>glgA>0)rrr~)rrg"JI>g ΏE?{r)rrg"JI>g ΏE?0)B/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/__init__.pyrr~)rrgk*V^ı>gk*V^ı>{r)rrgk*V^ı>gk*V^ı>0)rrc _VoidPointer)rrgC,{>g*%d>{r)rrgC,{>g*%d>0)rrload_lib)rrg$n>Cr!?gM:[?{r)rrg$n>Cr!?gM:[?0)rroVoidPointer_cffi)rrgxz)e>gxz)e>{r)rrgxz)e>gxz)e>0)ri  SmartPointer)rrgOne.>gOne.>{r)rrgOne.>gOne.>0)ri!r)rrg{lk(?g_ښ?{rc)rrg`ÊU>gWnť3?re)rrgTzQP>g첳vH?)r%rPr~)rrgFX>gV5p?r)rrgMti>g,hCƋ?r{)rrgg}z Ŕ?)rFrPr~)rrgp=|,>gv#?r)rrg5h`t>gr+?r)rrg|9>ggq0?r)rrgs[A>g V?r)rrgjw>g[u?r)rrg<>gvF?r)rrg%T6>ged$0?r)rrg@tb$>ge6 ?r)rrg2nDV>gє|?r)rrgh|m>gޯϊ?r)rrgמY>gl@?r)rrg',>gAt?r)rrgl՚q>gT?0)rrPr~)rrgH>?gqȾ?{r)rrgH>?gqȾ?0)C/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/py3compat.pyr r~)rrgEjT>gEjT>{r)rrgEjT>gEjT>0)F/usr/local/lib/python3.8/dist-packages/Cryptodome/Util/_file_system.pyrlpycryptodome_filename)rrgu#5?g U1[?{r)rrgu#5?g U1[?0)r rPr~)rrg>ވG>g>ވG>{r)rrg>ވG>g>ވG>0)7/usr/local/lib/python3.8/dist-packages/cffi/__init__.pyrr~)rrg]7M>gLxk?{r)rrg]7M>gLxk?0)rrrv)rrg?vmG?gq?{r)rrg?vmG?gq?0)rrcdef)rrg [{8?g@R]?{rrr )rrg [{8?g@R]?0)rrr)rrgw4?g@5VI?{)rrr )rrgw4?g@5VI?0)rrr)rrg`gE:?gh,~Xz?{r )rrg`gE:?gh,~Xz?0)rrGr)rrgxw>\>gij?{)rrC_typeof)rrgxw>\>gij?0)rrCr )rrg;%>g<È?{r)rrg;%>g<È?0)rr?r)rrg#R>gA>{r)rrg#R>gA>0)rrLr)rrgm>gu!c?{r)rrgm>gu!c?0)ri%r)rrgj^\J`>gT#h>{r)rrgj^\J`>gT#h>0)rirY)rMrMg?g=A:b?{r)rrgx >gbP5B?r)rrg繽X>g0d7?r)rrgl ?g'V?0)rrFFI)rrg_\'F>g_\'F>{r)rrg_\'F>g_\'F>0)ri$r)rrg"L ?gFA* ?g6C|V`?{r6)rrg>A* ?g6C|V`?0)rird)rrg~&/>goO`?{r} )rrg#Xm>gz4_[?)r%rr&)rrg2>g"I?)r%rr')rrg~H}>g$1?0)ri FFILibrary)rrgl ?gl ?{r)rrgl ?gl ?0)ri>r)rrgk@ط%??gԥx?{r)rrgk@ط%??gԥx?0)rrr~)rrgE ?gAn(b?{r)rrgE ?gAn(b?0)3/usr/local/lib/python3.8/dist-packages/cffi/lock.pyrr~)rrgX29>gX29>{r)rrgX29>gX29>0)rrFFIError)rrgRɑk>gRɑk>{r)rrgRɑk>gRɑk>0)rr@ CDefError)rrgNPI>gNPI>{r)rrgNPI>gNPI>0)rrrA)rrg|>g|>{r)rrg|>g|>0)rr}VerificationMissing)rrgQҎ>gQҎ>{r)rrgQҎ>gQҎ>0)rrr)rr-gna">gr(?{r)rrg'G>gjns?r)rrgs>>gr(?0)rr6r)rrg[>g/6<_4?{r)rrg[>g/6<_4?0)rrr)rrgw?!#?gx/sO1?{r)rrgw?!#?gx/sO1?0)rrrv)rrgg'A>g-Y\a?{r)rrgg'A>g-Y\a?0)rip _get_versions)rrgY߈:>gY߈:>{r)rrgY߈:>gY߈:>0)ritr)rrgTY?g1/a?{)rrrv)rrgTY?g1/a?0)rir)r-r-gh>gB">{r!)r-r-gh>gB">0)rir)r-r-gΤƛ&?g tS?{r)r-r-gΤƛ&?g tS?0)riRr)r-r-gs5}?g",יJXn?{r!)r-r-gs5}?g",יJXn?0)ri textdomain)rrga  b>ga  b>{r)rrga  b>ga  b>0)rir )rrgcǶt>giCV%>{r)rrgcǶt>giCV%>0)rir")r-r-gf#cR>gKIn?{)rir)r-r-gf#cR>gKIn?0)rir)r-r-gl(N>gcr0n?{r7)r-r-gl(N>gcr0n?0)ri^r)r-r-gQ$Y?gm'?{r)r-r-gQ$Y?gm'?0)rir)rrg/3?g n $?{r)rrg/3?g n $?0)rrr)iigm_!"A?gpF?{r#)i6i6gh;?gj+^{B?re)rrg.Xu?g ?0)rr$r%)iigŁdI?gƊa!OX?{r)iigŁdI?gƊa!OX?0)rr  closegroup)iig=?gV2mv?{r)iig=?gV2mv?0)r"rMr)rrgW>gVp >{rrr9)rrgW>gVp >0)rrrv)iiiig_n?g_n?{r)rrgUf?gUf?r)r3r3g\)%Ž?g\)%Ž?r)i#i#ghsAZI?ghsAZI?0)rrr)iigZ@ؑ9S?g39Y?{rR )ililgJRF?gRnAM?rrr)rrg4>g{>r)rrgvJ?g'4"?r)iig/.'9?gMBA?r)rHrHgSL[>gω&>0)rrG __delitem__)rrgY5s>gY5s>{r)rrgY5s>gY5s>0)rrr)iig\`t?gF²*?{r )rrgPxz>gМ)|>r)rrg.Î"?gm1c6+?r)iig_pb?g1 x?r-)iigߥAb?g7gg?r)rrg},)?gW1?r)rHrHg ?>gHZH>0)rrr)iig fW*?g(5v.?{r)iig fW*?g(5v.?0)rrr)iigǒq@V?g兗\?{r)rrgf?g摶&?r)iig:PU?g,Z?0)rrUr)iUiug]̰w?g$ K?{)rr r )iiga?gSt?r )i i gpd?g-n?r)rrg:jL?gR*loe?0)r"r}r)rrgz]ʲ>g~<8>{r)rrgz]ʲ>g~<8>0)rr}rv)rrg؃b2?gxAѩgFo>0)rr__next)iigu=1 z?gu=1 z?{r)rrg;c"?g;c"?)rrr)i<i<g={T?g={T?)rrget)i i gn ?p?gn ?p?)rigetwhile)rrgIӠh>gIӠh>)ri getuntil)i)i)g4:P?g4:P?)ri seek)rrg`{|>g`{|>0)rrr)iO iO g@)!\?g>h?{r)i#i#gM+B0>?g7!ZH?r)i,i,gLGf.U?g6#Nrb?0)rrr )i i gݱg?g}{?{r)i i gd 2f?ga{?)ri] _parse_flags)rrgx&>g;>r)rrg?vp>gs,-?0)rir )r-r-g\op>g>{r&)r-r-g\op>g>0)ri r )r}r}gCP?gnO`?{r)r}r}gCP?gnO`?0)rir)ivivg@&vT?gGY?{r)ififgBԇrl9?g{1n??r)iig`J 3cL?gvzQ?0)ri r )rrg]>gq_Ay>{r)rrg]>gq_Ay>0)ri'r')rrgX]#7?g7Pdf@?{r)rrgX]#7?g7Pdf@?0)ricr*)rrgJE?gv:M?{r)rrgJE?gv:M?0)rir~)r}r}gQfI?gHDV?{r)r}r}gQfI?gHDV?0)rir)rifgj?g|h줬?{r)i,r*g~Fd?g!?r )rrg(z G?g|h줬?0)rir)r i#gðm?gfp?{r)i#r gðm?gfp?0)ri]r )rrgEV>g?lw>{r)rrgEV>g?lw>0)rir)rrg1|h$?g_j&?{r )rrg1|h$?g_j&?0)rirk)rrgMXFZB?g+J!L?{re)rrgMXFZB?g+J!L?0)rir)rrg1x>gYuW>{r)rrg1x>gYuW>0)rir)rrgMt ?gVy: ?{)rgi; _compile_repl)rrgMt ?gVy: ?0)rir)rrg/}@?g$u*F?{)rgiKfilter)rrg/}@?g$u*F?0)r"r(r))r-r-g7- 4>g^ދK/>{rr)r-r-g7- 4>g^ދK/>0)r"r#r$)rrgP B>gp|۶i>{)rrr)rrgP B>gp|۶i>0)rrr)r r g@t?g2H?{r< )rrg:T?gQ?r)rrg'nk>g'nk>0)rr0)rrg.#2>g.#2>{0)rgr(r)rrg })<'?g"m4SV?{r )rrgc$A>g+)?)rrjr)ry ry gT\&?grXBS?0)rgrr)rrg\5?g+u?{r#)rrg\5?g+u?0)rgrr)rrgBY>gR>T>{r)rrgBY>gR>T>0)rgrrf)r+r+gB/?g.\ȶ?{r )r&r&gH>gT\D?r)rrg=[M >g#Ev.:?)rrr)rrgE/ӑ>g~إ""8?rXr-r~)r r g 4O>gˆ'o]?)rrr~)rrgg,Ov͓N?r)rrg,wA&>g??)rr rv)rrg߯>g/T?rW)rrgKqy>gs(l}ߦ?r)rrg9'Ɨ(>gC+%;>?r)rrg;^>gOXB?r)rrg%H>g5)?r)rrg1>gutk`?rrrv)rrgPnD*>gK֐c?)rXir )rrg_>Y1\>gmyV5`?)rXir )rrgZwb>g aOk?0)rgirh)ririg&P?g Z!?{r)rrg; w?g>* ?r )rrgYTWM >gºn>0)rgi!r.)i=i=gH&z`?g*p?{r)rrg\.?gػP?r)rrgHr,>?g5_/.]?r)rrg;%>g(B>>)rgrrf)r+r+gmvU?g]Оrݶ?0)rgi;r )rrgەI>gO/!?{)rgiE_subx)rrgەI>gO/!?0)rgiKr )rrglKs+?g`QL?{r~ )rrglKs+?g`QL?0)rgiEr )rrgY:g;?gH\#)(B?{r~ )rrgY:g;?gH\#)(B?0)r%rMrZ)r)r)gml ZC&?g\1?{r)r)r)gml ZC&?g\1?0)r%rrz)rrgQJU7?g‰'<:?{r)rorogO!5?g#7?)r%iRrd)rMrMgn#4ؗ?gdX?0)r%r r)rrgI2?g?q5?{r)rrgI2?g?q5?0)r%rrv)rMrMgS?gS?{r7)rMrMgS?gS?0)r%rr)rrgmo`Q?g5,a?{)rXr/rF)rrg܇t0 ?gBՒQ?)r^rrN)rrg ':5?gi>1!?)rurr)r@r@gz?g(?)rrlr)rrg*?gx*,--g?)rip r )rrgD ?g+[[|?r7)rMrMg/F?g/hq.$?rA)rRrRgkm?g> e0?r)rrglȯEF?gN|V?0)r%ryr8)rMrMgUG׬Q$?g.DaG?{r)r@r@g݁q?gOuw;?r)r r g by c?g 4?0)r%rr~)rMrMg?5E?g?5E?{rA)rMrMg?5E?g?5E?0)r%r3r4)rMrMg/6<_D?gZ.iĀP?{rA)rMrMg/6<_D?gZ.iĀP?0)r%rr)r r g^J>g^J>{r )rErEgJ8~>gJ8~>rA)rrg*Pz}>g*Pz}>0)r%rVr)rMrMg"`t?gk;E:?{r)r@r@g=Z(E?gQ"a?r)r r gcQݛ`q?gM|?0)r%i!r)rNrNgc7?g={ ?{)rr rC )rrgI5Mf>gZc{$?ra)r r guf_?gnctʂ?r)rrgW9؎>g] 2?r)rrgL2?gokT@?0)r%iRrd)rMrMgh+eS?gBb ?{r} )rMrMgh+eS?gBb ?0)r%ik __members__)r r gf^ʝ>gf^ʝ>{ra)r r gf^ʝ>gf^ʝ>0)r%i{r&)r'r'gxP?gGOS?{)rrr)r`r`g#whD?g*!23H?rA)rrgYR5?gN(9?r)r r ggV!|K?gCS?ra)r r g' N?gVap?0)r%ir)r r g,OP1?g`Q?{r%i!r)r r g,OP1?g`Q?0)r%ir)r r geƮQ?gjmE[5k?{ra)r r geƮQ?gjmE[5k?0)r%ir)rrg-5k`?g-5k`?{rv)rrg-5k`?g-5k`?0)r%irb)r r gHz!?g?@ 4^?{r@)r-r-gc ?gfJv?r!)rrgbó?g}?0)r%ir)rMrMg^\?g0O!?{r7)rMrMg^\?g0O!?0)r%ir)rPrPg $,?g@1?{r)rPrPg $,?g@1?0)r%ir)rPrPg#?gs"=?{r7)rMrMgn$@?g^,Wz'?rA)rMrMg|uư ?gK%$?r)r r g'=4u?gb^ ?0)r%ir,)rMrMgKpb&?g4i 9?{rA)rMrMgKpb&?g4i 9?0)r%iJr)r{r{g$@6?gTl.C?{r )r{r{g$@6?gTl.C?0)r%i{r)rrgmA>gmA>{r)rrgmA>gmA>0)r%ir)rrg񤺽1>g񤺽1>{/usr/lib/python3.8/types.pyrr)rrg񤺽1>g񤺽1>0)r%ivalue)iigֶj^R?gֶj^R?{r! )iigֶj^R?gֶj^R?0)rcr_combine_flags)i6i6gLju-:?gLju-:?{r-)iigIE8?gIE8?r)rrgfwL>gfwL>r)rMrMgTzQP>gTzQP>0)rcrr.)riZgݲ_s?gɷ?{r-)i rgcn?g,>?r)rrgn[?gɷ?0)r%i/r)rrgϴ=>g A/?{r)rrgϴ=>g A/?0)r%i6r1)rrg1hW?g;\.?{r)rrg1hW?g;\.?0)r%iTr)r-r-gP\V>gcbk4?{r)rrgkhG>g4%#`$?r )rrg >gv$?0)r%iZr)rrgcks:?gߗP?{r)rrgcks:?gߗP?0)rcird)i#i#g.p(et?gKSݾ?{r-)iigM8t?g_~?r)r r g;&.v ?gMq-?0)r%imr)r-r-gvx>g|y./>{)r%i _power_of_two)r-r-gvx>g|y./>0)r%ir)rrg"TP!?gCmII?{rc)rrg"TP!?gCmII?0)r%ir)rrgPӣ>gPӣ>{rv)rrgPӣ>gPӣ>0)r%i~rd)rrg!G ?gIL_(?{r0)rrg!G ?gIL_(?0)r%ir% )r@r@g #!>gߣAo>{r%ir)r@r@g #!>gߣAo>0)rcrr)i#i#g cQ?gcy1V?{r-)iig c1Q?gU?r)r r ga=L>g4=?0)rcir)rfrfg cD?g cD?{rg)rfrfg cD?g cD?0)rcirh)rfrfgdgf??gS?{rb)rfrfgdgf??gS?0)rcir)rrg'wΆd>g?KKa ?{rb)rrg'wΆd>g?KKa ?0)rcir)rrg2g??g" T?{r-)rrg2g??g" T?0)rcir)r&r&g;>u?g J.sx?{r)r&r&g;>u?g J.sx?0)rci _get_iscased)rrg$`Num?g$`Num?{r)rrgؒg) ?gؒg) ?r)rrg4']ja>g4']ja>0)rcir)r5rgfLSG6?go%?gm*?{r)rrgd7i?geV?re)rrgx|PWD;?g)s?0)rciVr)rrgyCi73?g?{re)rrgyCi73?g?0)rcirf)rrgF[N?gة?{r)rrgF[N?gة?0)rr/rv)rrg耞  ?g耞  ?{r )rrg耞  ?g耞  ?0)ryi decorating_function)rrg&g?g C1##?{r)rrg v>gW J>rYrr~)rrgC>gĕ>?r)rrg>jK>g:PYI@?0)ryir)rrg*>g~ۜ>{r)rrg:ܳS>g{D>r) )rrgg>gwm>r)rrg6_>g%|C>0)rHi get_importer)r&r&g r>g r>{rG)r&r&g r>g r>0)rHir)rHrHg$P8 ?g!"Kg?{r)rHrHg$P8 ?g!"Kg?0)rHir)rHrHg#ls?gAGf?{r)rHrHg#ls?gAGf?0)rHirI)rrgBi?ga )Q?{r)rrgz?c>gq!*?r)rrgЁ?g` L?0)rhrrv)r@r@gm?gug̲?{r@)rrgz>gܣ>rA)rrg6kdL>gy>rB)rrg+Y>gᵀ >r)rrgwJ3R>gIȣ>r)rrgNo>g ?0)rhr{r)rrgiMU=?giMU=?{rC)rrgiMU=?giMU=?0)rhr r)rrgܲ?g0 ;?(?{r)rrgKzs>gTAq>rC)rrg}C?gM%?0)rhrr )rErEg0Y?g0Y?{r)r-r-gԜWJ>gԜWJ>rC)rrgw.?gw.?0)rhiri)r@r@gb;?g2o}?{)rhrrv)r@r@gb;?g2o}?0)rhiCr)rrgLA?g\/t ?{rhr r)rrgLA?g\/t ?0)rhiHrv)rrg }?g }?{r+ )rrg }?g }?0)rhiWrv)rrgJhD>gJhD>{)ri)rv)rrgJhD>gJhD>0)rrrv)rrgD9P>gD9P>{r)rrgcӖb>gcӖb>r)rrg9=>g9=>0)rrr)rrg%d 3?gH=P?{r )rrg!>g_`>rO )rrg"vS ?g^U^?0)rir)rrg* `?g* `?{)rrr)rrg* `?g* `?0)ri9r)rrg{(yJe?g(z?{rrr8)rrgS߭u ?gaҲ2?r )rrg \\%?g =?rq)rrgS ?gҸ6?r)r-r-gs?3?gGwIL?r)rrg6I`">?g QL?r)rrg_15$?gR?r)rrgls[&?g⑇gA?0)rrr)r`iEgNJT?gݧ'O?{r)rrg?gh^x?r2)r#r#g>?gkhO>G(?r)rrgD?gZN?r)r r g'I?g5i?0)r" rr)iigmW֠q?gV4v?{r*)iigb?gC< g?rj)iigw-;_?go9˵c?r)rrg?g' ?r& )rrgƎ>gܙӁ ?rc)rrg$>g :C>0)rrr)rrgғ8"?gr??{r)rrgqDk!?gOtx>?r)rrgj/>g%G2>0)rrr)rrgʰ' w&+?gOw5?{r)rrgʰ' w&+?gOw5?0)rKr.rL)rHrHg:?gO=e?{r)rHrHg:?gO=e?0)rirv)rrgyi?gyi?{r)rrgK0s?gK0s?r)rrgs7>gs7>0)rir)rrg~7.?g0,!F50?{r)rrg?Q,?g9s/?r)rrgE/w>g-Aj>0)rir)rrg \z?gVB3 ?{r)rrg/Kc?gM?r)rrgߋL>gwE>0)r9rrv)rrgn?g ?{)r9helper)rrgn?g ?0)r9rr)rrgVN ?g%GL?{r)rrgNӽ>g"s]$I?r)rrgy>>ggf?r)rHrHgY}%?gi&o?0)r9rr)rrgz#-?g4%D=C?{r)rrg<>g=?r)rrgٶtA=>g U#?r)rHrHgf{?gA5-/"?0)r9r- r. )rrg ? ?g/@](?{r)rrgK>g~}hw,?r)rrgOЬ>g I>r)rHrHg<$ R?g["?0)r9rXcontextmanager)r@r@gҴ?g>;"?{r )rrg -'>gDr?rF )r-r-g>gL?r)rrgLَ2>gT-O Q?0)r9i&rv)rrg׎>g׎>{r)rrg׎>g׎>0)r9i(r)rrg*\˭>g*\˭>{r)rrg*\˭>g*\˭>0)r9i*r)rrg d>gogw?{r)rrg d>gogw?0)r9i}rs)rrg'C>g߻)>{r#)rrg'C>g߻)>0)r9i{_create_cb_wrapper)rrgÇ5<>gÇ5<>{r)rrgÇ5<>gÇ5<>0)r9irv)rrgRͧ^ ?gRͧ^ ?{r+)rrgRͧ^ ?gRͧ^ ?0)r9ir)rrg &?gU[i2?{r+)rrg &?gU[i2?0)r9ir)rrgEh?gB2?{r)rrgEh?gB2?0)r9ir)rrgC'e>gC'e>{r+)rrgC'e>gC'e>0)r9ir)rrgE ?g?{r+)rrgE ?g?0)ryrlrz)r{r{g%y[?g]9?{rpr]r)r-r-gq|>g&'?rtr}r)rrgGũ>g?Yy +?r)rrgx ۋr>g/W '>r)rrg3 I>gX fl?rir8 )r@r@gaY?g!ԾI?r@)rrgBWC ?g ߸H~?rr/r )r-r-g(>gr!L?riDr )rrg]\KV?gn?)ryi r( )rrgB~ ?gseR?r9rXr/ )r@r@gkpF'?g?0)ryrfwraps)rNrNg|4?g|4?{r1 )r-r-g*y>g*y>r2 )rrg=趝>g=趝>r)rrge)(н>ge)(н>r)rrg8T tM~>g8T tM~>r3 )r@r@g^c>g^c>r@)rrgW&>gW&>r4 )r-r-g+->g+->r5 )rrgjmH0?gjmH0?r6 )r@r@g -5>g -5>0)roier)rrgM]?g$s?{r)rrgM]?g$s?0)roir)rrgA?gsm^"?{ro)rrgRE1>g^>r)rrgqT>g{[~>)&/usr/lib/python3.8/_collections_abc.pyir )rrgZүg?gUmA3?0)roirp)rrg ?gq ?{roir)rrg ?gq ?0)roir )rrgt~W>g4<>{r9 )rrgt~W>g4<>0)roi rr)r r gˎh>ggtZ?{rSi`r)rrg>gX>r)rrgmQ4>g `>0)roi1__subclasshook__)rrg~k>g9j'xz >{rrr)rrg~k>g9j'xz >0)rrr)rrgHN$?gvu.?{r)rrgn.?gRg?r)rrg4 Z?g)?r7)rrg#?,>>gh7->r:)r-r-gN@>g$xA>r=)rrgJkd;>gV>0)rrr)rrgz\>gݦ&^>{r)rrgz\>gݦ&^>0)r8 r_check_methods)rrg@nu>g@nu>{)roi1r; )rrg0:J>g0:J>)r8 rr; )rrgd#ws>gd#ws>)r8 i]r; )rrg؛C>g؛C>0)rrr)rrgQ7,?gjA*?{ro)rrg^-j>ge:>r)rrgbAY?g*Qⲋ'?r)rrgm݆>g~>0)rrr)rrgmG?g"Q?{ro)rrgw]>g ![>r)rrg.M|{>glO6>r: )rrgx ?g/Gl?r)rrg*y>gd$H>r)rrgP# k>g>o>r rlr )rrgQ7}4?g@gh>r)rrg@fg;?g{1I?r)rrg!%H5>g>0)r8 rr; )rrg絝Ԑ>g$%>{r< )rrg絝Ԑ>g$%>0)rr8r9)rrgaNhC"?g?C?,?{r> )rrgaNhC"?g?C?,?0)rr;r<)r-r-gA.>gHT?{rZ)rrgN-+>g n+%>r+)rrgHw^F>gWF?0)rr>r?)rrg@?gw|R<?{rZ)rrg!Gd>g?r)rrg9o6>gx,>r)rrgZ>gp2>r)rrg_t>g/>0)rrrj)rrgbJ?g^T?{r)rrgbJ?g^T?0)r8 i]r; )rrgW];>g8F>{r< )rrgW];>g8F>0)riNr)rrgta;?g RC?{r)rrgta;?g RC?0)ritr)rrga&"?gt4JO?{r> )rrgTt?gzNG?r)r-r-gW&>g:z?r)rrg#Sj>gy^?r)rrg6S։>gL?0)rir)rrgR!>g{|1?{r)rrgR!>g{|1?0)rir)rrghh?gwCQ-?{r)rrghh?gwCQ-?0)rir)rrg*\˽>g*\˽>{r)rrg*\˽>g*\˽>0)r8 ir )rrgg?g󧐢#?{r)rMrMg6h?g %` ?r)rrgHg>gAs>0)rir)rrgۮ#P>gۮ#P>{r)rrgۮ#P>gۮ#P>0)rir)rrg4?g=dN (?{r)rrg4?g=dN (?0)rrrb)r r g>5b?go]9?{r)rrg2>g,` ?r)rrg2N?g~S 6?0)rr rd)rrgnL' ?gR@ ,?{ro)rrgh >>g=,'?rG)r&r&gg2j^?gD:y"?0)rrr)rrgE>ge>{r)rrgE>ge>0)rrr)rrg^J>gS帩:>{r)rrg^J>gS帩:>0)r-irv)rrg{f>g{f>{)r-i5rv)rrg{f>g{f>0)r-i5rv)rrg(>g?Wxbx>{r)rrg(>g?Wxbx>0)r-i?r )rrg?k?gy);?{)rrr*)rrg?k?gy);?0)r,r abstractmethod)rrgNMbы?gNMbы?{)rrCr)rrgU>gU>)rrr)r&r&g\>g\>)ri r)rrgܤ#jI>gܤ#jI>)ri&r)rrgsH>gsH>)r ir )rrg^-j>g^-j>)r ir )rrgz;࿫>gz;࿫>)r ir )rrg2iĵ>g2iĵ>)r ir )rrg^s=>g^s=>)r ir )rrgL v>gL v>)r i#r )rrga>ga>)r i-r )rrg X>g X>r )rrg٥f?>g٥f?>r )rrg`Ⱥ>g`Ⱥ>r )rrgXB߂>gXB߂>)rr1rp )rrg`;f>g`;f>)rrcr )rrgp/⛣>gp/⛣>0)%/usr/lib/python3.8/encodings/utf_8.pyr getregentry)rrgwdž>gկh>>{r2)rrgwdž>gկh>>0)r-ir)rrgw4>g ŇyY?{r )rrgw4>g ŇyY?0)r,r$r)r;r;g;d&?gЃ3a?{r)r r gX!$?gUx o`?r, )rrgjR>g?r )rrg q>g-/P?0)r,r4r)rrgm^N>gTzK,?{r, )rrg@7<`>ga6?)rrr~)r-r-gF@v>g_}~?r)r-r-gN+?C>g5?r)rrgLَ2>g;->0)r,r r)rrg9̗>g`/K! ?{)rrre)rrg9̗>g`/K! ?0)r,r8r)rrgs!~>g܈t #(?{)rrr)rrgr.>g>Z@n%?)rrr)rrgR>gQB c>r< )rrgB[Jm>gQ ?0)rorr)rrg ]?g ]?{r)rrg ]?g ]?0)rorr)rrgkNu>gfIer.?{r!)rrgkNu>gfIer.?0)r_i@rv)rrgl Y!>gl Y!>{r_ir)rrgl Y!>gl Y!>0)r_iK create_module)rrgV%?gjÃݥ?{r])rrgV%?gjÃݥ?0)r_iS exec_module)rrg `?g)?{rJ)rrg `?g)?0)r_itrv)rrg:>gW4ߴ%>{r_i6rL)rrg:>gW4ߴ%>0)r_izrM)rlrlgMM?g w֊?{r:)rlrlgMM?g w֊?0)r_ir;)rlrlgCՑ?gz8)-?{)r_itrv)rrgӓc?>g\>)r_i _recalculate)rrgBi?g4+?0)r_irF )rrgKCC#?gaf7?{r)rrgKCC#?gaf7?0)r_ir)rrgp?\?gE}%??{r)rrgp?\?gE}%??0)r_irD )rrg˔/Z>g˔/Z>{rJ)rrg˔/Z>g˔/Z>0)r_i _path_hooks)r r g^^3?gȰb?{)r_i_path_importer_cache)r r g^^3?gȰb?0)r_irH )ititgN"OQ?gS@j?{r)ititgN"OQ?gS@j?0)r_ir)i i g8 ?n?gc+ퟭ?{rE )i i g8 ?n?gc+ퟭ?0)r_i6rL)i i g{G?g ?{rOiz _find_spec)i i g{G?g ?0)r_ixr)rrgcyno?gcyno?{)rrr)rrgcyno?gcyno?0)r_irrv)r r gp/8?gOR7H?{r_ipath_hook_for_FileFinder)r r gp/8?gOR7H?0)r_ir)rrgrUN?gYZ$l?{rN)rrgrUN?gYZ$l?0)r_irL)i^i^gP?g/nV뿩?{rG)rRrRg-E+?g F?r)iTiTgj ?g=]$d?0)r_ir)r r gj=&R:?gzc?{rN)r r gj=&R:?gzc?0)r_irL )r r gemw&?g*FT?{r_irG )r r gemw&?g*FT?0)rrrv)r r gy~2?goQ٦D?{rM )r r gy~2?goQ٦D?0)rrr)rrg7&I?guLi<?{r)r-r-grLY>g_M ?r2)rrg]H >g,2>0)rr3r4)rrgnnh>g*H1?{)rrr)rrgnnh>g*H1?0)r-rkr)rrg>\5y>g3f>{)r@ rrA )rrg>\5y>g3f>0)rOr _new_module)rrgJA?gJA?{r])rrgJA?gJA?0)rOrrv)iigE@̆^?g0Re?{r1)iigE@̆^?g0Re?0)rOrrI)iigbnWt?gsv?{rOrr)iIiIgYk?gn?rOr?_lock_unlock_module)iOiOg}Z?g>13\?0)rOrJrK)iigñ)q?gW:s?{)rOrr)iIiIgZi?g{;\k?rP )iOiOggZnT?gٵV?0)r_r _relax_case)i^i^gt00?gt00?{rN)i^i^gt00?gt00?0)rOrrv)iIiIgXH?gXH?{r8)iIiIgXH?gXH?0)rOrr)iIiIg$o{Z?g2ʍ?{r8)iIiIg$o{Z?g2ʍ?0)rOrr)iIiIg#u:uQ?g";K;r?{r8)iIiIg#u:uQ?g";K;r?0)rOr6r7)iigxeV.^?ge?{r8)iigxeV.^?ge?0)rOrr2)iig J?gvqs_ ?{rO )iIiIgp.&={?gwW ?rP )iOiOg-WZ?gQd?0)rOr?rQ )iOiOg}[P?gyz?{rrr)rrgP?gY3&?r, )r-r-g*E>gsȄ7" ?r?r-r~)rrg3̭>g~x3>rg)rrg>gC>rz)rrg-1.>gT:b>r)rrg4 l>g\C>r)r-r-gW];>gu ?r)rrg~>g!L,>r)rrgi3>g<aO}>rrRr~)rrg8>gFd $>r)rrgKU.>g[SDy+>rrr )rrg J5>gd!:?r)rrg/2,>g*xt>r)rrgUmA3>g/ q>r8)i4i4gRaAkMM?g'>x?0)rOrXr)r icgaF>ІC?gJ?{r_iKrC )rrgrJfe?g(Nƥ?r_iSrD )rrgrQk>g/l?)rOirC )rBrBg>>g8gة`?)rOirD )rBrBg/Kc>g;a?rQ)rMrgKD>gpk(?r)rr}g)ťb?g4?r_i rD )rrRg&C׃q5?g7lW?)r_iIsource_to_code)rrg@i?g|?=?0)rOrx_verbose_message)i i gi }e?gi }e?{rW )rrgD-x?gD-x?rX )rrgn>gn>rN)iQ iQ gv ]?gv ]?rJ)rLrLg'4?g'4?r_i_validate_timestamp_pyc)r-r-g{>g{>r)rUrUgЀL~+?gЀL~+?r )rrg aϳf/?g aϳf/?r_iset_data)rrg=Ԑqx?g=Ԑqx?0)rOr_requires_builtin_wrapper)rBrBg ?g,f8?{r[)rBrBg ?g,f8?0)rOi r=)rrg [W2?g ((R?{)riD r)rrg [W2?g ((R?0)rOiVrv)i0i0g[H?g[H?{r)rrg!%?g!%?rN)rrgK>gK>r[)rlrlgt?gt?r)rrgJ8B?gJ8B?0)rOixcached)iig馗I?g?{?{r.)iig馗I?g?{?0)rOirP)ipipgN5A?g0~H?{r, )rrg$H<>gIc->rV)rrgy>>g >rT )r@r@g hS>g hS>rW)rrg~ >g ˊ>rGrr~)rrgy>gGŕ">rY)r-r-g,CYN>g>Vu>r[)rrgqT>gXT>rPrr~)rrg >g >r))rrg|>gP=#(6>rW)rrg/n>g'>rb)rrgJ֗[>g g5_P>rg)rrgcG>gOPgG(>rn)rrg{>gv~=>rv)rrgwϡ>g謹>rx)rrg5>g5>rrr~)rrg \M>g \M>r)r r gT>gT>r)rrg nA9>g{>rrr~)rrg_~>g_~>r)rrgrƪ>g?;>rU )rrgeVS>gDė>r)r@r@gYl4%O>gBh>r)rrgnv>>g 4>r)rrgl."}>gߨu>r)rrgk v>glQ>r rRr~)rrg/W '>g/W '>r)rrggO >r)r-r-g$F>gc >`>r)rrg2be->g^>r)rrgfh>gq>r)rrgƗy@>gNPI>r)rrg_>Y1\>gGVg}>rF )rrg4vxU>gI>r)rrgKP~>gFa>r)rrgUfG8>gUfG8>r)rrg jt>g6X:Q>r)r-r-g|>g7t>2>r)rrgұ{>gyz>r )rrg: >gz\>r )rrg[,!>g~l~; >r)rrgjH>gU r>r)rrg7P>g>r)rHrHg,>g,>r)r@r@gS'>gS'>r rr~)rrg{b >g{b >r rr~)r-r-g+/\ʷF>g+/\ʷF>r)rrg{ t>g,>r)r-r-gZwb>gj q>r.)r- r- g3ά6?ggr??0)rOi has_location)iig²#?g²#?{r.)rrg/Kc?g/Kc?r)rrgaYݨ?gaYݨ?0)r_rr)r#r#gG ޻,?gkrw3?{r^)r#r#gG ޻,?gkrw3?0)rOir\)rlrlgQ+`,?gJV@?{r6)rBrBgT!g_N ?gK 6?r)rrgɈs#?g.+T$?0)rOir/)rrgو9Y:d?g9V?{r])rrgو9Y:d?g9V?0)rOi%r^)r~rg'Q?gJ*?{rJ)rr~g'Q?gJ*?0)rOi6r)rrgz,֠1?g ݟ7H?{r<)rrgz,֠1?g ݟ7H?0)rOierI)rrg56 &?gR?{rJ)rrg56 &?gR?0)rOirK)rigg`:f?g*_ø?{rQ)irgg`:f?g*_ø?0)r_rr)iig?IIN?gÕU?{r)r r g -=~:?gOڗB?r\ )i_i_g0H@?g &QH?0)rOirL)iig[1?gJTL?{rI )iig[1?gJTL?0)rOirC )rBrBgq?g!+fa?{r])rBrBgq?g!+fa?0)rOirD )rBrBgY.v?gf%z#?{rJ)rBrBgY.v?gf%z#?0)rOirD)rBrBg a>g a>{)rOrr` )rBrBg a>g a>0)rOi rL)i i g2?g CB?{rI )i i g2?g CB?0)r_rfr)i i gpw?gy?{r)i i gpw?gy?0)rOi_r)iWiWg(m+oI?gvxTDQ?{rI )iWiWg(m+oI?gvxTDQ?0)rOicr)iWiWg}(J?g4SR?{rI )iWiWg}(J?g4SR?0)r_rr)i i ggKDbx?g v5 .r>g3*%?gnY;@?{rI )r>r>g3*%?gnY;@?0)rOizrJ )iigȝgm[`Z?r6)rrg3M4F>gtQh?r )rrgQ>gcLGZ?r8)r@r@g`G?gٺ?rB)rrg׊@9->gk*K?rV)rrgpMr>gT C魯u?rT )rrga# >gs4ڝZ?rW)rrgx7>gc41F?rb )rrgZwb>gROR?rY)rrg6kdL>g-yB?r_)rrgk$ >g5˴GD?rc )rrgW7>gA6f?r))rrg[#'?g҄n?rW)rrgkm좀>gr?o?rb)rrgM#>gN8{ o?rg)rrgƱ`>g-P3tA?ri)rrg6w\>gLG?rn)rrgAޯ?g qa?)rrr~)rrg1<{>gg9?)o;?rx)rrg#$v>g&p?rz)rrg.\>gU❈?r{)rrg>g+\V?rd )rrgfBaQ[>ğN??r)rrg8f>g O?r)r-r-gQ?gF{?r)rrgҿY >gl?r)rrgtu>gPU?r)rrg,F#e%?gPA Y4?re )rrgȄ>gM7J?r)r r gѥΏ?g}]jտ?r&)rrg$Gt>ge; Z?r)rrg @>gL6nR?r])r@r@g]m?gk/\z?r)rrgk.>gdI?r)rrgHeǜ >gAPL?rq)r@r@g3LS ?gdWPvlt?r)rrgj<15>g`F'`?r)rrg:/>geA$9L?)r9rr~)rrg,|?gm3)?r)rrg~>g[麒2?rF)rrg:#`?g +Cq?r)rrgI'>gwIq?r)rrg]e~T?gnCZ{?r)r-r-gCx?g[ߪa?r)rrgsa5)>gڐL}?r)rrgf~8?gi8?r)rrg26?>gU>:?r)r r g4M+U?g`U?r)rrgarC>gjR?r)rrgJ>gcJu?r)rrgn>gzg{=?r)rrga>gH,[V?)rrr~)rrg>b?gMLJ?r)rrg*E>g]{(&Z?r)rrgc)q/>g 9r$L?r)rrgrz?g9.?r)rrg$vD>g{m?rrr~)rrgݤ>gDd)d?r)r-r-gzs>J>g`?r)rrgUk>gjԼL?)rr-r~)rrg1Ʀ>g]Mi*?r)rrgw`/>gϠ=?r)rrg} ->g~~ D?r)rrg<@>gU]?r)rrg3">gwSK:QK?r)rrgx59.>g`캀?rZ)rrgc>g2j?r)rrgd >gg H?r)rrg WU* ?gY. ?r)rrg-}X>g]?rf )rrgI<\O>gGtqIE?r)r-r-gJR?gc?r)rrgV >g\f?)r rr~)rrgofy>gZsq?r)rrgO)>g}XN?r)rrgo>gp%?r)rrg97h?gl?r)rrg&)>g"M;H?rF )r-r-gdr%R?gF(;`?r)rrg;?gYeė?r!)rrgsIw?gBp?r)r-r-gR?g5V?r)rrgK>g&ֆ)Fv?r)rrgXɔ]>gus?r)rrgh}{>g'2j?r)rrg Z1>grO[ZP?rV )rrg{zS>g5dŀ?r)r-r-g1Fq ?g-s?rg )rrgG2vc>g䮢bCb?r)r-r-gJ'XX>g>VuL?)r rr~)rrgkZ<>gb ?)r r r~)r&r&gy^$?gI|?r)rrg߻)>gn {?r)r-r-g;>g}(t?rh )rrgsn>g8?k?r)rrgSf >gw [?r)rrg.\>goVM?rj )iEr`g-}l?g\0m?0)rOirk )r`iEgplH?g0E?{r)iEr`gplH?g0E?0)rOir)rr|g؀IL?gFOs?{rS )rHrHg.;\\?gj*w{ ?r )r-r-gU>gJnBVk?r1)rrgC;<>g5>r2)rrgQH>g(Yi>r4)rrgH!>gPW&>r6)rrg"w>gJV>r8)rrguW:>gs m>)r rr~)rrgSL[>g>r:)rrgy0b7>g3_ >r<)rrg>gĻo>r>)rrgh>g ŗ5#>r@)rrga-%hm>g{D>rB)rrgc>g:C>rC)rrgdfǏ>gR>)4>rE)rrg$ >gba>rG)rrg+b6>g`ZlDD>rI)rrg >g($8>rK)rrg>Z>gc&>rN)rrgh>g1yO">rP)rrg|e>g;^>rR)rrgL@>g>rT)rrgrԎ>gW>rV)rrgwEۮI>g>7?rT )rrg_ݍC>g 42e?rW)rrg#>g->r[)rrg5>gIV>r])rrg8u>gNi>r_)rrg>g0W7f>r))rrgU>gWQh>rW)rrg(\k>g BI0?rb)r@r@gSfP[f?g^%e?rc)rrgG=F>g>>re)rrg`;f>g.f>rg)rrg9o6>gPH?rn)r-r-g9>g@{x>ro)rrgrv>gHeǜ >rq)rrg>g0>)rrr~)rrg*\>g-!?rs)rrgL̔>gw>rv)rrg:~t>g2H>rz)rrgS>gMwu>r{)rrg uIiU>g ފ?r)r-r-gCC>g&Ъw?r)rrgͨ>gC,{>r)rrgNӽ>g>r)r-r-g=>gXH %?r)rrg W>gEw6y?r)rrgb֎r>gt8_)!>r)rrge?>g B?r)rrgngOSY>r)rrgû>g >r)r-r-gj?)T>gSmr?r)rrg9_zh>gh 6\>r{)r-r-gl|>gL>r)rrgv>=>g Fi>r)rrgy);>gLَ2>r)rrg}&Gv>g51i?r)rrg*>gay>r)rrgZeG >gU]}NG?r)rrgK;+%:>gh>r)rrg6S։>g-]>r)rrgtA?gи٪?r)r-r-gzKZ>gVH ?r)rrg=5>g̾y>)rTr r~)rrgM>gSei >r)rrgkĨx>g~>r)rrg5_W>gʭE$r>r)rrg:\ >g4}7\2.>r)rrgid[>gO O#>r)rrg:+>g1}2>r)rrgTَe>g@v?rU )rrg@>g>r)rrg^J>g>r)rrg\0b>gV>r)rrg\%h>g5>Y>r)rrg?k>gnl>rl )r-r-glwL3>gpOȌ?rZ)rrga>g4_>r)rrg >g)GR_F?r)rrgp2>g)հrw*?r)rrgumD7>gֲWMGh>r)rrgK?{>gV/x>r)rrg]E~>g U?r)rrgq g]>g~\>rN)r-r-g=Q>gyH>r)rrg>g?2}>r)r-r-g0>gwW>r)rrgѰ_J9l>gpyDF>r)r-r-gi>ghՎ^>r)r-r-g ">g.iY?r)rrg7r>garW>r)rrg F<>g >r)rrgsn>g>rF )rrga>gJ hG|>r)rrg>gdN7S?r)rrg{JB>gE$(S>r)rrg& 4>g~ >r)r-r-g:2>g> X?r )rrgK5B>gѩ&+>r)rrg~<8>gV,d>r)rrg >g2b*>r)rrg"hy>g[>r)rrgU>gfݭ?r)rrg<>g]>7z?r)rrgf%>gevgS>r)rrgzp>gM K?r)rrg:\i!>g< fT?r)rrg.C=+?g3 ?0)r_rTrU)iigE=9P?gucY?{r)iig}UfL?gaU?r^ )rrg7?g;?g4L?g{91t?)r_r _path_isdir)rrg@!?gmH?0)r_r#rp )iFiFgŔ@?giv?{rN)iFiFgŔ@?giv?0)r_rrq )rrgg ?g(hL?{rN)rrg}ub>g7?Lb?rK )r r gI^ ?gp~7?r^ )rrg]8?gxMY>?0)r_rr)rrg 0?g0]?{r^ )rrg 0?g0]?0)r_i&r)iig Vbo?gɲ?{r)rrgR_ua?gw3?gh?{rr )rrg)Jk>?gh?00secrets-5.1/screenshots/000077500000000000000000000000001415312107300153645ustar00rootroot00000000000000secrets-5.1/screenshots/browser.png000066400000000000000000001762421415312107300175710ustar00rootroot00000000000000PNG  IHDR-(sBIT|dtEXtSoftwaregnome-screenshot>*tEXtCreation TimeMon 11 Jan 2021 16:41:07 CET IDATxw|SIҽ[P@e2D*(u"^+xU@EQDALҽیs~ I4Ifױ9=i78s yDDDDDdU"i`BDDDDٜ8+`BDDDD<5yTDceCDDDDZID82A,[eCDDDD&$%I`RcąiYK.,=oKRĥ mGDDDDDM\a˾&>V5ܓk=QԗDXKH$N:\b)/n""""" I^N\ؒԗXYc['"""""ؒPԗԗԗXo DRb.Q7%"""""= 3wqe%&)~7wz5I֒kӖXhRlUf\Kuc4$Y1L7wgDaXKXL7}瘖kZ5- E4saYFݫ7etc%A`CDDDDdkK׳bnϴ Y_\Fb.y0g)1ZiLV^DDfX]n;j1ݰyԗ 1 3۬%/5;go"KTth<^tɉ]-oi$E^3@8`>BDDDD4ӢP@h ^b=IK}m1LT}||VGY&jQQܶ_~9#쮩 C^Nslm6g&*!cƌtVU5HZM r(^,8yO~u/a1x,lV,ǖ4/YmGيo6ʚ ے$ (BVǻ 9{_΂6I1{ǖekO,OOX6"""""rgrJlԜƵK.8ŞEQ3|{KuFEpvϋ p.?'Oi1Nk;S$x{{G˯X164+liU/[&G v{_Je2o*ݛH$"""")"iTT6|؍v@mߴ'0Wnavr-YzY5,(Ͽ7$I$ *e j*V >~#"""rOi1N驂:µvTX7\``uާҒVC{PBto$F1FFIqү@& WhW]nno("""r.bӳ avE]¢7ۥ؝9׋b\+/~n9IZU]zBDhD?er'oPDDD<]8MN74?MPd|[SMksY&MjD%@%(&jKԢ &.W ALHDDD<]8ӾwŖyϿh-K!I"BmYB?a[PQ^o7m~n-_\,])4$7kcreY9ЮBCg[lm+"fa\}2[0hԴtwJw"&:19XS׮af Ϸ8k]s]@6+9rERao6훺{R{|"임^LJ~K>m>_u\/@˖ եSG }#O-"q䉸㏟<|La@KϽO I"yqڞ!bֽ55ǰEll:v#Gdg_|Fo{K٭+DQW|={4{jQRռY7CWbђe=c:nEPzO/rs.BVcu6i9{b2k7|c'O= o|zEXd  +WƬ`{Hs3O!m\sn@|8շ0vvKDW=8 ~~(++Ǔ>ckPXTw_j|_]GfooRkP]]c 2 _k`x]֮jl^S""r=qQS}mx(JC={qÎoW `{ؗ80t\eE; ж-_\<Ao)h-?ߠDޯcFn.A2:Φ^ûm9yVϑ$ yhٲݱWRzL7Zh:ёc8Dl. hЧWOM8OH\PV^,q(**Av:O9>z@RaO?@|mO=>UUU8|>wށnE6 JB6m٢^E Fď~s?BJZM9UUUؾwL2 !!=w݁?xwbڬ9F۹6:֮L_S""r-EV1f +,*jvQENNn}xYdegL;EqV۴Y%FVZ)ƒEo6eM+iaev-Fw6u+>L1h "5Ij{52a!!V_ϿBDlcFb ,Şp%5Jmo@\X$u',D^=1нvGRN8}^ƍܫyЈ"{b18f$?[w^ ڴu0'3'(b Hښ5HSF&VY6^DD"Ñ+iWءCSZDDֲe^>FeK#6&F/'W%fLt4> $.R;ӔۙQ@'yW2QQX޿-Q7IMz\ 0?)c3W̹Z-" ~;Nxyy˨<p{h^ x8{vه[n];ay>h>{}{$QQؽw?ܼ|ti$ Qct%/iTJHQ!Ծk?X2 7탾}zg#:2tyeuKtbk`m]?DD]Cw7_k a5o.~Wߛ2[ؘhw I/aqdMYm`FRx{_B %P::[c׋ИeSvݎ4kػ@+WvPs_NAYy9~~ t ]t¤0CaQk\޽q)$޷W|8|$w\hs=5(}ҟw"ulk2 au02~8r[w} ]#c#""']tv8x ^| mp%5 _YA&a¸M3<2_{_xyBNn._.&:B!i8Mۓs;/33sX\IM^{yO[QPRMtz%a!ĶiG?+**}(,*BMg.$>-[F ",[{Ա7@;lkA/qr KJUkݓ,!Ͼ__FIIc+W}?OEn^sr `\.c 8yls q)%ŮAPp A$؈n ſ~8a<\ ? ?1WWx EEo[^hH0>Y qF\ QԸPI "DQDEY nHn 1׭*s L&L&3Zѫ1"9c;u耷_yqS =;olxDDDBm 2} W( v^Z RO̟Ѧu>xg͉iCoL2[x_DXpPGǩkWZcoڙĶn yW!j4\QFVuCbyNPnM @]X @cu֌R\=/t]-e%()|b7:&X"""rgk{HhtC^2,[.7|ѲF6$ '.EuuUzX Gi뜖;Ւ^wQ#/'IE Kۤ2$+%.qw%"""$IV瞇$9nvEcʑDJ]v=+=ӒzY$-p6DDD4uH$xŧN_qS$۹EO 5IJV܍zZ*d LDDDI"8lg6{Z-{7_$6"""&i"plg6n.ل5;FDDD͏;= ccα3ihDQI&"""SE.lg6W(`B12ܣ޳!!ubŮvlt5L[rpY," !͆"2 ""v8'_jM׎2 2 ? \.wJD%LChD H~w;\5c$۹tN 2 ~L2E IT $JEDDD.)"86.KZtw: /HZ~dL\&̀""""vtld;\{C 2kik<2}7"HDDD .bl%uQsPm#I0ua;I:& LZ<CX} О''Y#Iǵm%0i >`Ij?µAą> FHh o}N#\L\< 7gnH~CWҢ"A LE5BIq!.0 EpxO¤XJX8$";# r9""">dr? ѭEdg"& di&1dlc9 J" BBBLX%ˑб3  BDbȼ'aLWM$ EE%"""r#7tDiQ4*~d Um LZ<@ ˀj簰HK.WET JK ku፷= 7gR勵?EIDyi)B"\"5c6G GEYٵ!bF(#ƉnG.k,& P*k2wn؛N7P>~PTR/Ax:"澘1ﵹ,#2%@%H j4qh9QZ\,T;o2Ah0K\r94 $(@ @wCJ{MQ1i0$" DCDDD͇.aLKAiqb"c8 45j5Jz!hզ;$@͊ HأQ9vҘE7s $QW"""%,%E(-.@.=!I"@Y AAHgO"0(!aO5"ɐI])Lr@ IDAT-aaI3G @MT=ϬC$d!U[*$E5A@L\7b͚5rrdDDDl/\@BB|]`<&aEEE{f._sbNs\b5= K~ ~~+f\qx'rϜB@v퐐РMpl<}tPg:uCGRR-Z.P߾}g5\w.""r1ۦ~N:/ 5Jh nҎ"$44gΜAV\{ o>WA8q"z7ĥKn:Hf8Æm܅ sgѧWFO&- ݻwGV0c 6۷; *!!!)|MW$ucK|f-&'~gϝÔpc^.q%yծi~ر[SS*?>:t$&&bMٳgh"L2 "~m$&&",, ƍÕ+WWưaO `;x7~zxyy>{񈌌Ĝ9sP^^^^L>]{MM "##UTT/_ܟ~ ]tApp0 /۶m틀o .4^W}5bH/V5k?|]{x!kGbB͊RDEE&"Ѿ}{lܸgΜ̏?Qem޼ӦM+ذa6l؀cǎ~;Jyaƌطo,X_|w}7T*/_;w.q?~/_?_ &`׮] R͛7ٳ7pl*733ׯɓ'n (**ɓ1{lddd`ӦMeODD|RY*|+~غ'OSRYcWyD:LZY裏hݻ#)) Xp!ڶmÇF JCrrrpY7555Xd >t XjJKK?~{)RX/2"##_6msQPXXsT _عs'ƎkssAnЮ]; o Rc",, III۷k7|""r?_Ny7tT*l9-ԬuaGnn~+oooL2? -[`ܸqRЧO}Yׯ.N,???x"DQwܡӯJBiiicCBB0x`ڵ ]tm۰yf;v [nżysN,YĮru|||p-1c ]bܸqx衇0tP]WΝU>51;;9~"c?NJɄ=-t](//G~^z 6mB=>}dӦMah4PF׷qk͇ %%(++3{nXzz:DQ 7܀I&a֭GJJ nV5&rر[lLI&9[>5-{pv>^N>fθ!aF0iѣGQPPŋk׮ 2EEE8q;#GڷoA@ѣ֭ݱT*xa˖-6;a1n8qplٲC"I>]vm/~l޼.{'""{@mBLZ|ڵkqIcr9N'xcƌ ((gc=#G 77O="##1bhݺ5كTTTT ,… ch4ѣfϏGll,}?v؀ꫯbر`sK.űcpU70(JY&,!͐dvYE|B"dr 2p,Af~C긞p䧺` 6Kw1jr0K\\222npH)Ď/KK0"-#actxDDDD|O 11[lAMMVرcaq6&-dÇc 皒0""""r 9{ZHO&C#\ݶ(j ]&-DDDDr4 4rFDDDt߳D‚|sQQXhŤ d2CΟFIQ!4bh4()*sT#""""V @NF*2R/CQ;~\$tLXHI  T dd 1i!""""-E&A&OVŠaaB:LZHϰ0apVOi D""""2a4g%LT&-DDDDdr\򘈈"""""rkLZȭqNK3f"uC """r;9iÈȭ1i!"""""Ƥ"""""rkLZȭ1i!"""""Ƥ"""""rkLZȭ1i!"""""Ƥ"""""rk W@DDDD$IrI ~ 1i!"""rD0apVKDQ4ݙɋaL`HI IIPZ\,TC5.A&sL Eph&.ŤES^~GC(?{P!m.Co<]ĵEBpmQqAwSѨ().BFeUvj e^>R~ 2{By kQwNBw'GllÆ 1cΜ9xWpy )) 3f /h%,%E(-.@.=!I"@Y84mNUe6" BbH>{A! }]DW:YYLXTV!k:eJeFZ;CœO>ߗ ?DHH`ĉݻ$"$IBtPUPՐD oWMVV,. @I LUX>CSQr4H}9N5ʼ|Fh˗cϞ=شi`8p 1o&F$ (~.mSr IPUYQ*6r &-dpl(>tae߅\RѡC#11W6:o߾Xz5 `l߾жm[xꩧ}v|wX|ys?3i0{l-Z)S48~""~&j4Ў~`s8h4fWUJUX3GMfˮ@_Р󽽽Ѿ}{lܸgΜ?~9Hؼy3M֠؉ .fpj{dқl}qyǑ,\m۶Çy{BرcT*1dȐz=z4T*:ٳg1nܸMDDDDaBJ]CYRzR_n@3l2}:t(rssQYi<7`ȑxGzQLy{{cʔ)[lq㌒ """{yr,kNt=bB)N/ݣS^^~!33/6mڄ=z|>Yfa|2>z>}>iٴiøz8 cBEK?j*aT*}Үs=,^]vEPP븯^O믿,] .DziȐ!(**‰'p19ҮxMROWbix4|b%T*"r(&-dmvzW7n+QAII >caڵ8y 3wߓcY֭[g{wmsDDDV5];/ۙPpu䞊8hBQDCHYUi h9~/X ,#uۮ];Iׯ'I l|-*O2XrOp1xy{^0hksDְ*?{1>ѸMh9f CsZ|k*YƎEߘѶyycؽw*PRRw㱹I Ua^^Eh vC}oápx@glpUi&""jv8fb3вe lfa.eeel۲ ?GaQ>|5px.+zL Z jrr_x؅9ysos2;%""| IGzO<(@VA ;r8`诽'cܔeNssfWt}cBDDDjjjzzl߹ 9$d2DGEaqߴeLhFf)ST;YW ht\ſlJ԰<æjk0嚵', "0QSla7xgR)ӯF "<͞z${ZȬSw AS^UA!Niu*okK@u]϶eZ;wn8b#n՗>v ,, #g-"oׅ Y!{VǞvha5_~O<P;v N¬Y"ȪUQF$Iݻq ԩS-[cǎ gŘ6m7MXNnffX/[mv"j4Ǜ\@FFS&2Ğ2+b^C5ܬ,( =zsɕNjB.]ٳ3g̙;;f`ȑhӦӧOo߾ D``  }Yիudee!""ގf̕٣ѽ7FadQ@wtJ}2ooy[PPFĉ8s挾hkӒ;v 33~~~߿?[#G̙3Fʾ+mDuu5v؁/QQQ/.. utktM^^^ZOjj*jjjЩ%qM77BvvZ}W\ HLL4z]krHcBVy!p9vh>bmէ6t }Ŋ+0rHdgg"##=69),,D֭ͅB0j~/裏?駟bܸqӧ ѪU+mڴA-+wwgZ:֮9++ ;wƹsp!bxӽ{wdeeaƍBF_CV$|!~ԩ_~۷oG.]ʞ"rA IA@Dd42RPK((,Gvs__0yl 6Uӻ^4%4OCZ;JQ!$Qz90Doa9LK3)B׺ t}0~.ޒ%K0qDo߸~DDI "j52 '# ѱԡQ$A$d]FOj%LCLxƵBL&kpr^'$B&A LD&G%Ouc5&lF(1{Zqh9~4ZPȅ.,@DD LV @NF*2R/CQ[?At_j4"cq!mH.W (8  4Ej^QM'""^ '.8 J@R}ΈAS&A&A.C&.Ĥ""0qdEѩɂ%-d LZ ' { i1wg` 0i!"""r uYt+~WII quBDDDDD֘[cBDDDDDnI 5&-DDDDD֘[cBDDDDDnI 5&-DDDDD֘[S:rTW@DDDD$4]LsuFDDDDDnI 5&-DDDDD֘[cBDDDDDnI 5&-DDDDD֘[cBDDDDDnI 5&-DDDDD֘[S:""""2&IK@dI % ] L^ =fC:LZ\L$HBdqI 2fdret,C0q!-&-(-)Pb;oJҤ}J[*"e+(*` Ȧ8*C bAG8Pdd,-6tK(i6I&>yWsynd>9=W#?v[BQ1oKr~CY;!k(J^Qq3`GǮ#X,(-)FnY"&6bB-Td6byèvTuA&* coEJ֮]+V ++ ň]w݅sBף{0a̙(h4nu Kie%t $\cCjgw* :7G!($.&.2&-hǿħy{PDҔ*a<3;J?$!55G^zAV̙3عs'Z-{E>}͛7Oի[QKI‚|R㕛%vEWH,2 ;tBaA>Cr^IM%% KϵJe9cTreٲeÇo}?>>Æ >o޼VCDDn$AETVVFU9vC$!@EU(B&1q9-3zhY[G~DŽqby7kKXIJJ X`͛4aƌٌYfSNĴi`4fΜ.]@ 11VjUDDt]-L^K>F2 UÙrOMn3}{Mk}.E߾}]:n(//oTSO!??l#</Ju]oiii4iDc'""UW uauy/LRgZYIs!8o*_Y|lnn.@#;wuY&aԩNUVV? "##ѡCXnO<ݻ#!!/~&""""qa5pXO sF||ROFDD`Μ9xg_ԩSEwneee6Xz5vލ"\p.LDDTl7g앇NҵI 5lħy{<6ާ{0]_tqN8lذjjkgۇFF# /2bcc1rH'""j7|<èIsƭQ# X.{ĉYSc}ݩS'zlذnۃ`0`y]MM ,<{ǥbjpTxDi>|8{YYYڵkczu;v@vv6***ٳg^֭[!~wYϿL`@QNGlqmV2#bBMqGgYT ftʥcr9֭[ b:t(ŋ㥗^om'bРA޽;RSS1gfϞٳg#R vV(.'X.˰`&T*ܻ7M~1NAgZȮ۴SaM1, 54+{NvfNMDDD0vLL3ZIY_._p.߬r{D;u^r`ţzt˕P6e6Ycg_ yk("y\9<-){b4d:` BC1чa45;&]kxy^mUၟ⹄Hfт}%gmvowv]b&""Vl۷;LZZ}Ht%J~7Ӧ"<4 z-%4D 1i!L L?8Em޼FS/_o}ix+;v @^BBBC"**5@r~8[\Ej5P($ 4jo,/u:n"[LZȮ[CQP)=:nB!]<:$%%; 0 8z(/_1cƠ{wIDDԔ3j$rbBv(T i{tܻ#{@PytLwQ(hZ"((q^={NuԷ| j[aͶJ SmA@U-(#.yLM SP p ĸq۷Ƹq0}t( \Mmqq1n<С֬YSo3g~GJ%`0)==ӦMQ\\-[!"EUƲR6 I 5kj-9(bou[{AJJ 1cd2ɓv{Ftt4Z- hM0Gh߾}QYY0&ɄLzj m݆'/iIDDW>WҖB<PXxÃv1v TX\\ Qm}ORC(**{Lpp0T*fp7]vuSpp0$Iš5&"L&>Y͒,cBiލƌcɽKWaq Sگb(E^ͯBR?.\Tw)Sӹ ""$ɼ"":d2HLv -r~,".)o$KĮm6fSSuޕwNRO$ $B%HQ}$ 0Q))/=ȫ.FW#?ڣ_pQC\|"""""iLZȧ1i!"""""Ƥ|"""""iLZȧ1i!"""""Ƥ|"""""iJo@{C """"jLZ;y;""""S XFDDDDD>I 4&-DDDDDӘOcBDDDDD>I 4&-DDDDDӘOcBDDDDD>I 4&-DDDDDӘOSz;""""O$+ɼ:m DD6aTP(XwO&/cֽfCuy$I$ e%PX (x%{w huzDF`p&.TI T]#`> 59!XYk_lOR S1oKr~CY;!k(J^Qq3`GǮ#X,(-)FnY"&6bB-$|ڽ~B全m?*!dj-!r{Lk׮Ŋ+b⮻ܹsѽ{wL0sTWWCEh4kǏGv;<~RR{1L>Æ >o޼VCDDn$AETVVFU9vC$!@EU(B&1q9-KqŖ̏(a;ު~x k{,Xy!-- ~~~1cF͘9s&tFDZQM6[n İapԩ]lW lL`wU5pE= 9n[0ҢQR\\\ץfϞrT*:|7h4HKKäIЯ_?$&&Z!-- :/ӧO׻oȞ,o+ |!?`B8BjP~gnC? br\NǪdsεN#d2L:-q>޽; / ..fڴi馛ߐdXv['"""V1ifo֒Oq\] ̙`ĉn|Aqp*++lV1x`/n.g_KaYbBK Pyƫ~3::qqqذa=Z And`41`_ƺuгgOǩj@DDW7-on Qu5n b./wʼn'\>Ʃv`q7B] I~x.EDD䬚,Yy K?r7+K2QS[sɓ'cׯ{=dee!;;k׮Ŏ;ױcGر٨UUU0 (bҥ(,,_|#G4sѢEŋ1k,1cƸ!5e%T}">[>YZ7ZLZȮ=:RG2Ut;Xn.\cС߿?/^^z o&NA{HMM 6FW^Abb"֭[;SQvƌD:u ?\nmU[UK]ۜj@}㝐,&~@meƹ|ԩS])~u꽷z&@={6fϞِ^|P]O\(,aLTwoL0bδ]59QvD{dzu _ EDBqw]#7jd…BL8܅ʪ*"cv%TSypDDcC0^a6,#2m7Q1y_OG9 KǞ[ֱ+K]0H2O>b[Zv '  &HMsfbk"""+dªiؒ .\(jinqy^l$鬯܍ad?aϵߞ=PvD.]|QY5A- JBٔڄg=} rxz0mV//`E(,,ŋXp`Ԉ6ϗ2δ]xƢf۔5[i$"n}_,o^n-JJyت/pgU> |K}Z4 ǎd2 ** CETTT'"kC N/pܷ$(j0՗P(HfS5DAhXve]FCA2=:Lg֖w$qG1ftUwm IQ]U٦c<쒩H~ ZqAPZHIIСCjoGDD>Ε{{tzh|#ÙjQSͶȔjF=$I®]paTTT 66FBpp͹s琙BbԨQP[>v 7ĉv;cqIaL ##Ǐb_#F@Rs!""ByCP8VTU8aD™j<0 ڻxڻEx۾};~g7ӧOBʕ+!O?:`͚59s)))MwDT"** a00m4L>زe>""ZTUa,+ujs]P)*6Gu X,سgRRR3& 'Oݻ7j1x`Fk=z@ ^J1L&dff[oVE`` n68xIK""yaXFS!dW(ze2DX,BdJ=("::JBPTd3PT0-ߔrtaL$ k֬E&,LDtMfI1i!p>-.-־a};ݻ,b(E^ͯBR?.\2e t+s1""rL˨?'by9Es#_ɄnSu c?17"~hh(d2EQD~~>"##23݋$$$8)((jNX|DD Qz9/ btcBN:s3t)/BljV2#taEaa!rrrZF޽i&h4bjܹsl 0ͨF^^ӱo>=2aL غu+Ξ= QQZZ6|FCu~Wy= аj<\"S;!an>~TܱjQϻmcǎСCCrr2vj7rHlٲiii;wƄ l8p """阆 RtB"99}0DDtud$ 2 a퐗5ZNYE\2!SH]ח5xmm6ͦwk۟++)\7If+IDI(JD "I0aB2a:LC~TYi_loo Sk'/$ (b ? rs.#tA-$ $bsq%zll[ XVy9h߱;ATB.8iiNtJH\!L.\.\GI"#h`Pk fm6{h3-:2I4ۡ]d2r9tB@> Ax,/KADTh뱱m)JеC[ՅI ]ͪE ($̚D4h8lJ@Fy"rr 2 1i!"""&E.CE& .iKVlgl/=9b;^=k&,TI PoI 4&-DDDDDӘOcBDDDDD>I 4&-DDDDDӘOSz;r߳Q`r!o@n0"""""iLZȧ1i!"""""Ƥ|"""""iLZȧ1i!"""""Ƥ|"""""iLZȧ1i!"""""Ƥ|Q}$ye\Lmc Ť% DAz{2y5ä$I$I(+‚|TE+1޻{@.W@#]4C0qZLZU&~_+p<߄K5(&(@~Fr-覅Vۨl% y9Ā5 g/DQ(8zG0ģc,#7,B 1i*,` @*͢6Qj|';wkbŊBqq1bccq]waܹ?~<;8q۷wܹsq ^ X`[?~:t(^uZۍ?ǏǑ#Gz!۷oǭj=/lvСKXJ (+1k^$`xP;SUidHN?>A!w1q1i!->0`bT'+M4tw >XiCCaP)[$IHMMő#GꫯW^P8s v VkmkX0szɉ=fÆ Cee%^{5\8v옵;w"&&>++ 6mBJJJ|Mc<)=y$I(,G8X,5^ ^j7Q{$"Z оC'#08 1i!]0|=S٪~*L"ހ'+hDreٲeÇo}?>>Æ g}-[`M$$$;Drr2^x|QQQx7%-+v؁Fcj蜉 IDQDee:h4^]˛c7$I4ZTU!"d2ko0 *0a?[3[衇p)ܹ^'t*6""خ& j%|#TުjtaB]0<׸gw-IpI{Z""d-x?R5"I 9`$L$9',uk0uE>rt:{sεN#d2L:qK,;#_Ѿl@dd1u:BCCqzϘ1{#GL4 !!!vYd t:]믿v⬉-LZYm5$)U ._ӧ͙3%%%())ĉ׵kWs=?D)}{3 ĘMq&916զa<6e2|1Rٵ fB }=k&R>32}FFܺ٥Ƥ d2jud  _racbfYX&HXFv}0vhDtǵPtqǙ'm tbl"" eSj_8Bvu å 6on*Āp Zr \cT->JJyت/pgU> |KRD5j i!hRK,x|e{qW_}cǎ BCCѷo_r{_!/_o}v(ncX IZ$6UKr~8[\Ej5P($иbXڂ&-dװЪ0yv%/Jۮ׺|\RR̙3HOOl-QRKر.]PhmKH6ڔF%}77dq[7Z, ѫW/ :{mچ+~{VFT3-Ԥg <6ۢRnSNa6R 222pqX,\1bTڛ/_ȑ#øqйsg>}۶mCaa!z=uaÆ$I®]paTTT 66FBppn'N@aa!BCC1j(Blݺ'ODyy9q-gϞc݋LFtر^lMstNo6Ǝ@~~>㥗^rxλwΝ;?3틻ᄏ.-_> SmA@U-(#&-Ԥpӆ oPt uϽ֤$==6mAue˖z͛7oƈ#0b _~%Fݻ55,0}v:u ƍJ_\O>3g %%f<{oRSScǎaAxxx̱wFVVƌNlh49'G:dL&$*0jS0k7ƷqxƫJE?4hڇoeff[oVE`` n68Qn zBTTP^^AеkW 22111jo(߳gRRR3& 'O:Z=о}{hZ <FCmH`Ȑ!F^^Sܱ(bΝHIIAtt4qM7AR5srs&"ya8BR*d#(2'EC{b޽d0 $ k֬E&S'*x,^]vE>}eQE* :t@QgCRl6***p1䠲FLNs;&^lusixDD od<|r(T1x<7q çScoźÔJe0et:x衇p9>|iiiGjj*, DQ(ʦ E1裏Э[7z T\P{MCk9daw-D,#tmw3;au+9.Evda.Vqԩ?OgIRXi7Dr(z˗Qp~J1i!jlZuX-C°fFVϰ8CP 99[nٳg!"JKK^۪¡CPVV;w* j{ƦMш͛7CբsctƁPQQ,\h0FF"h4wߡzOlnv3ԱcG:t%%%(--Eff&())a F c2-lz+*qBn 2AX,Cٹoεj9 wo0g 2J(--VErr{;TWW_~֭[a2qYgsF-[ -- sΘ0aSS>|8oߎm۶!!!Q3p@lܸ/^DjjKs=ؼy3VXAЮ];DEEAR59 >ׯǒ%KѻwoJz_K,A\\?;},F&A$d2EC^oh!;eQqPNX"vm__&6埪˯m06pujtF$Q "DADٓ3`7DIĶ_*J˫V G0?tǠ.~"&""#IDQbA~9]tGI 4&-DDDDDӘrג IDATOcBDDDDD>I 4&-DDDDDӘOcBDDDDD>I 4&-DDDDDӔ$+d2o-&-DDDD>.QM<<% (ݓɋuP&-DDDD^&I$IBY%h( ^A.rZ bB#V@( ѸbIH5yrL/rDu5^ȷ% y9Ā5 g/DQ(8zG0ģc,#7,B F|j!Ry:q;̿φkU YHHbU`)gmɟbpk,Ǐdz>kw^GFFFai&t:ܹpyL>@\\&NK.A,Z^G.]6L&kvm-<d2A&̙3~& ]t}݇G:w[o*>""OKXJ (+1k^a1豭GǶ5&z$_~FtmcB̨էR`U+Vr) էFťdn8[?~<>S 2& wy'L&6n܈s?`Y۶m󑕕oxf͚&xQRRRo۸q5ɓtϤ+V@DD_:<{E>}4>" I .&K , $Q$(WM`X`XоC'3a!,#HB 93!Vl]Gb%,B4*Ȕ M~77رc&1OơC<]eH~1~xkӧO?lذƍ;ZFPPP͕3z wuƽދ4־馛p-`uݻ~ٌzbҥKqY 0<ڲ O>UpQ/ADDا~&L]qaƍ,o<`}Ŋ?/8p ̞=/}9s栠+, x ,[ }ELL Ə_/)x#Gh45j***~ŋq!=z̓O>A!&&?$eee+ 22:t믿uM?,_={D\\-Zќh5yn 9555ػw/ǏGJJø0if~֒QsqYt!C0o<~^ٳg#''k֬Ann.(qc=E5{3<Q|qqqj0P^^o~=z46lظq#@r 4gN(x<(++={ Ի9ڵk֐Jرc%e6l@JJ 4ø~n]nnn_8}Q^uǪU>}:fVZEJJ o&pw~k]cnZTD|[:5ߟ3g#j*BBBHNNfܸqxzz6Z͍oE1f̘kݻ7#G_n ݻ[oI@@zŋd7n:HHH`…|DŽ+4y^l&==O>?M68L1{lyN+P3RTnh>k?^UZro-{aBt2"첔lr~ Xr,$(G~(gLuq8*Tb)m7oulپ};1n8N>́k`6l|j=vѢE 4ѣGo>oNTT7nd;v:볲ao")S}ь3ݻl2pq$%%M 0a/&22{ P(QZ/駟GLJnTk}+V`ܸqL>:hj?@|A, GeȐ!\ly| 9BtVNmR6ozyHEWzm7ٜͦK.>(/{ʜթ3UUQTfYDEA(dN'6~L_7_4yǠTDN~5#n?IźxEº99)N~qe^4ĉDGGSXXXg%.. ^ !Q{cI±?g@>6f;),U`\Iy*E})(,dko?%g:%:sQcGjZ]BӢjj5h5֥w5ex=i@P]|lXZbXFZ]1E/~1&_ũm8ԏBewiiۢe֯_\L!oǴ G駶`r2H޵J.^ȶdz ym7q풠EU}_ҊgB t&4șW  t% #`͚5; !DZBu ̻.v ks'.a+^{R~7z׳u9żJImF& TA6J[nm[ڬ.QשS8trKGwE!D=jkU ᅬG.lkkI_`ɓOQs%O=Yٲmk쮤Q\$hms*o\jV}EFF6zߔsoB\Ukغm{wiZqӄ{h_LmMaFG\hqowgnǠ G!5-&Eďn(p'륕 l~zX3 Ǝv,~|K5k/M4;N]n|~MO m~ـȦ8u^,uiii 0aÆ'ͿB-zlH`>cyB ZDbі/FMMML׸088;v,***(++3R#BLɒ0HpHKhouɿUZ-swy'NNNYիW5#-4jJUU.%%%;9sЭ[VBRj IH"I5hqmW\{ֵeΌ3)))FCVV2Jn&quu~!(Jcu0bib'Ah6 o~8_FE.8u}^zVee%iiiP]]͙3gpqqWWWbbbͥ;wZzzzb49p=zܬK!h+iuvCcy9si-q9Q|ga>ye8uSO?DRR&j~NJbb"~):!Ċ馛HNNfDDDл!͡hPUF`7r2pУwʊp={YS$Ef璘vl: prЊ򲗯)\߁]4/CUUUAQTTEA(dN'6~LGt ,PTZj)@Bֽ?Zpt^c@1B!:!UUQٌ! 9Yt 鎧OF Y jmY,J.EpVmurp.zFDihh_ %8j" =/=7Me(R﹌ˤ@3 ϤBhj]O~N&9Xև/K-n!Inm!\V".!Bt Q_[WmE`_{Qբjth4 \-B!6pj(ҮBgS+E!َ2^Hm{_glK"jI"B ^Ke~G):? ZB!:pOB!Btj!B!:5 ZB!-B!BNM!B!D&AB!SE!BѩI"B!$hB!Btj!B!:5h̎B!W-W=; B!N~nVGwAIB!Btj!B!:5 ZB!-B!BNM!B!D&AB!SE!BѩI"B!$hB!Btj!B!:5 ZB!-B!BNͩ; B!RUCh4ھm%AB!D'P( < yݞm%$hB!`*%So EtHڎ={zѵ[]| \D Ze)3)l?^Ξh0s5k̀WF3~LB!l Y\("8,~2MQEH^bǴk۵,f3/y?B{$pV*,5"(J{LQ2 |".Znxݯܹs9|?jiiiƒرc/=ш(xxxɄNwޗ'!M"J.wTUUvR3SYQnmסExO/||.%˵L-ReVsWhbOEG{.e-2]ѣGo /Y;?ڴN!.UU)7-4ٌ*)Jٌl&8']@tf;_noҖ"MV+7);^Ϧ&} }ATT+WS.118z=,Y_|Yggg?5y/QQQ2}tΜ9cl6?p|\\/#Fӓ!C{܄Bt'l X,k-¡潗Knquם[\=r2G\z==Xі\֭[g ,jɺu8v{/#==bfΜa̚5 ŋTWWksϱvZ֮]Kjj*xTUUdٰa:}rT`˖->}xfϞ]}!mJߠ`&H"0[T@VQ,ry}eqÇXl׷?0DDDdٿMrsbڴiM\\\L&-[ƛoɠA࣏> ȫoMLL ,_k}O?M~~>'OL!@ѤW4%1)g*yiKeѥK~a">Cx +SPP@EEyߟq1p@Ν˶mۚlTWW3l0>^O||%Nk_NZ$AhTaۭ_c=_c=ƬY ipLYY3ϰ~zbbbt:ظq#̚53f4ڦhb`6Mqsuu Ʉb.#򍑥X-=LaKѨ^*a-UmQy}˪#00駟SO=&%%".]p |ٳ 6k_ "##h4uX,0h rT^!hJuu5.̞íwwޭW Z]&/RJڴξ\ybR1RK.;Pzgؾ};}~pp0/^7ޠO?:RQQw}^ݻsN233)//ˋCq x E IDAT dĉxyy… ٿ?gϞ矷稼BkERC>Y"Ν+Ukx[]7!jH"vz󷙁7+ qKm<RSeXt)>,QQQ_Npp bccwaڵTロQF͜9sxW2e 3gdhYbƍcֹ-6Bq huoTyVYUsMkl6'ң˥綏C+^2pu?LU~EUjETBtbǴi,O]lq9w-/&F{\ߟ#}p)OoFvABP{cI±?g@Rgιºv ՟/[ԗBV&SRqvqạCYp_v敶GNCն˼v3" NFEՠZF[;|°e<4 h Xl6fk,Ts1t%OBvhh :ng/ũRs)T[T%:^!x B!u&Oვ7uʔviye2%j Ҽ5Êޤߍ{z1^d޽JdqKNEFI"*56nx/wO å/g, ^3b7w4oem !W#Qja…TU,kA%}9z%O>{`lٶ-MlWRb(mVYR¡l#o%з+U o(fER鉞tk".TؿOB!Zd2rnA~AʥZnAA4FsW/U&T\& j*֗_{9fz,YE|BnFB!Uj&='>S yyր@Q yy|='L+zal98{-`Iܻivuw|㑑K"{Tu{Un*<=]Q!*ђxj'֤=`iطe(+k6N$J[50eC)?]pJ[T׀-B\knc%'_~w dGr2 78Q!a>ݧeݣ=xiKϮ;˞,Ӎ.:^_زe G޽Vjj*Ga޼y[t}L<@rr2iii̞=,vJ߾}[ҥK3g={l~ !Dfkw\/łރ> :bX2Q, 36J[~8!@ш ]UQXʘ,9#|sEzhOߪ> HIIaҤI i\DwIvv6 ,͍5k0~VQ\\h$X- l簴屭 ʖ{/DKIzEmy7;^϶,rs-nw0o-TU|ƎKZZu'WI&ѣGG'899O2tVa0EV !WKz R&D-iz|?_8m9el\4<<ޯUeX,94;fpX,i'))\9r$qqq =pǎV'ѣ1$%%q F#AAA̜9?dԩS  ==~< guFzz:&A1m4N:޽{l6ӫW/f̘ݻwĉ'X, :Acpvvfĉ 8z^MVS眞޽{ TWWM7݄FiV;Νc֭dgg1blڴ/_(|@MjV%11E5ٶmyyyx{{%rBт_[NkֱjezEѨ/'K[ڥo𣻟s uN#..[gd璕ԩS1co!,,h`oԨQ|gxyy1o<1 p ڵ+=֭sBBB/^$>>cǒŚ5k}Ç닧'}E`Xذa'O&44bbb())SQ0a!!!X2`z=Օ*Cxx8^^^@l6ש766~뉉`񄅅0`59}9׶=bbbb$::0rss*k׮eʔ)DGG뉈~S8jOQ֭[7̀dСI*Ctt*LFZDt޺7gUT@+:μ\4`00df29paaau?s 6XYͭٳg\(b!00>~o=_~M6i&"6m j.o4" (?b0$77aÆ5Z… h4k}Zsc쌫v2331LׯAu> yyy'G9sFCTTTϥR!DȔ,I-!? wr-n%י%m/`xw4iyyy9ht޽N899չط&_ӱpB=ʡCx>}:Æ 󄆆sii) .222ꫯ8q"Z+_by8ꫭιm۟0n8rrrl'##:"֜+//4z]e0IBvcohH>'!aYvse=vbׅc=n&Y; k׮}AAABAAB TÇ @̈́poo:(j!!!~ B|Se0~6wɈ#:t(]tܹsxzzݬ9k}` _G~' sNeeeuޏd(/:*k]-YeNQ:EtΔfQ,^l@\$h0k?κ&_K9+Zm_Ç{:{INNG#G̭ڠ^'''ΦiMMMܹsfrrr̴6EFFRRRž={0F222uן+~}%%%dggSZZJvv6IIIuwTjRlWSsW[Ms^^FdHOOg̘1YɩS0deeQTTdS.]=Q{aaadgg[?Njj&iuvCcy9M~n!aE\4,>YV!BѩI"B!$hB!Btj!B!:5 ZB!-B!BNM!B!D&AB!SE!BѩI"B!Ԝ:m3; B!B\\%B.!Bt:Y$=L!BѩI"B!$hB!Btj!B!:5 ZB!-B!BNM!B!D&AB!SE!BѩI"B!$hB!Btj!B!:5B!KUiWth}–-B!@m`0WP((Ru{/m>FԒE!\8Oa2!}j;nVCEn!xw$p5$h{8h y.b,`/"BQqqw !KmAɅ"‰Ω}/EAQ%6~L]b6sB19)#G/@!Ah0ÛORm4=ₑ Fr*tݜ҇ CY_ΝիpvvO>,XGyNft& 777N:E޽뼗s=Ƿ~K~~>AAA3_~???u[,q>S/8p:!,(PDCPUjT۽KNeEY]FQa<|.2 ZDX-0{WEefRđSA6AC= /@yy9~->(eee/i L&'Ndذa|Ν;ҥKÎ;8z(ZYBˣ*c6Ww$xUEY1hIa. ZDU\4_y(ꩪe.wsm0ꊏ>>>{ ZRRR8uiii8]J) "66u8q뮻+M!6TUEQ** U:TUCOeEh$p}ZDf.;`Y{+ 3۬ZcƌܹsQUUO} **+W9>118z=,Y{;w8D`` O>u_yy9...>}EQxחӧsqqq\ &֭[0&<<~l61dff}l2>C2dSO=EϞ= duPڀB\ElW S,jNu~h45iVU ZC^mzOK67//`<==qqq!22uq1^͛Gzz:̜9瓓5knvams׮]TUUa뾝;wһwo"""xXv-k׮%55WWWnF/Zݻw3zh,YBbb"6l 55^oGAYt)999uw9[7 TWWs!}Q9pOBEiuT5!@bV(6^6.ۆv4ͤ?Έ?Ltt4,Yp@nn.UUUL6 ___sɓ9<ǏjFd~i8y$۶mcڴiL&-[ƛoɠA࣏>Ͽ{ <F#*o6111|rƞ={Xh˗/'<c=f}W^y?***߿?ƍc̝;m۶Y5cǎ$&&2{lL¦Meԩ>}j f-뉏sw;X,:RbdeegÈ#KS='N@Qn6zE^={6%%%B|uS:>%Nk_NZ$AhTJ>n]s#:=.\_~Gyzs2gaXt:ظq#̚53f8|~MFQz͌3شiΝ###1c`4X,uvuuͭ2LX,̬Yرc={?w9S?@FFPZzFބZX-=LaKѨxYaVV]=յ{)))tRъn>={arssw-w߱yfOٸq#ǏٙH4 v|-RRR4hPe\K899[?[={ˋ7}!W^uu5.̞íwwޥ=H"쪪Hvo跧

={@&Nh߽HHH`…߿g=v߾},Z[ɓ'NJJ gv9ŋYd IIIX,IIIi@!Ds.>k(**ܹ">^w?]N_~-®g(KjSrQQQ,]g}(֯__'Pp_|;vZܚ|-BAAF9s&L<ٺW^aʔ)̜9S\\Lbbю+V0n8OnA.ZA1zhۉr94/ O?4>(>>>p :,'Zy]ۤUm޲UbqUwvl: prЊ򲗯)\O8Sź_QeŢy:1mg;.sTI8ҏiOnuy!ⷠƒcπӅ2sΝ5/WҪdJoQ_ YڛOIŅe} 4Ɯ<~t:Zmn0yp.zFDihh_h~/7l" =/=7M U\ H+yxy?3?6g<|xc_oW.qB!1mNiJ((,dk7\xm<ڥ ABա&W<ޮܛKbm9/;77a\{!V+S7yE׮t{{%=lkoRRZF"qz6#Gr_)a8utDdrxLP=֖ IDATck0 we~{g,sܶBqQ[{ZXx}-%gYm{Xu߲e GޱVjj*Ga޼ymEA>#7TUd={6YYYtڕ}K2gz&BfQ?_Pcs V_EX{AsT, U&#ҋdcaW=pqwnvݜkUY)))v i\ĀwIvv6 ,`w^[Fqq1FB\G0PUcee%bmk-.g7'OlvOlU*;4뼟'WI&ѣGG'899O2tVa0ѤU!hc-}ɐͮwH+u+ QKD& H)*t:FmaX9r$iii;vzjX(((3ҒORR3rH{;V'O>!<<ѣGc4IJJĉF9s&~~5r233پ};0uTHOO~ ""CBBٳnݺdbРAL6 SNw^1Ջ3ffwq , CeРAر,8q"WS}9w^BBB8~8pM7hιsغu+z:FAzz:6m˗( 9PjILLdѢE>lmF^^xyyɨc =VubqۭHH"sgh{?]5w][r`[nt:ؿ5h9{,NNNy.YYY|L:3fpa Fg}/'N 11n]߳n:qk=gΜ!$$o^oE;v,YYYYӽ{wTUe̘1sE֬YáC/))aь7'Na7nر͛7[G}9 Ξ=СC5jgΜ/$<<}:l'//UV1qDn m7 Yŋ[cǎ:222/:u*=zɓlܸ'6WO!: D&{=tt!.o5d~ h4 _2}t'Gח,^P^^Npp0>}Ç닧'}E`Xذa'O&44bbb())SQ0a!!!X2`z=Օ*Cxx8^^^@l6ש766~뉉`񄅅0`59}9׶=bbbb$::0rss*k׮eʔ)DGG뉈~S8jOQ֭[7̀dСI*Ctt*LFZDNZf??2m'ȓ;1s1 R1x`8@XXXoϜ9 Vrssk0l6s~~~aX 䣏>_~[_(//gӦMlڴ HM l{)iFj& *++eذapZv_k99;;객LL&knmÇB^^uQ{gΜAUsE1:2%KD''ApǍ9/ħbAGyrIqqq;L4aÆqyBCCy|W\L8V˿o񍕯?<VS\۶AUU 7n999Mak畗Wg%8:[/h7扆s&k/_xV‡7ݣ[꩝ߵkW뾠 BCCIIIz![UUdS NfBw?jĐ@~jRF2 x{{pm;wdĈ :.]p9<==nVy{`0憇؟~ 777SYYcc2(**j0 닻{ΫʚrWKVBtNEQ:<3YKW? ZDyA_1 ភ^K9+Zm> >ݻwי߳gOrrr8r9rdn:99Q\\Lvv6Uhtq.ϧ3,WRXdв{_4bT$Si4 a!p̬ޓ,%XJ9˱DꡨuZZ1)pHMndkGXa2MSCG(##K*TQV*/ !cg)ݵvJJJVN5vPXABha  ^[Ur T$)QgY4m]Qi2MSIII2 B 6F3)˲4,M0 @'p$Hʖgyϻu -.P]%8sYw]e-.]>ZZZZ%ww9uwK 6:*˻ tjFhjFhjFhjFhjFhj@kmwKatk:Ng` ezޕYfp B @7m[mI?VzY[`7z4O\IZ!͞s:6mj̉jyK3o` W)5=k Bea՝UAaF䮽L,Keim|5]ZvՙӧTQVu5tHIZN gNj˫-oqsgOӪ*{R5铟'ޭ;.?:vu5'?]Ό3l2{r$ϧ+VwK/nOgx<,K>GSSu!}E6qDyz衇$] ,gNժtN*۶$5Gb4~r_6Y%QvN_xr)# !>ov]{5{:ɣoѾtugRRrJԤs+믿W{L?QL ._^m?VCt x/ew ۖ0 cU/B x^wT;tfO޷Ccjuٹs:{OɁf]P8p@ӧOWAAA=c]lۖeY:wA:kWwζmedf\,˒aKiA\NT?zoS}zߖDv񨬬,>z4b 4HK.U}}fʕ+*%%ESN i&͜9Sٚ:ulzͲ, ȑ#׭[3f(++KG?,Iя~{LWVJJկUg׫o***Ҁt}E}3fC͘1C9995kvޭ'xB]v[nEǏo|CcƌQffjժ _:j؜Y> w0]#ͪK15=~jk:u5Z59ٮgΜI&iΜ9zUQQq>_URR;vh*--շO}ŋҢ?JKKOTfmݦfI=zk.WssN:[oUs***+hѢE|Pd\u~ᇵn:ڵkz-=:tFӧ\vܩ>H%I=z֬Y}֒%KTRR Qeiu"u]Ђ,W/;:}ꢕQW[|ޖMOO֭[|r=***wܡ={]W~Z> B?+pY{OA顇ұctA555iʕկ~I&iԨQzTWW^{Mjnn7߬\M8Q3f̈yĨs=S2eOY;SSNU~~~ٶ_#GرcdɒV-G/'jԨQzUTTw}7 30ms%,5ѧn[999zb ]V?5sL;jiieY? ҢշHYYYWiiZZZtW^ҬY]z:]veZ`>p Q}6\ZZ*jN"|'L IjlllzuV8qB555:w\eӺSw,DNDK j8sR}wE'%%E-ҦM4b y>|XVEEΞ=xz[t%%%iƍZvҴh"r-QMMM|i)[h5k,UVV^yM2]eݱ=U%ЂLwۢmINN֐!C#F(''Gk׮F6zh/m>O;wԤIB>Og֭[ꫯ2ZKqδsNe]~kii//}۵o/V5{o./mL((m߾]˗/׆ ta~X7nѣGs9tawVs=W;vFAiܹ:y~ߨRΝӟgeeeiaÆi*++SCCC:hZl}]}~ЮGRPP3g藿?w1Bt3Hj,[̳WV'N_zv#ucL ":_cKy+ժǾ&>ڻM㯼>o|r+33SӧOן'Kyedd_˕|PӧO$XB˖-Ӈ~5k$~~ӟ[nVoԺudN>^zI=T\\_|Q钤Ko&NO}SZvm:g?ӊ+`ѣUpz裏Gѧ?i͝;c:3K^; ߠwobegE"0֝XKcj`8\CO.[-+ݲ-%gDϺS7?oݥg=]i-o׹)7|ڷ0)Az?V ˿˵.eJKٓһ;w)%5UӧM{k!q#?g*))IiшQ2L)4de;%:1Y%'YRKأ7s,cּbDTSv(=گlkSfs˾qybep)yg̪i|Kʮ9~\K'il[oѯ~c )(zcL ":}"YmgfW{,Wnr %Iӯm[KOkWg6usw{n{e$I^o.;_"uٱk$ ЂEi[oi[oE=/~\tm믯=cK+x}:{KD555iM:VS#+04M ׍^wJKKuinmgցF0D1gmW\~X@@&O?-=?SUuu(HeYֳ~|KMM{ؕ3$h:~>~ IMi/@K "7Dg$|ܩ =H=w1sFi<{ݳe{ؿ,]]ッТ; mпg,--(D9"IwF6)}zVsWVVrss5OK pQ[]hiAD#_>-A_K4Ehqׯ}-t]vi޽ZdIgTӠA4|I z$Iv5p@;<5bĈN7ŎXMMVV}n>$PSL=*))Y-ϧ&,ыhiAc]687-)i5yV畤*%''kΝ_ 7Bׄ B7oެGjҥZt m6544SNixIDAT{ p1ܷ=lےPVsL\zhiAD)ix|~kM}V=N/wUbHlֱctj˖-땒zZf/ =͛|nA'o;TFUU S&=x8u4pB »o:5{ͺ:V>Og{ァ}iڴi$ϧV--ǎƍUYY ͞=[3f̸;vо}Zu+o"]}x<ڸq8 ǣ|z߿$Lӟt1W7t$I%%%zw4j(޽[}ŋURR[j*))QSS&MoYt!m۶Mǎȑ#u-(===t-[(??_Ӵi4i$mڴIJIIܹsueW[uuj=h۶m2d߯M2E7x È'NhÆ :z4}t͜9S%%%z7b 'eYz$uiqGꭷRuu飜Zt=ϔ׾>O 1a@W! u۵tIy3oCKNUU$͘1Cn(|JNNs)// /nIr٣?*,,KPUUUmW]u$%K(%%EUUU͕$8p@֭?y 8P_fX"t#GhȐ!eee9sFfҵ^r^Z'Oְad۶ 0@gΜիZTWWZ]w8W_}Uպ딛M67 Xuuj=WUU?ִitUWȑ#zUTTc,Z?Ν}s 1g>}hZz|P6m*p*z饗tM7i:x֮]sWE2iAܗ4|ԋ^Nᘉ»}|uuu(\L:Ut>!˲/k?~uW+77WSCC t9+Tnn5vX!ϧW_}UСC)Sչ*}ӟ֐!CԷo/\&LPVVƏ4577Kƌ"䄂mu/\ƍSVVL"ITXX,M0A---W]zgΜ)S(;;['NTaa*++cc۶^|E}3ĉQF>q5j„ ִiӔx"[\mu$ZZE_:}ꢔg@ǔ{(4u?\kڱc [Bٶ}Raz/P߿4h =s7nf͚>RCCx nc;RG˓(JW\ӧO0m5(---{RRR2555iܸqV3}.8UUU)//ALB|N{7t_kiv1uO)o'8m:tvܩЅlssZg 4U8)Sh7n*++%ٳgeGJ}i5U27oެ3gjڴiׯN8l'#mUpsUUӕoUXX6?}455V\eddC]»@W1䳬na>d-[FN_J]ٻ:ԕ+)9EW}K~ڡl+Ԗ-[Z 1b***w^566j޽zp ΛSNѣ:wvޭE]t y^UTT,ԵiѪ֭[zxtйʴݹNGٳguQmܸ]ŪS[ﹺZGoURR7|SrK\LUyyjkkCԯ_Vۜ*PG ]ؿvaEff< iuPÖAm~nt= IJNѵTS]mVnZKe%|5QM5{m*{);ǫt? cZf ,P*>1eRһV\ j]1lۖeYz8cUhtq.ϧ3,WRXdв{_4bT$Si4 a!p̬ޓ,%XJ9˱DꡨuZZ1]t b3 Ci`eddXE*JycI?|]ۻldQc'_. 8PyU%w@ Np5J/u>)4$0. hct9i,KÂCK0X Zt@@✭ ΋liq+\'  U3uWU&܏2}'tt Q=G#iig#0+=K 0$f2d RӣZz˶%[ JJJފߠR@ y!m]r.HIMS͵p&ORf T忮rL/ w#vOXTӧkbtIefgK[ \HXz BK`8;`Ϸofeщcty:QSG`H9]=izBKO`ʐ~*@7U]|t@} a&0M+V3 =G 3[1v<ߴ#EvOG%Pװ+ð[J%ww6/ؔa۲_3N0xw %'%mz[بs g9uJN`"5?pv63^'˶d[ljlhйjjb ̤$+3+[ Ӕit"f!s >#0%iaeH-۰eȔmJe)#3KYm/-}8@ODR_2$Ӕa) 2LZ\` ϴGhq`Hsaɐ)Ӕ,˒.m1[30&&Z '9bP?2 ۿ-xlt ?;\rΚ)[lGp1dʒF‹B(0Xpo0dƥ2VLӔ58֖D.baԔ1L.m˴7z(a-FE'׊!4DLHi +·_cS͘ Ӓ$ɰ+KXpr 'hu?] 3a$KO@h!7YA-bot3 G(9\uL0g؁_.aaDsZzg F;g wI ?0լ=: =Lz >qwGChq)Z71IY_P9N&&OZ@O(p=IrIzœ^ ^/*z+m!p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B W#p5B Wž.b p<Й cZZGB -+ОbGYok_ǛrV^'Z t\ޖhݿ"u{;źX.֔vmzH]>qm,z^ǵ_<bu "zhBQuFH[hizx;"$H)ʖd9."ޛKFJQ%'ep&K<9!!uXٲSV;YuRX%NOKՇr,gO:UHIgc|ŸGbI:{QZH:ց%ZpQq3nDXLǒxL'cJjjjqUew233'ZIP_577Hj ,^ǣW.^E&t{OWg\;inn>V([ZFmH-3$>ݹsב}vAajjx*zrÆ ;$5|Jl]qv *N -KܷO~X5|X'==#06{4[uĉ]ϯyoZ}}`/gH ,Z_Ϙxƶ81.dI}%GRj`[\RG ohkWtR\X$FƒAF7 G9O|08Gj~ Hۚ8%D &JڪcH` ,Ej.+|Sf`x[[DOh b8h`a" /N7%<1|@tBK2"h-/F_ohqmR֖` ExM"H-- >%֖hMa҅a%֗BKq-ᯇ?ZףqKx+ H%VkKi,K<7UVlm.lqU,x[`VbD @lfj%VKTi+HD -Lb2 *mNy+m | .iMzVX!\o%Z0I4$M, HEj _ժB+ 5mm V7HD:zDԑBg kmEx _qzV`iD@}ZP:V0@j7D{c IDATxyxSU?w&]hKwJZP@E8 8(: T}mYK龷ٷHm$mh y'4s>'sEbHtpJ-=:`: ԩtۿ^ (` i;3ބ ZխqHDLQ^8UP)HN""#a ]$bO*ʊsJLmRnWsB""""" TCҞ-8L%ΑB""""""" y"bRHDDDDDy`"yՊUWl2vjR/C"0닽>U e-=i!Q,>!ԶktXeg|^J"Hu LNK3;mo/1Frvx1닽>5 VHG3(Rz֙,(n9]_S&DDDDDn3 nk[@یbOAWy&DDDDDn` ,L ܠ5ϳ01$""""rkr&>u)TɆ٠nDLpEx]5L ܠ57DY~CZ-S]'%%.M {H",R3W;"(~";""".ƬSfJGyuc/*c}-!^LI@i9J[ua`Aet2R\H;1FC窶P`r,H \*uk7|[ Sݮ CVCaJd~OH0wřkf [TX5ݜyh0,4Kx|K6pl8V/k>9zSc"r|1}P z-Ay ?o5/sk n8tAUV٭{ɭݰH=~;TG8'ŻY+aѢIS_ìk@&]W6n."47y10ԈnZb 5߿Zqupb+H=,Sb$GP1;UQUn8`X7&3Fs@Z8&+W>gO.ԁW>(>^bXEw"_>]~EW7Ģ=FAu7kr^<30 )?`Rxi$icC%d9E7:t9wE|B?;n˚ª%@bbq֮%WPb8/ˈD : ./8sV2"1/޽6GZj Fm~iJ>D1 k&1t5gNkM@-˿qrrD2 SO |aVXv/n)Cv`ƓۦW?7'PW]X!_\0#u__NsQJgcLΛOΡJ}rAr;5ۡ-?^ SXxJ*x!Dx^ uBu,F->kJO*t$^.?޶+1IDgL^P}Eg//IGck^md?a hQ s83/&>21fFC.pE#0ch&@'JX*SD)~mzA/)"Xz4SvQctOPRg98V}cÐEbέư~stQ1c)>ݱ”Rd h2]tr.[T"=7bd )*U&|[y笶{kj%bH Az%|[i6wT0W,Wf"h|v%?o'UX6Ww9/4iNc}06$"ܕ1 JxIDuF;*t_Fa */m(5B[GV"X%z_}rx6ۗYm9яK59V7g@&"YrH}^,~~y.&=ſvF|mlyT[%w#mFYZ_jj 6=#((K>CX{pkJn{%*d8| \rĬd^6< ^c]~miWbq kaZZocÉ }$ã_݀ՊPo5f_c 8^DP'܎uκD"h4󂳱G^N*UmpxdyȤ"<RC+:/!~R:yxX965AX{w*Ch9{Ms֎ÞYÃq m|w5pZk_/OMļQXm@BPg\w~}aե9+ϼvnWל`#g">VWf+ġxkKW02^7rny-˟KG[ըTc =(>*YQ`P"X:<3k0{@&caFOnc BDV &<V>on)D"ᦳzom)8\#fgg[*W"U5E?p J/.Ir _G֌W#41RŸn?V \ [7@g-0{<~9[חSOW<Ү[}.^G`ғh>[')7DzA%jW8]q:WuκƾH=r;m6cŀxkNR1W%&Jt,s /NN,5&Ы;i^yg_'G{q$!BT|NjBpX|<^EweH #*PEV f#G97Mƈ(oechv:/ Vxe8Yٸ\@DR"%%zgN17jQ qL'&GfۆtÞj/"̖& ]|diLk+" ō}hZ4i:wW~R;F#5 L^K͹x(3bafTc׿RŇA94sWD6Yq~q59Ct 6Gi\ޱw^p6[;lokjRbϯD,'WbۏBWBM荶H/׭x]AU/eT/H$mm90.9d,79u\z0M'Ju՛ Ԧ!7ڧ9XrYwǺRbc#E/ ! y}w%zdPzKrG%iQ6n++^֛`/8u%_h|㨶Y7e9,{)Zlw{󂣱Ix#;/W~'ፂjC}$ìAXޘX9[W{}Ӝ+-G{>ǗDuc_r,}[|? X֕5EЛm!WԝɅ&m=4'.> ?=YsyG`1[3ZoP@*#ZFu-,&4e!M(@g0cx ,ʠ-\H A`%&mSx12^y-oM JDZGt 21FTK6A@<41ý+iaR/c`)SJWksTڌ!|+k?Iη-'uʭEj5>ugq؛tȋo؞#QWS*~Kf F09"0&AE7, mc7F"u|;/'v[L+_o8_H"$Fx#)%rƾwl"vQ+x,#k8Yf}c`+u~7@ߩehwWL ɳY|}A GT `Ţ 'hW[#s1kugC?Ƕ|}КݐوQZL +Z~>G /1! }{wkB伇ha$4ԣƮwasNt9GHUԱ8)-8Xim)5 8_-_[pZޘXzCo޶r;& /fEC,a/-nlgJ}X8y/h/cɜ8!lAgk^~?#u^G=m! BfZ*e$bڈMG URe[ga @.β*B A(mW,/BP'2EE8U߾+BY +wCoO܍/TϮJUkiܝ0x /-r1"\xk0)~͝(ɯ/--B*7,ž#"""6طa#*X$M`vȗ-!r,^Hyz+O"yXۜoq-[#貶C#Ϭ9K-}GDDDthoWr,y3&pn,oAYK;~xgU7&}T-.rٸ29}GDDDtp4)3qr4W7)UؿGt֌7~:kuĐXXo:l;^wiߵ!t/Y`uͪW ,L ܠx1>Đ 5rϳ01$""""r>< C""""N&A0!ؿ`%]i'BDDDDDB"P[qn|;mAѭa|G!Q' 'dvj2o_&"4*2H2sr.;""""""r/&DDDDDDNjp&)'jtzw@DDDDDDn$U5Ի;""""""r#iuHTVVʋ <W%%"""""pL <C""""""Đ11$"""""pL <C""""""Đ11$"""""pL <C""""""Đ11$"""""pL <C""""""Đ11$"""""pL <C""""""Đ11$"""""pRw@J p "rJru!TC zD"qwHDDDDJbF(JwD&2zɐJEDDDJP(8qd2Gex!JFll,B"""H*"66*ݡu!` """h4; 01$ZH$0:Đ11$"""""pL <C""""""Đ11$"""""pL <C""""""Đ11$"""""pRw@DDDDYAS(..`Զr9bbb3Ե01$jFc1`GI֝C %:zR@$Ebd`<'W"ssDDDSQSSGǧSt8vNGRRrMdCUXQ38hLIZGUl|$2d"S4W^y/2Zt | : qiի1Zqq ^Vөmb$$$L 6y<`0}4դňJs1mX~~٥޳w߅ZvY[?0.\"A:mA BOa%rChu&-tS_ asZ#d-""K,NkڞVe˖!>>emy ꖇbqĐ<mn=>C p8pI}cƌAG5y?DzzzF?8다$|Mۼy3F???ݻq'ʕ+o /2lGbb"7g6ϢG }פ={1*FB!C`Ν.;""""rCHu&->J .P~jD",Z/|qd›o~IYLh8}4y̟?'O`ƌ{QTTkb̙7|#<Ʉsaݺuow^bL41 bXn??&1~,_gϞرcq-hl-=- ꊘ1[-xW(^6J xė.0++ JW|HNNƐ!CZ}^< IDAT'1qDDGG{A~g@II F#N #Fh]N%K`Ŋ߿?zO?bŊ4hz%K8%wy'p(//ǩS:oDDDD8&q>(飭9ptH ^b믿"1UUUXt)̙'jd?m݆~vO> A0xJ%F'NٳX,:thX???tQ""8bHoWAneX{/;Ʊ%ӧ/RRR!Hjʨƪ] ]VaP=s /iii-ʨj5 3g5ku>EBB~ae0i$deeaPشiSc.ƏiӦ5^kػw'""r^ k z$*++o'DQQ1 >K{ソ]}ѿO8\o7en[Q=IPH)Cn9̊-UYǬxwǦQmڴ pg|^,clw ǎ)ڽ%CllL!8,OSp@/_ JDFX?L|6ϳ#`,xVT;6umCr;Uvܷ0;i!I퇁q_~C'"3| _Qjռg"9]j@Y Cr;Ao4fCۇwC'§"1*z{VaIO h0I/6u}eeȚ56///|Nuu+☺o$F/p,Fx>,܎hr?Be.f#&""hg{u4DUIV]gIv˜V΃]!3| >pwH_Jrn[!6]ҵ#vu"BIkiFnz\5읂`Zn;;@rǞ?7:ҵ!]gDE☪1A(ዒݸ-zD/FsLU*:v"ҩDDD~m%1)kY,f 8bq|NϠ3/'\RV8wөd2l67ynʕغ85hh͂t"w!TدlFii) WH NDhb˧|<3#"SHd>mӦMd\bb"ѽ83o *UK%LL ɭwzġ}, ΢w$0=|0*h#vZj2nfmv kرcUёp54ԣ}2&V 8v4C( 와;ҰQCgElL,Žcڵ+ЧO塪 :u*Ο?}ʂ/, J7 jRQp!c8}48EZZҰj*$&&"%%qd塲Dn?1{lPTTUVg>}[nEee%J%I&kڭ# .`bHnaFo_7(HTR)0/&8o{HzYdeeAP ;;+V@JJ Ν Afdgg#++ JӦMCXXN> is͘3f@DDDXyaܹJꫯ_;,""PnFQWCX|ĉ\6tJӓB())NCFFFs";z_%LVf=zG=z4/_w]"""gC8bH-߉K2lc8|8$Zz=~7h49r3g@V;45Ԗ8ڵ t:8p 0L8}< ϟ'Ov8""뉻F /="&y,&.K٫Du!jߝkT*zj_|d 2E'|'NDtt4{p DDDDt}cbHGNm.׽zD".\^{ :.\hlUU.]9s`ĉ8}4Zmc ""pĐ%ޮb`_wc)ЧO_B"8՞P_7jh~x$g3g^x̟?HKKkQFVcԨQ9s&x$&&bj<CrݻwgυR>*UĞ=:֩T_βPo|wCH$'sRQs#j!U^q|lH$RG %)کjPC˪nݟ7!+:T]w݅L2(c5klقC;hP={V"C]oΘey///zu'GCtu11$hԐN}sWbgcM`w0_ TS;Qj ՠFxشNLV'%%_Nj/EaҤIh·z{/=?C]+::bkzĐNYVr|vcjI!-c8pѢEvlٲO=z)Ϝ93gt*.""k]G:Au!]]"5eTV+ u0tC݊a8\9ľ}SmQŤG\j+?yyX̰ZKyIRxsnRyk D# "O#Bpm_{&s{[ܝۑs;*Cr;AxܹW|S?G/ͻ}.jǪoplPL}"iH#fVo j`NJDDD]OYY)fͱ ߬#"r&v9{C*Mwl9Ʋ:ZG^>.bBk@݇?ODDDWM{G@q*)ݥi n]ƒ,^HݕDގ'J#QH\+)8];ҵ#vWHu:x!hrM˚&vO:?|99̚6O>t:]6s/v&m DDDJcRH:&v"V? ǧC^]SIe}&@ȵ'wyDז+W">>&Lp]& "RiN8t***PQQooo"99CmrKk{gqơ=`=W^ĐORDGǴH>f3&MHdjl6 ©OHՠnNnXd;.A>pSuvDbb"]RצM ?Aƍt >!!!h4(++?~ ̓Kb%""rG|̼&TN01$JHHD^ zH$X,((8޽jK$ m._T}Dr؎;-[> |||d BRRlذs^jHb{{N[Sѵ!C ;+) 와;ݞ2~Y模+r(2n׾+VApQTTT 44i>j(:tŘ={6zUV!11)))Xf pM75ֻsNc֬YF~~>T*1n8 tz~"-- iii0駟pqf$''###2 P]]O|||PYY 6 {^ǔ)Swyeee6'pC,h4wń 0`6RyyyBxx8Nc߾}hhh@|| ɓa0ZL%ݸq# ,Xٌk⧟~”)>|G`` L&VZ1c[oEvv6;X ???DGG7I ۪{ر8vكѣGc۶m hX.9{,P(+V %%s΅ Xf kp%{}֭[q̙3R?#VZ?ύ_zq9zΝ;Q]]ogݵ]D"J%#<<J1qr"Ȓ\|$-zB|9r$ɓ'Gm>~x <jBB, jHLLgϞP*2dڢpL2~~~@zz:5^x1HR5 >>>\r9 44-H0m4ɓ8tPΑc8p "##P(0~xXV"((!!!HIIAaao͕L&vލӧ#<<1ct:NҘ~.% s=z@ӡի:Wޓ)((28ARaݰZh48z(A@ ;wDFF6n^Ա#_)$$V.\h|Ny DS^qVQWĐj5mH|ؼy3QRRZM6={l5\AaÆ (..F]rDDĩDR93_Po|d IDATݟj8\ѷCtVmM^eT*n`Ϟ=HKNhh(nF`֭ٳgh%#F@AA.]~ᦛnBZZqFCTb̘1$%%aؼy3&N>fm믿h4bL,[  @||ci^QFaݺu7lo뛼~زe V^ Aлwo~vc͛_@,cQR"\.lvt| D&*++EE6l0A 0SX|! W!'O|`&DrNJ+0|p :5544`͚50LHOOGdd$J%jkkx-V^Jz ;,+A* DQXKh$fnuuݘM&q71&]$h6bXQ#* H"}ef`_3sι|09{_:]h@vv&`fE4!գ||RSSuOD02Yx< Jemm%KҥKpJJJP[[ :ҡb1)$"ҀJKKpejV!+b%ףi"H/0jԨ^?m谈cccDGGtxCBԫ01$"cd2N:ݻw k ^cHU pL 8&DDDDDDC"""""!ĐhcbHDDDDD411$""""" pL 8&DDDDDDC"""""P"H i!锳C """ #,%%"""""k׮`  8s ^ O3gڵkpuuӧq5ԩS>y$_wwwo㏸~:<<vӘ)ae)) CҋUWn pBm*,u<{/ҀAJώRRJJzJIKn'IvR\ض{ܺ>;7|DXXN>~}ڴi .ҥK[[oa޼yfxxx P[[b;v`ԩƱcFxx8b1|||~6_f mۆ>Bo|I,^EL7oٳu.L I_^Uʰs1Tީyߕwj-9r?cm&-Z$$$`…HMMŅ joժUxꩧpiDGG>(.]۷Oh>hXlVZ\W^y8x`oP{,X@o Q+}tKII_^RRBr6F|q(=SOcԨQeeeWWWC(ںc}mѢEXr%z-۷˗/ؠ)))ptt8N@$$''>üy}iG||<֭[M6!!!KDD4!酦VV':UWW!)(Ο QQ㵊痴%Ew(* fP曐d-wI >BK1޽{tRSS X,d4i&M5k 44puum\ 66O?4^dl۶M#""Pwg 01$д4#:Ϗ@`@`"i6Hr8[v4ӟ vŋoÆ 0d}:pIb888_}aeeX H8^QQQ,#%"^a֣_(b߷p41)$}5JZ[[Tom˯P[݊Y?k4[偧ߟGcip Xe d+8 9sֈñuVUuO<~ ?x*֬Y^xXh:쫢wƨQO>}]Yy+WTGRRW#%""\#^h*i['t.tbQmb~3~.43_|ƺa~ĵ9];A1^Z₯6)))UWjӽl1֭[ui<78n|5 3gN}Bw3JerT01$д,hOgccm#ޫ&**u(f$r%~$inB)Wb ?LY>iزJ|w}fcw^İz=C^Ȥ!E^^BCC5j᧟/v`51c_OPhSF>Tk]=?cs/J:[L/v܉e˖: ""|dS(.RR&&R|GaV-bC<~9|ZT_8.oѐv4K>F K$JS'= xrԎTe5Avv6RSSW$""ꍊ%m& /KII_^TTTCMڍœٳCJZ M\8~o!ttӗFF?D~Q<KR|||4֔:cq=Qbʤ!EWJIJiow-a9s Iu'%3M-io3K}g=u!KII_^hSJT*ŚUZ,43w#Wuk٪ܮ傘ߌv4%FÔƴ{ܭ vjbեH4MΟs&XJJĐ+MR)pYXUJ6Sd=2J}=l>N}q+1uE5BN]]0.GDDDQ"1dRHĐBRRR##_WWW?{ ƔIJab%SMyr9T\C8* yWPQGh}\.LLtTUeKzzy"酦IXl DV Bɓ [P( H`iiUL~ w.l>kwGf&tDD"<:CU[e*01$дdT*b a\؛q:"saIDDDNbxdr}UUFDcRHĐBR0T*\/BCGjar8YC]~Rx9r.]Ϙ8q"&NBǏP( e%PRR+++aԩo#>>|x饗:@lݺ_PXXx1#"^;a~~#KII_^hZJjccѣ"(h8JFk]J b{s[_خZ4گHVB}}={9( ۷Ǐnj3 JsN"$$Րב,&Fll,bccaoxwZKII_^hZJjdd+++XY?=$}X㸇8abg5#Jq%Yb0i$ݻ3f@uu5J%`nnssnQ$&&#G= ""҅ZAT01$fUҞflboL^Q^ưqD)5nReee?}* GGGxyyᣏ>Foo.Q҄+QoRĐ/Fz[&6fX4|(*hvml,!ތ݃LMM؈{^7663<\\|v킗.\إ:꯳XzW[PU I d53KS:[bFw;f~@vv&`ffڣcd(-ttRSSi'Zҋ޼*igDBx!(СW^Fmmm-["00~]/L I/jRHDDD1#:zCpҋ*)Q_ä!E_Y/a)) C ^zzC~!KIt/L I/XJJDDD{,%%}abHzRR""""c)) C KII_^HXJJĐ􂥤DDDDRR&,%%"""=01$`))D"466: ꇘ^au  Ckn0t?TUU`ccSNիǑb III7=k #G 33S>>>HLLm___:t7n0q zn+++WlưaC͛z¡COOOo:u޷=<<\u ۷{Ŷ+>m""ҽL~r2Cu8MR!ǩ_&mp^kB) #5'eeeسg"###`Æ -͞=cǎ7o8rJ_>}7DDz(JT[RARx +&8cH{>|yOL_7B666{{{3aaa?>,X`K/*}7DD9R9 &g i*-OIasWkϡLCC?ǎ;Z ǎ;0uTX[[S ^z%xzzoΜ93f >siӦ>P??|0!jIee%kp<|MDDDaaa8}FGyoV{Ob-ؼy3fϞ>f˖-5"""Xf mۆ>BoFJƍ;;;̙3G&DDDD L i@VWh;:ﻪvmj+˻ݗB@mmmGoE"\\\ xl2ܸqE_VSO=ӧO#::~z>| HMMX,RkR^^G}K.EAAۇyy1b^}Uߏm9`uW_Xh {x{,X@|xwqaڴi͛l2Z rJ/#!!{ `llSBPhtNDDF>z#&4ਔ eTm;tdXZZzhvZL2...Xd qm^u< R)>Clݺ#F'.6_+**BCCf͚;;; <n݊ 6 ;v@YY<9 Cp|NGSunVSNmƑ#GhWZZ-[ǔ)Sm\;''JFR322REEEk@ 88-[پ};mۆݻwXAm&͉bXXX999J k)̙<ɓ'ֶ㍍郲RZ{ZYYaرHOOk8cH!R*8w 22V%bK!22 @j+afst;1rlr555yb !>>T*T*}ݔ $%%!99}͛۷OfĖ-[[ou+5%x[6mBBBB@ h1 L^ϲH$0AjODDD&dPVVS]]8'DEj A&?mfJwִR!_aƒ?i6.\2;}$zÆ N:ɓ'wyC!''N4 &Mš5kB<==W_a֬YܹsO{P("bccOիHNNƶmZ^YYyJJJGˉ}}}RpL0(/^UVi#ivD11$ȸ!h_}aeej[[[,^˗/Ǘ_~ 777kpssÔ)S:='""үY>~P}~1$Hd7w055EmvXe_VUcqز2upYц?6mڄǾ}0}tٳg5l+!kҴ/UTT`5j'kT/ &Ly浺F+|g@tt4{eee6eMugϞErr2D"矇|}}r6裏0uT̙3AbbDDDƐ#b :I' 1zhٲe3.]ޥ>X2%nwn5RUk񺅕-m g\eXL~vƱRܽ{Ōaxx8VXi-<\orccc$k\3fw&pssv?Dg o֪}B±o|  CԻݻ111FJDD g?5dpTМ+3N,P{zg"Ν;9+HDԏt5ɦP\\z&dp*U| m}ZG91nvmJd뫲СK0|M(b7_pDDĐ c]XB  vHIIhH٣zg01$RRՕ7|SzJ\)^ЪS K%""I!uL zK&!<`㿃qH4qԏ-K$[QP_Đ ~: VW|s3Uw(|Bx 28R*JG#J fb n.] 6 ##kشiSwB^`׮]HHHP?ollĉ'wE~~>~g\v[lڴ onDD}9Z?ܲ%Ȑ8cH%[B"&&8* H$XZjwݞoX4DfhIj M㋊  ?# k..,S~~IXXX`Ϟ=݃L&s%"t=0/.U:헨'11$CFF:d2n Rk5 !ʀW@mLHT,Df &L'N-^oʔ)-aʔ)-XjU(**D"Q!";j_UU%QoĐ *44 * ׮V{YZZ#gqg ?[KGe.0"r֓Z؜JBqq1ΝB\p?"L0A\"(,,90f̘V?Xxzߎ;qA&!)) 7n܀L&}Qrssq 3gСC8 '''ܸqJaaa>|8N8<BL>(::L={...~:r9FSHqJJJp1;v,n߾;w3CR/`PqqH$X[[ʊDDӝ0??OL ɠlll0zX A@sssKI@lc/};lY§`;3zwޅ@ """k.L<" %%%ow}3gbܹt8 VQQrss{ bX8q"k.]蹹v˗> ш7DĉHLLT'\G\TTw",, QQQŞ={0tPu:Naa!vڅXΝ;077Wohmmŋc׮]Xn:Igݺu w̙3ၬ,߿ӧO⧏[e%\| VVV$ ###xyy iii;w@$* wƜ9sKKK?666k:M4*** J1d!''cǎ,--###( $$$`޼ypqqH$ˆ#PUUբ﨨(L:...Q5j SSS444[[[ EFB@@b1F~b1 @XttMcGDD`ĈDHHPTT8ؽ{7f͚`bx{{ˁKڛu6J޽{# (( ˎzF1X`y/lg=͗ֆA`"V?..3vX`-^Ɂ1|}}[offe rBTb/Huld2ܹS}RTV~L5õkPTTTB=+**`ddˊ sMbmbjj9wNB"qnݺB??V P6 ###z nSĐ>уҀdne®BUm׼MD[M3UMF$嵘χScr9ݻww! [%sMI@ +˗/c֭={6F2aٲem[]]V H[% acc\$$$ ::ƍ۷w4?bmsny؈;w &&op[ng}ЀVn+??aGGG.|C_իƝhZxy 0rH(9lhhPd6|2[͐ƦE,1Fŋ# LUWeQQ[]c㏈1cJXZZZYj`ff utͭqRi@$ 2׷(6oxm,pZ"U}FL i@3?mF#OwS`"DԜgċ[t2S\xpݻ$oիW!J/ɓkկ QPP:"//O8 }8s  ʐk;|_UUQ]]|$%%hDΝ;}\G,H ɐdff"11shggg"'' yyy(//W,m}t6qHR\~\^cHKIi10bl== yLcEf7miLs:t( D@@ƏGBTbСXtz\~_|,--1b2 YYY8qd2>sř3gp) <kM V0a;?pttl{{O8Q0h bm9!00ׯ_ǹsEl#GB"`7n9y5` qp;v AAA!BPh|d]S*0553D1*.k ҉U 2)n^9p THP_w ~ a#A_͛CBDD:L8::̴GǖQZz>>NUqƐ9NFɆ tCii ^[,D``|}^ȐiXlPHG=  Qg5DDDD g |q"""3DDDDDDC"""""!ĐhcbHDDDDD411$""""" pL 8&DDDDDDC"""""!Đh31tԿH$C@DDDDDZbbH:l"C@KI8&DDDDDDC"""""!ĐhcbHDDDDD411$""""" pL 8&DDDDDDC"""""!ĐhcbHDDDDD4:""""Rئpuu?9?C CԫZɪŵzQ)Ul̍n/D)}Ř$ؔ؉Lc̘R׮!++=:6QgOI-w)UkP٦F%.JXX5VOwn;o/~>x`DEE᭷ނN҆T*̺t`^ӧOUNJ+lٲVu*,,aɤѱ+W.31^S45(R-|qݤ-u *|q=RENc8q"***P^^G?0d2Nʕ+~nt^eeeسg"###`Æ 8""T*Ri^WT*T*Ui34*"Y׭~jUxHNf%.CP 8::ˈ1faX` !gJr@MҀu3߽\)y?7M9%Xf <<>>VVV"88zy7[lAtt4ΑbbHRyK\}ޓO QZiw;#G<(((@jj*.\LK-;~8>dgg# cƌA^^8H^~e$$$`Ϟ=p1uT( l޼˖-êU +h&q -//ǣ>KüyZP(#FW_m::&۷o;#t7ӦMCEEIDDhQoĐ?+B^&n_s### p?1ھ};lقA6l@BBB>z)9NNNx7؈k ~~~Xz5N> ,>n݊ 6 ;v@YYG{QApp0fϞ72eJoߎ .֭[@ڕ666FTTTN""8kGC2(Rs #ƉXl DFFA h5^I[u%.wr9EAإLMMׯGtt4_ ؠ)))d3FFFdښ"Ī+q'%% ,Ш_@$$''>üy}L<زe zvy7`aaѕS%"""UA;JJ"> XYYktLuu5^?ZO31o5[wn/TRȕm(W6'lKdd$&L7x| !~,Y/T*Μ9 &ŋj*u;2\]q!;i&M¤IfOOO|W5k"##1w6A󮬬l1vJJJ$""!QkƐ *#:&M=L4׵^:lXciRMX;YU&X~=[dddk׮ŋ/ǏC.#%%ϟrXx1/_Tܹs+WLǎCqq1jkkB@mm-~O?4ocYM 'OX,Cbcca%r 2Ǟc恒v5Cz-iUm>}:°qF|xWaaa^xyyypvvƋ/.Gaݺu3g bcc9W xl۶M8aii @___5 ϟOv[QQݻw_DUUwߵY?3͛sεy7L6 ֭D"q㐜 H 3\]#b I' 1zhٲe3.]ޥ>Xrm1>Wawl^Ҩ=<5oꠜ '<<+VPQߔx5j6#]_ڵ4̘17IMMk!8cH@O}vH_/~RT]cQBꏘ56kyI!Xy_;AcH?|dS(..]@DC28gui6/m*튪.MDDDKqs{ׄB!veq IDATGD;L XA}AJJC ""gΎg˘T)1kZveƱ CDDԟ1)!\O"uwvޭR` ½RVmýw[~8%drH}C2%b_d} l=C~KMQQ" &11$S*02QO}ŝ捱u=T)B6<ٶm0yd֭[1f5J 6n܈+W޾ö8}4.]jc„ pmO`ذaHMMŕ+WPZZ `ڴiŚ4QPts˖_Đ J,D"+LL4qT(H$jbMQ[/E#~?PU#&@Y9<~̜9NNN~:v  2="##[s $&& H0i$8::¾}O9iJ׳{+~ P]yQoĐ dT*na!21LEmE`z%|Laef KԫP-S!N=^7@j>nܸ#F4aȐ!011iaȑqqqlmm1m4ܹ* \|z$N&WUU?fL ɠBCàRpZjkk4:޾ x;`g `AzqM 0AsAqg{Kx{{#**J/77())=fΜ CT*8qiiio?VVV ԩSC=###r`РAmVQQ7o"66r9Qӝ0??OL ɠlll0zX R٭$͵.%G+<7)ݼIp/wf͚>N*bΝEHH!կ?_~%mۆh;wj3T :-T*HRѣx衇tvDDDS"KA VVV=6ʩ8-Źuzg90A}o㣪g&$Y( {"( "-oעUo?^j[oVƥXYE5"KIH&$,dfJ$2z>9|3>i„ ڲeJJJ-[hի$nжm$Ir:JIIQHHBBiZvyEDDhƌtj:ujc;vЇ~(IJHHP߾}}v +M1 `1ǫOwߍ/!:PEk#((HөSv111ׯ^x:|p+V޽{pB{۷^z%8]VZZZcW_}}Q-X@R\0>r]fkw'(!0!:P A17 t:rZ\&l6{hҥz%IuuuڴiO={{={+*nݪł[oUQQQھ}Ϯ_hx6+"°RzY՘c%ÿG):ݺudRnnF~;ѬY4|۷O媯o6P&$$Ѿb;v̫w)L&EFFBn˯ ahl Q?]O 0ԑVU|UUUiݺuھ}';vLAAA fS߾}ÇRyyyڸqm6%%%)::b}:|N>2mܸQGՠA:;[M /(軣"R]3uͳY͚}usoWmiӦO?7Y, 2Dݺ}UFMMݫ+WV111;wvV^,UUU)22RC Qffzܹ jO?UYY}{//XV9ߟkNCVk_Zc*,s>qx ntXUKVi3&Fy%:]}6(Fջ{%+#9T)4 JNNѣ/JQN>W_?K|ޟZ=SJOOWhh4uTegg'|R&MjC_nؓO>)bcc5{lB[0bOꔶb())I/VUU県 =c~%%ǕjwVSS4! UW}E_yMΪ3m*nA{UppOڸ5|/ڲe-Zcǎ魷ޒ$M>] s/ͩ)70Ss*۴C8S6h૿WP3á7|S+WTff$)66V h9HIRtt^uhǎ=zڹԜL6M5yd-YDzGC@kN!ZTRVʞvsCʳw諛jrrk!!!2 V]]~(99YJMMoO?T#FfSRRyϱ#FWff"""4j(m'|tEDDhĉV>X-Zt#F7ĉ+V4o޼Fm?쳚>}W5\#I:z$iҤI~UY`C/=oO}^wm]Ci޼yZhxر]4p8j'X#GԐ!Cxxb}ݞVZZٳgk:~>͙3QyݻWcƌѤITVV9KjΝu]3gN{uqeggk۶mi2Rw;=;w>FLJ~[oի令H  0á=ܯܼFm]C]K/^{Mk֬СC>Hڵkd۵kW}Xregv{z!M0A뮻4p@m޼YTPP:x㍊֠A4bĈFw}PBB{9Co tW_~,ɤwyGzϫGݻqeee5W몫RhhhokƍmݺU3glq:t.\֭[tUCα-)߶]vX,۵c}JNN֌3"94qfX2>?^555ь3hab=4aݨLKːjjƌ'WTTTlرc5tPB[:#@S,>r:ڴilaJKKX,mjdZ_瞒- dB[U*'o{5~nS?7f3FEovVEVU#(33S{Qzz*++5j(͙3G .TJJΝۨʕ+vZ̙>hsGgZeZ)ۭ[lֹsO?FrUI[/`ڴKl)ImO&lJ}Imtڡ^/Q)emA߾}sc7n~_뭷ҶmTRRgystu]뮻N>*+!!AmݺsUuڲen&_6M}.\ߔ)SovVߡxKv@SCվ}{tsex=bh&ަ`:eY-%_!IZJ4hܑ]ȉ?SYlޏ,UUUiѢE1c P_^K,z}=#:u~_(..NOK/[nE+VΝ;uwJ:LVV&Oh[N6Mݻw_RIII3f^|EUTTo_d޽{뷿Nf͚@=CZxqiǎr\5jT-((H3g<ٷ4?00PN pq WUU ΝjUUUe*Y;}PV:TtqTu8JMMo[:tHJKKK/~^k'OСCO7O?_~'jɞsʴl2-^XJMMջᆱ`9&M?,ݮ1chڵ ?~fϞ ;Vk֬Q``$?BCCu})77WqqqZxqtv:u .GB;Ǐkذam*j= ?AӟwZ<~m^IxoyR6{1b.\]8|t F 2|8Jν77zfyc]:ջw&;;[ 1DYw*wkfUZ]mm?}?Ph wnSک;`eRy\E}ᶫsoowL`eTXX]~ru]7G$jj4wOKfmyo8+:T?婰Ю@-{N;C]WqR'!w}tYٺuHRR\W{{\\WMx`묩a/==n^QPhPyе q#:ipDRCy1lX}Tjʥ!}t>x} ZpK~YDb.uVц+US0x.[zZh-PKN\.\.[NDeno/97\]jp9n-Yp]'F W6[v?G!ݮ6}xYlrVix&kF91Kh:/˗+((H7p_zto֜3UQQzD0_%'h߾bѣڦ,!y ^9?yT=%[Jd2yWۭɣ-s Ylm+x: 7[d_yi@#¯j\.vޥ*3uUC^UѲfG +F&hs1Gʾ+5jvܩ|͝;WW\qn ܹSUUU۷N(Ij?Om߾]e]{k}v\ : r} ¯"##5lH_sE!!!mJ*IA1ݕ.\=_O?Ք)S4euMzj:tHvg_}')SCWe!d2)<<\?Zl}zEc2_#ڴiϟ={JfϞ%Kh+Z=(pLJw aMW/sPP9ARn_mYJHHPqq}6+"Ekk/ʚ qWu;\&w:-.xeڀ`ò$i?)jH1|+^ݻwV^^gnWϞ=/x}tECZ`h]{d lw= B _.Ha` 2D} TYY˗+""Bq?Ree.Z_1>h3Ţъ=]ZU:,wë[z6G/<&x5zWԩSZfnݪH͙3G ٳ:+W,H0cZ2ybs:w_n+""$Sa5l0wÜUgTsmܢo:/_咤NPؠtEeR믕%4=٧s`k]SS"%%*57fhb UMSc)*.>o١Nmf ӀJNNvo `fYc9]# `pC08! `G0# `pC08!\;ˋnw>.BAASI`pC08! `G0# `pC08! `rWmmmmZT͌Ϡk!q\>Sjᨗ$f*(Ȫ%jQ Զ{.86p!t:UR|BǎĉBUTVmmNnnNjkkTQqZ'N*y|IM4cC/6^PxxԣG]I>}ޓ$edds:գGio~O>^+%%U55*))ԭZ)?h`s:uD󎪼nWʺT^~ZԩӮoTeelh~&n߾}*,,ĉ%IӧOȑ#=?i+%%E|6nx/p٫L.K.ӧ`*) tD]55rT(66^G=(==]WVffgʕ+h"-_\}EMUVy>=zTZx0$IDAT٣\ϱ+Vhڴiϓ&M~;I=ܣg}V_!C49G0!9Npná|t8j_c=,{ڶmf&NVZW_}UTZZ\}ںurss#xο{uqeggk۶mi2oƍuIgɓZ˗/$kڵ^~e=7ocǎ}4am@WD0n(qb)p8t׮]&ۮ]C 7nܨnݺ)==C |`)++іԨTi8qbwXJr ȑ#wfѣ}vkׯ;COn@Mkqˆ!N6mڠ}l0k6/t:U~=]mӧO)<+M W7ϕ뮛{ReeWVTTÏ>о}9*.9Zgll nPhh몬Pn12/(͛7Os|M%&&ꗿ5a„viZCiӧƍ;vriԨQ͖իz>}nM8Q6]}8fꃿɽ..!RAA6ݹsݲZlS[g.8Zt:?W'79~Q9rTr?\ty>ۥ3߶xkƌr82egPw}U\\/^b0ήNg]s5O4I:uj/ttĐgq92W 8~<_Æ kSVӮ='OS:J4fh͙3[#F Wo;q6oޢwm۲=[7<"N'Yc xWtffev{.M:dgg+11#:[]]J={obbb_^xIEEE283FO>kGƍ.vF q9"Y { /Iz?YdCuaAm޴gm`eTXX]~ru]F=$ik={W/XZyk*,k-5{,00Pz{~c4~?wСC2ɤ-Zxs@{Džu4ΚJj6t:TG?qϛ7o[<-m:!956} ZpK?m*(ڮYVc9Nk?_w͵mm_F[k wNC.[.?I iW~UXTBgծ:BBBUNo߮\kr,??_O?tFװtReeey>nYF={9i˖-ڽ{wyuرv.yhdwuJ d9:vPMf LÂj˖-JKKkr,>>]Ĩ_~֭S^^,X I {ァQFSNFqqq/\|=wk̙(i@g"¯So^bxUtJJJmS[&Yaa*/?ݦrO=}1L&=ԯTV;n׸qf+&&1~_&L]4a„F7?QPPݻ+((C#pӺMn !¯j\.vޥJʄd]uՐ6]m5qrC-4LnWYTB͚5Kڶmn7nkժUWHH2224|&n޼YӼycG={lToAAAƆIIpu] TAA}i՚5kbbb~z}=zT[dѣGkUnn.]J{DUVVjҥڱcF)_^^L?^WVVvƏhYF˗/ \]sAAN8C*##CG{ァ}*%%kҥ2efΜ"3NмytR=Þ5jȑ#ZlM>}裏4y6Wg* d2)<<\={T\\W[Ϟ=in nB4mnnW^2Lׯõk.IRQQ%˥e˖iƌ0`4vXEFF*7ͳu+hZzҙ3gta9R SJJL&4g+((HVyyy3224qD+22ҳꫯVzzl6  ժ:IRjj (%&&*..NQW_}d4x`Iga&&&f)==]U_v m5JVXX D\ۭe˖oeԿO0?:pKa߅s\zuM7)==]aaa:tv jڀCdR8m𵀀owxmp2#G֭[5lذF>,٬F僃xIJ^MHeZt:ճgOJKKѣ=} %&&nh@oH=zTYYYԘ1c[*b*^Džz֮sÚVQQƏcǎΑ#G<竫SIIIJOOo ]W^^^ScbbXxŨSIaXAAAOv߰9O Ϝ4dmݺєú:ϔ;vP\\\bEFF6 *Rf :v옾UWWkΝZnfΜ٤ހ:s挲 *..u14Ƥ$iÆ r8*))с|XC*--(jTTT}sZڳgY3@SL%L&Ew>ʊ fձGs3犉Q߾}UPP iii;v>39NW2+--M{믿0 i_{'O$ë65hڳg6mڤx~\!Cnkٲe7^9ru57w9j/--Mcƌ?OXB銊beZp8|v#N` TXh|Ƌ\\.Ϩjkp{{h6 U!! g̙3| 'gQLLvMMԴ l%&&g#@fY6[l'f\ST\|R|CUUUڶҕJՀ?  l6w#fYc9]@ ZzfrÈ!m.g `pC08! `G0# 3&IN9NL&w!|b앗b 3UUUϗwW.[CwWp wpȑ#***R||¸#NSR||>'OV555:snpY0L2ͪVPP%\FLv~çgiݻ+==P#  `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0# `p?7+IENDB`secrets-5.1/screenshots/entry.png000066400000000000000000000747401415312107300172470ustar00rootroot00000000000000PNG  IHDRXVsBIT|dtEXtSoftwaregnome-screenshot> IDATxy\UupQ暸/Nm6e8YiSYί,3\*Emt܊\J esa,Nw$A{἞~Q~9&I-$yKjM:f&d2 P9N9NfK~ꩧ^={I'$$EH:vc-[W\\,!֢Ul6l6[III۶m;KA>ǎ{y ]'觟~ܶmg}qF}`v]~0effj5d2)??n @*v:wq8JJ:Q|||Ըql.OJJ4iRuUp8KJ:lu~jt|߿WIIԺu9HMMQll7l˭ѱf"#kϞԹ`(=xBvs1+j nȱ[wM Ctw u+`p5X1Ui0H*K cUcVڏYr+Z1NyjР^<^yqBBBcwc=Jض}9NWO7oV뺸k.;wAA` 8nٴrj5kڴ:.[ulԭ=ޠsιefeiCGtJjo+?$]ݭ mWk雋YWz|_5xWRSդIcˮv][?OMyy3lZ>NS?|Ν;2i4i|6áwmT23۹&Oz@M4$ h=ԵKI?hҔ)ڼI҄?ޯ>{)av;~\-7ה's[Hk>>oſVw;;x:`Я ]N1JMKuQu_',ױ"-zc}3N+,4TwCp)>kyk۵u^[οڱ-BRSSiӺ߻OLWg,ɤISÉjQcU*Nzx+f~AA sի9tNh#55M͚4pM;%á11*,,;U޽\}}, mړ j{WÆ m{c[vwza3ի iҔ)ZR?wiC ˖ɧ>XI_yyy%WfegkӤR 7(=#ռKܹ3L4g|1\^^^*..?kXԨQ#=:e"Zo/Rj٢%k/J7khsU/ @_^|ʚRy]Ϊ]Jʩj͟3[9zLL"ɤ#GլiSU:Va҉jۦOd*mڶ'˽TJjtT6n٢]+,ժg`XXX_s^QTHI+yjӺ$|BoYۿZ{^_ޣZKM**.u)0Ux*3wzc[ڸyO7mVxx+7~ʏj٢e^uZ+J _ȶm%IyV{Ms9a7W߿W|P͕TNPÆzmp(IM4k)$8JV*_s =o/q 񮧐n۲颭,~Bϝ˔n=r, =ЃHu;KP>>:y*Ej/sI9NE_:DG+))I`0VJrjDxߥ믻N#ݺUڗ;w0Lۭzg{_-_L~ԾtfٻOY9glJ^l\vCQTe_ϧ窎<5NSrJ>>>cE&+~*iuHIM{g\Զ۝u}edy dt:K~Z-_}lּ/?ݺϖ{˝ Oz[Ͽ8K{&/o=OT^=5#ղe M{J^pp*g@ٱ ;u3>sF<YndJI9*x*) `G0# `pC08! `G0# `pC08! `G0# `pC08! `G0#y,+Vl3f:u%Ku6~"L&y{…Իwotچ`ߎԈ%IǏʕiʔɮ__:~zY, -IZdPQQJ܊`Խ+w[IQ'92ۂdСC5XsׯG(''GEEE$;wVNSѣ6mڤGnɓJNNvs{u5\Ǔձc9RqqhJMM~7F}uܹLSϞ=ռysw8SJʩ< `pC08! `G0vw@YNGu&TJpzӈ2.(+Xk~t"wpiwCx/%IO k~nr RBbFFTCx_ @mֱ㱕 `G0#\q. `G0#{԰aCeff~YjU2^~~l6]@&IG+A0D 6|TX&MԩSz Q'4nXsQ~~~yyyZ`ZnG0DгgO뭷*q7T߾}նm[ױBMH;wlV||SjZz;%iÆ Zh=^ziر*,,  Qg9RZ|$WttvzQGyDWft]wcǎo$I'OTaa  Ĩ{e9s7PLLڶme˖㏕7P.]9sT_q֭4c U5}00! ɤS^n̙3|HLFF͛oYWbb$Iׯ:v[nE7o三r8u 5\~AGnWnJZK *}`:oVAA&LO>Q\\~'w}Zt:wjҦMfj̘15jTcl6v9}||dZUXX(.^rau{1eܹSO֬Yԯ_?5o\fwyG۶mիj+**r})á۷k׮]ԩڶm+ɤ/z;nC9wy>c9M*33S-Rzz}ٳ~JNNV^^IR˖-qF(77W 6ԝwީ?I&E߿ׯӎ;zruZV˨(͜9SO=j* 8~9\RݺuSHH/^+VuN8Q-ZPdd&M$IZ`5rHuY999ZnW~4|p׽ڵsw>PL)).(Ȓ$}`{7WٺtӞoqw=Zws%@X1# @-RC08! `G0 Vpww)?9_ R2w;?O) ҙbwP) VL3KĊ!<؄@@f2I1,?L)).> `G0# `pC08! `G0# `pC08! `G0G[b֯_,=wCU@B0#y*$&&j֭JKKW``=uQ$k˖-ڿb]uU ("IZx{%''릛nR۶mxbEGGTZZ5tjJv]6mҡC wܹŋ+**JTFi6ҰauD;eee)""B#Gj^~~4h@uIYYY*..v'*((pZj6mڬ!C[N ҠA:xDÆ WJHB~O=CR`` P9rDW[͛7WHHGiĈW6mڤŋP\\nVvXR7oֈ#*\+PJZ/;;[]Gj*,,L͚5t>4޽[C V@@4}%ѯ UƍKuYM6Q@@+//WO$CmڴQ``bccҥ4iz_t:գG5lP!!!kuĉ˪jkԨ""Zk…Tn]զMIr%KR"oo$IyyyڻwN8<={VeWAAe T5!}]=#j֬$?#뮻4o<}7%3<;Pn$I3fuau}Zfr3+$EEEW4~@@N>}>}U߾}5euYj޼ *{ aDp6mL-ZHzgϞ ۲eKmܸQ)))ͭ_^z%8qB'Nŋ]mgΜod)!!A Xzb`É̙3SO)**JV+tĉբE EFFjҤI^RÆ աC 0@ڵb$;wN+WTnŋkŊZ Tnjvw @09vک!C RJzӍ#+|u֪[,p!P;D]VR08! `G0# XVl6wpl|YVw`X}/-ݥT͖}WXXcwɔr"+--Uj*,5 uw)@`pl%# `pC08! `G0# `pC08! `G0# ]p) ںu$d2aÆС#Gqq{9M4IAAA.@0 -nWrr֮Xe:xfYWddF)''ݥu+uZj)I̔6mڤC)++[ W޽չsgWDmݺUii ;l׿bƎQp84{+ְaC%Iv]3g{Gr:/gUV:t4h IZx{%''릛nR۶mp8uVݻO}rss%IR`` P9rDW[͛7WHH|ASNRqq$]-::ZWlVrrb>|Ulj'XO-[ѣeXa-]T'N|~q~ݺu4h `I͛u1wVm^cs Hl%E-t:uY]bcc'Iѣڴi@*44Tɒl9vo%ժ05k֬ܶmnwԩSGS^^Μ9#I:r䈮*IRQQ >Baaa Ҙ1cW"LwbccոqcY,ovhĈjҤ6l̄Ŋ!<ޱcGOK Tll՞{ĉٳgUXX(IjԨ""Zk…Tn]զMr,ڵkD5o\ǎСCu)9rDJL{neeeHII'dm쳭j׮k`} %jK.ZvN:[^Bei|}}եKg]VUB4[@JZ-$$DϵeiVm۶ul68p@6mVF馛[eCZfmp׾}{}jݺuZ7tm۶ CՆ |r^u= SNwp `pC08! `G0vw)--U.R,CԬYsL&wʔr"Ҥf)&VnZrk 6mp[ ڿ|}}ռy Cx4ѓP@ptKp[ fY{.!<F($lCT;w/੤`p}tbj uPX1GIKKWZZ$9 YPgbjw9uhUziso;wuD0n9Neee^ԏiaopV\V  Iex{k[K}É˳_^k%:z~iO?ÉGު߯*¾kz.+55Ÿ<)%Kvک!CԩSСΝ;WA~zѯZ@]RVRɤ}]n:vt>?%'{ZbY-zqshJDxs_~Qo,yK_}C=j٢%rkň$IZCva[EqܿuB}Ɗ!j7xK҆ tѯZ@]|Z+ (o5-,4LrzռiSM޻* _N>>B k\-+Zu?V Q Q>|̶Gҏ~[Y'T85mc j@EE*..Ih򣏻B᜗^lRƍ5mc99Y^FD0Dײe2ڵkG?Uk?0]*o5d:Ŝtoהǧ^ gj.X͕$L_"5P./~ۥ=AAN ֛0a.:>d]uU_C)"<\̛S))_x=s^] _'yuDCUZKLUk>I( ɓZ%ISc#E9u"#7Qppua={V7pBҏ~G.%I+~l6k̨V躉ԨQh9ۧrrsyE($XoU{3eܗ_TnPH@ EDDtp""ZwF/bh3Ol6k꣏(߿BHWӦ*i<O%է'f+tuꪫ:[N𣏕EE${'ښkά($H^TIU֒wޕ:ŜRݮ]=o&G 4@EEE?੤X1/(OFF O:ầy:iScJk$ͦqc\+4cl :DZSIooSNNv<#G^9'qK/x ܗ_ѣGz2Ծ];p:efPX~{6my jǟH|}|_̼OF0@/}JSPv EԬ^\3EXtJEEEQFFzpgjP|ugAԓS8,wծ"쳍T\\tvIRZZjkY j^_$ө,TYM 9OIn46ed<uՕ Չ`jp?XyB "yŠ'x*!]ek5`j uPXVl6YVw'2w`bq@yXaao$+``h(##UMp@ERRNO)PtR@%()[kp[ ~~h2n( # `p-==O%-pw)kUXXBC] P&J &ͦμZ6M}/O.([IֳZ餴TwXD]?"cyu$漦059?<7WT+"<\s^Sw꧂[ WTƗ~sBwQb9yͻp!:ڍÁ~p}Ϝ ]8@mC0DCuuy`kޅs?jǜ׼ mx <ԣGO1͖ڮb] P*>X}/-ݥT͖}WXXcwCxǐ@dZX x.![I`pC08! `G0# `pC08! `G0# `pC08ow\ʊ+U^\xVV^y=SBBnjP˖-IRBBOwg<uFxxneNΝ;-[ĉou,l%Ea6+ժ&Mh:wRRR]e2X-Q'j˖-j޼4irF0DqQ=Ӯ_o^r+j!ꌈֺ[%I+V\j*??ㅅ2:ٳ~k\V"£5nǓT\\\xRRUy-ZPV(h2MuIeeei}ڼy_^zps8/e۫c{ ,n}F-_q&;vZn}s۶m&M*!!Acƌt~_,[oUddd}әRRN9]}J G0# `pC08! TJ*,,La.()%EIOOfSLLgYVwP)6M}/O.([IֳZ餴Tw`UP`#:jSAee" `pC08!(Eff__}RjOzݥ}dB5rwY@a^ݵdɒ2e=V _|cUG6mZwI|A;_Lܥ@&IGqw)ygZUϗ$kop2 QM4ISN-XUھ}{cakz51_xj֌*I oJ~~V}ʀVR޽[NSݺuOT?NI~-}kתHEՂ9TJb:a֭SzԵkWm۶M4e-YDsΕbѳ>[1yWo5ս{w]v%VFcǖ)!!Azw.uMáӧ} ȑ#jw:z饗FiĈhܹBM@I'ND`JI9tw@ivک!Cۯ{4aIRnnw^uQ{EcPTTL={K.:vZjUnMNSO\ؾ}ʼf~~BBB}vuUp3mwUs%d,ZbVVڟK뭵kzX{TZl]ȢTdST 5$!$dON2?\9ɼGrfw>wfW_gov-&-6lXm77fgU=~zMO*++t(dK4m4>|XK,s=Ƿy,-?nP__P(P(͛7kڿ9'NOiY]w=۾-7,7f~xם49Ž M @U͛5f̘gϞg}V6l+r__X ڸqcz`P[nոq4dA}u[e֜9sԯ_?\mqڲjMۭy*0~&^{-b=#֒׿yTǎ _N4~Xsi8_>R_Dv@0D׿ZJ {L~*..߯J]y*--3<|hݺuJHHPϞ=%IK.՝wNkasmꦛnmݦ?PEEE;s*33S-ҥKw^UTTW_mtd>}T^^'xBzcǎիҝٟ3ǫ-onsu IDAT된oQK,ѦMtر+JRLL?֚5kyf}pΏ>RMMܩeO? gӿtZ(!o]YYYwcɋ?԰a{wޑSYY^z%M4I={Բe˴|rJ:C_,77WUUUc-k޼y4~xUUU)''>F3fhzTRRrVGzHwF_~Y_|i|{C=믿45^~{4v[^I9sh… c?lذ?twRSSu꣏>Hio~ߓ+ۭۗ,뵨*qURVkJ)g^)z)KZbEO?k}ر*)#@SZ| mF)ϧcF떛iuI@v@5v` ##=]X]8bCs7o1# pCVLL.jku@L}NZ] @w*##R&EM)..ֱcE9rSll222իWեM"1`G0# pCp8!8`G0# pCp8!8`G0#֭[_:rYvޭ?V #Y- a{nGpy7zUtC^vv\.6mdu)@䱺%.K-ԟg=Zɍg֯_;vF Ђ zK۶m$mڴYfԬY vZBFK.X^W~[ǎ+))Qcƌܹs@W "*G&LЛou֮]<]}zZr{9~z/9+V_[oE`H/V^ZO\rƍ Q@TRD /PGk޽g- zp"edd(--M/VMMMKRmmo߮󿬄$kYڽ{$RpHÇPll222ԷoN#`"j|>-X0_+VҥKO[VZZ*4ջwi뗥b1JJJ$IO=TcPX@$W^4h?*;;[&MԐ!C:k*#GԶm۴n:eee5< e hxv5/x[nEg-w\tm߾]4h ]s5`!",Xpl٢cǎ5<֣GI>X8VAAӿﴴ4y>ٳ 4H_~ojݪ\g "ꤤ$k̙Z~Cc:s믫@UUUySI ?OUUU x<>}V^uT8pP4fh]ve5k^rrrTVVDׯ'hժW^ꪯm(,,0[^ ]1`G0# pCp8!8lݺ"jҤV4`[?%DDNV4pCp8!8`G0# :^{ h/$iʔ)zꩧlg{]i߿TYYvZmm.I}}ү~Fk5jTDפnc~F0DyꩧTVV2JHHhLW]uUYpN:6lؠGoFjwq~X]F"FڬYNL6mH]ttߵ>cu@[7;11Qa(%%?P/kk:Ni^uD.8G ѭۚ6m5qDmذaE] 曚2e4lذfA-_\_W4|䨦uL#@III O2E>`SO鷿^~_շon~n 0@wvqsnӎA[~{cJLL'|"qzu]V||Fuz͛zMZwʔ)z5o<%''kժU5ns@sPs7`o1D\ <}k:x|>i땖+У>kFm5k(kƌ ѕW^ٰ襗^_eddhݺuJOOoqٽޫUVtwk޼yO-rJ=:߿oTQQD=cmoWee>C馛nOSm7+7߬P($ۭM67?.t>}hђ:>`+I>O^W>O}՟'5J+WԷ-M6MÇkkҚzGգ>aÆjZ6}7`?1Do}K'OVFF|Ai޽gwQK/UZZƎ)S4/K/Tn[={/_ް롇Ҳe4i$eeeS|||jkk__z'5vX :T?JJJt. 7ܠI&jnJKK3wտ?+sK.Q}}l"dع{t~\RW\q$Ed\y%&&O6,{4w\W75f}z_Əd[gji־  WUUYF9sh̘1kf͚&?y橺Z՚3gx㍆+5婶V'N<-U8ք KJJԩS駟={4Mwy4|\Rzj]~袋T[%Ef\͛'4OǏwj͝;W S4{zZ)w#%|C8a>vzjkŋBřVX x G~Ro$Lܲ:B!|m6~7͛7kڿ9'NXxz-(??_cƌѥ^zKEEE*,,y'uzy6׿nu-UUU6m>%K77AcGkSں5ٳggՆ +(??u^|E}_? 2D`P~YonYvv6nX0֭[5n8I'Ĕt@eiq2dkpBm߾]Ν+IZ`yXB-uO\kW hZl٢=Ú3gװm/&)5Ժ}}D!=?.??_555ZnԳg֫믿n6jꫪWff-ZKj޽Ыfꦛnmݦ?PEEE;~f̘GyDҡClٲ6Zj ϺJK77N111{Xk֬Q ͛γkVRRfϞg?$o߾:t|ӎFf\;O>*//OG},I9眣_]RNΛJNNҐ!'$2MUNbpp۵cN*gϞ?M6U ʬZZ~L3Cj$}zW=\W^-[ɓ'kĉ*Cp8 pCp8!8`G0X]`i* * 4OaѰr0N.ܞ8]aEX[ CUVVm8Rd04[Szx6XJkhO]* TCFITzHfMT_sr/^FBO)̞C?Azںm(XxL[vnQhe2k$IF\%+O2Sol/%􌵸r.;}8^cP/IbJGϰqJHiq"+fX@P`@nWu|H,kׁ砞.-ӂ1^NvcJ*ߣ{t]m ᚗ<\NeGdn].sKRqnHϖ1J*l}Q$PPo"gjWA`R\,OW=kg]WѪv/QY+.FݺNWyq~Hagjع3+с` C  #ڮ#Y&87'ڗ2CtG(_خ 3dhJkctS(s?p(2m.i\#6?7OUoX\J1MnbGLQPvO{G0eh M*[Dhp>z۶Af82/ å5Գߐ D !T}}N݊ Vԙzr_W>ۜ0c8Y[jG sԐٺ5}RBmտRY IBROY'O)BbJY0O=:g6 hjכ"bHgy7R\JLlUlM@S/Q p6!! _Wۅ[4䋉=O];_Ԫ5>c 8]8%j UU%Kr9:?iplK}T[5ۋK72.uWQ}ʕ>@I^%JyHՁ.^LW3אid{]V}mul/&.Q3DMV"[3MSzLO^= L=N˷uQצ\}n0FW7O3'Kl:NKҧmtϡ¯LzYK6oLK. 3T#PW,~ՋqRFOʃlAMrG{< Wgﭴdgԅ7h ݚVPd%l+#_LO- 5ژgxNW+7EJmi<"ej@[⣱Zr{efʸiɗ`iauGz֑0\{rG?U٪CێYZG^_Z~}Qlu7@`n<F" vouV0Uk{,pUb$u-Iظz0kb(X_#kdlu%$cT7UF_ ~>SqeF߹rAHo< ?;au)>Ҵߦ}G~_nK$eK}Qx`Y3 iH\6fH]zg8>f% ߒmU/./;y(aTyե4O͑EW{Zȇ:qե4:^:(GT_VH'XzU%Ct;zGsinwt:Ԛs4sDXU~iǏmU{.,rU0RZ-ڽҎZ]JJ#.V+Tک?tDj%Nju)]ڷeZ5! =y}exj5rեWVBeiθbgZ;`مfZv}_3gمfZ岝P2Z,LkV\ei}Ik[]FW`مfZ=,Lk|q|d@?WNIDAT }|>u2M[^k]yyZ<+Bu]:hcEo"dQ _URMe4+T^[{D'3x=ܭZ]Fʊ[]Ct 1qsaSz=狥d*z4,S/_d(93,Y]EJy!2V<:̰guڱQ_fd@7@0D3Ͱ-Bڒ`0`s *Z'zzUo<+*2\.teG]oX]E;_u@A3Uz[b8MUqG]h߿^۫NޘU]nۓE0D / (׊ wkBai.|f h kͦ[KaNnR8$sr8Md^eB*_a{ Kav_si,bE_ |{lx늜(:L97k+bMhnK8MEjKh7վw]%:oktܖ1[wEji68>a[M'-@igh:`חY]F/`eT/Z]E* B,<.y[nu V}8~ĞWIm#w1j<F8HO9x>y 2o._vq#yxhq{L {c*lyAN#=&Saˋuc{Tީ$y.;mk/;cx, gAKs*~ϔ~UD>,=hu Wb>ǹQ!:},)(9fu @ բgS0O-UYgp[g2d~~7m 72]9ay'u:ffmy'LmPe%tXG{US҇Z\/b*)\;Úz^6Cm83pdȐPrVb R]C W(W>jZ{!PovD.[p6@9Z2`S_ n ZCD9C~00x(Nxƹ Gf*!C/Ϝx q.oDk7_T$$Z]$pEtO'u%[]$둿&Gg^_lOY]!L%ET3\ e`kZ+)>1k˔l>k٩飝q0)}萸+0&}p'%Y]BclIإK谘8{@{.#wa;ìϬ4gor+)Si墭OMt1:=cu ku L{CRLKVtH !V``^lԇp١P>K0+l+$GNGRm҇~Va)YVt=&ve`8O푙^Ү)S!I~NmQ~6㭮@;z%tXH{!chvY]Db)νX]B}E@8m 2S\2>8,K>:!& :6$I SεK2$IuΗ?]߸V I=:ﰱVtQ0NrluafA=wILlA1=c BTv)%>Of|61C˓a# =cS1ۣG$%􈵺 IRBJOd䋨vH=@)=.|ޣ\nj_0gu 6d{LykI b+.݌.4) Y]B%ϷWDoɞi2lLKhϷzֲc x¿ n4߆v^zp.*VseLWMYp Mco-V.4g['.Cb)Ν)}/ KC'EoNwp0ly%VHO7*FHO$jfPh9IÔ~2-63ιTXPYVfɗ\(O=+NCdim1Jii$_6:aRq&Ct (N፸K1afmː%{}k{LP ]ce4ʘ}j4\'k7=Ro~*5i0E[\+y s.\Ua4~E0Drm9-)ehe6e9czVj RG9G8h5cR3lRͷVK[PhNI1eڨyeK=@ٓX]F8oR35%h/~닉o Ðgߣ1;V)qϴxCKgh)dLq雽Y]FJ6 _S%?feq)V"wZҗ~2u#h/(c}zz'Y]Fbu b6 PL?x|9Gq[gmO/Wr\;Vc) YJr2_"0d\ju%r}?Xr%;(&4sݐf:6&!I\+oSL=A0Dv{w cd0dߐpd 46ե4Gb~.1F'uOJ.}V_ޫ .AoOk.C~oy}FEwM+nRk\ul@9x..l=s:U8i-(6.:6t( ks0~8^ x f'gkDrKk9/a7_1Ftns.ytTgi)ƨgiexB]=wZz{f\ǎA]df-AS3e=R~II.^lB 3KX`0M+xSGS^k՝ w_!]qOϊ[RtDENO@+?UX3.:J7:舚2-/J5pɘuPy^͑4.RTb[Rt*gaGp5^Tl/M6n~N1 FLs_-)C8N8V0W(#nG>_ WtQyC~$`> ^vAtx/+ݦ+s 8D7>\햹2,ipIc/k=RȴyTTr`\Jpo|F(ppO E=n [,焘۾QPdKpiitUJ̊H@ ±LT0XP0p; w\r{x<Ž(4b_9;޾rk)3YҚ=ZSWKƠ +g)?*sr!n_#eL\,c•RJEE*_*rV˟w]m 2"y2#[`.ӞuGwQ8ܾi='){f_e_wH./Ѿ*wnWih5tL%p@t ̰P(>y$16)}\.CaprvdDȱJSiaHKC*(D3ooKۭJOd<sNwŎIeqS]WGUWU,UmEu't{c=K))#^)}>$ETBThG*9OGUu*?y$%Pr~5T}*>ŕ#<8`G0# pCp8!8`G0# pCp8!8`G0# u瞷 [# kmM0"[$2Ͱ Z֣GI>X8VAAӻJ  55|p k 9眣_]RNΛJNNҐ!C.5nWr+''GO?B23{w>JIjZj^xEfXC_ougp  pCp8!8`G0X]Мc:vH~R%&&VJOϰICVq1i ku9P.SVX]FzdG1u>ҿ֝WWW2+==rFyvܩs=~Yuz9LЮ]lY_$z/  IDATxy\? ۰/" @abi[kV5jآu+ijDfKj"*% 30S( xq,?3|G O^`...H :?ѨWT/V:N @˗煄 t0 0 V-,K(B(W^=@˗/4TXN""""""b׮];D /<Ep(9/d"(EQh4JR.:H$R;FGkbtz#Cju.dh1]Ոg0BkcWFXP(.Ğm=Q*T(t DDDDvn^V[ӡ>> e왃 wYy 1tr5DDDDd c޹r%???2Z%d($""""{Fm2!0yY$"""""s1$""""1$k!RK """"" !!Y G G ; d܅OC&aqvyDDDDmİfNxi>s+Wݴ f`ߟE~nY0vPQRZ;v I^.~~.ki(-:WTBabB<&MQ\R}o?q+yo/w΂v;wB~ H=Ą(U*deR7),a'qiopw\K%%%aҥHJJT*ŀp ^111<]QP(ܲxܥR e'VNFkYB6z|c̹PP`BƸO=\.nnYFſ9::B*b0$Əggg8u oZKVq2Vc58PamG h;ƴ\% ijk BB!o~' ggg87^KnZ+W#;wRۭ{PYUa EkQYUeѾxa'ٳ?ּNnE(`0`X<^Q&MY\={իXo.zavR(䘐1jCB.7 s`s8qkoˋy[+W",4]Y| a>>`a'7&o:F_888# ÛK^CXh(oƍ$""""M0L\o#OLł_BLj Ga5) <2y|shG^Gڈi#_CP%oi+]xQxKpJ5|NOM 4̢y/o+Xlϟ//KDDDdic|E5 >Wf@|}Ox}/-\W"~75׉#hF1&KزcT*. oiyVjlL6D"hDxxiۨQpڵvj%ŵpuuysѳowSORAVlF#jEC!.G*by<2ݜVzCKt86T+宭a0삤R) """"3u$Jk/Y j!0[!Q[0YNgv DDDD]VW1΁F d DDDDD6#d- DDDDD600Z͏\1ݝ\ YCNDb2 r/*,]Z!""""+`P^~ݬ]]( :O<!kV!""j}K$tC V^19Fq"""""";`HDDDDDdzk """"""+rP*֮A.Y"""""""ݻwZ"""""""AYY)WADDDDDdǸ*)c0$"""""s DDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDv19k@]Z\Zhv9DDDD@ D"TDbrc0vSS#JBpp0!]Q!Q\\ FTj풨 c0vVR K$nnn8Fra- WR_]֭[0EDDD0Vyzk_>Q0MTw|eW,kx\n ={?>@jjj?<"""₨(|ۻw/޽{F̙M6wށ#,Y_#.]Hxyy!##W^5pB_IIIx7 777y60ͪaֹ/PYR 3~J  ,Z+VNwsVʕ+1o޼zNJbt>1|L6 .\TUUa„ xꩧPTT;v`ĉ+WbڴiV_|xbdff믿! 1bS- ,޽{֫QPP㡇F[""d[/΀lΨǜ_Hu(U0##R[l|F||Ν;ÇGO"&&G@`̘1Bll,WTbذabccO?oT*vZlذGhh(V^oӟ7o/}#""""`H6ic!Nm̩kx0,X˖-^]$k֬)S0|p磮C"&&<8d0 3mJ{py@#!!^-=!pqq:DDD#Dc0$SQ`s:E)SV1m4cȐ!wP(k׮aƌؼy3g/~ܹ'NlJ^OYpU${<_0(mkԩ ѣLcҤIطoN>g233///:t?GYYR)<==1uT<3W_}>|8'3g!44k֬1Ӓ󉈈Ř _mj:G ɦkhP D{ 7Qg֑==,w}vl/1<'#={!/QpspB^mU_Ƥnwc_ůx¿lcR`"^=쾉vٳ 11-=b܃. ܹ3=zlϿ%''Amn!JJ6%z:`W$b0› o쁳Pà5ՃͶwA򾉈~pԏ!ٔfV v(Ơ{?eslHEZlD"""cjee2um dSju&ǻij=Eb(+f(GPS㢟j }}})++EƤ) stt-upED:OᜢoGOF?z >)>(<ݱ%LGtJ+VLDDDSJ*)WIԕO>;t~" |Yr}`(#dSPkM,P`sw֨oqN^-/:?XҒ&d8#dSv3 '/E?YmE7u-%^Ma(l=afIi&K{0׭ W_W/(Dg/hZ:޶M6ADDd C_>6AdK8l(Ĩk=V`ŝ*Ce.rOpY:Ѫ;ʞ={ qEFFߊU>Kxz&ƢY!geiL;1ɋm+UWc] f1r#0:["""ז`xPjjdiD !ٜgz 맚5=X耧 6O>EEE1f\z999AXX222^#//rпzm&''(..ɓ'O;!C`Ȑ!ؼy3"##1`ӹEyy9=zz-L<"l޼ .(//T*]w݅#F%"" m ׮Z"`H6G'R~aV75(AmXpssa 0>( mۆ###"Rcǎ7 88>>>6݋QFaԨQFxx8jSIr%;8t+̞="J%n݊QF!66rZ 0yQs ٤{܇Dv'={ iSCn憡Ch4"%%^^^PX_SRRЫW/HREEE:t(GGG +ZTVV6{\.^Gdd$ &""E-aQgCIVFOc6Hu]x`U -+isuuFغ:9sCUU#sI,ѱ^EXX֭[H$$$W/^% 3pĐl <@x`]Yh4lܸ2 0a:B<xG/[nvYDDDmCqĐlZ?_Eڌs;<@II J%LAo볐b1<&44{~zݽMY1$jG y:`}(hzx:>|IBpssJBvv6jkkqo-:.]BhІ?d2d2N8aڧT*qI@իpqqiU_DDD#D!u b  ѵ(y-."1AmZ}|}}1rHdeeի[tnRR\5k &&Ǐ74dffbݺuonVRpy߿jn3 " ^ODDDm<Iҡ}TjTT޽է 8+SPuJ."1bkRȆEDDgϞBmmm١!uYB] M3DDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDv19C"""""";`HDDDDDd 윃 %Q 0R v DDDD]FIIK.SI!c0$"""""s DDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDv19k@DDDD^ .^Cqqju-H(!`HQ%W`]Y իT*múufV{ .DFF#""wzF*/^o'jCisxnh~XKEdYAgϞmh#""...§~Z1#GwޱHmDDDDD-`H6ˠ]^ IDAT@՚ + -޶Uam ,Z+VNhZ\ͫwX,F#??Ǵip…6ADDD hQg`HIōu//h.* qcDsT-[ DGG#>>cΝÇ{x'G""""b0$$E6F(2_ms; ,eˠ|r,Xc+**fL2ÇG~~>\5#Dc0$cv2e j5Mwww 2c q5̘17oF~7Q[9ds;iQsu(v/HyaرcG?~XbiPȿ'5lQޯpx%63uTa  L&1i$۷O?h(((h@ hS}DDDԸ1&5;u,C)S-Y3ĽSjWs0*~_v)iYN,#==QQQX|9^~e,Z#F@ZZZm>xꩧpY|muĐ =`0$=1BG jfE5{̾} /^h'Nĉͪ~Pg0 c0$-Ow=\Ԩ^:l[KCџ~siiIm2RW`H6űG[unkm:: a0$"3 u?nlѱZdIpהM6!,, Æ ks[ZϹOqu899HHHPعg{kRJ -DgӞlvlS8$n0xEw΅/BoYmEdd$-֞={ qu`ݻT$&&(++Ï?l<puuHDDD`ѽOO!|5u"[`H6E q'PwF|suq$no1[̵o>TVVb̙pvv6mBTToߎ]vaʔ&""  ʺc[M 55|u- ds/A&G -I [VagϞt'''(..ɓ͛7#22 mǛ=|01i$߿yyypww}݇owɓcǎaȐ!2dt:8_:HKKX,TVVĉ_ gggc׮](++C޽R0zhwEYYuMgP(Fڵk1l0۷k~?ƌW"''555 CFF\\\ZܮvF?N>ZGg`qYh4DGGʕ+xݪ7""jk -X 7Q$ts:?BO<4̜9!!!ORL݋~ᩧB=8?66.\ZH$T*رc1k, 4| *++FB||}:d2ogGͽ7;x rss1eL>7ow_ICq%<ænV""F/΀lt"{?)pxMms= ;F={ִСC@@8?""zEEEBrDFFRRRЫW/HRtlCJ%N<ѣGHMME^^阢"=Νl*HqFD;v,p>}~[r-Cn憡Ch4"%%^^^PXX}7jq7Ƅ T*qqZǎøqЭ[7xzz}(YέGKXEp*)&#fnCŒd ڧ 8H,֦@ @HHHV DF^^BBBHSÙ3gPXX:TUUA6ޭ?6Fc4FZ `Lϴ={"66[l  JkεǸv }?h4Mn/AAAy7n܀hD```uQ1Έ`H6K Yߠju:/vC`v@(682ؔ}bϞ=1brssh4ظq#M_j-DшӧûT*\.7[^^nڧR Lat`Koooz5Z}-N@`!D""5SIɦ9ZMqx A1i-3P(J(J!,, - bg CMM rss!qFٳ0 ٳgۮÇݻwk鵴FK?G>>>0vi`@iii@ c+Y1$j!6 رcoVSijgKޛo{899!..;wDII  wwwիz$ ]v8tE{ ǩ)$N|.A{9G>Q]۲s%np1k꣍ Ǿ} ?ϭ>طo_=zԴ(psᗑ#G"++ D^L$%%ʕ+Xf bbb0~x 2ؽ{7d2R) `@TT:{"##HMMqB{cݺu۷/šj3HNNFff&_|F&ӱo>lٲ{c=lMػw/ B,6JJDD-#H6_A"qJDdqEEŸۭ}Z/>' c]5@ o{C= ~H\ۥ 6 11 ~{m۠jnݺA*ƍv3Xj-ZDDDd9yyσo,\KTjTT޽է 8P$)i2&[NO>$N<ǏpqqAϞ=- *++C!QDEE9Ξ=ږ6WW7DG߅헨5 Ȏ $$$h[gTQQ BP8p"";B] Mc0$"j* ?owww$%%j"""=.C""""{{ =qDDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDv19C"""""";`*--v DDDDD n]QQRRb TR"""""";`HDDDDDd !c0$"""""s DDDDDDv19C"""""";`HDDDDDd !c0$"""""s DDDDDDvP\\Zݡ}K$#"" B!cȶ1RPpZ|J(B4<v]%wUŋyBbb2;oRsš5k燐+̬?8`ɒ%0;w.ٳgn.ʲzjlذǧ~J| :Z{-))F1cX$%%kh4b֬Y~h-oHIIAPPVZ???lݺ$"""'ǐlҚ>ژWw7Ʒm :{L<7ۻpFc{ ZmS8 BܦP(0 IJ{py?6[SGcJJJ٢v1tP`ر_Çk>q&W mu B$""Q;qĐlN\ Y7:fUidR$A"@"`ؾ};~WF#qe\|EEEqMnST & V1وmQ"Ν;!H0qD<6lR)֬Yd[5}DDDDl+Qn|Ii!p\[+p,GѝaވVY3-ҫW/ZBDD ~g6N'No߾mZaRu޽T|8|0233Q\\l?o6vQ?^CK[&k#;;+9cH<C)jiCLhwu7nzsj X`+B"`ܹ?>8Vl=z{zzbԩxg~ fBppifHHۇ2ֶNZr9so?1͵{bСCpuuOFW^y󟑟5W_7|r꫐x[~3aR&?b҈1$rfĻe&9g{Dw4<_qqRMZZtR|gx饗₿o(,,D`` ϟVn: ȀNèQL97W ɓ'cӦMfב777D"DDD !!GE޽Tؾ};ϟDEEa۶m N\h;'ȑ# ^Cs #G /R{ʂX,n{MDD_[G8G@PVVrb}f72|qD1VEBk_߈ܵběS.٘$̘14ՕhϞ]=8Bj Νc[}-999js;D !ٔs%=t7" u}FBe@‹0z7=`0$rA ?.7Jkm;vЭPVVfl!`8Eִ֨iEDDDu"cҔ9::b:"`HD]FvvK ""SJ ɦHշxPo5#;-DDD2 0M ql6^Iaθk&M sVk>|QWw\ZZd ԕ0M.BUl?^hq۲k=GDDD]OSAv 0Ms [a9MBgӦM ða6l@bb"ZtNҥK1k,x{{7yhÇqIrx{{CLL jG}/ 888w9r$\]][~DDD`O{]%C)#b\*V?o*-֯X}GXM9z(N>t_nݺaРA0`@s.\={W^Rؽ{7v؁{C,=7i8~.\wd9s֭P?3g ..δ}}9r$n QԖ`xPjjdiQg`H6gvirJ0-.G"x΢fA7iЫW/]r999(//7ѣ! ~9sjQ^^T #FH$\r @ VEyy9.]¨Q_ۛk -X b0$+uT/&e~&!ގi nܸ1cW_}ٳgC$a|2~a899æJ%n݊QF!66rZִϰi& 8GAtt4#''={oJEEE1h ];-2y/ Qs8L@6i 71s%:4ݻÇGmm-*++jq17ݺu'~yrzpvv?L1`_d2YSYz=N<;:u +V-[ꊞ={ZlͭGKXE0Mr ?wGˍ.pttF7`4౾ úum6ۿo>?3f̙3ѳgO_/,\F} Xp!O| hQg`H6U!0fSz F x'裏_~%n h48r@ IDATƎ `„ ߿FBBD"Q}bt=<==ۻ(/ p`%mDhnVVMvs=Nmӕ$ImVrd4&mL[7у7ĈF`3a8^k~>Xyy /p+7aH6eLM='WN:v^ANȔ1'G46x;2o޼|#ɲe˲e˖޽A9nܸܹ׶gժUY6lbN !Ⱥ?9#UsȏRWMMMf̘/پ}{ /UR]] `ٶm[hѢL>8=\&M#Fھ~w}y׳ylڴ)-ʕ+s V oJ)z`E>;wTGOoɎ]ʼOۧs??d9sfFQygΝ5jT>|ooG͂ } 6,3gٳ{{y{֦&<@6mڔ444ww3z&xHMMIGŚ51zus.v;۳Us{6=8lPe>*U2,y睙ӦMSNp$!{.̤INTWg/Z|y>{XbGɞV  '  '  '  '  '  '  '  '  '  '  '  7dOWkkɞp!رcON---'{ \J P8aP8aP8aP8aP8aP8aP8aP8aP8aP8aP8aP8aP8aP'{ptuuWyuvyBǮɸq3yyC& 9%uuume׮؝$IeeeJuuM Ag zy7sWdРA't춶ҋy9i'tl8\~[ٙ ץqՊ[&[nΝLwwwٙ;۳u[&Vdu<򗿜믿]tE}<73dȐ޽{7gyf{0aB$UW]=uvvST?0ݝ7dulٲ9]oWlٜM+qtwwǙO7|smۖgyx 6m/-[5kdΜ9I[n%_~yG}4/,SLɽޛEðstvv\Yt"uuu_ G¥{Y5mGulfvd 0Ͱ{;ޑӧGٳ{?'??ٳ; :4I}^}\z;vl϶z8qЩ06+kvJKsQGv1v:f<]]]җ)SdĈ[jժ/|K_e]!Cd֬Yyswϰa2o޼_e|ӟ΄ 2z|8ܹs#|rl۶-~{.]ƞz̝;믿>W$?}kTUUe̙S0ڵ-85xپ}~_o=?,X sO{TVVfΜ9Gwݼk:uj.466˳>ɟI Wŋseu7gѢEٱcG=w 7!_|q$ݻc }}Χ?̟??wΒ%K/8C[ۚ<,XȺ-Gc=^|Ş;w\pyٰaC>g̙=zt/;g2qL2%G'x"Io93sg _B,XpyΞ=;y'칌nH½ahѢ92ӧO? aHiӛуiooϦo1̙s2I^{tuu6dȐ\~yx3<3ɞw۶mے$J3k֬L81'Ṅ>l޼ǫ 7ܐGy$Ypa<#ٵkW|Ȋ!MtvvfM'l͛7וdOhթ=>omذaγ>+VdŊYzu6nxypɒ%ihhȘ1c$\rIOw!?aHiHl|:&O8=> {nӟ馛dɒ?4s~y}DsȊ!UЯtuue۶ޭ[}?ϲe˳~Þu=:ӦM˵dA}k֭9rT*+Jxg??>]w&grg„ kdɒtuu+8>cƌɌ3o|#?Ozv-@̙#n~*Ol+m;Zٙoe˖^_beVXW>0m+mm;RWWp07~6zk:::r7M7tTshWQ5kZ+[9\rauٺO>xI+}KsQIu駟?}O{nq~q Q:9ߗ?6|+++?<9ҋ[x/^q@үڵ,^|:~%F|g֮]dر+/1MM}>=;(BJ W::~:~%IoMܱߥ_?ۧSO0G46p9Ұ{!k֬9v~HүH}=Ir~?fiIK_w??|co͚>kUUUgǏ0䔵wW_שHE7%ugGb~.1t" W*++yX_{}駟 PBN7~e 8j=m)9X"_9.|,W]uu}M}pkllBN7~eРAGߟ~ϲfڬY&=K^x!_lٲ^knnW#>6]wݕ |ݝ _z)TTT/⋇=n!G\s5Ypa֯_QFz/뮻/blԧ>uTc3HuuQގ& zmٲWN qFmzX]}-#hd)k֬ɼyܜ{.y{z^oii5\}kkky477gРAꪫr饗wܧ~:˖-{y睙4iRʴ+=:{2r$ʕ+p¬Y&Çܹss9$I/_~:{n 6,Of̘1Y|yvܙ /07|s^ˢEf͚tttdĉ7o^jkk{OdyWٙ.(^xa.\TUUns^o7}9/_<-JCCC.]ݻwg̙3gN***i7x#=PR__.,_~yVZ?lٲ%wqG8I[['Əm۶宻ʒ%K2k֬lْٳgk+ 5^{mF  þ溯;疖[.]tQꪬ\2sO9L2qs]womݖkCs]w峟lF^}bŊ}ݙ;wn&LW_}5?Os 7ƿ>Ew/>C4|كhGmmmyThmm͘1cRQQ'fȐ!y$k׮Muuu}ݹ[3mڴꫯΰaظ_#[[[{ƦM֖1cdǎysgĈϔ)SRQQ,X А̘1#[lu쫮*sICCC ֳ/SWWiӦ&vJwy 2|?>cǎMGGG^|ř:uj2cƌ${.?~|2}޽;Ii{9+Ȍ3R__ . ǏOKKKtww7ߜ??uuu9s{,nk'?{L>=袋R[[c`GK/8X1_YǦ)DkYzH2_~y}\r%^{SYYɓ'ڿ6UUW,wޝ#gqFjjjٙ:+2u̚5罯ZgΞKL=sew.oޞ]v3qƼKiiiI[[[s%tM6=6mPWMMA`TUU>YbE:::2eʔM}Ё({oʕy& .q}[ YתԱ0p3. 8c]kƌykկ)GݻqƜ}ٽY&UUUh0`@>O_̒%K|'rK.lذ!ǏG?w֭ٺu~r4hP +Wf={v <87z0}ϣyZwww֮]k6VzqVXѳVvʆ ;ӧ=}WSS/5jVo.%_Nø =7<4pL~}:3g̳>]v\ג%K2vV֯_aÆ RUVVfƌ?~N${Vnz9dСy,W\qE.Ҝ}ټys3tC@[[ZZR[[#G^~f}v_Z[[S[[s/Ν;okaH7`3.Ç<><}tdƌLV e]_~9֭뉠 &dժUկ~?nm80ofV^;vdill ŋgիjժ'MM6'LGGG6lؐW_}owm˖-ijj֭[Ԕ~?k׮\vښ}( C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C CŐQIDAT C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C Cd!~IENDB`secrets-5.1/screenshots/start.png000066400000000000000000001451671415312107300172450ustar00rootroot00000000000000PNG  IHDRXVsBIT|dtEXtSoftwaregnome-screenshot> IDATxy%U}3ӳ3ʀl& ( *hh~c7D1.A\U}Y{zzz}ﭪT݆YZ適3{Vխۆzs1JKW766618gΜU*c} P,O޹xe]JB(dDjkk[߿mrI&1FJe)J /˕ P;vlSgg{Μٮ n5;\CPXe;::>5E388hmOh``@'544L=J%mܸ^---ZhAX!p(~{,`(ETggN;t4<<4y.]kWkvxciGT.SGU.uijͪT+:}iZaժXuߟy*Y^3Nk*}+ > =ò3NW\>e + `=Ø+Yso,8wZlVzJ\:5U3O_|'ߟ}}?84{\g긽=d0KF:M]Sc{Yf#hkk;֧pTb8Q x5kݫysLq<:>OQ1h ?f۔)~̉DpqZ!M6mBr\S1ҵo߄s~̉DpqZ O}iӎ{gܬo~|X+/}<}3?q]_鉭4U+/ZM:XԕWSo$c4s 7oyf;:n6}ӟ{n]v韎z\臷ܪ~v٫b _*]|c>ƍnVR+^~tmа4}b8`GbX(TWW/|?*KVrq{翠u7ꪷNZyܵ[߹{z߾G?kt0=lmz~ǝZ~x|>_ܥfr '/}T_Wtbq"`hth޽?e'O/pkM yUUXDWd3s߾SsfVTzl~ǝO:t//I|r7^#I.he_ӦN|+Xd}Cɓ'KVY{~q;Qk%vkN![!ժnw{UZ瞣7u'?s|ݒ ^w|%I/xkܹG-Uz寐lIT*I7-Oh%z{߯]|~{}͛7WWMZd_SIz{߯=G=v>Ku[ޤ'8f񣡡A?c[hΝ_^F״i?K:J;7}OQKs.\}T,_j=e뤕'jddD5 _ojԩK.LzԵ*no[=zlʿI+OGկ\uuL uV}}}g>zXB^fEMP.UV`XW,&zԶo$}K_Ԭ?~;UU{YzUoOn +5} Żqm'En]kk?)cykk…zZ=hzK_|5Ϗ~z뿪::t㷿+kϋ_+Yk-@[:y͏hZ`:籿sv>KK/NkWKsO={dU>םyN;7 ׯ]^ӭ߻IgJTV5p|@4}ts9{Zp.J%]o$GӇ#ԫ^q.8|M:MbϽ$Ik7mJ^N P\mMӔSSf:o߭{$~-?Eg Iy?_ܥys˵q惾'֖ڽG~N7n͑oBmmS{~_s֪SOCя= G\+X;;:k,ںmDŽ^k5\=u~5=hkYܧ>9:C)\^+Vuz~`pPwKo+|s9 ׇzЩ/8Y'j%ڸq^mۡٳڵfz]t}h& Cu߯榦>gTook^yΟ0 7oy{kPg+z^oU{;:UWǞV۶oͷ&t4uTlkn浯ӽ߯W^r|IYktb嗪}d=K.֗zVY_hͺu>mkEzwK.Zq~u'>&ctÍM?YyՒ:}_9%Ik֭Ӧ͛u)1_cC>я賟oܨV_?j9e/}xAmݶMy3{=e^K[Iқ|~$!y|$]?v?MGfXJluӕW]'n$jokP=UDAk{^OZ9j{vZ~A\u9gkͺZd֬[w]v=Zafk]W9Qz`єɓy_}ݚ3=>URVR$ NRgW$YUU*IQ0W\yN\GO˿JKOЛxVB}}ޮu6ӟ|l|WSiŲ~HI{|?5=54wIM?k.8<546~Sy+9IZ`.{O'O#5kmtm5p ^S? بrڙ4kf~4R*i֬v]+tbY9/ugܳCB?q}_C֞{o&=ӵ>ka&ժGԩmzkR?غMajt_?yKt=A}wVoi:3Aq GcݺmǸn#kmr/I--΍_1&YnYI&@?llX__~}]]G^ぁ~ Z8JE({kz`b49dp|q;n.e*i"( kz vZI]{4sƌ =D:B0dkb3@XE'>x7q6QK4880! [+xt+iohkg 9\V=zpf]i+*k=Z-\0gL~\3pqPI^h08ST  8zpI rRlE\.7źC>5;#]CP X5ky9rmب\.+kMZl6lڬ|>˖iM* Zl6lڬbO͏N',\͏>:-\@cdN-Xp-:po,8cy={َOyCV ,X}Z~'򜞓t2-Xpo,8cy}bX"@]pdRtp 9O~ǐraJ G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  qC8!d2`G0#@  #jZUZ֪TVdL}1啕 52<ȫpJ@C%UP#da$+c$OF O95j/jRCAE5r`ǁZ ,;F@ d%Yy2}ol(mxk#0>0VՊJU_FdQΓ9MnӤ:MoSS\a/c='xfJUԮau(M[B h$<?$6FD/Fdׄj5A3[Xx L=ݯrʸvКU(E$ a IDATCcB88*Τ3?g %YIyӤNnT{k 9:์`e?ԎAm8qeUMVQ֤x;r$c&c m\qtMdèUoX(j&͝ҨBAx!s\c6ws$YT`C]H[=Bc)Ir?IGWݤ4C:#+W*]kT\9͛ҬyXd;%Cx aݷmDcB񌼸#sʤJRFaʸrM}iEȫ9^RXLHMRL$*ݷqM<˩Qs!mZ4UyS 3\=[;pT+xFx>4dd'TɬfTuU=$8+k[V~G(Sc)jzs=p 9$V#*]b“F0*œGW=0<& Q}E۴ji1uJ[W0?iBZE1FɾgER!4ִNꄵeG?&q3ڽx#y&;詩יjrCC!cݯاRY6v0O$P55U:/܅Ϯ2V%#J@%$AM50k.uEI`\2R PA3n7=\^ 4j6k7H&֌Z'хEvm4 i+1V ^8Mӛ"1X?ݴ[=eY*u5 gP(EK@Jyk&0jfTϤŌ mܤ7|񣟓iN⊨MM6s:w Mk"pL=}úmNu aR>nJOk=x^`@V%VɸB+PV9.YnƯ lg/ůKM'4Q[>CGM m|lZ P64nwl*ڥ}#eC@{K_*'A})wVQ¢X88ZrYAJ525)Gh/E!4zMj>Ύ ]Ú8}ښsp* Va|ކ*F8h#/kt凚2h8,&ɫ*' C&&9kj\pt@L&Ѱ}%4޷RVb`\i v09 B U{k51 wXۡ܌Ѭ쟦frx4zAՎYvf 7M4^0^¤ A _^cW5MiUNFɬVRSh>Nײ^#"^ܯF[)iu+t5E"qSqu1&R$m3& 撳TTGj)s3nC_jjS]GC8Jׯ{wD&^J$AѨgH*wq%KO0nbx[_Vkts3V[KMyn_OYµ*=T2 oǢCEḶ$(փOv+kxpO6T+nMdCn)x?ZxcY?-8ƇM* uU SݻC%kSBT8P)ju,٧[-ee0\FB=G-k_4YC5%7Sj8HnI%'\gۘ˫N34^BA'~ᑪzQ࠺zsOJC ei`Ha2"qqh%"k}ɆGL^q3hi+hLCi=}J>'UP'%+P_TPT C5N'IF@oکjddB+#2a-?WV mhRk,MޮrFН!X-Ҥ%SFt E0qPg[6J ^:xN6^ЅOJUd8x88YI]㪀5x7qGk &D'cdZJ0mdXn[1]ަLj-ma&,>vzNiхh[/wJքtښ6Y1]+3 ֌bY\Nڬ :eZ3xcz6-GBT.Sڼ;NxǨpѻIдsiNݬ')W'i4RWѶ!޵_[;cvَT.IX͚/ +T[~YUeMAaIg/C-XL8q#mdɈ mxQB7*~aDz5 V!ٙ:qf & {cкv˨J I+Th2a\F(mtUAcrxh[IA\Z˹Ѹ3tPq,9M!x]E.גZ~LU\[kRճ64EiH!)(^|&֝dO^xߣBxB㖼PMIgUg\P*2:IQ+`ޒv34}!KCMR 2{fqTsgLSS^yyRhdPS U={յiʕ!blDzF*WQu_Ua[֨:'T*Feق4qf-b}AQqhXtr6LjuI7U?(B4YPa ?ȘPAj"aPνԳ[ ) jdf⊟5Z[-N{+?pF:HfMs6]$%U7+NT#334qV&lFQd4.-)e%7ءTI Yqs/f*nnR7TxMȃ tM%d@klFa2it IlLmu'IqI߇QN`vT=tR 0ƪxLQg4Ӝ){R߰+/hb?k+$Y#U*&M^Ю4o"-5C'A-Ey2’v \Оe’ T\J% *ٰ] |0^wwj-6oƫRjk_vXٸ&Tt[c]jx8zִGlD[ɷmcpT H~2ʅQcL4-xB7Y(MᖠY mo ULz*+ 5i M40-Xdw$ڴnΈ꒢XH*Larj{x[wt cMڄ.mu;t&Y6ÝMc3ܐ)jnRQņ&ik$T a irC&-_Y+iђZ8M5AX_˩X *h_PR V>gP_TTW+ B"T u-+V;إzU25*̢u,m5I%*.ɿl:qF*Va)Lny w5*:kh}|/?TѮ:rU3늚1g7hܩ7}47NuŨJ(U4w8@&rxZSӗ)n]ӼjeVICmZJ[w3)0{ PDs*,#ڤ=/'wJGޚul4Κ{V IDAT_dTyPT{KZE8 ,$HW;먬Qft+ڄcnQ Zwi00554ܥ@*5'Iz<[( iʶ&FM^Q-[;LV֞u4q˨ GWBERjPU}eye_=}V[cNC#W[>ԔMiV[65Nm-+x9*U_#:J7գz4\SidX!a5y?{o,Iv_}RY[z_g1X 0]+)"ђe9l95["[R%9,H` f{ޛ(6QX3UʪsO=Zᚆ{T;W <7h'L.T_^h0`XwƄsQy+AMa?a+ itdo #tD@&j];H >;ʬi_}*|Vo+ѣGzbأGOO88I%A cͱ0 "&D 1ܚT|%>ysAAfK$In2]7oxmh:VAe' -^`tj"9$_Ry5LNz#9Ƥ%vLd_M88֨&"!FBqG"}i5R*QkD%Ĺި[P+ֳI;f<8yI}v--)^kg= k˳PXʨ?r|*o&H$>A,F_Z#A߅6]R+ʸ:C$"m5l*l gPIN%*dF(Wf V\Tig:֭SN=#VFݐƠ\{Ι.wG\ 1Ra d!-S6i[Ʊ[WVܝιw|»G?BǨ_- DZ,H ~O)؏ኌK/~_ h Ĕ<>Ʒ>`|{01N=6KI;_蟸2UD6P~ڐ5af9]>0fFAG۔Ye8WUݞѣѣSⵇ'"HA5NNO]t閸!.n/\z)2˧n]ƤK8qsmRH#9{\H2: gPq0Z: αBx|| enfaQ"# "4.y`\x4^q>̃r:Ta(9&" ꮡ 'ܸ <K-W4(bMۖզeYk5<89޽>S`Rýٟ+^\cz3?[s^Gy%kX7,k[O'/htdx~.8p,Bϗ(XEXñ3MԴ;Um>.y!Г=z>=zx (0_רv6;E#M]Q@z?m˷滫\Tǟ*,[Qju.l먌'64ųe ֙ VX-SnFR t12 Ce )c9: _ax 0@`Pe^be~ev_ @Z+/ +|}78 /s?Qn3GgTZzssDDޯd.?%Zm#͇Op"҉@gM6d3NHɼa=z|?a=z<W?jTGLLL%Qi164B<E^y6v᏾|y~hlwy,TH Q^.vP*{ ՘Bȟ\ 1t;>'IPYaeL9AnU0a^/)z0΅t֡zMˬްX̚lF[T=X2&go m*vU͝+A7?8 Y0"Qkgk-8.8\-9Wb+2+0 嫌vػkE=@KMNv~>2~׾.xD.ՠ˅0O RFzޞ$m+Xh ?SeyD }\O\xDTE/hZa=z|?a=z<WNT)X#FSUB5P7{&X#|٫|9MOvAn gIs.S8c o>v)eUjmI$!$ n FcB + IHΰ`2, J2'25 QiǫҴٺpt|zfa9`BQUh"[1]`j?+|ѣӢ'=zX-MC'`;S3#B"X~xq^'~`t=qyQlG鈭t/D#]XK'1-IRm4!8*SISxX0 (2,J q^YoZ %=rx>c6l6!< 놽݊I')jjd7%^x˻CbL$A9 )E-x`Nyp|)9-Ɇ֬v,09RL_cr&Wؿh 0 w|G/,Z 1;L&{|c/_{O_|޻! ƃ&f@j+٥]aXM*sxL.6\8 g;ѮS1SWhcXEy\֎Q~^O{)=zx |p:bBeܥJg50@V`KU>rmzço]w>8nS' @H vjZ #aN $(@ѺMX yf2TeTZƃqU0 m4-cPg]/6M;)rz6e>Z/iû]Eq u쎕)2mƍa2UۑTنxΛ3:<ャV'G1>CXuxF=5oq4sm&o0pgd`sTY]stp U h\K|Sq;o_7{r{QK|MciGB.tLkG 3I=Z;. $rfidJ';(X7-g\d|ѣPa=z<mTqk.VITֈx+N$ E&|ΕPC5gnw.%neҔ 6w! 3A"mͣQ9 %*q20eYey(3KY< `n)2KB!et8GgK>8Σ3q|rr1c^i6H`6 o*kXmn٭\=vyhTa<(,[rp2pd͛ ~7|01O`z cXatXc0VPqe.vn\cäf918<{'\rYMkn-yn\xtto6_;|jĵkh-h^RkjW#K%}an]bgw`Tb2BUAqU8oxx xkgqDϟęÆH}+c4 #syq*\M UIYd ИQ\sm[#Au kq·ӼD 8ے'Ͼ8Kv1SDZz3[x`x9<<sO)k` ܚҭ׎qu[֡u9:`U y|Ÿ`lE>K#ӚҔ|rhxprʗ^/~m.]2[d.tK|jP2ݪpX/Pti!wb %}DRG"k ʺ\l(&!&T?9;k{gİG=#5$TRD5k[%шp}HazY.(M|xxN%$RH/4{YG. xrŵIBhi҅ӄaӴuݰ4/M<<[rxãsrt| 8G3p+ķd5`2` t}@V9r||s~_?8ٔtN043+ֈT:FWuP8Re1]3bfX\9 k1ڍkWic~ow#FhX\^kY",[nF؍-.ut1|4+|55FpxmVJO lK#ʏ|z? İG=ckQ B?V궟OA  ʩ%"uͤT) fz W&T&QyJly1e0_m6.N<:xÓ)9>9gqv"V/Ahkf7hTCFJح *$/h=xbM}ږ%>:O{G{tb9C X/R_dƣ)9:=9nz.`3FԇcCbffBuA3^-U4eɬkJ1Xx!7x!gmW,a3]#BK.PrȼxTkZU׭ Z)i!'gk^z 5#t1~B a3 2Ԍҋ\\g`] Ii:8K &ΎJPӬbH5hhU#)*QvF|,z]TUȭOu. ? 0=zoİG=V ᓕ4Cn*݆h?\b5548d-ܤdPT,˹W;(.\ .AUhZ|p<[|ɽsGGgqzvzz3hV[dPTH9B!x")Z_p\^*ܠ`tYlf֡^8m׎~._zҜ X!~5KpK d֒[56tu: <dЈ?M"F,GL6}wCvd3Үd0 k\~%.ݹI95TM^hM\iŤ%E7 ֞Ŀ?`˶Dq^C'n/\^=zá'=zTHIb4EvI5IKk>#>Ynh[;*HR BjH 92̲3TyΠ(Y'Xl{Gs9<'tģcOLO#!< hځ>2 +Ȳ`]m` ܟћN&Q+[pPY XNf5+8zΎhAk-G&JD2L6$es#->'3@.ЕYa"bѦ =?zS FU59FP1/==`3XCf8U-oŤn+|bmƯ[=BRhqτ,B!]C@cU!_M~=)ѣG=1ѣGtłx6&$ќ?"|X[Ζ4>*Dcq6'vYVR$B-i V enci+ MW-|<O#<:!zva=fh bD2xD6*ɳVզf7 }uh@2J4+d/Y0|_|1ݧ9y#pg@  !>FxJd%F7_Z,rrN.`lkn1qѸ~ IDATmh^ Tm7Hm9w3y%b8QXQۭl$+VU9tC#3B`"#II|if1HLNqOTQ#񫉶dI'n_ {{DO {)Pd6nf3O:$I9 W!Jvє%Awߢ1T$;+m.PdBnkCV]zXbr<]ڽccڣGp]A3"02CƗv'cɈŒJlc,65ˌm`y VpZ!'<<]:޿?9;| g<7Et!kŘatޡv?h1vҾ]Ҝ5ƂALT3OFiqͼk(*(K ${Tמcٽ~jPIP Svu;ޠ]h7k6$ðFbiέ-Y~= IQLzH1Б@hWvNe ȍW>qy'=z'=z񇄈 VΊ{qs N7UZ$ɜ;k.l ^w>>l_ґH\TR]n-^B|N5TUS٢7SztsD}GvaLv(v&#!ըUA[{NWjMm2r(G Ӳnkk8Xoȝ8pLJf}3 "11!719k~T{T ;(h44/Y%;,216|+5͂ k 6d6NJEԂȊ+/0G@ )dMk gMt(ε%VC|z!ԍH,V$ u8C%E`LmK?Gt!İtm Woӽ}G=oİG=Sîv!P#9R!)"kM=>C*͇6mإSjR } d0TUTR_gahQ!\G, дcZ$RʳX/k9̓)o2?=E8H^a w.fOÊ0$<`W״- l`ƭLΡmEtAszpv0D}b3lDVQ]-W.QNFTUEU<7<#iQч{ԏS#vZ5:c *1,X01D&SQ-{ KJU ֨vv.Pp5" J6Эݴ.tDդe: rr2`G#qE5 ê Fe(VAV~zdi6 rE4scmVyFV;d:9W@bT` 7n_Jh4J,',-),( V Cݜ,Q֨m[cԇ1 Ţ".=+7= ['d6C mGWѰ&p{(@+]}G̗>> ]uv3@#i^7.$ Q.x?E23ɞѣ =1ѣG!F; n*ndSiꌓ8whT6o| ?Nl;VMl IVQP';я:5h36XI';0Ln[#ϕE3]6.6L<9ZMmPFC0CRUՀAU1ՠd0(ei8B?&׆lS3bDqHv|7)&cj,,a!T{,Q$eGC21nz_BGcH! n\cpPX %Q+\<&=EGlA:54(~!&&JmhTtJ_$NjA Ĕ kjW?yW {ѣS`\ e|%Sҕ-t^Uʷ/(9\5Ko{NTٱ!]̿Y@ϓILq!#̙Bªu,A]cj*xW5NjEfCXUIHV EF9PV%êAYR9U1,2&0ɕamM[/aBKt9/gfALiVR0n5h¸  *d ~eф(j5]j|EȌ"dCgl%dLO;tJcWK|iF,(ȇC";; C,GxѮ%@4اFRx ѫmD !V%Th$HgUUpA*'񂗠fw:~:E1?-~~G=~a=z<ƃI&#l !3fZ2h@q]. #qBc 3ODߪ"̭&멦J^4ֆg?}zW {㇁ѣSٽ g(ѨȖhiTO,[\Pn.*[A/#˺o-~#4bhT0%E]MBe,$1i#(W)ړζ,-yVclF +kqhU3mZ:2&Ƞ* a5`R T`,9E!0qJ>1h)f3Y^HYu-BrGARE%N1 2~>)*"&~Ocȍ!78J[EZs|2^BU^1HGvLTŷ-1ʆk87+Dm[wi+Tqto%_ѣGzbأGOǗ~#3S[2i%~kU~r/}Gaw>wŦ|)xiT\9L$?/'>=yeZA, 6+N׎ueֶއ9< *cwSLʜ,˰6Apxm)ġ95GyqkH [4{zzGUe2;/h$npf悊֝D„/}ehҸ+?kϻs{&jj~[h*_ʟ{J_ǻ'N9N4P|_ R̓I5~^#3am'n|L㷄/-f[ cئvvxynO?ӓ=z=zxJ8vd@(ݬa.#0%x={L7wxe cW-Y[.J !HTlU0U;UCF{MzeFu8koAm09䥧RytrnmVu 3pP\<)viĵGAN[5jzi]kmY׎ ߺƳnV%u\zׄ7ٷ8r{&( ָfC6lnCr O<$)Lswts~>&5=P$Cc2+g_5=:YtQZ@|R.\+[.5¯z_5FpDs._@J4Z#ԇY6UJojxm)m[Zd]f"|3k0a\d?,ӗ-)DU-X%Y&"Ͼp_䓤0.-/XPSvp4͗te;'fF_&rxyɷv0ae`~ӷɞѣLJѣ[o>qNK@&ҽ}n;h jDu&%{L{ %q-J 1L$҅H,)#XK%uj:u` CdMk[J\9w ;U0go+*`u.p| 'roܝ:,@=0^Fr,&Emi\K=cPg/~UW_~rgdk{:`~ūƧn3%^d!`#M hH?~H@~7Qz6ˀƵC|^C:| SG=>DİG=|Kb'\GnU13ˠ VP1f1X!f [+)u39 ,SI=)NJV$$=Łt3cAisGbJcjJŴ!u RY[P` ,Ww %2*32a3A 3|^=g/tH,-lXMJbR@xvq%4Ia/Bӄu,L;^ސW`\ xU??:?cRe;tO { zbأG2cڊQ!A)qaI }AyPXKn YlD9h8{Ƴiu u#N0>6%4DpƇ6ՙ Dzkx< ^ -V3Ƚ Lп>[Eaen)0Ohl$kin[VM|pp6_1//Vkz-ȍH>Dln|vw?86d@T¬ ıh;PS ȳ@ A9ebn瞧ʿzxj$q5Ws>)L:*k_xE\%T[?y?ʍ" O{}.= ((EnyIa=z;CO {{+.1-֘8#QKK!L%,_Yfȭ%1UiT1ls-ΆF8?o@$(V_1ʥܢ\݈` d^(0I;WA cRXe$Ĵ,,dkL8Fn=ei8[9y4tٔljfSy]U}Zk}ιs2aHB&fDcJST[ժZ:8[[PQQ! c }}ɽ$pI<Kιg}ߵc*)x%-dMM5bY\BTԧqMQb{G)h[?狦Of>i ?o>[p꣸F+.rXNJ،}=M _i dE(xfߣVh-"2<ϫ jfL8O>5k)aU[2zULZ%jYR[(y V|uzLmA8\ +J-4h!,yhY$#Jqq{ !VӸxp[R\4(tC!X4߻Uˀ"Њ+fM<חuFYoxǼBDH0B`Q8(VߕWiO}C}C~ t 8K^|_: ̒d)qg I+MDkקi4ͧʔElj˧[5MGZ &P #AoE[GhZ矩ElM+Α IB%J)򵄻zjô IDATν=tR.W,Y2`|@9ͨU0TG@0&-V"m |@9.Ï^-ͧ8)w,#h[ O3O|HGZ |`LtSlrI xZ'bܺjo=sfnXB1d*B@+6t?BXOFʮ {̞^r,5?( b(z3Id&#J cU4:w(|2ZK-M iн5tK\T>rJG(ea)<'vxH<}xG@){C,HBȈB@'NɓFFq˧Zԃg4t(Mʽd]=N:Ҭ^4DIF%dQBVKpqJ$Diy_De5d`=gE/tTNW8U[|^(<>BlM>~Z<փs(wy4N$6#Nj[[ݝή^v*IX!z&QcFdGQ{yVyy(RG0:t(iBRCj>9]Y8TfLK1-峌VL|BC'P!^,9nw>gWՍ?/_;*ujZB>U_O֑Za[[/ %y j-]e^:)[&T.K*3p _٪ ʣ}^x8 K,iUF{A$82 <WʵTWa{Cjo%+{BBb݄01ݣذ'qWkOANzty9\^l9,Be)QbijjX# kՈJ1YaSye EYςi4O[ɧɧT(>x2Z׋.okQog.La('zk 0;S^:{TҰ qv)Z>^!'|JO0TPHP*ę#-QR24%|EY*6ųqbI+5jZEh񚅧7_Hs1KL!8$ !abF8B2&_EeT>DzګnaޞT˜0R 魆!j(#\ D6 P3ϧ ZHGɧ)\)}ˋhZoʨSQUgT%ZaF JHR\\Bwž qXEt\(H,xsw|c&oËs>e6FZo4B#J`椱(.-!E!P!R)GĶX}el=`(S/|z3z¨>e'kjDoFXCa5FPir(G5q||Ř'+0u|F0vD ?Zk1yR嬯kRgH&j%L|h)=aDwS[(V(W+*QLZ d5MƠրM0x(\p޸D."BRI0BD)4UѾi]Kc(.o` 3Gf(aQ󑵰SD!JgZE!6IbshҌU-9aIMhb6FXlɬ&9#} mTF)aQ3zZJwF#z#JJJWJXUZUPQȌM@)(AfSWT4FsgK(B!^ BqyF3}L{7&Y7s ]^`&4$ˈjR jDOX#FT0TaU\$*M&(gt#lP$d8fE ESD%4۷ ڼiJO̲Q|k9J%tU: *ݕ=\\Ԫ!aXVqQ ^T$!$5pcZk,Z8 (Z}k!=B!˝C!8̎j)qܘvٺ:KT>BffT0Tj>VFaVժCTAl)ڹzh0cbϘ%ۚ(h7l7J-3R(恬/ಯhHSGZ¤ÄjLg%bw9bWoݽ!JHO5$VBj6 QQ &`*:|Qz+e0^eh+qGsGϟBJ'P!3`RG :l6Y&.R7O,4jjLFTˆްFV#Z W ! ! * ((~HSx~M٣5HX}0[yoͻi _z?j*G,G ]YRՐV%5TRE%UTQi"TCMl KvT;) #B UY,JLͻ,#Nr-'bGOarJHWF\ !G8<(/xi ?a\q ZP6ԿB2[.o> V!/C!8Ry8*Րo߱ސjOE1q-&bl|}ʂ7 FafeJȹ 8m KP|R2m/% 7rcKs% Js8glF$Tj.t]cKW֮{BvCvWjVk$a FpI ꣜yUSc j\fRpԋ8MphApqcy^-P!8$ !SR #>`oo4Q i I[ClʹOV`tHY\j\y*M<=2eP'2)COj[F1Sh#O_ 4 GdaLwoe6ul[csW]vtFacbH#*éN@QTa\!{0<#6>}Cs"BW0 B"0Zdz?6j5Q.!uF1(cpAy m&˃(/y$8ɌG 6T7vDh+x`91Y1NᜣtvUٴzyzgM{CvtW[\#E(mCY>iG:6%3S0y0CM Uˡq(>h㋟ӆ !l EEE5>5Ơ< QCediS e8Q)X)"3KO7Jx8RR|рiSXG6tj[/[:+l [V| $ʡ˧[7UlFbST㔏4 iBJ5̜11}9!OBVePMdy27(x>G(V y(5JS.mieyq9zR-!Q0h2giK3 >){+<7v]U**YTå8(h8꣞6(cP`y,d)6 t乲i/h`TcfL_B!`(/2Lg~x Q^9|J|x`Y L9VԜ#,6Kv.&&Y!ͨ)MQBocA{iʘ8ApwWeÚ%Uqq e%&q&c|Q;Exe1Z)B! }67!ݶ\xd,ʧ7IJS C}UjQ $o aWE(JE  ŀb>QFXP-V{QIހ>CtPJd^p'3>+_S2=5F H(2ǚƣ m}6BpƠ=rF93pd<%B!L%B +oۈ4ɰiJˆޞ *qBVH(0JS<=ОW q$!eSm<@PqVlDZlB%|=a>RQQ@kҠt- RX h(ӦY\-B {2b(/AJ)fOȌclض,IpiJ4. !MpYrg3֠ hPH]Kc\AZJjx5V`| ~7g h㈴KϠ 8S (qJpPiY)8tV;s@52JT^E[)̙8:qB!%F !HWoq?n^jV%KjdiR|a*c \)/@kЂ+54-dV(1b h NҘZBFÈ&Θ>+NʔQ-h%P!x)`(/C涻Ŏ;Hs(g룄yC9p)98`"MdMdMmR+4)ZSV3ƴ`.>hK$ !/m eZ˺{uؼy I, t>AaЄ*65uG5u@UBJ>MEZό1m,9S03CyhB[mO>>yynɧ`m3s֒|u7pwڵڵ];hog v\y|}Mq&vEE1樣u҉\r:|G455 x5q]ˌ7nsn/+?͍׬}_tsh͘1c;4xe97sm;;bݺY 8쳉99/BW2 Ba|ACƁDQK|ƍlظsoo𸵖o}{_1Qݲ[Ӧ͛ ߾vg"}Aal~}owwbìX0w_ IDATnؗ>k>͚O}``q$i!x!x9鄁qW}5bʕi?hN4SO9}?OKk]~v ?͙}ާCcN[O;׳ybՓP?~o|oi gm۷~m~~/c GO13gT*ʌ33X|Z\Pg.i淯7ryzq/~+,_9sPxsssGͱ3g2j<ؙ3_=״BȈbX?t=,ݍڽ~q#FX4s6ٯe{m{] Gap'>RE X#}晜2DqαaFob<,[0_ؚ;4>O ޳g=}M[k+sN;GZ10>ʇɲ1Zjjze h4b_f M‡̜1;w-5\}sb?z$>|9cعk7r+ۏg3c?|k/^Ə|?`ȑ|+_:6kZ!^IdP1l}CW {Zro'|˺<~w6nw챍4yϻj߼eKcJy|?yԄ֚Fotg/|K.=.83:Wɂ(+_[=vu X#Gg.^D{{;J)N§ soظݸ[P;uVy͹gոeVѸ'L ȯUOnCqM !˕C!觭^u~Ͻ|o'W8&I#::+hs(n^LݯV_1ȋWwzh皯7fpy'cЯ|/._kmc:z,uO$~j 2.{O,hqH9zHvקvZ1<^~ Vո?io7;MMMMo`i1a8JǞ8AW\ΕW\N5 yU{}Ȳq{Yns}'{H` vE_nSZ˭]Ky㕯g455W4J>w6W ߸aP_>-lc0w8<"_kpѓ<@oq[kisˤW>kZL2by8|0GBW Bai#g ku z<֬_̇>Z13/nߨTGBW1B KFF)E ??7WcuXlYc =xNT>)&O4jlisπmPVyס_d(Z'܀?`4\OcN<0O^e׬}zO[? >w67 5c8h2gg֖fz~<~Z?mg'狟GF{|T}yoР 8q\_YiSYrƢk+*◍KXSzl_[.sCؿ3zՐZ3 F✳PT(4q"sgG>Ws/IL23R%gcJyPJ3~8?8x矼ѳr0yf~so~Õ5roni6s9h)\tL? jJKk+'J)* cüW\¦-[X~=F䒋/:{ 8Gdܹ=j7~z 9TfLv3MSRc{,ϛhkmx9]o={ÓOaOg^$㎙ɳf/IRyJ#9Ϻ i(yǟ{iR8FC+Vm^ۺuv|&L?[`k) 9bPoGKo]!{={r֒Ŵ"vEXM{{xp…C)b-wo-[{>F:Kgg{gͷ;x[LStD?`9.[ƚHɓ'5\L:6gOmm,9c!Ǝm`s]7re۟l}m9q8Ss&2V<0Bs:)~N83<Fttp%Sոl޼fL8E S*(+,[[Q44q̙̌}*J)~ؾc?[g}\}?<7|;,Kٴy3q;f ݿ=xBƏx͜SO-[6Q*51S9#?iCaF°ƨX0c}cl=1:k晞Z~ЁXk;?nsf5lO?C3y^V^ 0r/Gr%%53?s/9c5ju+.,se,^;!H LB0Ƞ: Vmm޿u׷N~կ8EUV! p[Z_8O9{>~}gÏd֬9rXfά~ȃ7iܪU+f峃YvU^Ƀޟ5W#g|\t%moNw{4uuuytRմ?ևknٔ9{yoOcCcnޜtv;p455Mا=rE{y;q"q3p=z,3G>Mu,zO9tHw2cƌ^Usu466d}Ejkk'w6Ѽ Ǭ'kMmZj˩Ssyr-ZrU(_Om̟ߚ ӧO[Wb\x1㩭IGǡ,?/ .Gw3cl}}֭]sg܅{Æ4~*ZS475e<ԕwEҜcOW^Ϳ#KP֖ۛ,YܖyekihhȒŋWՕ[.LsSsvv;?#ז^Fv6\55XؙiЖ=V齠y4VmٜߟZu]Ii=es~hk9_?_y9xlٴ1fٍ$vyx̟ߚܺzդ UlZK284cǏ|ɬh_~v/\`ӾlyҒ[@{ڼ9--;gN#뻪njXܲpai̚53>$IrםҶdInͭinn'+D-mkɉI]]sOOOOPWWV,oϷny2gl~';'v̟ߚYff/ϜU7u1lj?3_̝U\TWW<'et:ϻv͚?zy?LKsKzrt4͝G-_Ǐ+mGO O͑cחg$DeҶ:t( Oٲtww+w̝C]ٺeSEٳPq&RUWWiu\uU7u1T{>m'[T&s9sUgN1>>jۋ/.gsK_쟰j{Ty5jՎq\`AfTYhAN>}#7mڗw]|yvz=ϜNwpZ|W̻\՚'WJИ{'n-Z[[FdyJMvf#h,Z 55ׯO?јw*XśuM&wKJmeyr#V^3555yOȑ㏳Wd-c ^jkS7}dj۟lV&Kgܱ~]W8jR\ў]wn ҒeK#+WHooo}vc1xy0Cjsrs~jMVW*m;ZZ67/ <~2VS}p3ٍsR7mCܹsR7mzvs9gg(C9qr#uu7cX… ԩ9re-^|KCѓ?gWШdMs&5YB2|ɓ^o2ǫҿcxY'8ydd466~ktۗgI^li9C]i_l$lLu,&C MdzGϷjMZqkϪٶZFÍ___ukdph0/=g]}phhhLZ[=z,--?oȿ=z4CY|Y̞}>;TK_r׎/eKKKﳃG+I:hUqh"woZ[[⶗FRվ濊s5XMn6!7|g9}tΝ;$僬[;|iӦ;̀h IDAT7䭷N̉'G!h5+˖eӓK.`GE ܹ9wuKR$9cFΞ;;򡤶6+hѢ떑&6|?>9rxMrvCcʅ >ko]^ɓݹۛ]o .7ƫҿcyݽ_]7ٛK.eih.ۛ$ݟWէ{z]],^?ٓeKے$ 3gnݻ7+ڿgc1}]:ڕ'N/{$ٹkwvz}YMηJRWTJ*dk{5mdW}./??o-\emm9ӓg{>{#*AzOyGkpx{myݪ;T ܞ;v&5kÆ,[4--9zxy曙Y_;+ntVͱx2ǡ|;k;j\>2V<^p3Pf{lOO.)[7oU_.=wnZv;gϞOc|㮻FnKȷʮ7v`Z[Z3u^fϮ˦;_6n͚VUJ67q[ؙOGN^2/lۖGzh}_O?4ov._JssS%Rw~[9_gժyxlٴ)om[-?xZ^ږe[o7 .̏~jkkԔݗ=͟y'mKfi[[U}z… ;IV\;wm>ۗ-{|k~ zceӦ[R[Skפi'ITDNTXmyS+*YgٶZJsq}ƌS?}y+:ijܜ '~'y7<=9--M#lܱ@>@VXr{'ΝK9w|֭] ;VNe=4jHì<ؙ]fgO?=&WLOONvwgMf묦k*q!@1(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C   'N0(`P8p!@C?GIENDB`secrets-5.1/screenshots/unlock.png000066400000000000000000000516331415312107300173750ustar00rootroot00000000000000PNG  IHDRXVsBIT|dtEXtSoftwaregnome-screenshot> IDATxwtUUH'TzGzņqƱ7QGg3+V`EzSz  IHs$!7ͅg5s޿%>cI~x#&w^͸W\vn˟{xH-ҐԯOo]@&{֬]=Ke+Vhgz.B=8>IMߩVB۷o?E8Qw -kfYFuNN$Y~A;up$ȑ#3Wxx._Wsrn˟5rEwĄxn$ժ =j)eIڔuM;jيCd: chڧ)33P(I!մkݻݷԆ=o.^-i[K/_8|%G}ÏΕ Ɗ!E :DÔ$IڒU?7uYS&MRdd_k?Ӓe˴tJ/z;o[׮ ;z>6m٢teO>T[Ҷ*;'Gwr$Bjmq^^+;]}ԯo]q٥M(5uvҶnkp>'Ix޹Kk t.8ݑQMߥ/C\h=wG_|CM( l=rЎkl27f#e۵kI'/5__ 4HG$IGv`\L$%KkU%IIb:u$-[]iiUޜV?Zd2(tKRB$)uf(91nǩ+G'R}E%Ijt| S /hСYe6յkIR\lbcb*M>>>ޭ6%EqtĄxmNKӭwݣpduV~m۷;VDx._^i[鶻Q``DGjj5u٣W'iڛ-?__{]'mm#bW4꺟_Si35noOQQSڻWq85R]|,fϝ]kλ)",\-.?=ߔƎ#I5}f up̯Ǐҋ:k8(e :DL?[l+/BlqF8U3ʰ1t=TTTTsud 3E2ywK,Viq=: |eMh5jljж8QW>( oܘq7iOF+/d2iҔkX-(#GS Mju,9Q X+{{OL&vޣȈ-:V~PJ!4ׅ_ը~+i47k¡$Ek[o(8(EmmCj.<8=Su.$yxx$Sܢ+ztj=O'U` Xк,Q矚*,=(3+KqqL=~+  jZtjn^н<]ѧ?@9QXM#5p[oHn{223uCkZtPm߇Ǟ~pU]|5tr%M3=]]:w$??IԷ=hgzzw m6[~, /(1!A9zrfgk֜9.YVѴZnjt'w1mU'NՌ~ ic_EjUw^|AwLW9K`yy$} {iC&B%d2)?@5s5Rt!0 k}e֜dshԡCIRtN *22Bg9^5bXy@FqV  8JǎWfSQQQ/4L2Xv]rRdfV#\yCpȨ1|A-XXGP@WU[ݣn:edfimZrzf%%&*#3SY{ܳѣ%ҁէw/If[{׻Cb^뫥Ghbcmz%OY&~==̚: c:st ^NӻuZh$),4>I ڹ3]>Ljئ4 k5*-+jg}/WqI בGկoIRVbcj҄3kϋeX9 UWbM OM_#׬9s;zTJ,;ɐ9,+e(!>^oF949L%%%uU[֐!͑WAm_%&bwu9eYzۄsrս{WSnnnX5/SAAE`Z.e/Z5RTQQѬ5rP5J{l*h*))3~ҏ3gpQSHNJ5W^aClz`p }5}1Seee2flL6V!խZFoM}OpF פ;oKTC0RZlKQP`}!եrC@Hߵ[>]]J www׿ /pu)t׬3ϿJWRϙ{iw N5bƛ ~fΙʪ*=p߽C!iD/) [gWd\] `p z7Nҥzi.VG0=̿T]]R?Ǚ\]g-J22ZȈM1ѝ*URR#G*'7G;wݪjxfY}zdj[GLLfW8M E- ; giъhT XJ /VMfiCjjۻBBBKuf͙׬>ՙݱk1?vmߡ? xMշwoW8()EXVuړ>?gnnfϝw?He-]ӿ\^^.pb".Xn_˝ IDATP)MѣZ(I=A{?xZy-KdB!YؕlVU_OImtJ(<.*2R6+c!%Kz鄪j A>BC>Vkf"s[oQ}['S[mLgk׮u29!Yruvۍ6T{*jXlLn >M.p#eŲKwv*: ;Wzp-o^. Ͳfz\r rB5c65ZJ}\] Tvv.`*jؘwW,>JJLtu6l4l6 2X'TyȈp4ƆkUPOVc +#3ˡ6{xG04ٞ ǂ$5324ϕ~V$Mgo^ qMnz'Z˯_h)d99]o6ջg,\|AY&Jjk5l&{*۰16_h)C@9t}tNzUU]]oj=*++}N*&:I`hE>ST}yj}g{ےMՍۧL&* d]\R~R6lPiiCc6np/$!˫y)<Ţ}}*ېڄ`ا*\ΤSVҩcTVV*}c߂  SxX*+&o>0FFݽtwwWdDCc;Pfn?wkgV -`h^СCuр~ۡUxȩVvI:֏`haC@vtzx8i럯whܦ(,,txd2Zd">;'G%%u&`8#NQ\lC:j+ee:`QPc!,S'lJݼ# ՛z]C [C4:|X66SFVC/8,!񕻟,=>JKKk>Iw 9_~UVk_JKTYg=F  ~!&գflWX ^㣤Ąؠ?BkS֟x¤?f:fzzmGIIҷ?pRE;#C̫ u$'%54!Y6Ϙ|5l6=zV:Mus/!Yƍ#pz{N~imsb? ~!YfPn]n|j͘5 5,#3K~Y0sCe6!&wnڽއJٰ_aa{꟪Q)?<ڭkk׮9@f3r"#"ngXMPUmOk ^g?E~~a޼_p!t6myySZ-wrrsu߃kwFp668"&9^Mj[]]_~U/JJJ[sW}-okRɮ.І -Mwy2wt9{UOڶmzVyyEr=e0SAA_@;S5cfs&qcFSTTڔkUZh66SŭQ_zaC@Ҥ)jOFf^=+&:ZaJJJT\|TٹJOߥ]T̕FI2ӫgt;oY1Ѯ.І -.'7Ww7Ee.I6]py.V;)*JO>wyxx]vEB NѷOo=8fmFƍ[nձiƌ)ŪWxS4h޻O @Ko?S9n|j׮KG(ZŮ{/(7/եpwwܬ ?եRC@)++ӫo~Yե($8H>7uեrC@[fޞcL&;ZrZ}|NECKTTTow?V3!>Nw~z*p \TϘ3gaѵKg]s2hL&StF0VR6lԂEf:74b0=J={tk*hSj;1uvޥ9*طo!vD%'%gn٣;ӂjbBU󕯏|8m x `G0# `pC08! `G0# `pC08! `G0# `pC08!E[Ѕ_'?M]]iT&^;&&LH3guZfk_PC Wǎ!ۻF faXtQ޽߯{UUW=jÏd2%Wa|?t@0уLUtNEEѶ;cg{f3wBefe\B&#+SY̽{գ[#"@WQQǟ~Vެ ;WfiێlX;%Imv_u޵t52L֥SmNKSn^ƌK.fVގ="IlY777ګ7F3ƥ#IJChゃ$I)6kܸ VWWkŪUZR! @11+ԣo.ҋ^wN ?柏Wi[*'7WQ:]UϗڲufgcH:Cf;#Kڶ}zڛӨv?4K>6m"__]Z=W\ݩ.x~M=r.x.xqFuvw߫3gGVUUcd7 =?/J2IC E?/iTlLs,ԐAtw:fݫ;&Mַ?Pqq-ݦ~8mbm\Xh>=ZzV^Ąx3FcGTHppƎXӻ*?_ᆵÇIv鬮]:ࡃ*طOW_ykgkD:''Kv}/t-7;||߯[z.Z+>7TNn.΄s/o**x_ޭ;n;6Mhp~oztG~֟KS7־OesZz:rh'pZa `Ԉpۚ0~k 4]Uڶm' Ҁ~}Oxt1ֵ uPakX\RZ$d2_`ly/k^IRO8P|*mI۪c tYgK.bMZvF~F@f],[w@1 ZF[oNW'l@F0 '?#Ne2i&?qF$ۿmm!Iק ܔC URR>uu5kUU]pڒ&I0~\/BIm#I)S%IgX6빗^UP`'s5o풤_'{ж()Lv4v(=Jz'ZgM# Oѝ:\[]] Sz:عK%%%:rJKˎ]`o{s%I٬5W^[isZ{kNը5z9Ε$EDyC+7/O6MfY999 Kii|߲X,1$zߜcGFD4@E0 ߦLV~~n߮Mj+'7O=wS>&oo/͜=Wlqh,wcK/i0v2^^ziCjXhŪZjz^3 p߆TVVJ:SqܢbIjk8>>:3_iO^ ߊ IRUWW>!@}zurr4{tYgֺ~ͺLjQ{vkK>}ԯO}mڵ{~6mޢ?:4WHmڲE{sjm.s\UusrRͱPmۦ6z뮾R{%zgϩ}N::JٰQ99hx]wKtmӒ-[JƎ"ctY4{lݒU>\+k4c<.zGe+V|Y뼣{ָ Ֆmzj#;'GsodN{;'GoPaa||Ag h_jqc$Iv]c4b:ͦ?.h;tn׆TLߥJiСi^v֦h Y]7'>?:sXEFDH8?q]N6n-iھs*VOm~OJW~} p#@`dXj32c,;;O#oLuWjȠA>1e+WʢK.@VM?/YkS4|kVZ!k ;wjQ͚9{JyzzG# S`/K)cTYYyiȐJNLTIiV$5x.>.V,]*.ɤ}fjoNcWPO>>ء$imJr5rwwתի5sl]ye2L뚵딓 gSv1ussP7f\Gg4v ܫq˫ }v횷ppcWRhO?ack:''*$$H^^5xUTV*++3},///h@ڻu.  YI^=+<4T>>>:xkמ=޽z**2R꒜:hҲ2dSlt<==!!'=yuOUHH UY"(j víAqhMGT\[Z (*cؓ*!TR۝?bb"Kn~99zMy;1ɚ$ɊCN{lذ!I9}F-7Ey+^ qc楽=K-{ƿkWWW_(;qbƎW^zn_gsϫ>*;!Gx?Jܖ{=C!qJC}{U[}[ʫ\OwOwܕ6kjjϱޞ~4+x"Ғή$>{G?iMIcCN_˴y3yҾYbUzܜe˗q9#$7lHRĉ{eҤY̘>iZZRI%NاV]gǍ^k<`Viʻf 0CB=ۙSTwo}KF׭OggW~vՙ5cF>?.ogUYKÔ׾Y_KNpѢ腇uSk&OM˖f̙ikk~&%rnOOSܫ6uk'TWY&}[g3eʔ<䓹sa/\yJ @]'76u{gɲǟq;:6Wi>{KCÔ=iKfʔ3W-Ǿ)-]֝6c47˒˶$N65+VʲǗgibnqIM'TԼħ3~z{u뵞;fL*dMS3cر/{?-YKz!3ƌW,Ϧtuueʡ/<$qGXijv__y=Ytir]3ϛ53FLGgg.Z<#in^6oޜ>tuueթ۫>#Fxג-E6L/Lژ$5jTƎ'3gضΰa2dԜMmmYpm=fԶ|:3ܸ`AVYuϽuޟck-S~#OƖT*=j̘6-7|k6lؐ,Y)LMml߼Ź>=ʩC֛loy%Q0AIDATYrU~yϛW}t^CSWWrkZZZ3zȼE/IiƆzikkɓcߘڌ?>Ge{;LcLmlu;:裏;HkeJMVfqcΘ6--\Ɔ);xԑG_]w]*J66M5Gydn\{oR[S9sfge#?,7̿)W=zd=;OsgtssҼv]^3U;]{1̂[n͕W"===τL01c^rY)wy[7!`VjJ`hϯ :(Ι]QgTR C C¹pv  '  '  '  '  '  '  '  '  WWRdmYUq=1;VeL01 QjJ+UhUg6v Cón[[[./ÇOcԪv AeCmIsSFVy`Os7H477Ue̞='s0a *[w E!'ItvvVySTJ _J P8;SCȎ!0z`Pc 9v FUԴc%ww/k^=/Ι /$Gyd;w@ŗ^o1-7&IƎW{UN~{2~@U#_RTɹޞn#3OO~ܜOq+J\|l$iٸ1?a y4 qaɿ_~y\u5?Y&---◿>-wߔ$77沋$m]=SIWWWKWWwﶽՕzh&N/},Y4 SNk~Æ$'xb㭯:a y4m9݋.JMMM;L:55y->XLɧ>;+VHSssf?ߐx!0vuueS>͚+~r9mo! 9+sǝwg^$a ɓ'gٰys>u96mj~pYzuI__;Yp7n\&Oܫ5wM7&IVZK0ظ 0.pɻt?,ZNO܃y_.]`O! 5jԨqi3j|qG?u֙_g߉_,~o~+uuu9S3j^]Di@`w(9jT{[tٲ\ƛn1crΙgl\Av=a --y_ev8}[n}sfG>ɳ~Æ_!GNmmmfL{u?ev)N%*a ǖ,ͬ3s')Ǐe}# w CSZ[oO]0C`ȹ۪=Pe[< !)}! !ǵ}# !0;}# Ae-Z-74aݕaU[?!0Y3]2k[=VoNS2ejU/a *o>6I}n|HOOWe#GeY2eJU诚UV: ` ^J%+V,ڵ8Eτ Иj % +eCSWW_)?P^We~k6C[[[./+V,OcԪ' 践kצjQUssSUׯ ={N.a@ CQX$q*/ω zJ#Tu தcW!ozr 3X2\?&/}9ު5[.Ç`+avIٙkOa؟ݺ+W3Nkk/9|k_ItÏ|#/_f'>~Jf͜ѧsCDGGGG߿,?ex{w˾ښ#{Y~OA/Ɇ\/߰>ƍOSsso`{v cx%IN? 6lSO;{R/9v 뿤 wuueݺ}:<umsR|K禧'I2ztuu%I?>ɖ0k_zsf??${40`@m=]w<纻wݥ37>Mڷ{Oӿm0`x.{Je[0rlllIMMMF k6?__9v$IMM2bĈ477i a֭Km_|6ZӾsW$In(0`@SI=>/zxq*5ܹss CTSSJVUe#!J0 ^J:bigё?.Z}$L{_n;v A>Sojذay^[f>|x#_greԨy.^|id?Jaq ȉ'#3_Gב[[?pg.η9s/Çe__Æ[| w;3Oi|,Ir7ǖ.ˏ> a@;4qcGS>|碋3sLml̊ -Ir'NƦs'G ; oտe$6mʛ~ a;pΜ,~`Ǐj89>^oC#:w◿O?k_䨗֧~a{76?I->'|B0ܧve7@[$ hяd}f`pڵ9QёYn]B0U*}oӦ7aÆo{nYzUO [[ל{{jjjn]sϕ0`GK\3l'P]A7kf z{]<!^j3@ C=anOKoՕ:3tww~X`ۄ f͚L4qXroNS2ejU`hYje0(U*X"k6*3ttlΒ%Uef̘YF3gC^ڪ'  ?-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNwNexIENDB`