Repository: gildas-lormeau/SingleFile-MV3
Branch: main
Commit: aa5441cdb8d5
Files: 138
Total size: 4.1 MB
Directory structure:
gitextract_jf_v4fxn/
├── .github/
│ ├── FUNDING.yml
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── LICENSE
├── README.MD
├── _locales/
│ ├── az/
│ │ └── messages.json
│ ├── de/
│ │ └── messages.json
│ ├── en/
│ │ └── messages.json
│ ├── es/
│ │ └── messages.json
│ ├── fr/
│ │ └── messages.json
│ ├── it/
│ │ └── messages.json
│ ├── ja/
│ │ └── messages.json
│ ├── nl_NL/
│ │ └── messages.json
│ ├── pl/
│ │ └── messages.json
│ ├── pt_PT/
│ │ └── messages.json
│ ├── pt_br/
│ │ └── messages.json
│ ├── ru/
│ │ └── messages.json
│ ├── sv/
│ │ └── messages.json
│ ├── tr/
│ │ └── messages.json
│ ├── uk/
│ │ └── messages.json
│ ├── zh_CN/
│ │ └── messages.json
│ └── zh_TW/
│ └── messages.json
├── build-dev.sh
├── build-extension.sh
├── build.sh
├── eslint.config.mjs
├── faq.md
├── lib/
│ ├── chrome-browser-polyfill.js
│ ├── single-file-background.js
│ ├── single-file-bootstrap.bundle.js
│ ├── single-file-bootstrap.js
│ ├── single-file-extension-background.js
│ ├── single-file-extension-bootstrap.js
│ ├── single-file-extension-core.js
│ ├── single-file-extension-editor-helper.js
│ ├── single-file-extension-editor.js
│ ├── single-file-extension-frames.js
│ ├── single-file-extension-offscreen-document.js
│ ├── single-file-extension.js
│ ├── single-file-frames.bundle.js
│ ├── single-file-frames.js
│ ├── single-file-hooks-frames.js
│ ├── single-file-infobar.js
│ ├── single-file-z-worker.js
│ ├── single-file-zip.js
│ └── single-file.js
├── manifest.json
├── package.json
├── privacy.md
├── rollup.config.dev.js
├── rollup.config.js
└── src/
├── core/
│ ├── bg/
│ │ ├── autosave-util.js
│ │ ├── autosave.js
│ │ ├── bookmarks.js
│ │ ├── bootstrap.js
│ │ ├── business.js
│ │ ├── companion.js
│ │ ├── config.js
│ │ ├── devtools.js
│ │ ├── download-util.js
│ │ ├── downloads.js
│ │ ├── editor.js
│ │ ├── external-messages.js
│ │ ├── index.js
│ │ ├── offscreen-document.js
│ │ ├── offscreen.js
│ │ ├── page-orphan-hack.js
│ │ ├── sw-reload-hack.js
│ │ ├── tabs-data.js
│ │ ├── tabs-util.js
│ │ └── tabs.js
│ ├── common/
│ │ └── download.js
│ ├── content/
│ │ ├── content-bootstrap.js
│ │ ├── content-frames.js
│ │ └── content.js
│ └── devtools/
│ ├── devtools.html
│ └── devtools.js
├── index.js
├── lib/
│ ├── dropbox/
│ │ └── dropbox.js
│ ├── gdrive/
│ │ └── gdrive.js
│ ├── github/
│ │ └── github.js
│ ├── mcp/
│ │ └── mcp.js
│ ├── mhtml-to-html/
│ │ ├── convert.js
│ │ ├── mod.js
│ │ ├── parse.js
│ │ ├── srcset-parser.js
│ │ ├── util.js
│ │ └── vendor/
│ │ ├── LICENSE.txt
│ │ ├── README.md
│ │ └── csstree.esm.js
│ ├── readability/
│ │ ├── Readability-readerable.js
│ │ └── Readability.js
│ ├── rest-form-api/
│ │ └── index.js
│ ├── s3/
│ │ └── s3.js
│ ├── single-file/
│ │ ├── background.js
│ │ ├── browser-polyfill/
│ │ │ └── chrome-browser-polyfill.js
│ │ ├── fetch/
│ │ │ ├── bg/
│ │ │ │ └── fetch.js
│ │ │ └── content/
│ │ │ └── content-fetch.js
│ │ ├── frame-tree/
│ │ │ └── bg/
│ │ │ └── frame-tree.js
│ │ └── lazy/
│ │ └── bg/
│ │ └── lazy-timeout.js
│ ├── webdav/
│ │ └── webdav.js
│ ├── woleet/
│ │ └── woleet.js
│ └── yabson/
│ └── yabson.js
└── ui/
├── bg/
│ ├── index.js
│ ├── ui-batch-save-urls.js
│ ├── ui-button.js
│ ├── ui-commands.js
│ ├── ui-editor.js
│ ├── ui-help.js
│ ├── ui-menus.js
│ ├── ui-options-editor.js
│ ├── ui-options.js
│ ├── ui-panel.js
│ ├── ui-pendings.js
│ └── ui-viewer.js
├── common/
│ └── common-content-ui.js
├── content/
│ ├── content-ui-editor-web.js
│ └── content-ui.js
└── pages/
├── batch-save-urls.css
├── batch-save-urls.html
├── editor-frame-web.css
├── editor-mask-web.css
├── editor-note-web.css
├── editor.css
├── editor.html
├── help.css
├── help.html
├── help_zh_CN.html
├── offscreen-document.html
├── options-editor.html
├── options.css
├── options.html
├── panel.css
├── panel.html
├── pendings.css
├── pendings.html
└── viewer.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
custom: https://www.paypal.me/glormeau
liberapay: gildas
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
**Screenshots**
**Environment**
- OS: [e.g. Win10 Pro, Ubuntu 18.04.1, Android 7.1.2]
- Browser: [e.g. Chrome, Firefox]
- Version: [e.g. 64]
**Additional context**
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
labels: 'feature request'
---
**Is your feature request related to a problem? Please describe.**
**Describe the solution you'd like**
**Describe alternatives you've considered (optional)**
**Additional context (optional)**
================================================
FILE: .gitignore
================================================
/.vscode/
**/node_modules/
.idea/
================================================
FILE: LICENSE
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 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 Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are 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.
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.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
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 Affero 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. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
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 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 work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero 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 Affero 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 Affero 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 Affero 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
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
.
================================================
FILE: README.MD
================================================
# SingleFile MV3
This is the new version of [SingleFile](https://www.getsinglefile.com) compatible with the Manifest V3.
## Manual install
Download the zip file
(https://github.com/gildas-lormeau/SingleFile-MV3/archive/master.zip) of the project
and install it manually by unzipping it somewhere on your disk and following
these instructions:
- Chrome:
https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/#load-unpacked
- Microsoft Edge:
https://docs.microsoft.com/en-us/microsoft-edge/extensions-chromium/getting-started/extension-sideloading
================================================
FILE: _locales/az/messages.json
================================================
{
"extensionDescription": {
"message": "Extensionin təsviri.",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Seçilmiş tabları yaddaşa qeyd et",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Bütün tabları yaddaşa qeyd et",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Xüsusi qısa yol",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Xüsusi qısa yol #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Xüsusi qısa yol #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Xüsusi qısa yol #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Xüsusi qısa yol #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Xüsusi qısa yol #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Xüsusi qısa yol #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Xüsusi qısa yol #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Xüsusi qısa yol #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Xüsusi qısa yol #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Xüsusi qısa yol #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Səhifəni SingleFile ilə yaddaşa qeyd et",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Seçilmiş linkləri yaddaşa qeyd et",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Səhifəni redaktə et...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Səhifəni redaktə et və yaddaşa qeyd et...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Profil ilə yaddaşa qeyd et",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Gözləyən yaddaşları göstər...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Standart profil seç",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Qayda yenilə",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Domain qaydası yarat",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Seçimi yaddaşa qeyd et",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Frame-i yaddaşa qeyd et",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Tabları yaddaşa qeyd et",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Seçilmiş tabları yaddaşa qeyd et",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Sabit olmayan tabları yaddaşa qeyd et",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Bütün tabları yaddaşa qeyd et",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "URL-ləri toplu yaddaşa qeyd et...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Avtomatik yaddaşa qeyd",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Deaktiv edildi",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Bu tabı avtomatik yaddaşa qeyd et",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Sabit olmayan tabları avtomatik yaddaşa qeyd et",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Bütün tabları avtomatik yaddaşa qeyd et",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "SingleFile ilə səhifəni yaddaşa qeyd et",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Bu səhifə SingleFile ilə yaddaşa qeyd edilə bilmir",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "SingleFile Başlatırlır",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Yaddaşa qeyd etmək progressi: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Yükləmə progressi: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "Xəta",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Avtomatik yaddaşa qeyd aktivdir",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "SingleFile seçimləri",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "İstifadəçi interfeysi",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "səhifənin kontekst menyusuna əlavə edin",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "işləmə zamanı səhifəyə gölge əlavə edin",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "yaddaşa qeyd edilmiş səhifəni baxarkən infobar göstərin",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "infobar məzmununun şablonu",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "qarışıq məzmunu blok edin",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "mənbə URL-lərini yaddaşa qeyd edin",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "infobarı yaddaşa qeyd edin",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "infobarı yaddaşa qeyd edilmiş səhifəni baxarkən açın",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "yaddaşa qeyd edilmiş tarixi daxil etməyin",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "infobarın açılmasını təsdiqləyin",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "səhifə yaddaşa qeyd edildikdən sonra tabı avtomatik olaraq bağlayın",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "klaviatura qısa yolu əmri",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "standart qısa yol",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Fayl adı",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "şablon",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "maksimum uzunluq",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bayt",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "simvol",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "əvəz olunan simvol",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "emoji-ləri mətnlə əvəz edin",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "fayl adı şablon məlumatlarını səhifəyə yaddaşa qeyd edin",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "fayl adını təsdiqləmək üçün \"Fərqli qeyd et\" açın",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "fayl adı çatışmalarının həllini seçin",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "fərqli ad yaratmaq",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "mövcud faylı üzərindən yazmaq",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "fayl adını sorğulamaq",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "təkrar faylları atlayın",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML məzmunu",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "HTML məzmununu sıxışdırın",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "frame-ləri çıxarın",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "gizli elementləri çıxarın",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "müəyyən elementləri çıxarın",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Fayl formatı",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "öz-çıxarılma ZIP (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "öz-çıxarılma ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "şifrə",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "kök qovluğu yarat",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "sıxışdırmanı deaktiv edin",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "ZIP məzmunundan sonra məlumat əlavə etməyin",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "mətn məzmununu əlavə edin",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "gömülü şəkil",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "screenshot",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "özəl şəkil",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Infobar",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Şəkillər",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "şəkilləri qruplaşdırın",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "şəkil ölçüsünü azaltma əmsalı",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "gözləyən şəkilləri yükləyin",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maksimum boş vaxt (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "zoom səviyyəsini saxlayın",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "\"scroll\" hadisəsini göndərin",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "frame-lərdən əvvəl yükləyin",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "alternativ ekran çözünürlüklü şəkilləri çıxarın",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Şriftlər",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "istifadə olunmayan şriftləri çıxarın",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "alternativ şriftləri çıxarın",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Stil",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "CSS məzmununu sıxışdırın",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "stil-ləri qruplaşdırın",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "baş elementdə stil-ləri köçürün",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "istifadə olunmayan stil-ləri çıxarın",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "alternativ cihazlar üçün stil-ləri çıxarın",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Şəbəkə",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "bloklanmış resurslar",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Accept\" başlığı",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "skriptlər",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videolar",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audio",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "sənədlər",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "şriftlər",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "stil-lər",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "şəkillər",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Göstərici",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Bookmarks",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Avtomatik yaddaşa qeyd",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Avtomatik ayarlar qaydaları",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Göstərilən bütün qaydaların silinməsini təsdiqləyin",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Göstərilən bütün qaydaları silin",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Tam və ya qısmi URL daxil edin (məsələn, example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Auto-save profil",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "bütün profiləri göstərin",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "Auto-save profilini göstərin",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Qayda yenilə",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Qayda sil",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Qayda əlavə et",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Dəyişiklikləri təsdiqlə",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Dəyişiklikləri ləğv et",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Seçilmiş qaydanın silinməsini təsdiqləyin",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "səhifə yükləndikdən sonra və ya səhifə yüklənmədən qabaq avtomatik yaddaşa qeyd edin",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "səhifə yükləndikdən sonra avtomatik yaddaşa qeyd edin",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "səhifə yüklənmədən qabaq avtomatik yaddaşa qeyd edin",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "tabı atdıqda avtomatik yaddaşa qeyd edin",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "tabı çıxardıqda avtomatik yaddaşa qeyd edin",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "səhifə yükləndikdən sonra avtomatik yaddaşa qeyd etmə gecikməsi (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "avtomatik olaraq yaddaşa qeyd et",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "dövrədən sonra gecikmə (s)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "xarici yaddaşa qeyd et",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Redaktor",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "səhifəni yaddaşa qeyd etdikdən sonra redaktoru açın",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "yaddaşa qeyd edilmiş səhifəni yeni tabda açın",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "səhifəni yaddaşa qeyd etdikdən sonra redaktoru avtomatik olaraq açın",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "standart rejim",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "səhifəni redaktə edin",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "səhifəni formatlayın",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "elementləri çıxarın",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "xarici elementləri çıxarın",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "sistem mövzusunu tətbiq edin",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "formatlama zamanı səhifənin məzmun genişliyi (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "yaddaşa qeyd edilməmiş dəyişiklikləri saxlayın",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "redaktorun infobarını göstərin",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Müxtəlif",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "səhifələri arxa planda yaddaşa qeyd edin",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "işləmədən sonra statistikaları konsolda göstərin",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "maksimum ölçü təyin edin",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maksimum ölçü (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "maksimum yükləmə vaxtını təyin edin",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maksimum yükləmə vaxtı (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "çap \"Referer\" başlığını keçirin",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "raw səhifəni yaddaşa qeyd edin",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "mətni təhlükəsizlik siyasəti ilə əlavə edin",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "mətni kəsənlərə kopyalayın",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "fayla yaddaşa qeyd edin",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "səhifəni paylaşın",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "məzmunun mövcudluğunu əlavə edin",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "SingleFile-a saxlayacağınız hər səhifənin SHA256 hash-ini Woleet API-yə göndərməyə icazə verdiyinizi təsdiq edin. Bu funksiya haqqında daha çox məlumatı yardım səhifəsində və ya seçimin yanındakı sual işarəsinə klikləməklə tapa bilərsiniz.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "giriş tokeni",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "Google Drive-a yaddaşa qeyd edin",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "Dropbox-a yaddaşa qeyd edin",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "GitHub-a yaddaşa qeyd edin",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "giriş tokeni",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "istifadəçi adı",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "repo adı",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "branch adı",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "Amazon S3-ə yaddaşa qeyd edin",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domain",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "region",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "bucket adı",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "access key",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "secret key",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "WebDAV serverinə yaddaşa qeyd edin",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "istifadəçi adı",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "şifrə",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "MCP serverinə yaddaşa qeyd edin",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "server URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "avtorizasiya tokeni",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "SingleFile Companion ilə yaddaşa qeyd edin",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "yaddaşa qeyd edilmiş səhifənin yerini yaddaşa qeyd edin",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "yaddaşa qeyd edilmiş səhifənin URL-ni əvəz edin",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "icazə verilmiş qovluqlar",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "sorğulanan qovluqlar",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "kömək",
"description": "Options help link"
},
"optionSynchronize": {
"message": "seçimləri sinxronlaşdır",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Sıfırla",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Seçimləri və ya cari profil sıfırlayın",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Bütün seçimləri və ya cari profil sıfırlamaq üçün təsdiqləyin",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Bütün seçimləri sıfırla",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Cari profili sıfırla",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "İmtina",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "İxrac",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "İçəri al",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Gözləyən şəkillər",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Frame məzmunu",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Gömülü şəkil",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Addım",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile xətası: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Şəkil əlavə et...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Səhifəni paylaş...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Seçimi paylaş...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Standart ayarlar",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Deaktiv edilmiş",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Yeni profil əlavə edin",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Profilin adını dəyişdirin",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Profil silin",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Yeni profilin adını daxil edin",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Seçilmiş profilin silinməsini təsdiqləyin",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Seçilmiş profilin yeni adını daxil edin",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Sarı qeyd əlavə edin",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Çəhrayı qeyd əlavə edin",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Mavi qeyd əlavə edin",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Yaşıl qeyd əlavə edin",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Seçilmiş mətni sarı rəngdə işarələyin",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Seçilmiş mətni çəhrayı rəngdə işarələyin",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Seçilmiş mətni mavi rəngdə işarələyin",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Seçilmiş mətni yaşıl rəngdə işarələyin",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Qeydləri göstərin/gizlədin",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "İşarələmələri göstərin/gizlədin",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Seçilmiş işarələməni silin",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Səhifəni redaktə edin",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Səhifəni daha yaxşı oxunacaq şəkildə formatlayın",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "İç elementlərin çıxarılmasını aktivləşdirin/deaktivləşdirin",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Xarici elementlərin çıxarılmasını aktivləşdirin/deaktivləşdirin",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Son silinmiş elementi geri qaytarın",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Bütün silinmiş elementləri geri qaytarın",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Son geri qaytarılmış elementi silin",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Səhifəni yaddaşa qeyd edin",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Səhifəni çap edin",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "MHTML faylını daxil et",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Gözləyənlər",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Bütününü ləğv edin",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "başlıq",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "gözləyən",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "işlənir",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "ləğv edilir",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Gözləyən yaddaşlar yoxdur",
"description": "Label displayed when there are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "URL əlavə edin",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Yeni satırlar qeydləri ilə ayrılmış bir URL siyahısı girin",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "İmtina",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Toplu saxlama URL-ləri",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "URL yoxdur",
"description": "Label displayed when there are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "URL əlavə edin",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "URL-ləri əlavə edin...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Bütününü silin",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Səhifələri yaddaşa qeyd edin",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "REST Form API-yə yaddaşa qeyd edin",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "giriş tokeni",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "fayl sahə adı",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "URL sahə adı",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Redaktor seçimləri",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Yaddaşa qeyd edin",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Konfiqurasiya yaddaşa qeyd edildi",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Yanlış JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/de/messages.json
================================================
{
"extensionDescription": {
"message": "Speichern einer kompletten Webseite in eine einzige HTML-Datei",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Speichern der ausgewählten Tabs oder ihrer ausgewählten Inhalte",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Speichern aller Tabs",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Benutzerdefinierte Tastenkombination",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Benutzerdefinierte Tastenkombination #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Benutzerdefinierte Tastenkombination #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Benutzerdefinierte Tastenkombination #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Benutzerdefinierte Tastenkombination #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Benutzerdefinierte Tastenkombination #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Benutzerdefinierte Tastenkombination #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Benutzerdefinierte Tastenkombination #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Benutzerdefinierte Tastenkombination #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Benutzerdefinierte Tastenkombination #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Benutzerdefinierte Tastenkombination #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Speichern der Webseite mit SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Speichern ausgewählter Links",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Annotieren der Webseite...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Annotieren und Speichern der Webseite...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Speichern der Webseite mit Profil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Anzeigen der aktuellen Speichern...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Wählen Sie das Standardprofil aus",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Profil der aktuellen Regel auswählen",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Profil der aktuellen Domain auswählen",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Auswahl speichern",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Rahmen speichern",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Tab speichern",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Speichern der ausgewählten Tabs",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Speichern der nicht angehefteten Tabs",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Speichern aller Tabs",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Stapelweise URLs speichern...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Automatische Speicherung",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Deaktiviert",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Automatische Speicherung dieses Tabs",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Automatische Speicherung der nicht angehefteten Tabs",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Automatische Speicherung aller Tabs",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Webseite mit SingleFile abspeichern",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "SingleFile kann diese Webseite nicht speichern",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Initialisierung von SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Speicherung aktiviert: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Upload aktiviert: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Automatische Speicherung ist aktiv",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Auswahlmenu",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Benutzerschnittstelle",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "Eintrag im Kontextmenü der Webseite hinzufügen",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "Während der Speicherung die Webseite grau unterlegen",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "Infoknopf beim Betrachten einer gespeicherten Seite anzeigen",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "Muster für Inhalt des Infoknopfs",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "Blockieren gemischter Inhalte",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "Speichern der Original-URLs von eingebetteten Ressourcen",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "Einfügen Inhalt des Infoknopfs in die gespeicherte Seite",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "Infobar offen halten",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "Enthalten nicht das gespeicherte Datum",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "Inhalt des Infoknopfs im Dialogfenster eingeben",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "Automatisches Schließen des Tabs nach dem Speichern der Seite",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "Tastenkombination Befehl",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "Standard-Tastenkombination",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Dateiname",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "Vorlage",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "Maximale Länge",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "Bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "Zeichen",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "Ersetzungszeichen",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "Emojis durch Text ersetzen",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "Speichern der Daten der Dateinamenvorlage auf der Seite",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "Dialogfenster \"Sichern als\" zur Bestätigung des Dateinamens öffnen",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "Vorgehensweise bei Konflikt mit dem Dateinamen",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "Eindeutigen Dateinamen erzeugen",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "Bestehende Datei überschreiben",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "Dialogfenster zur Eingabe eines Dateinamens",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "Überspringen doppelter Dateien",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML-Inhalt",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "HTML-Inhalt komprimieren",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "Rahmen entfernen",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "Verborgene Elemente entfernen",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "spezifische Elemente entfernen",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Dateiformat",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "selbstextrahierendes ZIP (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "selbstextrahierendes ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "Passwort",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "Stammverzeichnis erstellen",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "Komprimierung deaktivieren",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "Keine Daten nach den ZIP-Daten anhängen",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "Text durchsuchbar machen",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "Eingebettetes Bild",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "Bildschirmfoto",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "Benutzerdefiniertes Bild",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Infoknopf",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Bilder",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "Doppelte Bilder zusammenfassen",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "Größenreduktionsfaktor",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "Speicherung zurückgestellter Bilder",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maximale Inaktivitätszeit (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "Seite verkleinern",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "Ereignis \"scroll\" versenden",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "Speicherung zurückgestellter Rahmen",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "Bilder für alternative Bildschirmauflösungen entfernen",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Schriftarten",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "Unbenutze Schriftarten entfernen",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "Alternative Schriftarten entfernen",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Formatvorlagen",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "CSS-Inhalte komprimieren",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "Doppelte Formatvorlagen zusammenfassen",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "Die Stile, die sich außerhalb des Head-Elements befinden, in dieses verschieben",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "Nicht verwendete Stile entfernen",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "Formatvorlagen für alternative Bildschirme löschen",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Netzwerk",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "blockierte Ressourcen",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "Kopfzeile \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "Scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "Videos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "Audios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "Dokumente",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "Schriftarten",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "Stylesheets",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "Bilder",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Datei-Ziel",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Bookmarks",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Automatische Speicherung",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Automatische Einstellung festlegen",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Löschbestätigung für alle aufgelisteten Regeln",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Löschen aller aufgelisteten Regeln",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "URL komplett oder teilweise eingeben (z.B. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Profil für automatische Speicherung",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "Alle Profiles auflisten",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "'Profil für automatische Speicherung' anzeigen Spalte",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Regel ändern",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Regel löschen",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Regel hinzufügen",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Änderungen bestätigen",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Änderungen verwerfen",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Löschung der auswählten Regel bestätigen",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "Automatische Speicherung nach dem Laden oder Schließen der Seite",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "Automatische Speicherung nach dem Laden der Seite",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "Automatische Speicherung beim Schließen der Seite",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "Automatische Speicherung beim Schließen des Tabs",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "Automatisches Speichern beim Entfernen des Tabs",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "Automatische Speicherung nach Seitenaufbau verzögern (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "Automatische Speicherung in regelmäßigen Abständen wiederholen",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "Zeitraum (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "Speichern der Seite mit SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Annotation-Editor",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "Seite vor dem Speichern annotieren",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "Gespeicherte Seiten in einem neuen Tab öffnen",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "Seiten, die mit SingleFile gespeichert wurden, im Annotation-Editor öffnen",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "Default-Modus",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "Normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "Editieren der Seite",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "Formatieren der Seite",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "Entfernen von Elementen",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "Entfernen externer Elemente",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "System-Design beim Formatieren einer Seite anwenden",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "Inhaltbreite (em) beim Formatieren einer Seite",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "Warnen beim Verlassen der Seite mit ungespeicherten Änderungen",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "Anzeige der Infoknopf",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Sonstiges",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "Speicherung der Seiten im Hintergrund",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "Statistik nach Verarbeitung in der Konsole anzeigen",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "maximale Größe festlegen",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "Maximale Größe (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "maximale Zeit für den Download festlegen",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maximale Downloadzeit (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "Den \"Referer\"-Header nach einem Fehler bei einer Cross-Origin-Anfrage übergeben",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "Originalseite sichern",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "Content Security Policy einfügen",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "Kopieren in die Zwischenablage",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "Speichern im Dateisystem",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "Seite teilen",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "Existenzberechtigung hinzufügen",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirm you allow SingleFile to send to the Woleet API a SHA256 hash of each page you are going to save. You can find more information about this feature in the help page or by clicking on the question mark next to the option.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "Zugangstoken",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "Hochladen auf Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "Hochladen auf Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "Hochladen auf GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "Zugangstoken",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "Nutzername",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "Repository-Name",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "Zweigname",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "Hochladen auf Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "Domain",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "Region",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "Bucket-Name",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "Zugangsschlüssel",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "Geheimschlüssel",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "Hochladen auf einen WebDAV-Server",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "Benutzerkennwort",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "Passwort",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "Hochladen auf einen MCP-Server",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "Server-URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "Authentifizierungstoken",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "Speichern mit SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "Speichern der Seite eines neu angelegten Lesezeichens",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "Verlinken Das neue Bookmark mit der gespeicherten Seite",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "Erlaubte Ordner",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "Ignorierte Ordner",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "Hilfe",
"description": "Options help link"
},
"optionSynchronize": {
"message": "Optionen synchronisieren",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Zurücksetzen",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Zurücksetzung aller Optionen auf Standardeinstellung",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Zurücksetzung aller Optionen des aktuellen Profils bestätigen",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Alle Optionen zurücksetzen",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Das aktuelle Profil zurücksetzen",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Abbrechen",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exportieren",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importieren",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Zurückgestellte Bilder",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Rahmeninhalte",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Eingebettetes Bild",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Schritt",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "150",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile Fehler : ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Bild öffnen...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Seite teilen...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Auswahl teilen...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Standardeinstellungen",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Deaktiviert",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Neues Profil anlegen",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Profil umbenennen",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Profil löschen",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Neuen Profilnamen eingeben",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Löschung des auswählten Profils bestätigen",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Neuen Namen für das ausgewählte Profil eingeben",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Fügen eine gelbe Notiz hinzu",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Fügen eine rosa Notiz hinzu",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Fügen eine blaue Notiz hinzu",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Fügen eine grüne Notiz hinzu",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Hervorheben des selektierten Textes in Gelb",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Hervorheben des selektierten Textes in Rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Hervorheben des selektierten Textes in Blau",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Hervorheben des selektierten Textes in Grün",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Anzeigen/Verbergen von Notizen",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Anzeigen/Verbergen von hervorgehobenem Text",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Entfernen des selektierten hervorgehobenen Textes",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Aktivieren/Deaktivieren des Nur-Lese-Modus",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Die Seite zur besseren Lesbarkeit formatieren",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Aktivieren/Deaktivieren der Entfernung interner Elemente",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Aktivieren/Deaktivieren der Entfernung externer Elemente",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Wiederherstellen des zuletzt entfernten Elements",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Wiederherstellen aller entfernten Elemente",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Entfernen des zuletzt wiederhergestellten Elements",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Speichern der Webseite",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Drucken der Webseite",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "MHTML-Datei importieren",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Ausstehende Speicherungen",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Alle abbrechen",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Titel",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "Status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "ausstehend",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "in Bearbeitung",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "wird abgebrochen",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Keine ausstehenden Speicherungen",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "URLs hinzufügen",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Geben Sie eine Liste von URLs ein, die durch einen Zeilenumbruch getrennt sind",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Abbrechen",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "URLs stapelweise speichern",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Keine URLs",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "URL hinzufügen",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "URLs hinzufügen...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Alle entfernen",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Seiten speichern",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "Hochladen auf ein REST-Formular-API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "Authentifizierungstoken",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "Feldname der Datei",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "Feldname der URL",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Optionen-Editor",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Speichern",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Konfiguration gespeichert",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Ungültiges JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/en/messages.json
================================================
{
"extensionDescription": {
"message": "Save a complete page into a single HTML file",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Save the selected tabs or their selected contents",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Save all tabs",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Custom shortcut",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Custom shortcut #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Custom shortcut #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Custom shortcut #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Custom shortcut #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Custom shortcut #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Custom shortcut #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Custom shortcut #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Custom shortcut #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Custom shortcut #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Custom shortcut #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Save page with SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Save selected links",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Annotate the page...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Annotate and save the page...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Save page with profile",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "View pending saves...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Select the default profile",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Select the profile of the current rule",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Select the profile of the current domain",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Save selection",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Save frame",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Save tabs",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Save selected tabs",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Save unpinned tabs",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Save all tabs",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Batch save URLs...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Auto-save",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Disabled",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Auto-save this tab",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Auto-save unpinned tabs",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Auto-save all tabs",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Save page with SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "This page cannot be saved with SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Initializing SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Save progress: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Upload progress: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Auto-save active",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Options",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "User interface",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "add entry in the context menu of the webpage",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "overlay a shadow on the page during processing",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "display an infobar when viewing a saved page",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "template of the infobar content",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "block mixed content",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "save original URLs of embedded resources",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "include the infobar in the saved page",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "keep infobar open",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "do not include the saved date",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "open a prompt dialog to edit the infobar content",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "auto-close the tab after the page is saved",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "keyboard shortcut command",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "default shortcut",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "File name",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "template",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "max length",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "characters",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "replacement character",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "replace emojis with text",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "save the filename template data into the page",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "open the \"Save as\" dialog to confirm the file name",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "file name conflict resolution",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "create a unique name",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "overwrite the existing file",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "prompt for a name",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "skip duplicate files",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML content",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "compress HTML content",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "remove frames",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "remove hidden elements",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "remove specific elements",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "File format",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "self-extracting ZIP (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "self-extracting ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "password",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "create a root directory",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "disable compression",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "do not append data after the ZIP data",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "make text searchable",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "embed image",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "page screenshot",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "custom image",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Infobar",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Images",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "group duplicate images together",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "image reduction factor",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "save deferred images",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maximum idle time (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "zoom out the page",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "dispatch \"scroll\" event",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "load deferred frames",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "remove images for alternative screen resolutions",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Fonts",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "remove unused fonts",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "remove alternative fonts",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Stylesheets",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "compress CSS content",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "group duplicate stylesheets together",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "move in the head element the styles found outside of it",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "remove unused styles",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "remove stylesheets for alternative devices to screens",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Network",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "blocked resources",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Accept\" header",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documents",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "fonts",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "stylesheets",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "images",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destination",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Bookmarks",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Auto-save",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Auto-settings rules",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Confirm the deletion of all displayed rules",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Delete all displayed rules",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Type a complete or partial URL (e.g. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profile",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Auto-save profile",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "display all profiles",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "display 'Auto-save profile' column",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Update the rule",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Delete the rule",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Add the rule",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Validate changes",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Cancel changes",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Confirm the deletion of the selected rule",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "auto-save after page load or on page unload",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "auto-save after page load",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "auto-save on page unload",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "auto-save on tab discard",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "auto-save on tab removal",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "auto-save waiting delay after page load (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "auto-save periodically",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "period (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "save the page with SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Annotation editor",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "annotate the page before saving",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "open saved pages in a new tab",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "open pages saved with SingleFile in the annotation editor",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "default mode",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "edit the page",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "format the page",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "remove elements",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "remove external elements",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "apply the system theme when formatting a page",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "content width when formatting a page (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "warn if leaving page with unsaved changes",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "display the infobar",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Misc.",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "save pages in background",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "display stats in the console after processing",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "set maximum size",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maximum size (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "set maximum download time",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maximum download time (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "pass \"Referer\" header after a cross-origin request error",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "save raw page",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "set content security policy",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "copy to clipboard",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "save to filesystem",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "share page",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "add proof of existence",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirm you allow SingleFile to send to the Woleet API a SHA256 hash of each page you are going to save. You can find more information about this feature in the help page or by clicking on the question mark next to the option.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "access token",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "upload to Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "upload to Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "upload to GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "access token",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "user name",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "repository name",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "branch name",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "upload to Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domain",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "region",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "bucket name",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "access key",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "secret key",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "upload to a WebDAV server",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "user identifier",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "password",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "upload to an MCP server",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "server URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "authentication token",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "save with SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "save the page of a newly created bookmark",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "link the new bookmark to the saved page",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "allowed folders",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "ignored folders",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "help",
"description": "Options help link"
},
"optionSynchronize": {
"message": "synchronize options",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Reset",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Reset all options to their default values",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Confirm the reset of all options or the current profile",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Reset all options",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Reset the current profile",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Cancel",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Export",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Import",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Deferred images",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Frame contents",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Embedded image",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Step",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile error: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Open image...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Share page...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Share selection...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Default settings",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Disabled",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Add a new profile",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Rename the profile",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Delete the profile",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Enter a name for this new profile",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Confirm the deletion of the selected profile",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Enter a new name for the selected profile",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Add a yellow note",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Add a pink note",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Add a blue note",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Add a green note",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Highlight selected text in yellow",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Highlight selected text in pink",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Highlight selected text in blue",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Highlight selected text in green",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Display/hide notes",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Display/hide the highlighted text",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Remove the selected highlighted text",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Enable/disable read-only",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Format the page for better readability",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Enable/disable removing of internal elements",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Enable/disable removing of external elements",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Restore last removed element",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Restore all removed elements",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Remove last restored element",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Save the page",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Print the page",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Import MHTML file",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Pending saves",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Cancel all",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Title",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "pending",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "processing",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "cancelling",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "No pending saves",
"description": "Label displayed when there are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Add URLs",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Enter a list of URLs separated by a new line",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Cancel",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Batch save URLs",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "No URLs",
"description": "Label displayed when there are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Add URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Add URLs...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Remove all",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Save pages",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "upload to a REST Form API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "authorization token",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "archive data field name",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "archive URL field name",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Options editor",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Save",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuration saved",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Invalid JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/es/messages.json
================================================
{
"extensionDescription": {
"message": "Guarda una página completa en un único archivo HTML",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Guardar las pestañas seleccionadas o su contenidos seleccionados",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Guardar todas las pestañas",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Atajo personalizado",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Atajo personalizado #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Atajo personalizado #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Atajo personalizado #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Atajo personalizado #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Atajo personalizado #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Atajo personalizado #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Atajo personalizado #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Atajo personalizado #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Atajo personalizado #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Atajo personalizado #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Guardar página con SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Guardar los links seleccionados",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Anotar la página",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Anotar y guardar la página",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Guardar página con el perfil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Ver guardados pendientes...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Seleccionar el perfil predeterminado",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Seleccionar el perfil de la regla actual",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Seleccionar el perfil del dominio actual",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Guardar selección",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Guardar marco (frame)",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Guardar pestañas",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Guardar pestañas seleccionadas",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Guardar pestañas no fijadas",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Guardar todas las pestañas",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Guardar por lotes URLs...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Auto-guardar",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Deshabilitado",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Auto-guardar esta pestaña",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Auto-guardar pestañas no fijadas",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Auto-guardar todas las pestañas",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Guardar página con SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Esta página no se puede guardar con SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Inicializando SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Progresión del guardado: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Progresión del upload: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Auto-guardar activado",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opciones",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interfaz de usuario",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "añadir entrada en el menú contextual de la página web",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "cubrir la página con un sombreado durante el procesado",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "mostrar una barra informativa al ver una página guardada",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "plantilla del contenido de la barra informativa",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "bloqueo de contenido mixto",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "guardar las URL originales de los recursos incrustados",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "incluir la barra informativa en la página guardada",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "mantener abierta la barra de información",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "no incluya la fecha guardada",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "abrir un cuadro de diálogo para editar el contenido de la barra informativa",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "cerrar automáticamente la pestaña después de guardar la página",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "comando de atajo de teclado",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "atajo predeterminado",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nombre del archivo",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "plantilla",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "longitud máxima",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "caracteres",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "carácter de reemplazo",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "reemplazar emojis con texto",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "guardar los datos de la plantilla de nombre de archivo en la página",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "abrir el cuadro de diálogo \"Guardar como\" para confirmar el nombre del archivo",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "resolución de conflictos de nombre de archivo",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "crear un nombre exclusivo",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "sobrescribir el archivo existente",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "preguntar por un nombre",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "saltar los archivos duplicados",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Contenido HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "comprimir contenido HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "eliminar marcos (frame)",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "eliminar elementos ocultos (hidden)",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "eliminar elementos específicos",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Formato de archivo",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "formato",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "ZIP autoextraíble (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "ZIP autoextraíble",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "contraseña",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "crear un directorio raíz",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "deshabilitar compresión",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "no añadir datos después de los datos ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "hacer buscable el texto",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "imagen incrustada",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "captura de pantalla",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "imagen personalizada",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Barra informativa",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Imágenes",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "agrupar imágenes duplicadas combinadamente",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "factor de reducción del tamaño de la imagen",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "guardar imágenes diferidas",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "periodo máximo de espera (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "alejar la página",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "enviar evento \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "guardar marco (frame) diferidas",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "eliminar imágenes para resoluciones alternativas de pantalla",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Fuentes",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "eliminar fuentes no usadas",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "eliminar fuentes alternativas",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Hojas de estilo",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "comprimir contenido CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "agrupar hojas de estilo duplicadas combinadamente",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "mover al elemento de head los estilos que se encuentran fuera de él",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "eliminar estilos no usados",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "eliminar hojas de estilo para dispositivos alternativos a las pantallas",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Red",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "recursos bloqueados",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "Cabecera \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documentos",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "fuentes",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "hojas de estilo",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "imágenes",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destino",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Marcadores",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Auto-guardado",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Reglas de auto-guardado",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Confirmar la eliminación de todas las reglas mostradas",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Elimina todas las reglas mostradas",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Escriba una URL parcial o completa (ej. ejemplo.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Perfil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Perfil de auto-guardado",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "mostrar todos los perfiles",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "mostrar columna 'Perfil de auto-guardado'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Actualizar la regla",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Eliminar la regla",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Añadir la regla",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Validar cambios",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Cancelar cambios",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Confirmar la eliminación de la regla seleccionada",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "auto-guardar tras cargar la página o al purgar la página",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "auto-guardar tras cargar la página",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "auto-guardar al purgar la página",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "auto-guardado al descartar la pestaña",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "auto-guardado al cerrar la pestaña",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "retardo de auto-guardado tras cargar la página (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "auto-guardar periódicamente",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "periodo (s)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "guardar la página con SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "editor de anotaciones",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "anotar página antes de guardarla",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "abrir las páginas guardadas en una nueva pestaña",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "abrir páginas guardadas con SingleFile en el editor de anotaciones",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "modo predeterminado",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "editar la página",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatear la página",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "eliminar elementos",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "eliminar los elementos externos",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "aplicar diseño del sistema al formatear una páginae",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "ancho del contenido al formatear una página (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "mostrar advertencia al salir de una página con cambios no guardados",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "mostrar la barra informativa",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Miscelánea",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "guardar páginas en segundo plano",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "mostrar estadísticas en la consola tras el procesado",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "establecer el tamaño máximo",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "tamaño máximo (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "establecer el tiempo máximo de descarga",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "tiempo máximo de descarga (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "pasar el encabezado \"Referer\" después de un error de solicitud de origen cruzado",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "guardar página en crudo",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "establecer la política de seguridad del contenido",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "guardar en el portapapeles",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "guardar en el sistema de archivos",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "compartir página",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "añadir prueba de existencia",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirm you allow SingleFile to send to the Woleet API a SHA256 hash of each page you are going to save. You can find more information about this feature in the help page or by clicking on the question mark next to the option.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "token de acceso",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "subir a Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "subir a Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "subir a GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "token de acceso",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nombre de usuario",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nombre del repositorio",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nombre de la rama",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "subir a Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "dominio",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "región",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "bucket nombre",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "clave de acceso",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "clave secreta",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "subir a un servidor WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identificador de usuario",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "contraseña",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "subir a un servidor MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL del servidor",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "token de autenticación",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "guardar la página con SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "guardar la página de un marcador recién creado",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "enlazar el nuevo marcador a la página guardada",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "carpetas permitidas",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "carpetas ignoradas",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "ayuda",
"description": "Options help link"
},
"optionSynchronize": {
"message": "sincronizar opciones",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Restablecer",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Restablece todas las opciones a sus valores predeterminados",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Confirmar el restablecimiento de todas las opciones o del perfil actual",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Restablecer todas las ocpiones",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Restablecer el perfil actual",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "Aceptar",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Cancelar",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exportar",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importar",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Imágenes diferidas",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Contenidos de marco (frame)",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Imagen incrustada",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Nivel",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "192",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Error de SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Abrir imagen...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Compartir página...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Compartir selección...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Configuración predeterminada",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Deshabilitado",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Añade un perfil nuevo",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Renombra el perfil",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Elimina el perfil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Introducir un nombre para este nuevo perfil",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Confirmar la eliminación del perfil seleccionado",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Introducir un nuevo nombre para el perfil seleccionado",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Añadir una nota amarilla",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Añadir una nota rosa",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Añadir una nota azul",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Añadir una nota verde",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Resaltar texto seleccionado en amarillo",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Resaltar texto seleccionado en rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Resaltar texto seleccionado en azul",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Resaltar texto seleccionado en verde",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Mostrar/ocultar notas",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Mostrar/ocultar el texto resaltado",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Eliminar el texto resaltado seleccionado",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Activar/desactivar solo lectura",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formatear la página para una mejor legibilidad",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Activar/desactivar la eliminación de elementos internos",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Activar/desactivar la eliminación de elementos externos",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Restaurar el último elemento eliminado",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Restaurar todos los elementos eliminados",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Eliminar el último elemento restaurado",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Guardar la página",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Imprimir la página",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importar archivo MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Guardados pendientes",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Cancelar todo",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Título",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "estado",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "pendiente",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "procesando",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "cancelando",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "No hay guardados pendientes",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Añadir URLs",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Introduce una lista de URLs separadas por una nueva línea",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Cancelar",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Guardar URLs en lote",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Sin URLs",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Añadir URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Añadir URLs...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Eliminar todo",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Guardar páginas",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "subir a un formulario REST Api",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "authorization token",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "archive data field name",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "archive URL field name",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Editor de opciones",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Guardar",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuración guardada",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "JSON no válido",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/fr/messages.json
================================================
{
"extensionDescription": {
"message": "Sauvegardez une page complète dans un simple fichier HTML",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Sauvegarder les onglets sélectionnés ou leurs contenus sélectionnés",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Sauver tous les onglets",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Raccourci personnalisé",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Raccourci personnalisé #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Raccourci personnalisé #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Raccourci personnalisé #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Raccourci personnalisé #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Raccourci personnalisé #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Raccourci personnalisé #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Raccourci personnalisé #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Raccourci personnalisé #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Raccourci personnalisé #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Raccourci personnalisé #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Sauver la page avec SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Sauver les liens selectionnés",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Annoter la page...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Annoter et sauver la page...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Sauver la page avec le profil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Afficher les sauvegardes en cours...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Sélectionner le profil par défaut",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Sélectionner le profil de la règle courante",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Sélectionner le profil du domaine courant",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Sauver la sélection",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Sauver le cadre",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Sauver les onglets",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Sauver les onglets sélectionnés",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Sauver les onglets non épinglés",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Sauver tous les onglets",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Sauver des URLs par lot...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Auto-sauvegarde",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Désactivée",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Auto-sauvegarder cet onglet",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Auto-sauvegarder les onglets non épinglés",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Auto-sauvegarder tous les onglets",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Sauver la page avec SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Cette page ne peut pas être sauvée avec SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Initialisation de SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Progression de la sauvegarde : ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Progression de l'envoi: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Auto-sauvegarde active",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Options",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interface utilisateur",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "ajouter une entrée dans le menu contextuel de la page web",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "assombrir la page pendant la sauvegarde",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "afficher une barre d'information quand une sauvegarde est affichée",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "modèle du contenu de la barre d'information",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "bloquer les contenus mixtes",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "sauvegarder les URLs d'origine des ressources embarquées",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "inclure la barre d'information dans la page sauvegardée",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "maintenir la barre d'information ouverte",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "ne pas inclure la date de sauvegarde",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "ouvrir une boite de dialogue pour éditer le contenu de la barre d'information",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "fermer automatiquement l'onglet après l'enregistrement de la page",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "commande de raccourci clavier",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "raccourci par défaut",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nom de fichier",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "modèle",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "longueur maximale",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "octets",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "caractères",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "caractère de remplacement",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "remplacer les emojis par du texte",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "enregistrer les données du modèle de nom de fichier dans la page",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "ouvrir la boite de dialogue \"Sauver sous\" pour confirmer le nom de fichier",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "résolution de conflit de noms",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "créer un nom unique",
"description": "Value for 'filename conflict resolution' option: 'create a unique filename'"
},
"optionFilenameConflictActionOverwrite": {
"message": "écraser le fichier existant",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "demander un nom de fichier",
"description": "Value for 'filename conflict resolution' option: 'prompt for a filename'"
},
"optionFilenameConflictActionSkip": {
"message": "passer les fichiers en double",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Contenu HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "compresser le contenu HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "supprimer les cadres",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "supprimer les élements cachés",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "supprimer des éléments spécifiques",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Format de fichier",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "auto-extractibles ZIP (universel)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "auto-extractibles ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "mot de passe",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "créer un répertoire racine",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "désactiver la compression",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "ne pas ajouter de données après les données ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "rendre le texte indexable",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "intégrer une image",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "capture d'écran",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "image personnalisée",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Barre d'information",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Images",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "regrouper les images dupliquées",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "facteur de réduction des images",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "sauver les images chargées de manière différée",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "temps d'inactivité maximal (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "dézoomer la page",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "envoyer l'évènement \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "charger les cadres différés",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "supprimer les images pour des résolutions d'écran alternatives",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Polices de caractère",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "supprimer les polices de caractère inutilisées",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "supprimer les polices de caractère alternatives",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Feuilles de style",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "compresser le contenu CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "regrouper les feuilles de style dupliquées",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "déplacer dans l'élément head les styles trouvés en dehors de celui-ci",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "supprimer les styles inutilisés",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "supprimer les feuilles de styles pour les appareils autres que des écrans",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Réseau",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "ressources bloquées",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "en-tête \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "vidéos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documents",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "polices de caractères",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "feuilles de style",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "images",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destination",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Signets",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Auto-sauvegarde",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Règles d'auto-configuration",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Confirmez la suppression de toutes les règles affichées",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Supprimer toutes les règles affichées",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Entrer une URL complète ou partielle (e.g. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Profil auto-sauvegarde",
"description": "Options label in the auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "afficher tous les profils",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "afficher la colonne 'Profil auto-sauvegarde'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Mettre à jour la règle",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Supprimer la règle",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Ajouter la règle",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Valider les changements",
"description": "Popup text 'Valider les changements' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Annuler les changements",
"description": "Popup text 'Annuler les changements' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Confirmer la suppression de la règle selectionnée",
"description": "Popup text 'Confirm deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "auto-sauvegarder après le chargement de la page ou au déchargement",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "auto-sauvegarder après le chargement de la page",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "auto-sauvegarder au déchargement de la page",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "auto-sauvegarder à la mise à l'écart de l'onglet",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "auto-sauvegarder à la supression de l'onglet",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "délai d'attente après le chargement de la page (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "auto-sauvegarder périodiquement",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "période (s)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "sauvegarder la page avec SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Éditeur d'annotations",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "annoter la page avant de la sauvegarder",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "ouvrir les pages sauvées dans un nouvel onglet",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "ouvrir les pages sauvées avec SingleFile dans l'éditeur d'annotations",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "mode par défaut",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "éditer la page",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formater la page",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "supprimer des éléments",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "supprimer des éléments externes",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "appliquer le thème système lors du formattage d'une page",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "largeur du contenu lors du formatage d'une page (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "avertir si l'on quitte la page avec des modifications non sauvegardées",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "afficher la barre d'information",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Divers",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "sauvegarder la page en tâche de fond",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "afficher les statistiques dans la console après la sauvegarde",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "définir la taille maximale",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "taille maximale (Mo)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "définir la durée maximale de téléchargement",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "durée maximale de téléchargement (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "passer l'en-tête \"Referer\" après une erreur de requête multi-origine",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "sauvegarder la page brute",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "définir la stratégie de sécurité du contenu",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "copier dans le presse-papiers",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "enregistrer dans le système de fichiers",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "partager la page",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "ajouter une preuve d'existence",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirmez que vous autorisez SingleFile à envoyer à l'API de Woleet un hachage SHA256 de chaque page que vous allez enregistrer. Vous trouverez plus d'informations sur cette fonctionnalité dans la page d'aide ou en cliquant sur le point d'interrogation à côté de l'option.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "jeton d'accès",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "téléverser sur Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "téléverser sur Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "téléverser sur GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "jeton d'accès",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nom d'utilisateur",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nom du dépôt",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nom de la branche",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "téléverser sur Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domaine",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "région",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "nom du bucket",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "clé d'accès",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "clé secrète",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "téléverser sur un serveur WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identifiant utilisateur",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "mot de passe",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "téléverser sur un serveur MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL du serveur",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "jeton d'authentification",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "sauvegarder avec SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "sauvegarder la page d'un signet nouvellement créé",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "lier le nouveau signet à la page sauvegardée",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "dossiers autorisés",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "dossiers ignorés",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "aide (anglais)",
"description": "Options help link"
},
"optionSynchronize": {
"message": "synchronizer les options",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Remise à zéro",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Remettre toutes les options à leur valeur par défaut",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Confirmer la remise à zéro de toutes les options ou la remise à zéro du profil courant",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Remettre à zéro toutes les options",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Remettre à zéro le profil courant",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Annuler",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exporter",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importer",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Images différées",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Contenus des cadres",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Image intégrée",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Étape",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "147",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Erreur SingleFile : ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Ouvrir image...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Partager la page...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Partager la sélection...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Configuration par défaut",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Désactivé",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Ajouter un nouveau profil",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Renommer le profil",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Supprimer le profil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Saisissez un nom pour ce nouveau profil",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Confirmez la suppression du profil selectionné",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Saisissez un nouveau nom pour le profil sélectionné",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Ajouter une note jaune",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Ajouter une note rose",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Ajouter une note bleue",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Ajouter une note verte",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Surligner en jaune le text selectionné",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Surligner en rose le text selectionné",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Surligner en bleu le text selectionné",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Surligner en vert le text selectionné",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Afficher/cacher les notes",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Afficher/cacher le texte surligné",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Supprimer le surlignement du texte selectionné",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Activer/déactiver le mode lecture seule",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formater la page pour une meilleure lisibilité",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Activer/désactiver la supression des éléments internes",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Activer/désactiver la supression des éléments externes",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Restaurer le dernier élement supprimé",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Restaurer tous les élements supprimés",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Supprimer le dernier élement restauré",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Sauver la page",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Imprimer la page",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importer un fichier MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Sauvegardes en cours",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Annuler tout",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Titre",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "statut",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "en attente",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "en cours",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "annulation",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Aucune sauvegarde en cours",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Ajouter URLs",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Entrez une liste d'URLs séparées par une nouvelle ligne",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Annuler",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Sauver des URLs par lot",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Pas d'URLs",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Ajouter une URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Ajouter des URLs...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Supprimer tout",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Sauver les pages",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "téléverser sur une API de formulaire REST",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL de l'API",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "Jeton d'authentification",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "Nom du champ des données de l'archive",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "Nom du champ de l'URL de l'archive",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Éditeur d'options",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Sauvegarder",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuration sauvegardée",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "JSON invalide",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/it/messages.json
================================================
{
"extensionDescription": {
"message": "Salva una pagina completa in un singolo file HTML",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Salva la scheda selezionata o i suoi contenuti selezionati",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Salva tutte le schede",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Scorciatoia personalizzata",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Scorciatoia personalizzata #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Scorciatoia personalizzata #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Scorciatoia personalizzata #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Scorciatoia personalizzata #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Scorciatoia personalizzata #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Scorciatoia personalizzata #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Scorciatoia personalizzata #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Scorciatoia personalizzata #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Scorciatoia personalizzata #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Scorciatoia personalizzata #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Salva pagina con SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Salva link selezionati",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Annota la pagina...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Annota e salva la pagina...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Salva pagina con profilo",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Mostra salvataggi in attesa...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Seleziona il profilo predefinito",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Seleziona il profilo della regola corrente",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Seleziona il profilo del dominio corrente",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Salva selezione",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Salva frame",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Salva schede",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Salva schede selezionate",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Salva schede sbloccate",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Salva tutte le schede",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Salvataggio batch di URL...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Auto-salvataggio",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Disabilitato",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Auto-salva questa scheda",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Auto-sava schede sbloccate",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Auto-salva tutte le schede",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Salva pagina con SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Questa pagina non può essere salvata con SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Inizializzazione SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Progressi salvataggio: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Progressi caricamento: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Auto-salvataggio attivo",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opzioni",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interfaccia utente",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "aggiunge voce nel menu contestuale della pagina web",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "Sovrapponi un'ombra sulla pagina durante la lavorazione",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "Visualizza una barra informatica quando vedi una pagina salvata",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "Modello del contenuto della barra informativa",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "blocca contenuti misti",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "salva gli URL originali delle risorse incorporate",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "includi una barra informativa nella pagina salvata",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "mantenere aperto l'infobar",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "non includere la data di salvataggio",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "Apri un finestra di dialogo per modificare il contenuto della barra informativa",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "auto-chiudi la scheda dopo che la pagina è stata salvata",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "comando di scorciatoia da tastiera",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "scorciatoia predefinita",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nome file",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "Modello",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "lunghezza massima",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "caratteri",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "carattere di sostituzione",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "sostituisci le emoji con il testo",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "salvare i dati del modello del nome del file nella pagina",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "Apri la finesta di dialogo \"Salva come\" per confermare il nome del file",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "Risoluzione conflitto nome file",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "crea un nome univoco",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "Sovrascirivi il file esistente",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "chiedi un nome",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "ignora file duplicati",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Contenuto HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "comprimi contenuto HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "rimuovi frame",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "rimuovi elementi nascosti",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "rimuovi elementi specifici",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Formato del file",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "formato",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "ZIP autoestraente (universale)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "ZIP autoestraente",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "password",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "crea una cartella principale",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "disabilita la compressione",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "non aggiungere dati dopo i dati ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "rendi il testo ricercabile",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "immagine incorporata",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "screenshot",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "immagine personalizzata",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Barra informativa",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Immagini",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "raggruppa insieme immagini duplicate",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "fattore di riduzione dell'immagine",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "salva immagini differite",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "massimo tempo di attesa (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "zoom out pagina",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "inviare evento \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "salva frame differite",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "rimuovi immagini per risoluzioni dello schermo alternative",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Caratteri",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "rimuovi caratteri non utilizzati",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "rimuovi caratteri alternativi",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Fogli di stile",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "comprimi contenuto CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "raggruppa insieme fogli di stile duplicati",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "sposta nell'elemento head gli stili trovati al di fuori di esso",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "Rimuovi stili non utilizzati",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "rimuovi stili non utilizzati per per schermi dispositivi alternativi",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Rete",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "risorse bloccate",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "Intestazione \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documenti",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "caratteri",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "fogli di stile",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "immagini",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destinazione",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Segnalibri",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Auto-salva",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Regole auto-impostazioni rules",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Conferma l'eliminazione di tutte le regole visualizzate",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Elimina tutte le regole visualizzate",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Tipo di URL completo o parziale (p.e. esempio.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profilo",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Auto-salva profilo",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "mostra tutti i profili",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "mostra colonna 'Auto-salva profilo'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Aggiorna la regola",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Elimina la regola",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Aggiungi la regola",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Valida cambiamenti",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Annulla cambiamenti",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Conferma l'eliminazione delle regole selezionate",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "auto-salva dopo il caricamento della pagina o al non caricamento della pagina",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "auto-salva pagina dopo il caricamento",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "auto-salva al non caricamento della pagina",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "auto-salva all'uscita della scheda",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "auto-save alla rimozione della scheda",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "auto-salva ritardo attesa dopo caricamento pagina (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "auto-salva periodicamente",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "periodo (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "salva la pagina con SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Editor annotazioni",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "annota la pagina prima di salvarla",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "apri pagine salvate in una nuova scheda",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "apri pagine salvate con SingleFile nell'editor annotazioni",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "modalità predefinita",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normale",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "modifica la pagina",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatta la pagina",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "rimuovi elementi",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "rimuovi elementi esterni",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "applica il tema di sistema quando formatti una pagina",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "larghezza contenuto quando formatti una pagina (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "avvisa se si lascia una pagina con cambiamenti non salvati",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "visualizzare la barra informativa",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Varie",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "salva pagine in background",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "mostra statistiche nella console dopo la lavorazione",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "imposta dimensione massima",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "dimensione massima (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "impostare tempo massimo di download",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "tempo massimo di download (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "passa header \"Referer\" dopo un errore di richiesta cross-origin",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "salva pagina grezza",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "imposta policy di sicurezza contenuto",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "copia negli appunti",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "salva nel filesystem",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "condividi pagina",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "aggiungi una prova di esistenza",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Conferma che permetti a SingleFile di inare alle API Woleet un hash SHA256 di ogni pagina che stai per salvare. Puoi trovare maggiori informazioni su questa caratteristica nella pagina di aiuto o facendo clic sul punto esclamativo accanto all'opzione.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "token accesso",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "carica su Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "carica su Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "carica su GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "token accesso",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nome utente",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nome repository",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nome branch",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "carica su Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "dominio",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "regione",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "nome bucket",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "chiave di accesso",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "chiave segreta",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "carica su un server WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identificatore utente",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "password",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "carica su un server MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL del server",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "token di autenticazione",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "salva con SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "salva la pagina di un nuovo segnalibro creato",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "collega il nuovo segnalibro alla pagina salvata",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "cartelle permesse",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "cartelle ignorate",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "aiuto",
"description": "Options help link"
},
"optionSynchronize": {
"message": "sincronizza opzioni",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Ripristina",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Ripristina tutte le opzioni ai loro valori predefiniti",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Conferma il ripristino di tutte le opzioni o del profilo corrente",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Ripristina tutte le opzioni",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Ripristina il profilo corrente",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Annulla",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Esporta",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importa",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Immagini differite",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Contenuti frame",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Immagine incorporata",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Passo",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Errore di SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Apri immagine...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Condividi pagina...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Condividi selezione...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Impostazioni predefinite",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Disabilitato",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Aggiungi un nuovo profilo",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Rinomina il profilo",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Elimina il profilo",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Inserisci un nome per questo nuovo profilo",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Conferma l'eliminazione del profilo selezionato",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Inserisci un nuovo nome per il profilo selezionato",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Aggiungi una nota gialla",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Aggiungi una nota rosa",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Aggiungi una nota blu",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Aggiungi una nota verde",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Evidenzia testo selezionato in giallo",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Evidenzia testo selezionato in rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Evidenzia testo selezionato in blu",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Evidenzia testo selezionato in verde",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Mostra/nascondi note",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Mostra/nascondi il testo evidenziato",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Rimuovi il testo evidenziato selezionato",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Abilita/disabilita solo lettura",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formatta la pagina per una migliore leggibilità",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Abilita/disabilita la rimozione di elementi interni",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Abilita/disabilita la rimozioni di elementi esterni",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Ripristina ultimo elemento rimosso",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Ripristina tutti gli elementi rimossi",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Rimuovi ultimo elemento ripristinato",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Salva la pagina",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Stampa la pagina",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importa file MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Salvataggi in attesa",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Cancella tutto",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Titolo",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "stato",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "in attesa",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "in lavorazione",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "cancellazione",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Nessun salvataggio in attesa",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Aggiungi URL",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Inserisci un elenco di URL separati da una nuova riga",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Annulla",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Salvataggio batch di URL",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Nessun URL",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Aggiungi URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Aggiungi URL...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Rimuovi tutto",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Salva le pagine",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "carica su un API REST Form",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "token di autorizzazione",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "nome del campo dei dati di archivio",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "nome del campo URL archivio",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Editor opzioni",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Salva",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configurazione salvata",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "JSON non valido",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/ja/messages.json
================================================
{
"extensionDescription": {
"message": "完全なページを単一の HTML ファイルに保存する",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Save the selected tabs or their selected contents",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "すべてのタブを保存",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "カスタムショートカット",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "カスタムショートカット #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "カスタムショートカット #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "カスタムショートカット #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "カスタムショートカット #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "カスタムショートカット #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "カスタムショートカット #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "カスタムショートカット #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "カスタムショートカット #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "カスタムショートカット #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "カスタムショートカット #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "SingleFile でページを保存",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "選択したリンクを保存する",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "ページに注釈を付ける...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "ページに注釈を付けて保存する...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "プロファイルでページを保存する",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "保留中の保存を表示...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "規定(default)のプロファイルを選択",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "現在のルールのプロファイルを選択",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "現在のドメインのプロファイルを選択",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "選択を保存",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "フレームを保存",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "タブを保存",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "選択したタブを保存",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "固定解除されたタブを保存する",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "すべてのタブを保存",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "URLを一括保存する...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "自動保存",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "無効",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "このタブを自動保存する",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "固定解除されたタブの自動保存",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "すべてのタブを自動的に保存する",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "SingleFile でページを保存",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "このページは SingleFile では保存できません",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "SingleFile の初期化",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "進行状況を保存: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "アップロードの進行状況: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "エラー",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "有効な自動保存",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "オプション(設定)",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "ユーザーインターフェイス(表示)",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "ウェブページのコンテキストメニューにエントリを追加する",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "処理中のページに影を重ねる",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "保存したページを表示するときに情報バーを表示する",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "infobar コンテンツのテンプレート",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "ミックスコンテンツをブロックする",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "埋め込まれたリソースの元の URL を保存する",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "保存されたページに、infobar を含める",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "インフォバーを開いておく",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "保存日時を含めない",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "infobar のコンテンツを編集するためのプロンプトダイアログを開く",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "ページが保存された後にタブを自動的に閉じる",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "キーボードショートカットコマンド",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "デフォルトのショートカット",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "ファイル名",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "保存時の定形書式",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "最大長",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "バイト",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "文字数",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "置換文字",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "絵文字をテキストに置き換える",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "ファイル名テンプレートデータをページに保存する",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "を開く(として保存する:ファイル名を確認するためのダイアログ)",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "ファイル名の競合を解決する",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "独自の名前を作成する",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "既存のファイルを上書きする",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "名前を求めるプロンプト",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "重複ファイルをスキップ",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML コンテンツ",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "HTML コンテンツを圧縮する",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "フレームを削除する",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "隠された要素を削除する",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "特定の要素を削除する",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "ファイル形式",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "形式",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "自己解凍型ZIP(ユニバーサル)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "自己解凍型ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "パスワード",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "ルートディレクトリを作成する",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "圧縮を無効にする",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "ZIPデータの後にデータを追加しない",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "テキストを検索可能にする",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "埋め込み画像",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "スクリーンショット",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "カスタム画像",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "インフォバー",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "画像",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "オプション重複画像のグループ化",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "画像の縮小係数",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "遅延画像を保存する",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "最大アイドル時間(ミリ秒)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "ページを縮小する",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "「スクロール」イベントを発行する",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "遅延フレームを読み込む",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "代替画面解像度用の画像を削除します",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "フォント",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "未使用のフォントを削除する",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "代替フォントを削除する",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "スタイルシート",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "CSS コンテンツを圧縮する",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "オプション重複スタイルシートのグループ化",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "head要素の外にあるスタイルをhead要素内に移動する",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "未使用のスタイルを削除する",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "代替デバイス用のスタイルシートを画面に表示しない",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "ネットワーク",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "ブロックされたリソース",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Accept\" ヘッダー",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "スクリプト",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "ビデオ",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "オーディオ",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "ドキュメント",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "フォント",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "スタイルシート",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "画像",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "宛先",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "ブックマーク",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "自動保存",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "自動設定のルール",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "表示されているすべてのルールの削除を確認します",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "表示されているすべてのルールを削除する",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "完全または部分的な URL を入力します (例 example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "プロファイル",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "プロファイルの自動保存",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "すべてのプロファイルを表示します",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "「プロファイルの自動保存」列を表示する",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "ルールを更新する",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "ルールを削除する",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "ルールを追加する",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "変更内容を検証します",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "変更をキャンセルします",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "選択したルールの削除を確認する",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "ページの読み込み後またはページの非読み込み時に自動保存",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "ページ読み込み後の自動保存",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "ページの非読み込み時に自動保存",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "タブの破棄時に自動保存",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "タブの削除時に自動保存",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "ページ読み込み後の自動保存待ち時間(秒)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "定期的に自動保存する",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "所要時間(秒)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "SingleFile Companion でページを保存する",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "注釈エディタ",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "保存する前にページに注釈を付けます",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "新しいタブで保存されたページを開く",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "annotation editor で、SingleFile で保存されたページを開く",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "デフォルトモード",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "通常",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "ページを編集する",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "ページの書式設定",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "要素を削除する",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "外部要素を削除する",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "ページの書式設定時にシステムテーマを適用する",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "ページの書式設定時のコンテンツ幅(em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "未保存の変更がある場合に警告する",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "インフォバーを表示する",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "その他",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "バックグラウンドでページを保存する",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "処理後、コンソールに統計情報を表示する",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "最大サイズを設定する",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "最大サイズ(MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "最大ダウンロード時間を設定する",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "最大ダウンロード時間(秒)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "クロスオリジンリクエストエラー後に「Referer」ヘッダーを渡す",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "生のページを保存",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "コンテンツセキュリティポリシーを設定する",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "クリップボードに保存する",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "ファイルシステムに保存する",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "ページを共有する",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "ブロックチェーン証明を追加する",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirm you allow SingleFile to send to the Woleet API a SHA256 hash of each page you are going to save. You can find more information about this feature in the help page or by clicking on the question mark next to the option.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "アクセストークン",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "Google Drive に保存",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "Dropbox に保存",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "GitHub にアップロードする",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "アクセストークン",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "ユーザー名",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "リポジトリ名",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "ブランチ名",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "Amazon S3 にアップロードする",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "ドメイン",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "リージョン",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "バケット名",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "アクセスキー",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "シークレットキー",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "WebDAVサーバーにアップロードする",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "ユーザー識別子",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "パスワード",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "MCPサーバーにアップロードする",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "サーバーURL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "認証トークン",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "SingleFile Companionで保存する",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "新しく作成したブックマークのページを保存する",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "新しいブックマークを保存したページにリンクさせることを可能にする",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "許可されたフォルダ",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "無視されたフォルダ",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "ヘルプ",
"description": "Options help link"
},
"optionSynchronize": {
"message": "同期オプション",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "リセット",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "すべてのオプションを規定値にリセットする",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "すべてのオプションまたは現在のプロファイルのリセットを確認します",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "すべてのオプションをリセットする",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "現在のプロファイルをリセットする",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "キャンセル",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "エクスポート",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "インポート",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "遅延画像",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "フレームの内容",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "埋め込み画像",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "ステップ",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "115",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile エラー: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "画像を開く...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "ページを共有...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "選択したコンテンツを共有...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "デフォルトの設定",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "無効",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "新しいプロファイルを追加します",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "プロファイルの名前を変更する",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "プロファイルを削除する",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "この新しいプロファイルの名前を入力します。",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "選択したプロファイルの削除を確認する",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "選択したプロファイルの新しい名前を入力します。",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "黄色のメモを追加する",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "ピンクのメモを追加",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "青いメモを追加する",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "緑のメモを追加する",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "選択したテキストを黄色で強調表示します",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "選択したテキストをピンクで強調表示します",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "選択したテキストを青色で強調表示します",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "選択したテキストを緑色で強調表示します",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "メモを表示/非表示",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "強調表示されたテキストを表示/非表示",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "選択した強調表示されたテキストを削除します",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "読み取り専用を有効/無効にする",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "ページを読みやすくフォーマットする",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "内部要素の削除を有効/無効にする",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "外部要素の削除を有効/無効にする",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "最後に削除された要素を復元する",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "削除されたすべての要素を復元する",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "最後に復元された要素を削除する",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "ページを保存する",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "ページを印刷する",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "MHTMLファイルをインポート",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "保留中の保存",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "すべてをキャンセルする",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "タイトル",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "状態",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "保留中",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "処理中",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "キャンセル実行中",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "保留中の保存はありません",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "URL を追加",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "改行で区切られた URL のリストを入力してください",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "キャンセル",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "URL を一括保存",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "URL がありません",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "URL を追加",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "URL を追加...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "すべて削除",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "ページを保存",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "REST Form API に保存する",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "認証トークン",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "ファイル・データ・フィールド名",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "アーカイブURLフィールド名",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "オプションエディタ",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "保存",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "設定が保存されました",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "無効な JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/nl_NL/messages.json
================================================
{
"extensionDescription": {
"message": "Sla een complete website op in één HTML-bestand",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Sla de geselecteerde tabbladen of hun geselecteerde inhoud op",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Sla alle tabbladen op",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Aangepaste snelkoppeling",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Aangepaste snelkoppeling #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Aangepaste snelkoppeling #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Aangepaste snelkoppeling #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Aangepaste snelkoppeling #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Aangepaste snelkoppeling #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Aangepaste snelkoppeling #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Aangepaste snelkoppeling #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Aangepaste snelkoppeling #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Aangepaste snelkoppeling #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Aangepaste snelkoppeling #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Sla pagina op met SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Sla geselecteerde links op",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Annoteer de pagina...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Annoteer en sla de pagina op...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Sla pagina op met profiel",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Bekijk lopende opslagen...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Selecteer het standaardprofiel",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Selecteer het profiel van de huidige regel",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Selecteer het profiel van het huidige domein",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Sla selectie op",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Sla frame op",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Sla tabbladen op",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Sla geselecteerde tabbladen op",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Sla niet vastgezette tabbladen op",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Sla alle tabbladen op",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "URL's in batches opslaan...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Automatisch opslaan",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Uitgeschakeld",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Sla dit tabblad automatisch op",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Sla niet vastgezette tabbladen automatisch op",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Sla alle tabbladen automatisch op",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Sla pagina op met SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Deze pagina kan niet worden opgeslagen met SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "SingleFile initialiseren",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Opslagvoortgang: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Uploadvoortgang: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Automatisch opslaan actief",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opties",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Gebruikersinterface",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "voeg een item toe aan het contextmenu van de webpagina",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "plaats een schaduw over de pagina tijdens het verwerken",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "toon een infobalk bij het bekijken van een opgeslagen pagina",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "sjabloon van de infobalkinhoud",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "blokkeer gemengde inhoud",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "sla originele URL's van ingesloten bronnen op",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "neem de infobalk op in de opgeslagen pagina",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "infobalk openhouden",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "sla de opgeslagen datum niet op",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "open een promptvenster om de inhoud van de infobalk te bewerken",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "sluit het tabblad automatisch na het opslaan van de pagina",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "toetsenbord snelkoppeling opdracht",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "standaard snelkoppeling",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Bestandsnaam",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "sjabloon",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "maximale lengte",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "tekens",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "vervangend teken",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "vervang emoji's door tekst",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "sla de bestandsnaamsjabloongegevens op in de pagina",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "open het \"Opslaan als\"-venster om de bestandsnaam te bevestigen",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "gebruik een unieke bestandsnaam",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "gebruik een unieke naam",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "overschrijf het bestaande bestand",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "dialoogvenster voor het invoeren van een bestandsnaam",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "sla dubbele bestanden over",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML-inhoud",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "comprimeer HTML-inhoud",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "verwijder frames",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "verwijder verborgen elementen",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "specifieke elementen verwijderen",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Bestandsformaat",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "formaat",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "zelfuitpakkend ZIP (universeel)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "zelfuitpakkend ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "wachtwoord",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "maak een hoofdmap",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "compressie uitschakelen",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "voeg geen gegevens toe na de ZIP-gegevens",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "maak tekst doorzoekbaar",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "insluiten afbeelding",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "schermafbeelding",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "aangepaste afbeelding",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Infobalk",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Afbeeldingen",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "dubbele afbeeldingen samenvoegen",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "factor voor verkleining van afbeeldingen",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "uitgestelde afbeeldingen opslaan",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maximale wachttijd (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "zoom uit op de pagina",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "verzend \"scroll\"-gebeurtenis",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "laad uitgestelde frames",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "verwijder afbeeldingen voor alternatieve schermresoluties",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Lettertypen",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "verwijder ongebruikte lettertypen",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "verwijder alternatieve lettertypen",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Stijlbladen",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "CSS-inhoud comprimeren",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "dubbele stijlbladen samenvoegen",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "verplaats de stijlen die zich buiten het head-element bevinden",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "verwijder ongebruikte stijlen",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "verwijder stijlbladen voor alternatieve apparaten",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Netwerk",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "geblokkeerde bronnen",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Accept\"-koptekst",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "video's",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audio's",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documenten",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "lettertypen",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "stijlbladen",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "afbeeldingen",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Bestemming",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Bladwijzers",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Automatisch opslaan",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Regels voor automatische configuratie",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Bevestig het verwijderen van alle weergegeven regels",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Verwijder alle weergegeven regels",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Typ een volledige of gedeeltelijke URL (bijv. voorbeeld.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profiel",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Profiel automatisch opslaan",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "toon alle profielen",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "toon 'profiel automatisch opslaan' kolom",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Regel bijwerken",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Regel verwijderen",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Regel toevoegen",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Wijzigingen bevestigen",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Wijzigingen annuleren",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Bevestig de verwijdering van de geselecteerde regel",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "automatisch opslaan na het laden van de pagina of bij het verlaten van de pagina",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "automatisch opslaan na het laden van de pagina",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "automatisch opslaan bij het verlaten van de pagina",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "automatisch opslaan bij het sluiten van het tabblad",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "automatisch opslaan bij het verwijderen van het tabblad",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "wachttijd voor automatisch opslaan na het laden van de pagina (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "periodiek automatisch opslaan",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "periode (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "pagina opslaan met SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Annotatie-editor",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "pagina annoteren voor opslaan",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "opgeslagen pagina's openen in een nieuw tabblad",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "open pagina's opgeslagen met SingleFile in de annotatie-editor",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "standaardmodus",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normaal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "bewerk de pagina",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatteer de pagina",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "verwijder elementen",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "verwijder externe elementen",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "pas systeemthema toe bij formatteren van pagina",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "inhoudsbreedte bij formatteren van pagina (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "waarschuwen bij verlaten van pagina met niet-opgeslagen wijzigingen",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "toon infobalk",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Diversen",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "sla pagina's op in de achtergrond",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "toon statistieken in console na verwerking",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "stel maximale grootte in",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maximale grootte (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "stel maximale downloadtijd in",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maximale downloadtijd (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "stuur \"Referer\"-header na een cross-origin verzoekfout",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "Originele pagina opslaan",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "inhoudsbeveiligingsbeleid instellen",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "kopieer naar klembord",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "opslaan in bestandssysteem",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "deel pagina",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "voeg bewijs van bestaan toe",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Bevestig dat je SingleFile toestaat een SHA256-hash van elke pagina die je opslaat naar de Woleet API te sturen. Meer informatie vind je op de helppagina of door op het vraagteken naast de optie te klikken.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "toegangstoken",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "upload naar Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "upload naar Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "upload naar GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "toegangstoken",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "gebruikersnaam",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "naam van de repository",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "naam van de branch",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "upload naar Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domein",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "regio",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "bucketnaam",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "toegangssleutel",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "geheime sleutel",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "upload naar een WebDAV-server",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "gebruikers-ID",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "wachtwoord",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "upload naar een MCP-server",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "server-URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "authenticatietoken",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "opslaan met SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "bewaar de pagina van een nieuw gemaakte bladwijzer",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "koppel nieuwe bladwijzer aan opgeslagen pagina",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "toegestane mappen",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "genegeerde mappen",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "help",
"description": "Options help link"
},
"optionSynchronize": {
"message": "synchroniseer opties",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Reset",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Reset alle opties naar standaardwaarden",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Bevestig reset van alle opties of het huidige profiel",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Reset alle opties",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Reset huidig profiel",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Annuleer",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exporteer",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importeer",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Geplaatste afbeeldingen",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Inhoud van frames",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Ingebedde afbeelding",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Stap",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "147",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile fout: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Afbeelding openen...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Pagina delen...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Selectie delen...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Standaardinstellingen",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Uitgeschakeld",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Nieuw profiel toevoegen",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Profiel hernoemen",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Profiel verwijderen",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Voer een naam in voor dit nieuwe profiel",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Bevestig de verwijdering van het geselecteerde profiel",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Voer een nieuwe naam in voor het geselecteerde profiel",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Gele notitie toevoegen",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Roze notitie toevoegen",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Blauwe notitie toevoegen",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Groene notitie toevoegen",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Markeer geselecteerde tekst in geel",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Markeer geselecteerde tekst in roze",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Markeer geselecteerde tekst in blauw",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Markeer geselecteerde tekst in groen",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Notities weergeven/verbergen",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Gemarkeerde tekst weergeven/verbergen",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Verwijder de geselecteerde markering",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "In-/uitschakelen alleen-lezen modus",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Pagina formatteren voor betere leesbaarheid",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "In-/uitschakelen verwijderen van interne elementen",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "In-/uitschakelen verwijderen van externe elementen",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Laatste verwijderde element herstellen",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Alle verwijderde elementen herstellen",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Laatste herstelde element verwijderen",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Pagina opslaan",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Pagina afdrukken",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importeer MHTML-bestand",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Opslaan in afwachting",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Alles annuleren",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Titel",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "in afwachting",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "verwerken",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "annuleren",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "er zijn geen opslaan in afwachting",
"description": "Label displayed when there are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "URLs toevoegen",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Voer een lijst van URLs in, gescheiden door een nieuwe regel",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Annuleren",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Batch-URLs opslaan",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Geen URLs",
"description": "Label displayed when there are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "URL toevoegen",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "URLs toevoegen...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Alles verwijderen",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Pagina's opslaan",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "uploaden naar een REST Form API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "autorisatietoken",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "veldnaam voor archiefdata",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "veldnaam voor archief-URL",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Opties editor",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Opslaan",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuratie opgeslagen",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Ongeldige JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/pl/messages.json
================================================
{
"extensionDescription": {
"message": "Zapisuj kompletną stronę w pojedynczym pliku HTML.",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Zapisz wybrane karty lub ich wybraną zawartość",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Zapisz wszystkie karty",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Skrót niestandardowy",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Skrót niestandardowy nr 1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Skrót niestandardowy nr 2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Skrót niestandardowy nr 3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Skrót niestandardowy nr 4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Skrót niestandardowy nr 5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Skrót niestandardowy nr 6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Skrót niestandardowy nr 7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Skrót niestandardowy nr 8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Skrót niestandardowy nr 9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Skrót niestandardowy nr 10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Zapisz stronę z SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Zapisz wybrane odnośniki",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Adnotuj stronę...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Adnotuj i zapisz stronę...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Zapisz stronę z profilem",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Zobacz oczekujące zapisy...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Wybierz profil domyślny",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Wybierz profil bieżącej reguły",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Wybierz profil bieżącej domeny",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Zapisz wybór",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Zapisz ramkę",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Zapisz karty",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Zapisz wybrane karty",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Zapisz odpięte karty",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Zapisz wszystkie karty",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Zapisz wsadowo adresy URL...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Automatyczny zapis",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Wyłączony",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Automatycznie zapisz tę kartę",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Automatycznie zapisz odpięte karty",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Automatycznie zapisz wszystkie karty",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Zapisz stronę z SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Tej strony nie można zapisać z SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Inicjowanie SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Postęp zapisywania: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Postęp przesyłania: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Automatyczny zapis aktywny",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opcje",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interfejs użytkownika",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "dodawaj wpis w menu kontekstowym strony",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "nakładaj cień na stronę podczas przetwarzania",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "wyświetlaj pasek informacyjny podczas przeglądania zapisanej strony",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "szablon zawartości paska informacyjnego",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "blokuj zawartość mieszaną",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "zapisuj oryginalne adresy URL zasobów osadzonych",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "dołączaj pasek informacyjny do zapisanej strony",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "utrzymuj pasek informacyjny otwarty",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "nie dołączaj zapisanej daty",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "otwieraj okno dialogowe z monitem, aby edytować zawartość paska informacyjnego",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "automatycznie zamykaj kartę po zapisaniu strony",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "polecenie skrótu klawiaturowego",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "skrót domyślny",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nazwa pliku",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "szablon",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "maksymalna długość",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bajty",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "znaki",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "znak zastępczy",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "zamień emotikony na tekst",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "zapisz dane szablonu nazwy pliku na stronie",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "otwieraj okno \"Zapisz jako\", aby potwierdzić nazwę pliku",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "rozwiązywanie konfliktu nazwy pliku",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "stwórz unikalną nazwę pliku",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "nadpisz istniejący plik",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "zapytaj o nazwę",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "pomiń duplikaty plików",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Zawartość HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "kompresuj zawartość HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "usuwaj ramki",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "usuwaj ukryte elementy",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "usuwaj określone elementy",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Format pliku",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "samorozpakowujący się plik ZIP (uniwersalny)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "samorozpakowujący się plik ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionCreateRootDirectory": {
"message": "utwórz katalog główny",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "wyłącz kompresję",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "nie dołączaj danych po danych ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionPassword": {
"message": "hasło",
"description": "Options page label: 'password'"
},
"optionInsertTextBody": {
"message": "uczyń tekst przeszukiwalnym",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "osadź obraz",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "zrzut ekranu strony",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "obraz niestandardowy",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Pasek informacyjny",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Obrazy",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "grupuj zduplikowane obrazy razem",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "współczynnik redukcji obrazów",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "zapisuj odroczone obrazy",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maksymalny czas bezczynności (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "pomniejsz stronę",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "wysyłaj zdarzenie \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "ładuj odroczone ramki",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "usuwaj obrazy dla alternatywnych rozdzielczości ekranu",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Czcionki",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "usuwaj nieużywane czcionki",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "usuwaj alternatywne czcionki",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Arkusze stylów",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "kompresuj zawartość CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "grupuj razem duplikaty arkuszy stylów",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "przenoś do elementu head style znajdujące się poza nim",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "usuwaj nieużywane style",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "usuwaj arkusze stylów dla urządzeń innych niż ekrany",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Sieć",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "zablokowane zasoby",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "nagłówek \"Akceptuj\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "skrypty",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "wideo",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "audio",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "dokumenty",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "czcionki",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "arkusze stylów",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "obrazy",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Cel",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Zakładki",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Automatyczny zapis",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Reguły automatycznej konfiguracji",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Potwierdź usunięcie wszystkich wyświetlanych reguł",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Usuń wszystkie wyświetlane reguły",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "Adres URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Wpisz cały lub częściowy adres URL (np. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Automatyczny zapis profilu",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "wyświetlaj wszystkie profile",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "wyświetlaj kolumnę 'Automatyczny zapis profilu'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Uaktualnij regułę",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Usuń regułę",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Dodaj regułę",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Zatwierdź zmiany",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Anuluj zmiany",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Potwierdź usunięcie wybranej reguły",
"description": "Popup text 'Confirm deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "automatycznie zapisuj po załadowaniu lub przy wyładowaniu strony",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "automatycznie zapisuj po załadowaniu strony",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "automatycznie zapisuj przy wyładowaniu strony",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "automatycznie zapisuj przy odrzucaniu karty",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "automatycznie zapisuj przy usuwaniu karty",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "opóźnienie oczekiwania automatycznego zapisywania po załadowaniu strony (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "automatycznie zapisuj okresowo",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "okres (s)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "zapisuj stronę z SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Edytor adnotacji",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "adnotuj stronę przed zapisaniem",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "otwieraj zapisane strony w nowej karcie",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "otwieraj strony zapisane z SingleFile w edytorze adnotacji",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "tryb domyślny",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normalny",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "edytuj stronę",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatuj stronę",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "usuń elementy",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "usuń elementy zewnętrzne",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "zastosuj motyw systemowy podczas formatowania strony",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "szerokość zawartości podczas formatowania strony (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "ostrzegaj, jeśli opuszczasz stronę z niezapisanymi zmianami",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "wyświetlanie paska informacyjnego",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Różne",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "zapisuj strony w tle",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "wyświetlaj statystyki w konsoli po przetworzeniu",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "ustaw maksymalny rozmiar",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maksymalny rozmiar (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "ustaw maksymalny czas pobierania",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maksymalny czas pobierania (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "przekazuj nagłówek \"Referer\" po błędzie żądania między źródłami",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "zapisuj surową stronę",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "ustaw politykę bezpieczeństwa treści",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "kopiuj do schowka",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "zapisuj do systemu plików",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "udostępnij stronę",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "dodawaj dowód istnienia",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Potwierdź, że zezwalasz SingleFile na wysyłanie do interfejsu API Woleet skrótu SHA256 każdej strony, którą chcesz zapisać. Więcej informacji na temat tej funkcji można znaleźć na stronie pomocy lub klikając znak zapytania obok opcji.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "token dostępu",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "przesyłaj na Dysk Google",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "przesyłaj na Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "przesyłaj do GitHuba",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "token dostępu",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nazwa użytkownika",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nazwa repozytorium",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nazwa gałęzi",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "przesyłaj do Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domena",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "region",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "nazwa komory",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "klucz dostępu",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "klucz tajny",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "przesyłaj na serwer WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "adres URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identyfikator użytkownika",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "hasło",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "przesyłaj na serwer MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "adres URL serwera",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "token uwierzytelniający",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "zapisuj z SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "zapisuj stronę nowo utworzonej zakładki",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "łącz nową zakładkę z zapisaną stroną",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "dozwolone foldery",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "ignorowane foldery",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "pomoc (w języku angielskim)",
"description": "Options help link"
},
"optionSynchronize": {
"message": "synchronizuj opcje",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Resetuj",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Zresetuj wszystkie opcje do ich wartości domyślnych",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Potwierdź zresetowanie wszystkich opcji lub bieżącego profilu",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Zresetuj wszystkie opcje",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Zresetuj bieżący profil",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Anuluj",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Eksportuj",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importuj",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Odroczone obrazy",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Zawartość ramki",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Osadzony obraz",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Krok",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "130",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Błąd SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Otwórz obraz...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Udostępnij stronę...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Udostępnij wybór...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Ustawienia domyślne",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Wyłączony",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Dodaj nowy profil",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Zmień nazwę profilu",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Usuń profil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Wpisz nazwę tego nowego profilu",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Potwierdź usunięcie wybranego profilu",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Wpisz nową nazwę wybranego profilu",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Dodaj żółtą notatkę",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Dodaj różową notatkę",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Dodaj niebieską notatkę",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Dodaj zieloną notatkę",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Podświetl wybrany tekst na żółto",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Podświetl wybrany tekst na różowo",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Podświetl wybrany tekst na niebiesko",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Podświetl wybrany tekst na zielono",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Wyświetl/ukryj notatki",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Wyświetl/ukryj podświetlony tekst",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Usuń wybrany podświetlony tekst",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Włącz/wyłącz tylko do odczytu",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Sformatuj stronę dla lepszej czytelności",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Włącz/wyłącz usuwanie elementów wewnętrznych",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Włącz/wyłącz usuwanie elementów zewnętrznych",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Przywróć ostatni usunięty element",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Przywróć wszystkie usunięte elementy",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Usuń ostatni przywrócony element",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Zapisz stronę",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Wydrukuj stronę",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importuj plik MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Oczekujące zapisy",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Anuluj wszystkie",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "Adres URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Tytuł",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "oczekiwanie",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "przetwarzanie",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "anulowanie",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Brak oczekujących zapisów",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Dodaj adresy URL",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Wprowadź listę adresów URL oddzielonych nowym wierszem",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Anuluj",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Zapisz wsadowo adresy URL",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Brak adresów URL",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Dodaj adres URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Dodaj adresy URL...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Usuń wszystkie",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Zapisz strony",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "Adres URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "przesyłaj do API formularza REST",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "adres URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "token autoryzacji",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "nazwa pola danych archiwum",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "nazwa pola adresu URL archiwum",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Edytor opcji",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Zapisz",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Konfiguracja zapisana",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Nieprawidłowy JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/pt_PT/messages.json
================================================
{
"extensionDescription": {
"message": "Guardar uma página completa num único ficheiro HTML",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Guardar os separadores selecionados ou o seu conteúdo selecionado",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Guardar todos os separadores",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Atalho personalizado",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Atalho personalizado #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Atalho personalizado #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Atalho personalizado #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Atalho personalizado #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Atalho personalizado #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Atalho personalizado #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Atalho personalizado #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Atalho personalizado #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Atalho personalizado #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Atalho personalizado #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Guardar página com SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Guardar links selecionados",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Anotar a página...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Anotar e guardar a página...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Guardar página com perfil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Ver transferências pendentes...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Selecionar o perfil predefinido",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Selecionar o perfil da regra atual",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Selecionar o perfil do domínio atual",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Guardar seleção",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Guardar frame",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Guardar separadores",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Guardar separadores selecionados",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Guardar separadores não fixados",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Guardar todos os separadores",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Guardar URLs em lote...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Guardar automaticamente",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Desativado",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Guardar automaticamente este separador",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Guardar automaticamente separadores não fixados",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Guardar automaticamente todos os separadores",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Guardar página com SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Esta página não pode ser guardada com o SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "A iniciar SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Guardar progresso: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Carregar progresso: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERRO",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Guardar automaticamente ativo",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opções",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interface do utilizador",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "adicionar entrada no menu de contexto da página web",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "sobrepor uma sombra na página durante o processamento",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "mostrar uma barra de informações ao visualizar uma página guardada",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "modelo do conteúdo da barra de informações",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "bloco de conteúdo misto",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "guardar os URLs originais dos recursos incorporados",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "incluir a barra de informações na página guardada",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "manter o infobar aberto",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "não incluir a data em que foi guardada",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "abrir uma caixa de diálogo para editar o conteúdo da barra de informações",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "fechar automaticamente o separador depois de a página ser guardada",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "comando de atalho de teclado",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "atalho padrão",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nome de ficheiro",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "modelo",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "comprimento máximo",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "caracteres",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "caractere de substituição",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "substituir emojis por texto",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "save the filename template data into the page",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "abrir a caixa de diálogo \"Guardar como\" para confirmar o nome de ficheiro",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "resolução de conflitos de nome de ficheiro",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "criar um nome único",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "substituir o ficheiro existente",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "solicitar um nome",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "ignorar ficheiros duplicados",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Conteúdo HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "comprimir conteúdo HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "remover frames",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "remover elementos ocultos",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "remover elementos específicos",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Formato de ficheiro",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "formato",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "ZIP auto-extraível (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "ZIP auto-extraível",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "palavra-passe",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "criar um diretório raiz",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "desabilitar compactação",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "não anexar dados após os dados ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "tornar o texto pesquisável",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "imagem incorporada",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "captura de ecrã",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "imagem personalizada",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Barra de Informações",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Imagens",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "agrupar imagens duplicadas",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "fator de redução do tamanho da imagem",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "guardar imagens diferidas",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "tempo máximo de inatividade (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "diminuir o zoom da página",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "enviar evento \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "carregar frames diferidos",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "remover imagens para resoluções de ecrã alternativas",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Tipos de letra",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "remover tipos de letra não utilizados",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "remover tipos de letra alternativos",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Folhas de estilo",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "comprimir conteúdo CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "agrupar folhas de estilo duplicadas",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "mover para o elemento principal os estilos que se encontram fora dele",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "remover estilos não utilizados",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "remover folhas de estilo para dispositivos alternativos aos ecrãs",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Rede",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "recursos bloqueados",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "cabeçalho \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "vídeos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "áudios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documentos",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "tipos de letra",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "folhas de estilo",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "imagens",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destino",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Marcadores",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Guardar automaticamente",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Regras de configuração automática",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Confirmar a eliminação de todas as regras apresentadas",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Eliminar todas as regras apresentadas",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Introduzir um URL completo ou parcial (p. ex., exemplo-pagina.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Perfil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Guardar perfil automaticamente",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "mostrar todos os perfis",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "mostrar a coluna 'Guardar perfil automaticamente'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Atualizar a regra",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Eliminar a regra",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Adicionar a regra",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Validar alterações",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Cancelar alterações",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Confirmar a eliminação da regra selecionada",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "guardar automaticamente após o carregamento da página ou quando a página é transferida",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "guardar automaticamente após o carregamento da página",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "guardar automaticamente quando a página é transferida",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "guardar automaticamente quando o separador é eliminado",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "guardar automaticamente quando o separador é removido",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "guardar automaticamente após espera de carregamento da página (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "guardar automaticamente de forma periódica",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "período (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "guardar a página com o SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Editor de anotações",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "anotar a página antes de a guardar",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "abrir páginas guardadas num novo separador",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "abrir páginas guardadas com o SingleFile no editor de anotações",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "modo predefinido",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "editar a página",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatar a página",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "remover elementos",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "remover elementos externos",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "aplicar o tema do sistema ao formatar uma página",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "largura do conteúdo (em) ao formatar uma página",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "avisar se sair da página com alterações não guardadas",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "mostrar a barra de informações",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Diversos",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "guardar páginas em segundo plano",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "mostrar estatísticas na consola após o processamento",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "definir o tamanho máximo",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "tamanho máximo (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "definir o tempo máximo de transferência",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "tempo máximo de transferência (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "passar o cabeçalho \"Referer\" após um erro de pedido de origem cruzada",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "guardar página em bruto",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "definir a política de segurança de conteúdos",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "copiar para a área de transferência",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "guardar no sistema de ficheiros",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "partilhar página",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "adicionar prova de existência",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirme que permite que o SingleFile envie para a API do Woleet um hash SHA256 de cada página que vai guardar. Pode encontrar mais informações sobre esta funcionalidade na página de ajuda ou clicando no ponto de interrogação junto à opção.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "token de acesso",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "carregar para o Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "carregar para o Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "carregar para o GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "token de acesso",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nome de utilizador",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nome de repositório",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nome do branch (ramo)",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "carregar para a Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domínio",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "região",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "nome do bucket",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "chave de acesso",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "chave secreta",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "carregar para um servidor WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identificador de utilizador",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "palavra-passe",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "carregar para um servidor MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL do servidor",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "token de autenticação",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "guardar com o SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "guardar página de um marcador recentemente criado",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "ligar o novo marcador à página guardada",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "pastas permitidas",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "pastas ignoradas",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "ajuda",
"description": "Options help link"
},
"optionSynchronize": {
"message": "opções de sincronização",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Repor",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Repor todas as opções para os valores predefinidos",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Confirmar a reposição de todas as opções ou do perfil atual",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Repor todas as opções",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Repor o perfil atual",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Cancelar",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exportar",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importar",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Imagens diferidas",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Conteúdo do frame",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Imagem incorporada",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Passo",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Erro do SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Abrir imagem...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Partilhar página...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Partilhar seleção...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Definições predefinidas",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Desativado",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Adicionar um novo perfil",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Mudar o nome do perfil",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Eliminar o perfil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Introduzir um nome para este novo perfil",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Confirmar a eliminação do perfil selecionado",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Introduzir um novo nome para o perfil selecionado",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Adicionar uma nota amarela",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Adicionar uma nota cor-de-rosa",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Adicionar uma nota azul",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Adicionar uma nota verde",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Realçar o texto selecionado a amarelo",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Realçar o texto selecionado a cor-de-rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Realçar o texto selecionado a azul",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Realçar o texto selecionado a verde",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Mostrar/ocultar notas",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Mostrar/ocultar o texto realçado",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Remover o texto realçado selecionado",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Ativar/desativar o modo só de leitura",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formatar a página para uma melhor legibilidade",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Ativar/desativar a remoção de elementos internos",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Ativar/desativar a remoção de elementos externos",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Restaurar o último elemento removido",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Restaurar todos os elementos removidos",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Remover o último elemento restaurado",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Guardar a página",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Imprimir a página",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importar arquivo MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Transferência pendente",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Cancelar tudo",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Título",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "estado",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "pendente",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "em curso",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "cancelado",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Não há transferências pendentes",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Adicionar URLs",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Introduzir uma lista de URLs separados por uma nova linha",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Cancelar",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Guardar URLs em lote",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Sem URLs",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Adicionar URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Adicionar URLs...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Remover tudo",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Guardar páginas",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "carregar para um formulário REST API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "token de autorização",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "nome do campo de dados do arquivo",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "nome do campo URL do arquivo",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Editor de opções",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Guardar",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuração guardada",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "JSON inválido",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/pt_br/messages.json
================================================
{
"extensionDescription": {
"message": "Salvar página inteira num único arquivo HTML",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Salvar abas selecionadas ou conteúdo selecionado",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Salvar todas abas",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Atalho personalizado",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Atalho personalizado #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Atalho personalizado #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Atalho personalizado #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Atalho personalizado #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Atalho personalizado #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Atalho personalizado #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Atalho personalizado #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Atalho personalizado #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Atalho personalizado #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Atalho personalizado #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Salvar página via SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Salvar links selecionados",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Anotar a página...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Anotar e salvar a página...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Salvar página com perfil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Ver conteúdo pendente...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Selecione perfil padrão",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Selecione perfil da regra atual",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Selecione perfil do domínio atual",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Salvar seleção",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Salvar frame",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Salvar abas",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Salvar abas selecionadas",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Salvar abas não fixadas",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Salvar todas abas",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Salvar em lote as URLs...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Salvar autom.",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Desativado",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Salvar autom. esta aba",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Salvar autom. abas não fixadas",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Salvar autom. todas abas",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Salvar página via SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Esta página não pode ser salva via SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Inicializando SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Salvar progresso: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Enviar progresso: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERRO",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Salvar autom. ativo",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Opções",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Interface de usuário",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "adicionar uma entrada em menu do contexto da página",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "sobrepor a sombra em página durante processamento",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "mostrar o infobar ao ver uma página salva",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "modelo de conteúdo do infobar",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "bloquear conteúdo misto",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "salvar URLs originais de recursos integrados",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "incluir o infobar na página salva",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "manter o infobar aberto",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "não incluir data de salvamento",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "abrir um diálogo com aviso para editar conteúdo do infobar",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "fechar autom. a aba após página ser salva",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "comando de atalho de teclado",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "atalho padrão",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Nome de arquivo",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "modelo",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "tamanho máximo",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "bytes",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "caracteres",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "caractere de substituição",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "substituir emojis por texto",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "save the filename template data into the page",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "abrir o diálogo \"Salvar como\" para confirmar nome de arquivo",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "Resolução de conflito do nome de arquivo",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "criar um nome único",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "substituir o arquivo já existente",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "solicitar por um nome",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "pular arquivos duplicados",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "conteúdo HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "compactar conteúdo HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "remover frames",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "remover elementos escondidos",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "remover elementos específicos",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Formato do arquivo",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "formato",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "ZIP autoextraível (universal)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "ZIP autoextraível",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "senha",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "criar um diretório raiz",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "desabilitar compactação",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "não anexe dados após os dados ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "tornar texto pesquisável",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "imagem incorporada",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "captura de tela",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "imagem personalizada",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Infobar",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Imagens",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "agrupar imagens duplicadas",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "fator de redução do tamanho da imagem",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "salvar imagens diferidas",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "tempo máximo de inatividade (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "diminuir zoom na página",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "envio do evento \"scroll\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "salvar frames diferidas",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "remover imagens para resoluções alternativas de tela",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Fontes",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "remover fontes não usadas",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "remover fontes alternativas",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Folhas de estilo",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "compactar conteúdo CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "agrupar folhas de estilo duplicadas",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "mover para elemento head os estilos encontrados fora dele",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "remover estilos não usados",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "remover folhas de estilo para dispositivos além de telas",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Rede",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "recursos bloqueados",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "cabeçalho \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "scripts",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "vídeos",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "áudios",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "documentos",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "fontes",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "folhas de estilo",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "imagens",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destino",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Favoritos",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Salvar automaticamente",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Regras da configuração automática",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Confirmar eliminação de todas as regras exibidas",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Eliminar todas as regras exibidas",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Digite uma URL completa ou parcial (p. ex. algum-site.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Perfil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Salvar autom. perfil",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "mostrar todos perfis",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "mostrar coluna 'Salvar autom. perfil'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Atualizar a regra",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Eliminar a regra",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Adicionar a regra",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Validar as mudanças",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Cancelar as mudanças",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Confirmar a eliminação da regra selecionada",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "Salvar autom. após carregamento ou purga da página",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "Salvar autom. após carregamento da página",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "Salvar autom. após purga da página",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "Salvar autom. ao descartar a aba",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "Salvar autom. ao remover a aba",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "Salvar autom. após aguardar o carregamento da página (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "Auto-salvar periodicamente",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "intervalo (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "salvar a página via SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Editor de anotações",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "anotar a página antes de salvar",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "abrir páginas salvas numa aba nova",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "abrir páginas salvas via SingleFile em editor de anotações",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "modo padrão",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "editar a página",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatar a página",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "remover elementos",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "remover elementos externos",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "aplicar tema do sistema ao formatar uma página",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "largura do conteúdo ao formatar uma página (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "dar aviso ao sair da página sem previamente salvar as mudanças",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "exibir o infobar",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Diversos",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "salvar páginas em segundo plano",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "exibir estatísticas no console após processamento",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "definir tamanho máximo",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "tamanho máximo (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "definir tempo máximo de download",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "tempo máximo de download (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "passar o cabeçalho \"Referer\" após um erro de pedido de origem cruzada",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "salvar página em bruto",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "definir a política de segurança de conteúdo",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "copiar para a área de transferência",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "salvar no sistema de arquivos",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "partilhar página",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "adicionar prova de existência",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Confirme que você permite que o SingleFile envie para a API do Woleet um hash SHA256 de cada página que você vai salvar. Você pode obter mais informações sobre esse recurso na página de ajuda ou clicando no ponto de interrogação ao lado da opção.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "token de acesso",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "enviar para o Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "enviar para o Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "enviar para o GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "token de acesso",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "nome de usuário",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "nome de repositório",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "nome do branch (ramo)",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "enviar para o Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domínio",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "região",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "nome do bucket",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "chave de acesso",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "chave secreta",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "enviar para um servidor WebDAV",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "identificador do usuário",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "senha",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "enviar para um servidor MCP",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL do servidor",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "token de autenticação",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "salvar via SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "salvar página de um favorito recém-criado",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "vincular um novo favorito a página salva",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "pastas permitidas",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "pastas ignoradas",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "ajuda",
"description": "Options help link"
},
"optionSynchronize": {
"message": "sincronizar opções",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Resetar",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Resetar todas as opções para valores padrão",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Confirmar restauração de todas as opções ou do perfil atual",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Resetar todas as opções",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Resetar o perfil atual",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Cancelar",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exportar",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importar",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Imagens diferidas",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Conteúdo do frame",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Imagem incorporada",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Passo",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Erro do SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Abrir imagem...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Partilhar página...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Partilhar seleção...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Configurações padrão",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Desativado",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Adicionar um novo perfil",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Renomear o perfil",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Eliminar o perfil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Digite um nome para este novo perfil",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Confirmar a eliminação do perfil selecionado",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Digite um novo nome para o perfil selecionado",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Adicionar anotação amarela",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Adicionar anotação rosa",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Adicionar anotação azul",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Adicionar anotação verde",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Destacar texto selecionado em amarelo",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Destacar texto selecionado em cor-de-rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Destacar texto selecionado em azul",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Destacar texto selecionado em verde",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Mostrar/esconder anotações",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Mostrar/esconder texto destacado",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Remover o texto destacado selecionado",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Ativar/desativar modo somente leitura",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formatar à página para melhor legibilidade",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Ativar/desativar a remoção de elementos internos",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Ativar/desativar a remoção de elementos externos",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Restaurar o último elemento removido",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Restaurar todos os elementos removidos",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Remover o último elemento restaurado",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Salvar a página",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Imprimir a página",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importar arquivo MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Conteúdo para ser salvo",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Cancelar tudo",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Título",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "progresso",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "pendente",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "processando",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "cancelando",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Nenhum conteúdo pendente a ser salvo",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Adicionar URLs",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Digite uma lista de URLs, separadas por uma nova linha",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Cancelar",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Salvar URLs em lote",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Nenhuma URL",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Adicionar URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Adicionar URLs...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Remover tudo",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Salvar as páginas",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "enviar para um API de formulário REST",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "token de autorização",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "nome do campo de dados do ficheiro",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "nome do campo URL do arquivo",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Editor de opções",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Salvar",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Configuração salva",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "JSON inválido",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/ru/messages.json
================================================
{
"extensionDescription": {
"message": "Сохранение полной страницы в едином HTML-файле",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Сохранить выбранные вкладки или выбранное на них содержимое",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Сохранить все вкладки",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Пользовательская горячая клавиша",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Пользовательская горячая клавиша №1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Пользовательская горячая клавиша №2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Пользовательская горячая клавиша №3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Пользовательская горячая клавиша №4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Пользовательская горячая клавиша №5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Пользовательская горячая клавиша №6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Пользовательская горячая клавиша №7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Пользовательская горячая клавиша №8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Пользовательская горячая клавиша №9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Пользовательская горячая клавиша №10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Сохранить страницу",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Сохранить выбранные ссылки",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Аннотировать страницу...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Аннотировать и сохранить страницу...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Сохранить с профилем",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Просмотр отложенных сохранений...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Выберите профиль по умолчанию",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Выберите профиль текущего правила",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Выберите профиль текущего домена",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Сохранить выделенное",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Сохранить фрейм",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Сохранить вкладки",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Сохранить выбранные вкладки",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Сохранить незакреплённые вкладки",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Сохранить все вкладки",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Пакетное сохранение URL...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Автосохранение",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Отключено",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Автосохранение этой вкладки",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Автосохранение незакреплённых вкладок",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Автосохранение всех вкладок",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Сохранить страницу с помощью SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Эта страница не может быть сохранена SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Инициализация SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Ход сохранения: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Ход загрузки: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Автосохранение активно",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Параметры",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Пользовательский интерфейс",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "добавить пункт в контекстное меню веб-страницы",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "наложить тень на страницу во время обработки",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "показать информационную панель при просмотре сохранённой страницы",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "шаблон содержимого информационной панели",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "блокировать смешанное содержимое",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "сохранить оригинальные URL встроенных ресурсов",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "добавить информационную панель в сохраняемую страницу",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "не закрывать информационную панель",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "не включать дату сохранения",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "открыть диалоговое окно для редактирования содержимого информационной панели",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "автозакрытие вкладки после сохранения страницы",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "горячая клавиша команды",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "горячая клавиша по умолчанию",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Имя файла",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "шаблон",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "максимальная длина",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "байт",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "символов",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "заменяющий символ",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "заменять эмодзи текстом",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "сохранить имя файла шаблона",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "открыть диалоговое окно \"Сохранить как\" для подтверждения имени файла",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "решение конфликта имён файлов",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "создать уникальное имя",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "перезаписать существующий файл",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "запросить новое имя",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "пропустить дублирующиеся файлы",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "Содержимое HTML",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "сжать содержимое HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "удалить фреймы",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "удалить скрытые элементы",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "удалить указанные элементы",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Формат файла",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "формат",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "самораспаковывающийся ZIP (универсальный)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "самораспаковывающийся ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "пароль",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "создать корневую папку",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "отключить сжатие",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "не добавлять данные после данных ZIP",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "делать текст доступным для поиска",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "встроенное изображение",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "снимок страницы",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "своё изображение",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Информационная панель",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Изображения",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "группировать дубликаты изображений",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "коэффициент уменьшения изображения",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "сохранить отложенные изображения",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "максимальное время простоя (мс)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "уменьшить масштаб страницы",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "отправить команду прокрутки",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "сохранить отложенные фреймы",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "удалить изображения для альтернативных разрешений экрана",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Шрифты",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "удалить неиспользуемые шрифты",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "удалить альтернативные шрифты",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Таблицы стилей",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "сжать содержимое CSS",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "группировать повторяющиеся таблицы стилей",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "переместить в основной элемент стили, найденные вне него",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "удалить неиспользуемые стили",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "удалить таблицы стилей для экранов альтернативных устройств",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Сеть",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "блокируемые ресурсы",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "Заголовок \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "скрипты",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "видео",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "аудио",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "документы",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "шрифты",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "таблицы стилей",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "изображения",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Место назначения",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Закладки",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Автосохранение",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Правила автонастройки",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Подтвердите удаление всех отображаемых правил",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Удалить все отображаемые правила",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Введите полный или частичный URL (например, example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Профиль",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Профиль автосохранения",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "показать все профили",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "показывать столбец \"Профиль автосохранения\"",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Обновить правило",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Удалить правило",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Добавить правило",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Подтвердить изменения",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Отменить изменения",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Подтвердите удаление выбранного правила",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "автосохранение после загрузки или выгрузки страницы",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "автосохранение после загрузки страницы",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "автосохранение после выгрузки страницы",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "автосохранение при сбросе вкладки",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "автосохранение при удалении вкладки",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "задержка автосохранения после загрузки страницы (сек.)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "переодическое автосохранение",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "период (сек.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "сохранять страницу с помощью SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Редактор аннотаций",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "аннотировать страницу перед сохранением",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "открывать сохранённые страницы в новой вкладке",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "сохранять открытые страницы из редактора аннотаций SingleFile",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "режим по умолчанию",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "обычный",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "редактировать страницу",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "форматировать страницу",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "удалить элементы",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "удалить внешние элементы",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "использовать системную тему при форматировании страницы",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "ширина содержимого при форматировании страницы (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "предупреждать при закрытии страницы с несохранёнными изменениями",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "показать информационную панель",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Разное",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "сохранять страницы в фоновом режиме",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "показывать статистику в консоли после обработки",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "установить максимальный размер",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "максимальный размер (МБ)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "установить максимальное время загрузки",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "максимальное время загрузки (сек.)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "пропустить заголовок \"Referer\" после ошибки запроса перекрёстного источника",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "сохранить исходную страницу",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "установить политику безопасности содержимого",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "копировать в буфер обмена",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "сохранить как файл",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "поделиться страницей",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "добавить доказательство существования",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Подтвердите, что разрешаете SingleFile отправлять в Woleet API SHA256-хеш каждой сохраняемой вами страницы. Дополнительную информацию об этой функции можно найти на странице помощи или нажав на знак вопроса рядом с параметром.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "токен доступа",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "загрузить на Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "загрузить на Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "загрузить на GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "токен доступа",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "имя пользователя",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "имя репозитория",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "имя ветки",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "загрузить на Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "домен",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "регион",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "имя сегмента",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "ключ доступа",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "секретный ключ",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "загрузить на WebDAV-сервер",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "имя пользователя",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "пароль",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "загрузить на MCP-сервер",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "токен аутентификации",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "сохранять с помощью SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "сохранить страницу недавно созданной закладки",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "связать новую закладку с сохранённой страницей",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "разрешённые папки",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "игнорируемые папки",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "помощь",
"description": "Options help link"
},
"optionSynchronize": {
"message": "параметры синхронизации",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Сброс",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Сбросить все параметры к значениям по умолчанию",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Подтвердите сброс всех параметров или текущего профиля",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Сбросить все параметры",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Сбросить текущий профиль",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Отмена",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Экспорт",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Импорт",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Отложенные изображения",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Содержимое фреймов",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Встроенное изображение",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Шаг",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "190",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Ошибка SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Открыть изображение...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Поделиться страницей...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Поделиться выделенным...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Настройки по умолчанию",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Отключено",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Добавить профиль",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Переименовать профиль",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Удалить профиль",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Введите имя для этого профиля",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Подтвердите удаление выбранного профиля",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Введите новое имя для выбранного профиля",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Добавить жёлтую заметку",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Добавить розовую заметку",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Добавить синюю заметку",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Добавить зелёную заметку",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Выделить выбранный текст жёлтым цветом",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Выделить выбранный текст розовым цветом",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Выделить выбранный текст синим цветом",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Выделить выбранный текст зелёным цветом",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Показать/скрыть заметки",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Показать/скрыть выделение текста",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Удалить выделение выбранного текста",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Включить/отключить режим \"только для чтения\"",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Форматировать страницу для лучшей читаемости",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Включить/отключить удаление внутренних элементов",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Включить/отключить удаление внешних элементов",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Восстановить последний удалённый элемент",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Восстановить все удалённые элементы",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Удалить последний восстановленный элемент",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Сохранить страницу",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Печать страницы",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Импорт MHTML-файла",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Отложенное сохранение",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Отменить все",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Заголовок",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "статус",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "отложено",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "выполнение",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "отмена",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Нет отложенных сохранений",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Добавить URL",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Введите список URL, разделённых новой строкой",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Отмена",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Пакетное сохранение URL",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Нет URL",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Добавить URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Добавить URL...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Удалить все",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Сохранить страницы",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "загрузить в API формы REST",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "токен авторизации",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "имя поля данных архива",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "имя поля URL архива",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Редактор параметров",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Сохранить",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Конфигурация сохранена",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Неправильный JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/sv/messages.json
================================================
{
"extensionDescription": {
"message": "Spara en hel sida i en enda HTML-fil",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Spara de markerade flikarna eller deras valda innehåll",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Spara alla flikar",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Anpassad genväg",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Anpassad genväg #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Anpassad genväg #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Anpassad genväg #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Anpassad genväg #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Anpassad genväg #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Anpassad genväg #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Anpassad genväg #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Anpassad genväg #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Anpassad genväg #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Anpassad genväg #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Spara sidan med SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Spara valda länkar",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Anteckna sidan...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Anteckna och spara sidan...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Spara sidan med profil",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Visa väntande sparingar...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Välj standardprofilen",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Välj profilen för den aktuella regeln",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Välj profilen för den aktuella domänen",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Spara valet",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Spara ram",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Spara flikar",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Spara valda flikar",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Spara ofästa flikar",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Spara alla flikar",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Gruppspara URL:er...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Spara automatiskt",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Inaktiverad",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Spara denna flik automatiskt",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Spara ofästa flikar automatiskt",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Spara alla flikar automatiskt",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Spara sidan med SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Denna sida kan inte sparas med SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Initierar SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Spara förlopp: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Uppladdningsförlopp: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "OK",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "FEL",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Automatisk spara aktiv",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Alternativ",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Användargränssnitt",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "lägg till post i snabbmenyn på webbsidan",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "överlägg en skugga på sidan under bearbetningen",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "visa ett infofält när du visar en sparad sida",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "mall för informationsfältets innehåll",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "blockera blandat innehåll",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "spara original URL:er för inbäddade resurser",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "inkludera informationsfältet på den sparade sidan",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "håll informationsfältet öppet",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "inkludera inte sparat datum",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "öppna en dialogruta för att redigera informationsfältets innehåll",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "stäng fliken automatiskt efter att sidan har sparats",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "tangentbordsgenväg kommando",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "standardgenväg",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Filnamn",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "mall",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "max längd",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "byte",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "tecken",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "ersättningstecken",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "ersätt emojis med text",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "spara filnamnsmallens data med sidan",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "öppna dialogrutan \"Spara som\" för att bekräfta filnamnet",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "filnamn konfliktlösning",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "skapa ett unikt namn",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "skriva över den befintliga filen",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "fråga efter ett namn",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "hoppa över dubblettfiler",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML-innehåll",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "komprimera HTML-innehåll",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "ta bort ramar",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "ta bort dolda element",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "ta bort specifika element",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Filformat",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "format",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "självextraherande ZIP (universell)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "självextraherande ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "lösenord",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "skapa en rotkatalog",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "inaktivera komprimering",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "lägg inte till data efter ZIP-data",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "gör texten sökbar",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "bädda in bild",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "sidans skärmdump",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "anpassad bild",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Informationsfält",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Bilder",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "gruppera dubblettbilder",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "faktor för minskning av bildstorlek",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "spara uppskjutna bilder",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maximal vilotid (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "zooma ut sidan",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "skicka \"rullnings\"händelse",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "ladda uppskjutna ramar",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "ta bort bilder för alternativa skärmupplösningar",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Teckensnitt",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "ta bort oanvända teckensnitt",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "ta bort alternativa teckensnitt",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Stilmallar",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "komprimera CSS-innehåll",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "gruppera dubblettstilmallar tillsammans",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "flytta i huvudelementet stilarna som finns utanför det",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "ta bort oanvända stilar",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "ta bort stilmallar för alternativa enheter till skärmar",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Nätverk",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "blockerade resurser",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Acceptera\" rubrik",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "skript",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videor",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "ljud",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "dokument",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "teckensnitt",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "stilmallar",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "bilder",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Destination",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Bokmärken",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Spara automatiskt",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Regler för automatiska inställningar",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Bekräfta borttagningen av alla visade regler",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Ta bort alla visade regler",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Ange en fullständig eller delvis URL (t.ex. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Spara profil automatiskt",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "visa alla profiler",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "visa kolumnen 'Spara profil automatiskt'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Uppdatera regeln",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Ta bort regeln",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Lägg till regeln",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Validera ändringar",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Avbryt ändringar",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Bekräfta borttagningen av den valda regeln",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "spara automatiskt efter sidladdning eller vid urladdning",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "spara automatiskt efter sidladdning",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "spara automatiskt vid urladdning av sidor",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "spara automatiskt vid kassera flik",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "spara automatiskt vid flikborttagning",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "spara automatiskt vid väntefördröjning efter sidladdning (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "spara automatiskt periodvis",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "period (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "spara sidan med SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Anteckningsredigerare",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "anteckna sidan innan du sparar",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "öppna sparade sidor i en ny flik",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "öppna sidor sparade med SingleFile i anteckningsredigeraren",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "standardläge",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "redigera sidan",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "formatera sidan",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "ta bort element",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "ta bort externa element",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "tillämpa systemtemat vid formatering av en sida",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "innehållsbredd vid formatering av en sida (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "varna om du lämnar sidan med osparade ändringar",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "visa informationsfältet",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Övrigt",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "spara sidor i bakgrunden",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "visa statistik i konsolen efter bearbetning",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "ställ in maximal storlek",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maximal storlek (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "ställ in maximal nedladdningstid",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maximal nedladdningstid (er)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "skicka rubriken \"Referer\" efter ett fel med korsoriginansförfrågan",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "spara rå sida",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "ange innehållssäkerhetspolicy",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "kopiera till urklipp",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "spara till filsystemet",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "dela sida",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "lägga till bevis på existens",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Bekräfta att du tillåter SingleFile att skicka till Woleet API en SHA256-hash för varje sida du ska spara. Du kan hitta mer information om denna funktion på hjälpsidan eller genom att klicka på frågetecknet bredvid alternativet.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "åtkomsttoken",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "ladda upp till Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "ladda upp till Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "ladda upp till GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "åtkomsttoken",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "användarnamn",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "förvarets namn",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "filialnamn",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "ladda upp till Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "domän",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "region",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "hinknamn",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "åtkomstnyckel",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "hemlig nyckel",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "ladda upp till en WebDAV-server",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "användaridentifierare",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "lösenord",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "ladda upp till en MCP-server",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "server URL",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "autentiseringstoken",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "spara med SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "spara sidan av ett nyskapat bokmärke",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "länka det nya bokmärket till den sparade sidan",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "tillåtna mappar",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "ignorerade mappar",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "hjälp",
"description": "Options help link"
},
"optionSynchronize": {
"message": "synchronize options",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Återställ",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Återställ alla alternativ till deras standardvärden",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Bekräfta återställningen av alla alternativ eller den aktuella profilen",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Återställ alla alternativ",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Återställ den aktuella profilen",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "OK",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Avbryt",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Exportera",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Importera",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Uppskjutna bilder",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Raminnehåll",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Inbäddad bild",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Steg",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile-fel: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Öppna bild...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Dela sida...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Dela val...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Standardinställningar",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Inaktiverad",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Lägg till en ny profil",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Byt namn på profilen",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Ta bort profilen",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Ange ett namn för den här nya profilen",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Bekräfta borttagningen av den valda profilen",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Ange ett nytt namn för den valda profilen",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Lägg till en gul anteckning",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Lägg till en rose anteckning",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Lägg till en blå anteckning",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Lägg till en grön anteckning",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Markera vald text i gult",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Markera vald text i rosa",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Markera vald text i blått",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Markera vald text i grönt",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Visa/dölj anteckningar",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Visa/dölj den markerade texten",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Ta bort den markerade texten",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Aktivera/inaktivera skrivskyddad",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Formatera sidan för bättre läsbarhet",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Aktivera/inaktivera borttagning av interna element",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Aktivera/inaktivera borttagning av externa element",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Återställ senast borttagna element",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Återställ alla borttagna element",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Ta bort senast återställda element",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Spara sidan",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Skriv ut sidan",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Importera MHTML-fil",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Väntande sparingar",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Avbryt alla",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Titel",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "status",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "väntande",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "bearbetning",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "avbryter",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Inga väntande sparningar",
"description": "Label displayed when there are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Lägg till URL:er",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Ange en lista med URL:er åtskilda av en ny rad",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Avbryt",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Gruppspara URL:er",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Inga URL:er",
"description": "Label displayed when there are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Lägg till URL",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Lägg till URL:er...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Ta bort alla",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Spara sidor",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "ladda upp till ett REST Form API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "auktoriseringstoken",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "arkivdatafältnamn",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "arkivets URL-fältnamn",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Alternativredigerare",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Spara",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Konfiguration sparad",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Ogiltig JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/tr/messages.json
================================================
{
"extensionDescription": {
"message": "Tam bir sayfayı tek bir HTML dosyasına kaydet",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Seçili sekmeleri veya seçili içeriklerini kaydet",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Tüm sekmeleri kaydet",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Özel kısayol",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Özel kısayol #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Özel kısayol #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Özel kısayol #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Özel kısayol #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Özel kısayol #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Özel kısayol #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Özel kısayol #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Özel kısayol #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Özel kısayol #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Özel kısayol #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Sayfayı SingleFile ile kaydet",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Seçilen bağlantıları kaydet",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Sayfaya açıklama ekle...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Sayfaya açıklama ekle ve sayfayı kaydet...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Sayfayı profille kaydet",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Bekleyen kaydetmeleri görüntüle...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Varsayılan profili seçin",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Geçerli kuralın profilini seçin",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Geçerli etki alanının profilini seçin",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Seçimi kaydet",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Çerçeveyi kaydet",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Sekmeleri kaydet",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Seçili sekmeleri kaydet",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Sabitlenmemiş sekmeleri kaydet",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Tüm sekmeleri kaydet",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "URL'leri toplu olarak kaydedin...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Otomatik-kaydet",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Devre dışı",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Bu sekmeyi otomatik-kaydet",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Sabitlenmemiş sekmeleri otomatik-kaydet",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Tüm sekmeleri otomatik olarak kaydet",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Sayfayı SingleFile ile kaydet",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Bu sayfa SinglePage ile kaydedilemiyor",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "SingleFile Başlatılıyor",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "İlerlemeyi kaydet: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "İlerlemeyi yükle: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "Onay",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "HATA",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Otomatik-kaydet aktif",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Seçenekler",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Kullanıcı arayüzü",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "web sayfasının içerik menüsüne giriş ekle",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "işleme sırasında sayfaya bir gölge bindir",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "kayıtlı bir sayfayı görüntülerken bir bilgi çubuğu görüntüle",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "bilgi çubuğu içeriği şablonu",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "karışık içeriği engelle",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "gömülü kaynakların orijinal URL'lerini kaydet",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "bilgi çubuğunu kaydedilen sayfaya dahil et",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "bilgi çubuğunu açık tut",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "kaydedilen tarihi dahil etme",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "bilgi çubuğu içeriğini düzenlemek için bir bilgi istemi iletişim kutusu aç",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "sayfa kaydedildikten sonra sekmeyi otomatik kapat",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "klavye kısayolu komutu",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "varsayılan kısayol",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Dosya ismi",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "şablon",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "maksimum uzunluk",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "baytlar",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "karakterler",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "yerine geçen karakter",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "emoji'leri metinle değiştir",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "dosya adı şablon verilerini sayfaya kaydetme",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "dosya adını onaylamak için \"Farklı kaydet\" iletişim kutusunu aç",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "dosya adı çakışma çözümü",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "benzersiz bir ad oluştur",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "mevcut dosyanın üzerine yaz",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "isim sor",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "yinelenen dosyaları atla",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML içeriği",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "HTML içeriğini sıkıştır",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "çerçeveleri kaldır",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "gizli öğeleri kaldır",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "belirli öğeleri kaldır",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Dosya biçimi",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "biçim",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "kendinden çıkartılabilen ZIP (evrensel)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "kendinden çıkartılabilen ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "şifre",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "kök dizin oluştur",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "sıkıştırmayı devre dışı bırak",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "ZIP verilerinden sonra veri eklemeyin",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "metni aranabilir yap",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "gömülü görüntü",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "ekran görüntüsü",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "özel görüntü",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Bilgi çubuğu",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Görüntüler",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "yinelenen görüntüleri gruplandır",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "görüntü küçültme faktörü",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "ertelenen görüntüleri kaydet",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "maksimum boşta kalma süresi (ms)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "sayfayı uzaklaştır",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "\"scroll\" olayını gönder",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "ertelenen çerçeveleri kaydet",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "alternatif ekran çözünürlükleri için görüntüleri kaldır",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Yazı tipleri",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "kullanılmayan yazı tiplerini kaldır",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "alternatif yazı tiplerini kaldır",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Stil sayfaları",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "CSS içeriğini sıkıştır ",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "yinelenen stil sayfalarını gruplandır",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "dışında bulunan stilleri baş öğesinde taşı",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "kullanılmayan stilleri kaldır",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "Alternatif ekranlar için stil sayfalarını silin",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Ağ",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "engellenen kaynaklar",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "\"Accept\" başlığı",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "kodlar",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "videolar",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "sesler",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "belgeler",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "yazı tipleri",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "stil sayfaları",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "görseller",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Hedef",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Yer işaretleri",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Otomatik-kaydet",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Otomatik-ayarlar kuralları",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Görüntülenen tüm kuralların silinmesini onaylayın",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Görüntülenen tüm kuralları sil",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Tam veya kısmi bir URL yazın (ör. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Profil",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Profili otomatik kaydet",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "tüm profilleri göster",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "'Profili otomatik kaydet' sütununu göster",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "kuralı güncelle",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Kuralı sil",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Kuralı ekle",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Değişiklikleri doğrula",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Değişiklikleri iptal et",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Seçilen kuralın silinmesini onaylayın",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "sayfa yüklendikten sonra veya sayfa kaldırıldığında otomatik kaydet",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "Sayfa yükünden sonra otomatik kaydet",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "sayfa boşaltmada otomatik kaydet",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "sekme atıldığında otomatik kaydet",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "sekme kaldırmada otomatik kaydetme",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "sayfa yüklemesinden sonra otomatik kaydetme bekleme gecikmesi (s)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "periyodik olarak otomatik kaydet",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "periyot (s.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "sayfayı SingleFile Companion ile kaydedin",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Ek açıklama düzenleyici",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "kaydetmeden önce sayfaya açıklama ekleyin",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "kayıtlı sayfaları yeni bir sekmede aç",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "açıklama düzenleyicide SingleFile ile kaydedilen sayfaları açın",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "varsayılan mod",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "normal",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "sayfayı düzenle",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "sayfayı biçimlendir",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "öğeleri kaldır",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "dış öğeleri kaldır",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "bir sayfayı biçimlendirirken sistem temasını uygula",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "sayfayı biçimlendirirken içerik genişliği (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "kaydedilmemiş değişiklikle sayfadan ayrılırsa uyar",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "bilgi çubuğunu görüntüleme",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Çeşitli.",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "sayfaları arka planda kaydet",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "işledikten sonra istatistikleri konsolda göster",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "maksimum boyutu ayarla",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "maksimum boyut (MB)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "maksimum indirme süresini ayarla",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "maksimum indirme süresi (s)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "kaynaklar arası istek hatasından sonra \"Referer\" başlığını iletin",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "ham sayfayı kaydet",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "içerik güvenlik politikası belirle",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "panoya kopyala",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "dosya sistemine kaydet",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "sayfayı paylaş",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "varlığın kanıtını ekle",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "SingleFile'ın Woleet API'ye kaydedeceğiniz her sayfanın bir SHA256 hash'ini göndermesine izin verdiğinizi onaylayın. Bu özellikle ilgili daha fazla bilgiyi yardım sayfasında veya seçeneğin yanındaki soru işaretine tıklayarak bulabilirsiniz.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "erişim belirteci",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "Google Drive'a yükle",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "Dropbox'a yükle",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "GitHub'a yükle",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "erişim belirteci",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "kullanıcı adı",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "havuz adı",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "şube adı",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "Amazon S3'e yükleme",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "alan adı",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "bölge",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "kova adı",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "erişim anahtarı",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "gizli anahtar",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "bir WebDAV sunucusuna yükle",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "kullanıcı tanımlayıcı",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "şifre",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "MCP sunucusuna yükle",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "sunucu URL'si",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "kimlik doğrulama belirteci",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "SingleFile Companion ile kaydet",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "yeni oluşturulan yer iminin sayfasını kaydet",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "yeni yer imini kaydedilen sayfaya bağla",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "izin verilen klasörler",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "yok sayılan klasörler",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "yardım",
"description": "Options help link"
},
"optionSynchronize": {
"message": "senkronizasyon seçenekleri",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Sıfırla",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Tüm seçenekleri varsayılan değerlerine sıfırlayın",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Tüm seçeneklerin veya geçerli profilin sıfırlanmasını onayla",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Tüm seçenekleri sıfırla",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Geçerli profili sıfırla",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "TAMAM",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "İPTAL",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Dışarı aktar",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "İçe aktar",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Ertelenmiş resimler",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "çerçeve içeriği",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Gömülü resim",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Adım",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile hata: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Resmi aç...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Sayfayı paylaş...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Seçimi paylaş...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Varsayılan ayarlar",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Devre dışı",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Yeni profil ekle",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "profili yeniden adlandır",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Profili sil",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Yeni profil için bir isim gir",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Seçilen profilin silinmesini onaylayın",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Seçilen profil için yeni bir ad girin",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Sarı bir not ekle",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Pembe bir not ekle",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Mavi bir not ekle",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Yeşil bir not ekle",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Seçili metni sarı renkle vurgula",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Seçili metni pembe renkle vurgula",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Seçili metni mavi renkle vurgula",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Seçili metni yeşil renkle vurgula",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Notları göster/gizle",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Vurgulanan metni göster/gizle",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Seçili vurgulanan metni kaldır",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Salt okunuru etkinleştir/devre dışı bırak",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Daha iyi okunabilirlik için sayfayı biçimlendir",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Dahili elemanların kaldırılmasını etkinleştirin/devre dışı bırak",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Harici öğelerin kaldırılmasını etkinleştirin/devre dışı bırak",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Son kaldırılan öğeyi geri yükle",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Kaldırılan tüm öğeleri geri yükle",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Son geri yüklenen öğeyi kaldır",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Sayfayı kaydet",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Sayfayı yazdır",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "MHTML dosyasını içe aktar",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Bekleyen kaydetmeler",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Hepsini iptal et",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Başlık",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "durum",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "askıda",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "işleniyor",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "iptal ediliyor",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "bekleyen kayıt yok",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "URL ekle",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Yeni satır kayıtlarıyla ayrılmış bir URL listesi girin",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "TAMAM",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "İPTAL",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Toplu kaydetme URL'leri",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "URL yok",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "URL ekle",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "URL ekle...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Hepsini sil",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Sayfaları kaydet",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "REST Form Api'ye Yükleme",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "yetkilendirme belirteci",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "arşiv veri alanı adı",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "arşiv URL alan adı",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Seçenekler düzenleyici",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Kaydet",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Yapılandırma kaydedildi",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Geçersiz JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/uk/messages.json
================================================
{
"extensionDescription": {
"message": "Зберегти всю сторінку в один HTML-файл",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "Зберегти вибрані вкладки або їх вибраний вміст",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "Зберегти всі вкладки",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "Власна комбінація клавіш",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "Власна комбінація клавіш #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "Власна комбінація клавіш #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "Власна комбінація клавіш #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "Власна комбінація клавіш #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "Власна комбінація клавіш #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "Власна комбінація клавіш #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "Власна комбінація клавіш #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "Власна комбінація клавіш #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "Власна комбінація клавіш #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "Власна комбінація клавіш #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "Зберегти сторінку з допомогою SingleFile",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "Зберегти вибрані посилання",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "Анотувати сторінку...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "Анотувати і зберегти сторінку...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "Зберегти сторінку з профілем",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "Перегляд відкладених збережень...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "Виберіть профіль за замовчуванням ",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "Виберіть профіль поточного правила",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "Виберіть профіль поточного домену",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "Зберегти виділене",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "Зберегти фрейм",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "Зберегти вкладки",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "Зберегти вибрані вкладки",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "Зберегти незакріплені вкладки",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "Зберегти всі вкладки",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "Пакетне збереження URL-адрес...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "Автозбереження",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "Вимкнено",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "Автозбереження цієї вкладки",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "Автозбереження незакріплених вкладок",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "Автозбереження всіх вкладок",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "Зберегти сторінку з допомогою SingleFile",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "Ця сторінка не може бути збережена з SingleFile",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "Ініціалізація SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "Прогрес збереження: ",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "Прогрес завантаження: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "ОК",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "ERR",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "Автозбереження активне",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[A]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "Параметри",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "Користувацький інтерфейс",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "додати пункт в контекстне меню веб-сторінки",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "затіняти сторінку під час обробки",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "відображати інформ. панель під час перегляду збереженої сторінки",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "шаблон вмісту інформаційної панелі ",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "блок змішаного наповнення",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "зберігати оригінальні URL-адреси вбудованих ресурсів",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "додавати інформ. панель в сторінку що зберігається",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "тримати інфопанель відкритою",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "не включати збережену дату",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "відкривати діалогове вікно для редагування вмісту інформаційної панелі",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "автоматично закривати вкладку після збереження сторінки",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "команда гарячої клавіші",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "стандартна гаряча клавіша",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "Ім'я файлу",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "шаблон",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "максимальна довжина",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "байти",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "символи",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "замінний символ",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "Замініть смайлики на текст",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "Збережіть дані шаблону імені файлу на сторінці",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "відкривати діалогове вікно \"Save as\" для підтвердження імені файлу",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "Розв'язок конфліктів імен файлів",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "створити унікальне ім'я",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "перезаписати існуючий файл",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "запит імені",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "пропускати дублікати файлів",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML-вміст",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "стискати вміст HTML",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "видалити фрейми",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "видалити приховані елементи",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "видалити певні елементи",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "Формат файлу",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "формату",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "саморозпаковується ZIP (універсальний)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "саморозпаковується ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "пароль",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "створити кореневий каталог",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "відключити сжаття",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "не додавайте дані після ZIP-архіву",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "зробити текст доступним для пошуку",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "вбудоване зображення",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "знімок екрану",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "власне зображення",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "Інфобар",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "Зображення",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "групувати дублікати зображень",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "коефіцієнт зменшення розміру зображення",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "зберегти відстрочені зображення",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "максимальний час простою (мс)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "зменшити масштаб сторінки",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "відправка події \"прокрутка\"",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "зберегти відстрочені фрейми",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "видалити зображення для альтернативних розширень екрану ",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "Шрифти",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "видалити невикористовувані шрифти",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "видалити альтернативні шрифти",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "Стилі",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "стискати вміст CSS ",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "групувати дублікати таблиць стилів",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "переміщати в елемент head стилі, що знаходяться за його межами",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "видалити невикористовувані стилі",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "видалити стилі для екранів альтернативних пристроїв",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "Мережа",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "заблоковані ресурси",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "заголовок \"Accept\"",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "скрипти",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "відеоролики",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "аудіозаписи",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "документи",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "шрифти",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "таблиці стилів",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "зображення",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "Пункт призначення",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "Закладки",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "Автозбереження",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "Правила автоналаштування ",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "Підтвердіть видалення всіх показаних правил",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "Видалити всі правила",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "URL-адреса",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "Введіть повний або частковий URL (напр. example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "Профіль",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "Профіль автозбереження",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "переглянути всі профілі",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "відобразити стовпчик 'Профіль автозбереження'",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "Оновити правило",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "Видалити правило",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "Додати правило",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "Підтвердити зміни",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "Скасувати зміни",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "Підтвердити видалення вибраного правила",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "автозбереження після завантаження або розвантаження сторінки",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "автозбереження після завантаження сторінки",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "автозбереження після розвантаження сторінки",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "автозбереження на вкладці відкинути",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "автозбереження при видаленні вкладки",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "затримка автозбереження після завантаження сторінки (с)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "періодичне автозбереження",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "період (с.)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "зберегти сторінку за допомогою програми SingleFile Companion",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "Редактор анотацій",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "анотувати сторінки перед збереженням",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "відкривати збережені сторінки в новій вкладці",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "відкривати сторінки, збережені за допомогою SingleFile, в редакторі анотацій",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "режим за замовчуванням",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "нормальний",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "редагувати сторінку",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "відформатувати сторінку",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "зняти елементи",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "зняти зовнішні елементи",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "застосовувати системну тему при форматуванні сторінки",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "ширина вмісту при форматуванні сторінки (em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "попереджати при виході зі сторінки з незбереженими змінами",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "відображати інформ. панель",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "Різне",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "зберігати сторінки у фоновому режимі",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "відображати статистику в консолі після обробки",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "встановити максимальний розмір",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "максимальний розмір (МБ)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "встановити максимальний час завантаження",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "максимальний час завантаження (с)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "передача заголовка \"Referer\" після помилки перехресного запиту",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "зберегти вихідну сторінку",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "встановити політику безпеки контенту",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "зберегти в буфер обміну",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "збереження у файлову систему",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "поділитися сторінкою",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "додати докази існування",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "Підтвердьте, що ви дозволяєте SingleFile надсилати в Woleet API хеш SHA256 кожної сторінки, яку ви збираєтеся зберегти. Ви можете знайти більше інформації про цю функцію на сторінці довідки або натиснувши на знак питання поруч із опцією.",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "токен доступу",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "завантажити на Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "завантажити на Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "завантажити на GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "токен доступу",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "ім'я користувача",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "назва сховища",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "назва філії",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "завантажити на Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "домен",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "регіон",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "назва відра",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "ключ доступу",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "секретний ключ",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "вивантаження на WebDAV-сервер",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "ідентифікатор користувача",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "пароль",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "завантажити на MCP-сервер",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "URL сервера",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "токен автентифікації",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "зберегти за допомогою програми SingleFile Companion",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "зберегти сторінку новоствореної закладки",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "прив'язати нову закладку до збереженої сторінки",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "дозволені папки",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "ігноровані папки",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "допомога",
"description": "Options help link"
},
"optionSynchronize": {
"message": "параметри синхронізації",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "Скидання",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "Скинути всі параметри до типових значень",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "Підтвердити скидання всіх параметрів чи поточного профілю",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "Скинути всі параметри",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "Скинути поточний профіль",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "ОК",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "Скасувати",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "Експорт",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "Імпорт",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "Відстрочені зображення",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "Вміст фрейму",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "Вбудоване зображення",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "Крок",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "Сто двадцять і два,",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "Помилка SingleFile: ",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "Відкрити зображення..",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "Поділитися сторінкою...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "Seite teilen...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "Типові налаштування",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "Вимкнено",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "Додати новий профіль",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "Перейменувати профіль",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "Видалити профіль",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "Введіть ім'я нового профілю",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "Підтвердити видалення обраного профілю",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "Введіть нове ім'я для обраного профілю",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "Додати жовту примітку",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "Додати рожеву примітку",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "Додати синю примітку",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "Додати зелену примітку",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "Позначити виділений текст жовтим кольором",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "Позначити виділений текст рожевим кольором",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "Позначити виділений текст синім кольором",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "Позначити виділений текст зеленим кольором",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "Показати/приховати примітки",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "Показати/приховати текст",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "Видалити виділений текст",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "Ввімкнути/вимкнути режим 'тільки для читання'",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "Відформатуйте сторінку для кращої читабельності",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "Увімкнути/вимкнути зняття внутрішніх елементів",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "Увімкнути/вимкнути зняття зовнішніх елементів",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "Відновлення останнього видаленого елемента",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "Відновити всі видалені елементи",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "Видалити останній відновлений елемент",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "Зберегти сторінку",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "Роздрукувати сторінку",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "Імпортувати файл MHTML",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "Очікують на збереження",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "Скасувати все",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "URL",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "Назва",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "статус",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "на розгляді",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "переробка",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "скасування",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "Відкладених збережень немає",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "Додати URL-адреси",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "Введіть список URL-адрес через новий рядок",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "OK",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "Скасувати",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "Пакетне збереження URL-адрес",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "Немає URL-адрес",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "Додати URL-адресу",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "Додати URL-адреси",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "Видалити всі",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "Зберегти сторінки",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "URL",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "завантажити на REST Form Api",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "URL",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "токен авторизації",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "назва поля архівних даних",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "назва поля URL-адреси",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "Редактор параметрів",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "Зберегти",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "Конфігурація збережена",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "Недійсний JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/zh_CN/messages.json
================================================
{
"extensionDescription": {
"message": "将一个完整的页面保存到单个 HTML 文件中",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "保存选中标签页或其中的选中内容",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "保存所有标签页",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "自定义快捷键",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "自定义快捷键 #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "自定义快捷键 #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "自定义快捷键 #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "自定义快捷键 #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "自定义快捷键 #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "自定义快捷键 #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "自定义快捷键 #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "自定义快捷键 #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "自定义快捷键 #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "自定义快捷键 #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "使用 SingleFile 保存页面",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "保存所选链接",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "标注页面...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "标注并保存该页面...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "使用指定的配置文件保存页面",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "查看挂起的保存项...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "选择默认配置文件",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "选择当前规则的配置文件",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "选择当前域名的配置文件",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "保存选中部分",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "保存框架",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "保存标签页",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "保存选中标签页",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "保存未固定标签页",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "保存所有标签页",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "批量保存网址...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "自动保存",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "已禁用",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "自动保存此标签页",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "自动保存未固定标签页",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "自动保存所有标签页",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "使用 SingleFile 保存页面",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "SingleFile 无法保存此页面",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "正在初始化 SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "保存进度:",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "上传进度: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "完成",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "错误",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "自动保存活动页面",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[自动]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "选项",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "用户界面",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "在页面的上下文菜单中添加 SingleFile 条目",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "在处理过程中用阴影覆盖页面",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "查看已保存页面时显示信息栏",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "信息栏内容模板",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "拦截混合內容",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "保存嵌入资源的原始网址",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "将信息栏嵌入到保存的页面中",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "查看已保存页面时使信息栏为打开状态",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "不包括保存日期",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "打开提示对话框编辑信息栏内容",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "页面保存后自动关闭该标签页",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "自定义快捷键命令",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "默认快捷键",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "文件名",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "模板",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "最大长度",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "字节",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "字符",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "替换字符",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "用文字替换表情符号",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "将文件名模板数据保存到页面中",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "打开 “另存为” 对话框以确认文件名",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "文件名冲突解决方案",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "创建一个唯一名称",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "覆盖现有文件",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "指定一个新名称",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "跳过重复文件",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML 内容",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "压缩 HTML 内容",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "移除框架",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "移除隐藏元素",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "移除特定元素",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "文件格式",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "格式",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "自解压缩 ZIP(通用)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "自解压缩 ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "密码",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "创建根目录",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "禁用压缩",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "不要在 ZIP 数据后添加数据",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "使文本可被搜索",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "嵌入图片",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "网页截图",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "自定义图片",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "信息栏",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "图片",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "将重复图片分组到一起",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "图片缩小系数",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "保存延迟加载的图片",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "最长空闲时间(毫秒)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "缩小页面",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "触发滚动事件",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "加载延迟框架",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "移除用于备选分辨率的图片",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "字体",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "移除未使用字体",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "移除备选字体",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "样式表",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "压缩 CSS 内容",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "将重复样式表分组到一起",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "移动 head 标签之外的样式到其内",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "移除未使用的样式",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "移除用于备选设备屏幕的样式表",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "网络",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "拦截资源文件",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "“Accept” 请求头",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "脚本",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "视频",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "音频",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "文档",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "字体",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "样式表",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "图片",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "保存位置",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "书签",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "自动保存",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "自动设置规则",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "确认删除所有已显示规则",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "删除所有已显示规则",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "网址",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "输入完整的或部分网址 (例如 example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "配置文件",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "自动保存配置文件",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "显示所有配置文件",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "显示 “自动保存配置文件” 列",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "更新规则",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "删除规则",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "添加规则",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "验证更改",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "取消更改",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "确认删除所选规则",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "在页面加载完成后或开始卸载时进行自动保存",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "在页面加载完成后进行自动保存",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "在页面开始卸载时进行自动保存",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "在页面丢弃时进行自动保存",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "在页面移除时进行自动保存",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "页面加载完成后延迟该时间再进行自动保存(秒)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "定期自动保存",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "周期(秒)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "使用 SingleFile Companion 保存页面",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "标注编辑器",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "在保存前对该页面进行标注编辑",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "在新标签页中打开保存后的页面",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "在标注编辑器中打开用 SingleFile 保存的页面",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "默认模式",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "常规",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "编辑模式",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "格式化页面",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "删除内部文档元素",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "删除外部文档元素",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "在标注编辑器中打开页面时应用系统主题样式",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "格式化页面时的内容宽度(em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "离开标注编辑器时提醒保存已修改的内容",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "显示信息栏",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "杂项",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "在后台保存页面",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "处理完成后在控制台中显示统计数据",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "限制资源文件大小",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "大小上限(兆字节)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "限制资源文件下载超时时间",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "时间上限(秒)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "跨域请求失败时添加来源地址头信息(Referer)",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "保存原始页面",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "设置内容安全策略",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "保存到剪切板",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "保存到文件系统",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "分享页面",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "添加证明文件存在的指纹",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "请确认您是否允许 SingleFile 将您要保存的每个页面的 SHA256 哈希值发送给 Woleet API 。您可以在帮助页面或者通过点击该选项旁的问号找到此功能的更多信息。",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "访问令牌",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "保存到 Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "保存到 Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "保存到 GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "访问令牌",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "用户名",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "仓库名称",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "分支名称",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "保存到 Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "域名",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "区域",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "存储桶名称",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "访问密钥",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "密钥",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "保存到 WebDAV 服务器",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "地址",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "用户名",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "密码",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "保存到 MCP 服务器",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "服务器地址",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "认证令牌",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "使用 SingleFile Companion 保存",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "创建新书签时保存其对应页面",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "将新书签的链接指向已保存页面",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "允许文件夹",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "忽略文件夹",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "帮助",
"description": "Options help link"
},
"optionSynchronize": {
"message": "同步选项",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "重置",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "重置所有选项为默认值",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "确认重置所有选项或当前配置文件",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "重置所有选项",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "重置当前配置文件",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "确定",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "取消",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "导出",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "导入",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "延迟加载的图片",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "框架内容",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "嵌入图片",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "步骤",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile 错误:",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "打开图片...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "分享页面...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "分享选中内容...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "默认设置",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "已禁用",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "新增配置文件",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "重命名配置文件",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "删除配置文件",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "新增配置文件",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "确认删除所选配置文件?",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "重命名配置文件",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "添加黄色标注",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "添加粉色标注",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "添加蓝色标注",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "添加绿色标注",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "将所选文本高亮为黄色",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "将所选文本高亮为粉色",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "将所选文本高亮为蓝色",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "将所选文本高亮为绿色",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "显示/隐藏 标注",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "显示/隐藏 高亮文本",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "移除所选高亮文本",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "启用/禁用 编辑模式",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "格式化页面以提升可读性",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "启用/禁用 点击时删除内部文档元素",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "启用/禁用 点击时删除外部文档元素",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "撤销上次移除元素的操作",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "撤销所有移除元素的操作",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "恢复上次移除元素的操作",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "保存该页面",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "打印页面",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "导入 MHTML 文件",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "挂起保存项",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "取消全部",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "网址",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "标题",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "状态",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "正在挂起",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "正在处理",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "正在取消",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "没有挂起中的保存项",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "添加网址",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "请按行输入网址列表",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "确定",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "取消",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "批量保存网址",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "无网址",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "添加网址",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "添加多个网址...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "删除所有",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "保存页面",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "网址",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "保存到 REST 表单 API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "网址",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "授权令牌",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "文件字段名称",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "网址字段名称",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "选项编辑器",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "保存",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "配置已保存",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "无效的 JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: _locales/zh_TW/messages.json
================================================
{
"extensionDescription": {
"message": "將一個完整的頁面保存到單個 HTML 文件中",
"description": "Description of the extension."
},
"commandSaveSelectedTabs": {
"message": "保存選中標籤頁或其中的選中內容",
"description": "Command (Ctrl+Shift+Y): 'Save the selected tabs or their selected contents'"
},
"commandSaveAllTabs": {
"message": "保存所有標籤頁",
"description": "Command (Ctrl+Shift+U): 'Save all tabs'"
},
"commandCustomShortcut": {
"message": "自定義快捷鍵",
"description": "Command label: 'Custom shortcut'"
},
"commandCustomShortcut0": {
"message": "自定義快捷鍵 #1",
"description": "Command label: 'Custom shortcut #1'"
},
"commandCustomShortcut1": {
"message": "自定義快捷鍵 #2",
"description": "Command label: 'Custom shortcut #2'"
},
"commandCustomShortcut2": {
"message": "自定義快捷鍵 #3",
"description": "Command label: 'Custom shortcut #3'"
},
"commandCustomShortcut3": {
"message": "自定義快捷鍵 #4",
"description": "Command label: 'Custom shortcut #4'"
},
"commandCustomShortcut4": {
"message": "自定義快捷鍵 #5",
"description": "Command label: 'Custom shortcut #5'"
},
"commandCustomShortcut5": {
"message": "自定義快捷鍵 #6",
"description": "Command label: 'Custom shortcut #6'"
},
"commandCustomShortcut6": {
"message": "自定義快捷鍵 #7",
"description": "Command label: 'Custom shortcut #7'"
},
"commandCustomShortcut7": {
"message": "自定義快捷鍵 #8",
"description": "Command label: 'Custom shortcut #8'"
},
"commandCustomShortcut8": {
"message": "自定義快捷鍵 #9",
"description": "Command label: 'Custom shortcut #9'"
},
"commandCustomShortcut9": {
"message": "自定義快捷鍵 #10",
"description": "Command label: 'Custom shortcut #10'"
},
"menuSavePage": {
"message": "使用 SingleFile 保存頁面",
"description": "Menu entry: 'Save page with SingleFile'"
},
"menuSaveSelectedLinks": {
"message": "保存所選鏈接",
"description": "Menu entry: 'Save selected links'"
},
"menuEditPage": {
"message": "標註頁面...",
"description": "Menu entry: 'Annotate the page...'"
},
"menuEditAndSavePage": {
"message": "標註並保存該頁面...",
"description": "Menu entry: 'Annotate and save the page...'"
},
"menuSaveWithProfile": {
"message": "使用指定的配置文件保存頁面",
"description": "Menu entry: 'Save with profile'"
},
"menuViewPendingSaves": {
"message": "查看掛起的保存項...",
"description": "Menu entry: 'View pending saves...'"
},
"menuSelectProfile": {
"message": "選擇默認配置文件",
"description": "Menu entry: 'Select the default profile'"
},
"menuUpdateRule": {
"message": "選擇當前規則的配置文件",
"description": "Menu entry: 'Select the profile of the current rule'"
},
"menuCreateDomainRule": {
"message": "選擇當前域名的配置文件",
"description": "Menu entry: 'Select the profile of the current domain'"
},
"menuSaveSelection": {
"message": "保存選中部分",
"description": "Menu entry: 'Save selection'"
},
"menuSaveFrame": {
"message": "保存框架",
"description": "Menu entry: 'Save frame'"
},
"menuSaveTabs": {
"message": "保存標籤頁",
"description": "Menu entry (SingleFile button only): 'Save tabs'"
},
"menuSaveSelectedTabs": {
"message": "保存選中標籤頁",
"description": "Menu entry: 'Save selected tabs'"
},
"menuSaveUnpinnedTabs": {
"message": "保存未固定標籤頁",
"description": "Menu entry: 'Save unpinned tabs'"
},
"menuSaveAllTabs": {
"message": "保存所有標籤頁",
"description": "Menu entry: 'Save all tabs'"
},
"menuBatchSaveUrls": {
"message": "批量保存網址...",
"description": "Menu entry: 'Batch save URLs...'"
},
"menuAutoSave": {
"message": "自動保存",
"description": "Menu entry: 'Auto-save'"
},
"menuAutoSaveDisabled": {
"message": "已禁用",
"description": "Menu entry: 'Auto-save' > Disabled'"
},
"menuAutoSaveTab": {
"message": "自動保存此標籤頁",
"description": "Menu entry: 'Auto-save' > Auto-save this tab'"
},
"menuAutoSaveUnpinnedTabs": {
"message": "自動保存未固定標籤頁",
"description": "Menu entry: 'Auto-save' > Auto-save unpinned tabs'"
},
"menuAutoSaveAllTabs": {
"message": "自動保存所有標籤頁",
"description": "Menu entry: 'Auto-save' > Auto-save all tabs'"
},
"buttonDefaultTooltip": {
"message": "使用 SingleFile 保存頁面",
"description": "Button title: 'Save page with SingleFile'"
},
"buttonBlockedBadge": {
"message": "🚫",
"description": "Button badge when the page is blocked: '🚫'"
},
"buttonBlockedTooltip": {
"message": "SingleFile 無法保存此頁面",
"description": "Button title: 'This page cannot be saved with SingleFile'"
},
"buttonInitializingTooltip": {
"message": "正在初始化 SingleFile",
"description": "Button title during initialization: 'Initializing SingleFile (x/2)'"
},
"buttonInitializingBadge": {
"message": "•••",
"description": "Badge label during initialization: '•••'"
},
"buttonSaveProgressTooltip": {
"message": "保存進度:",
"description": "Button title during save: 'Save progress: xx%'"
},
"buttonUploadProgressTooltip": {
"message": "上傳進度: ",
"description": "Button title during save: 'Upload progress: xx%'"
},
"buttonOKBadge": {
"message": "完成",
"description": "Badge label: 'OK'"
},
"buttonErrorBadge": {
"message": "錯誤",
"description": "Badge label for unexpected errors"
},
"buttonAutoSaveActiveTooltip": {
"message": "自動保存活動頁面",
"description": "Button title: 'Auto-save active'"
},
"buttonAutoSaveActiveBadge": {
"message": "[自動]",
"description": "Badge label when auto-save is active"
},
"optionsTitle": {
"message": "選項",
"description": "Options page title"
},
"optionsUserInterfaceSubTitle": {
"message": "用戶界面",
"description": "Options sub-title: 'User interface'"
},
"optionAddMenuEntry": {
"message": "在頁面的上下文菜單中添加 SingleFile 條目",
"description": "Options page label: 'add entry in the context menu of the webpage'"
},
"optionDisplayShadow": {
"message": "在處理過程中用陰影覆蓋頁面",
"description": "Options page label: 'overlay a shadow on the page during processing'"
},
"optionDisplayInfobar": {
"message": "查看已保存頁面時顯示信息欄",
"description": "Options page label: 'display an infobar when viewing a saved page'"
},
"optionInfobarTemplate": {
"message": "信息欄內容模板",
"description": "Options page label: 'template of the infobar content'"
},
"optionBlockMixedContent": {
"message": "攔截混合內容",
"description": "Options page label: 'block mixed content'"
},
"optionSaveOriginalURLs": {
"message": "保存嵌入資源的原始網址",
"description": "Options page label: 'save original URLs of embedded resources'"
},
"optionIncludeInfobar": {
"message": "將信息欄嵌入到保存的頁面中",
"description": "Options page label: 'include the infobar in the saved page'"
},
"optionOpenInfobar": {
"message": "查看已保存頁面時使信息欄為打開狀態",
"description": "Options page label: 'keep infobar open'"
},
"optionRemoveInfobarSavedDate": {
"message": "不包括保存日期",
"description": "Options page label: 'do not include the saved date'"
},
"optionConfirmInfobar": {
"message": "打開提示對話框編輯信息欄內容",
"description": "Options page label: 'open a prompt dialog to edit the infobar content'"
},
"optionAutoClose": {
"message": "頁面保存後自動關閉該標籤頁",
"description": "Options page label: 'auto-close the tab after the page is saved'"
},
"optionCustomShortcut": {
"message": "自定義快捷鍵命令",
"description": "Options page label: 'keyboard shortcut command'"
},
"optionCustomShortcutDefault": {
"message": "默認快捷鍵",
"description": "Options page label: 'default shortcut'"
},
"optionsFileNameSubTitle": {
"message": "文件名",
"description": "Options sub-title: 'File name'"
},
"optionFilenameTemplate": {
"message": "模板",
"description": "Options page label: 'template'"
},
"optionFilenameMaxLength": {
"message": "最大長度",
"description": "Options page label: 'max length'"
},
"optionFilenameMaxLengthBytesUnit": {
"message": "字節",
"description": "Options page label: 'bytes'"
},
"optionFilenameMaxLengthCharsUnit": {
"message": "字符",
"description": "Options page label: 'characters'"
},
"optionFilenameReplacementCharacter": {
"message": "替換字符",
"description": "Options page label: 'replacement character'"
},
"optionReplaceEmojisInFilename": {
"message": "用文字替換表情符號",
"description": "Options page label: 'replace emojis with text'"
},
"optionSaveFilenameTemplateData": {
"message": "將文件名模板數據保存到頁面中",
"description": "Options page label: 'save the filename template data into the page'"
},
"optionConfirmFilename": {
"message": "打開 “另存為” 對話框以確認文件名",
"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
},
"optionFilenameConflictAction": {
"message": "文件名衝突解決方案",
"description": "Options page label: 'filename conflict resolution'"
},
"optionFilenameConflictActionUniquify": {
"message": "創建一個唯一名稱",
"description": "Value for 'filename conflict resolution' option: 'create a unique name'"
},
"optionFilenameConflictActionOverwrite": {
"message": "覆蓋現有文件",
"description": "Value for 'filename conflict resolution' option: 'overwrite the existing file'"
},
"optionFilenameConflictActionPrompt": {
"message": "指定一個新名稱",
"description": "Value for 'name conflict resolution' option: 'prompt for a name'"
},
"optionFilenameConflictActionSkip": {
"message": "跳過重複文件",
"description": "Value for 'filename conflict resolution' option: 'skip duplicate files'"
},
"optionsHTMLContentSubTitle": {
"message": "HTML 內容",
"description": "Options sub-title: 'HTML content'"
},
"optionCompressHTML": {
"message": "壓縮 HTML 內容",
"description": "Options page label: 'compress HTML content'"
},
"optionRemoveFrames": {
"message": "移除框架",
"description": "Options page label: 'remove frames'"
},
"optionRemoveHiddenElements": {
"message": "移除隱藏元素",
"description": "Options page label: 'remove hidden elements'"
},
"optionRemovedElementsSelector": {
"message": "移除特定元素",
"description": "Options page label: 'remove specific elements'"
},
"optionsFileFormatSubTitle": {
"message": "文件格式",
"description": "Options sub-title: 'File format'"
},
"optionFileFormat": {
"message": "格式",
"description": "Options page label: 'format'"
},
"optionFileFormatSelectHTML": {
"message": "HTML",
"description": "Options page label: 'HTML'"
},
"optionFileFormatSelectSelfExtractingUniversal": {
"message": "自解壓縮 ZIP(通用)",
"description": "Options page label: 'self-extracting ZIP (universal)'"
},
"optionFileFormatSelectSelfExtracting": {
"message": "自解壓縮 ZIP",
"description": "Options page label: 'self-extracting ZIP'"
},
"optionFileFormatSelectZIP": {
"message": "ZIP",
"description": "Options page label: 'ZIP'"
},
"optionPassword": {
"message": "密碼",
"description": "Options page label: 'password'"
},
"optionCreateRootDirectory": {
"message": "創建根目錄",
"description": "Options page label: 'create a root directory'"
},
"optionDisableCompression": {
"message": "禁用壓縮",
"description": "Options page label: 'disable compression'"
},
"optionPreventAppendedData": {
"message": "不要在 ZIP 數據後添加數據",
"description": "Options page label: 'do not append data after the ZIP data'"
},
"optionInsertTextBody": {
"message": "使文本可被搜索",
"description": "Options page label: 'make text searchable'"
},
"optionInsertEmbeddedImage": {
"message": "嵌入圖片",
"description": "Options page label: 'embed image'"
},
"optionInsertEmbeddedScreenshotImage": {
"message": "網頁截圖",
"description": "Options page label: 'page screenshot'"
},
"optionInsertEmbeddedCustomImage": {
"message": "自定義圖片",
"description": "Options page label: 'custom image'"
},
"optionsInfobarSubTitle": {
"message": "信息欄",
"description": "Options sub-title: 'Infobar'"
},
"optionsImagesSubTitle": {
"message": "圖片",
"description": "Options sub-title: 'Images'"
},
"optionGroupDuplicateImages": {
"message": "將重複圖片分組到一起",
"description": "Options page label: 'group duplicate images together'"
},
"optionImageReductionFactor": {
"message": "圖片縮小係數",
"description": "Options page label: 'image reduction factor'"
},
"optionLoadDeferredImages": {
"message": "保存延遲加載的圖片",
"description": "Options page label: 'save deferred images'"
},
"optionLoadDeferredImagesMaxIdleTime": {
"message": "最長空閒時間(毫秒)",
"description": "Options page label: 'maximum idle time (ms)'"
},
"optionLoadDeferredImagesKeepZoomLevel": {
"message": "縮小頁面",
"description": "Options page label: 'zoom out the page'"
},
"optionLoadDeferredImagesDispatchScrollEvent": {
"message": "觸發滾動事件",
"description": "Options page label: 'dispatch \"scroll\" event'"
},
"optionLoadDeferredImagesBeforeFrames": {
"message": "加載延遲框架",
"description": "Options page label: 'load deferred frames'"
},
"optionRemoveAlternativeImages": {
"message": "移除用於備選分辨率的圖片",
"description": "Options page label: 'remove images for alternative screen resolutions'"
},
"optionsFontsSubTitle": {
"message": "字體",
"description": "Options sub-title: 'Fonts'"
},
"optionRemoveUnusedFonts": {
"message": "移除未使用字體",
"description": "Options page label: 'remove unused fonts'"
},
"optionRemoveAlternativeFonts": {
"message": "移除備選字體",
"description": "Options page label: 'remove alternative fonts'"
},
"optionsStylesheetsSubTitle": {
"message": "樣式表",
"description": "Options sub-title: 'Stylesheets'"
},
"optionCompressCSS": {
"message": "壓縮 CSS 內容",
"description": "Options page label: 'compress CSS content'"
},
"optionGroupDuplicateStylesheets": {
"message": "將重複樣式表分組到一起",
"description": "Options page label: 'group duplicate stylesheets together'"
},
"optionMoveStylesInHead": {
"message": "移動 head 標籤之外的樣式到其內",
"description": "Options page label: 'move in the head element the styles found outside of it'"
},
"optionRemoveUnusedStyles": {
"message": "移除未使用的樣式",
"description": "Options page label: 'remove unused styles'"
},
"optionRemoveAlternativeMedias": {
"message": "移除用於備選設備屏幕的樣式表",
"description": "Options page label: 'remove stylesheets for alternative devices to screens'"
},
"optionsNetworkSubTitle": {
"message": "網絡",
"description": "Options sub-title: 'Network'"
},
"optionsBlockedResources": {
"message": "攔截資源文件",
"description": "Options page label: 'blocked resources'"
},
"optionsAcceptHeaders": {
"message": "“Accept” 請求頭",
"description": "Options page label: '\"Accept\" header'"
},
"optionResourceScript": {
"message": "腳本",
"description": "Options page label: 'scripts'"
},
"optionResourceVideo": {
"message": "視頻",
"description": "Options page label: 'videos'"
},
"optionResourceAudio": {
"message": "音頻",
"description": "Options page label: 'audios'"
},
"optionResourceDocument": {
"message": "文檔",
"description": "Options page label: 'documents'"
},
"optionResourceFont": {
"message": "字體",
"description": "Options page label: 'fonts'"
},
"optionResourceStylesheet": {
"message": "樣式表",
"description": "Options page label: 'stylesheets'"
},
"optionResourceImage": {
"message": "圖片",
"description": "Options page label: 'images'"
},
"optionsDestinationSubTitle": {
"message": "保存位置",
"description": "Options sub-title: 'Destination'"
},
"optionsBookmarkSubTitle": {
"message": "書籤",
"description": "Options sub-title: 'Bookmarks'"
},
"optionsAutoSaveSubTitle": {
"message": "自動保存",
"description": "Options sub-title: 'Auto-save'"
},
"optionsAutoSettingsSubTitle": {
"message": "自動設置規則",
"description": "Options sub-title: 'Auto-settings rules'"
},
"optionsDeleteDisplayedRulesConfirm": {
"message": "確認刪除所有已顯示規則",
"description": "Popup text 'Confirm the deletion of all displayed rules'"
},
"optionsDeleteRulesTooltip": {
"message": "刪除所有已顯示規則",
"description": "Popup text 'Delete all displayed rules'"
},
"optionsAutoSettingsUrl": {
"message": "網址",
"description": "Options label in the Auto-settings rules: 'URL'"
},
"optionsAutoSettingsUrlPlaceholder": {
"message": "輸入完整的或部分網址 (例如 example.com)",
"description": "Placeholder in the Auto-settings rules: 'Type a complete or partial URL (e.g. example.com)'"
},
"optionsAutoSettingsProfile": {
"message": "配置文件",
"description": "Options label in the Auto-settings rules: 'Profile'"
},
"optionsAutoSettingsAutoSaveProfile": {
"message": "自動保存配置文件",
"description": "Options label in the Auto-settings rules: 'Auto-save profile'"
},
"optionsAutoSettingsShowAllProfiles": {
"message": "顯示所有配置文件",
"description": "Options label in the Auto-settings rules: 'display all profiles'"
},
"optionsAutoSettingsShowAutoSaveProfile": {
"message": "顯示 “自動保存配置文件” 列",
"description": "Options label in the Auto-settings rules: 'display 'Auto-save profile' column'"
},
"optionsUpdateRuleTooltip": {
"message": "更新規則",
"description": "Popup text 'Update the rule' in the options page"
},
"optionsDeleteRuleTooltip": {
"message": "刪除規則",
"description": "Popup text 'Delete the rule' in the options page"
},
"optionsAddRuleTooltip": {
"message": "添加規則",
"description": "Popup text 'Add the rule' in the options page"
},
"optionsValidateChangesTooltip": {
"message": "驗證更改",
"description": "Popup text 'Validate changes' in the options page"
},
"optionsCancelChangesTooltip": {
"message": "取消更改",
"description": "Popup text 'Cancel changes' in the options page"
},
"optionsDeleteRuleConfirm": {
"message": "確認刪除所選規則",
"description": "Popup text 'Confirm the deletion of the selected rule' in the options page"
},
"optionAutoSaveLoadOrUnload": {
"message": "在頁面加載完成後或開始卸載時進行自動保存",
"description": "auto-save after page load or on page unload"
},
"optionAutoSaveLoad": {
"message": "在頁面加載完成後進行自動保存",
"description": "Options page label: 'auto-save after page load'"
},
"optionAutoSaveUnload": {
"message": "在頁面開始卸載時進行自動保存",
"description": "Options page label: 'auto-save on page unload'"
},
"optionAutoSaveDiscard": {
"message": "在頁面丟棄時進行自動保存",
"description": "Options page label: 'auto-save on tab discard'"
},
"optionAutoSaveRemove": {
"message": "在頁面移除時進行自動保存",
"description": "Options page label: 'auto-save on tab removal'"
},
"optionAutoSaveDelay": {
"message": "頁面加載完成後延遲該時間再進行自動保存(秒)",
"description": "Options page label: 'auto-save waiting delay after page load (s)'"
},
"optionAutoSaveRepeat": {
"message": "定期自動保存",
"description": "Options page label: 'auto-save periodically'"
},
"optionAutoSaveRepeatDelay": {
"message": "週期(秒)",
"description": "Options page label: 'period (s)'"
},
"optionAutoSaveExternalSave": {
"message": "使用 SingleFile Companion 保存頁面",
"description": "Options page label: 'save the page with SingleFile Companion'"
},
"optionsEditorSubTitle": {
"message": "標註編輯器",
"description": "Options sub-title: 'Annotation editor'"
},
"optionOpenEditor": {
"message": "在保存前對該頁面進行標註編輯",
"description": "Options page label: 'annotate the page before saving'"
},
"optionOpenSavedPage": {
"message": "在新標籤頁中打開保存後的頁面",
"description": "Options page label: 'open saved pages in a new tab'"
},
"optionAutoOpenEditor": {
"message": "在標註編輯器中打開用 SingleFile 保存的頁面",
"description": "Options page label: 'open pages saved with SingleFile in the annotation editor'"
},
"optionDefaultEditorMode": {
"message": "默認模式",
"description": "Options page label: 'default mode'"
},
"optionDefaultEditorModeNormal": {
"message": "常規",
"description": "Options page label: 'default mode > normal'"
},
"optionDefaultEditorModeEdit": {
"message": "編輯模式",
"description": "Options page label: 'default mode > edit the page'"
},
"optionDefaultEditorModeFormat": {
"message": "格式化頁面",
"description": "Options page label: 'default mode > format the page'"
},
"optionDefaultEditorModeCut": {
"message": "刪除內部文檔元素",
"description": "Options page label: 'default mode > remove elements'"
},
"optionDefaultEditorModeCutExternal": {
"message": "刪除外部文檔元素",
"description": "Options page label: 'default mode > remove external elements'"
},
"optionApplySystemTheme": {
"message": "在標註編輯器中打開頁面時應用系統主題樣式",
"description": "Title of the button 'apply the system theme when formatting a page'"
},
"optionContentWidth": {
"message": "格式化頁面時的內容寬度(em)",
"description": "Options page label: 'content width when formatting a page (em)'"
},
"optionWarnUnsavedPage": {
"message": "離開標註編輯器時提醒保存已修改的內容",
"description": "Title of the button 'warn if leaving page with unsaved changes'"
},
"optionDisplayInfobarInEditor": {
"message": "顯示信息欄",
"description": "Title of the button 'display the infobar'"
},
"optionsMiscSubTitle": {
"message": "雜項",
"description": "Options sub-title: 'Misc.'"
},
"optionBackgroundSave": {
"message": "在後臺保存頁面",
"description": "Options page label: 'save pages in background'"
},
"optionDisplayStats": {
"message": "處理完成後在控制檯中顯示統計數據",
"description": "Options page label: 'display stats in the console after processing'"
},
"optionSetMaxResourceSize": {
"message": "限制資源文件大小",
"description": "Options page label: 'set maximum size'"
},
"optionMaxResourceSize": {
"message": "大小上限(兆字節)",
"description": "Options page label: 'maximum size (MB)'"
},
"optionSetMaxResourceDelay": {
"message": "限制資源文件下載超時時間",
"description": "Options page label: 'set maximum download time'"
},
"optionMaxResourceDelay": {
"message": "時間上限(秒)",
"description": "Options page label: 'maximum download time (s)'"
},
"optionPassReferrerOnError": {
"message": "跨域請求失敗時添加來源地址頭信息(Referer)",
"description": "Options page label: 'pass \"Referer\" header after a cross-origin request error'"
},
"optionSaveRawPage": {
"message": "保存原始頁面",
"description": "Options page label: 'save raw page'"
},
"optionInsertMetaCSP": {
"message": "設置內容安全策略",
"description": "Options page label: 'set content security policy'"
},
"optionSaveToClipboard": {
"message": "保存到剪切板",
"description": "Options page label: 'copy to clipboard'"
},
"optionSaveToFilesystem": {
"message": "保存到文件系統",
"description": "Options page label: 'save to filesystem'"
},
"optionSharePage": {
"message": "分享頁面",
"description": "Options page label: 'share page'"
},
"optionAddProof": {
"message": "添加證明文件存在的指紋",
"description": "Options page label: 'add proof of existence'"
},
"optionsAddProofConfirm": {
"message": "請確認您是否允許 SingleFile 將您要保存的每個頁面的 SHA256 哈希值發送給 Woleet API 。您可以在幫助頁面或者通過點擊該選項旁的問號找到此功能的更多信息。",
"description": "Popup text displayed wen enabling the option 'add proof of existence'"
},
"optionWoleetKey": {
"message": "訪問令牌",
"description": "Options page label: 'access token'"
},
"optionSaveToGDrive": {
"message": "保存到 Google Drive",
"description": "Options page label: 'upload to Google Drive'"
},
"optionSaveToDropbox": {
"message": "保存到 Dropbox",
"description": "Options page label: 'upload to Dropbox'"
},
"optionSaveToGitHub": {
"message": "保存到 GitHub",
"description": "Options page label: 'upload to GitHub'"
},
"optionGitHubToken": {
"message": "訪問令牌",
"description": "Options page label: 'access token'"
},
"optionGitHubUser": {
"message": "用戶名",
"description": "Options page label: 'user name'"
},
"optionGitHubRepository": {
"message": "倉庫名稱",
"description": "Options page label: 'repository name'"
},
"optionGitHubBranch": {
"message": "分支名稱",
"description": "Options page label: 'branch name'"
},
"optionSaveToS3": {
"message": "保存到 Amazon S3",
"description": "Options page label: 'upload to Amazon S3'"
},
"optionS3Domain": {
"message": "域名",
"description": "Options page label: 'domain'"
},
"optionS3Region": {
"message": "區域",
"description": "Options page label: 'region'"
},
"optionS3Bucket": {
"message": "存儲桶名稱",
"description": "Options page label: 'bucket name'"
},
"optionS3AccessKey": {
"message": "訪問密鑰",
"description": "Options page label: 'access key'"
},
"optionS3SecretKey": {
"message": "密鑰",
"description": "Options page label: 'secret key'"
},
"optionSaveWithWebDAV": {
"message": "保存到 WebDAV 服務器",
"description": "Options page label: 'upload to a WebDAV server'"
},
"optionWebDAVURL": {
"message": "地址",
"description": "Options page label: 'URL'"
},
"optionWebDAVUser": {
"message": "用戶名",
"description": "Options page label: 'user identifier'"
},
"optionWebDAVPassword": {
"message": "密碼",
"description": "Options page label: 'password'"
},
"optionSaveWithMCP": {
"message": "保存到 MCP 服務器",
"description": "Options page label: 'upload to an MCP server'"
},
"optionMCPServerUrl": {
"message": "服務器地址",
"description": "Options page label: 'server URL'"
},
"optionMCPAuthToken": {
"message": "認證令牌",
"description": "Options page label: 'authentication token'"
},
"optionSaveWithCompanion": {
"message": "使用 SingleFile Companion 保存",
"description": "Options page label: 'save with SingleFile Companion'"
},
"optionSaveCreatedBookmarks": {
"message": "創建新書籤時保存其對應頁面",
"description": "Options page label: 'save the page of a newly created bookmark'"
},
"optionReplaceBookmarkURL": {
"message": "將新書籤的鏈接指向已保存頁面",
"description": "Options page label: 'link the new bookmark to the saved page'"
},
"optionAllowedBookmarkFolders": {
"message": "允許文件夾",
"description": "Options page label: 'allowed folders'"
},
"optionIgnoredBookmarkFolders": {
"message": "忽略文件夾",
"description": "Options page label: 'ignored folders'"
},
"optionsHelpLink": {
"message": "幫助",
"description": "Options help link"
},
"optionSynchronize": {
"message": "同步選項",
"description": "Options label: 'synchronize options'"
},
"optionsResetButton": {
"message": "重置",
"description": "Options button: 'Reset'"
},
"optionsResetTooltip": {
"message": "重置所有選項為默認值",
"description": "Options 'Reset' button tooltip"
},
"optionsResetConfirm": {
"message": "確認重置所有選項或當前配置文件",
"description": "Popup text 'Confirm the reset of all options or the current profile' in the options page"
},
"optionsResetAllButton": {
"message": "重置所有選項",
"description": "Options confirm button: 'Reset all options'"
},
"optionsResetCurrentButton": {
"message": "重置當前配置文件",
"description": "Options confirm button: 'Reset current profile'"
},
"optionsOKButton": {
"message": "確定",
"description": "Options confirm button: 'OK'"
},
"optionsCancelButton": {
"message": "取消",
"description": "Options confirm button: 'Cancel'"
},
"optionsExportButton": {
"message": "導出",
"description": "Options button: 'Export'"
},
"optionsImportButton": {
"message": "導入",
"description": "Options button: 'Import'"
},
"logPanelDeferredImages": {
"message": "延遲加載的圖片",
"description": "Label 'Deferred images' in the log panel"
},
"logPanelFrameContents": {
"message": "框架內容",
"description": "Label 'Frame contents' in the log panel"
},
"logPanelEmbeddedImage": {
"message": "嵌入圖片",
"description": "Label 'Embedded image' in the log panel"
},
"logPanelStep": {
"message": "步驟",
"description": "Label 'Step' (for 'Step x / 4') in the log panel"
},
"logPanelWidth": {
"message": "122",
"description": "Width of the log panel in pixels, it should be adjusted for the longest label beginning with 'log' (e.g. 'logPanelDeferredImages')"
},
"topPanelError": {
"message": "SingleFile 錯誤:",
"description": "Label 'SingleFile error: ' in the top panel when displaying an error message"
},
"topPanelEmbeddedImageButton": {
"message": "打開圖片...",
"description": "Top panel button 'Open image...' when embedding an image"
},
"topPanelSharePageButton": {
"message": "分享頁面...",
"description": "Top panel button 'Share page...' when sharing a page"
},
"topPanelShareSelectionButton": {
"message": "分享選中內容...",
"description": "Top panel button 'Share selection...' when sharing selected content"
},
"profileDefaultSettings": {
"message": "默認設置",
"description": "Label 'Default settings' of the default settings in the options page"
},
"profileDisabled": {
"message": "已禁用",
"description": "Label 'Disabled' of the disabled profile name in the options page"
},
"profileAddButtonTooltip": {
"message": "新增配置文件",
"description": "Tooltip 'Add a new profile' in the options page"
},
"profileRenameButtonTooltip": {
"message": "重命名配置文件",
"description": "Tooltip 'Rename the profile' in the options page"
},
"profileDeleteButtonTooltip": {
"message": "刪除配置文件",
"description": "Tooltip 'Delete the profile' in the options page"
},
"profileAddPrompt": {
"message": "新增配置文件",
"description": "Popup text 'Enter a name for this new profile' in the options page"
},
"profileDeleteConfirm": {
"message": "確認刪除所選配置文件?",
"description": "Popup text 'Confirm the deletion of the selected profile' in the options page"
},
"profileRenamePrompt": {
"message": "重命名配置文件",
"description": "Popup text 'Enter a new name for the selected profile' in the options page"
},
"editorAddYellowNote": {
"message": "添加黃色標註",
"description": "Title of the button 'Add a yellow note' in the editor"
},
"editorAddPinkNote": {
"message": "添加粉色標註",
"description": "Title of the button 'Add a pink note' in the editor"
},
"editorAddBlueNote": {
"message": "添加藍色標註",
"description": "Title of the button 'Add a blue note' in the editor"
},
"editorAddGreenNote": {
"message": "添加綠色標註",
"description": "Title of the button 'Add a green note' in the editor"
},
"editorHighlightYellow": {
"message": "將所選文本高亮為黃色",
"description": "Title of the button 'Highlight selected text in yellow' in the editor"
},
"editorHighlightPink": {
"message": "將所選文本高亮為粉色",
"description": "Title of the button 'Highlight selected text in pink' in the editor"
},
"editorHighlightBlue": {
"message": "將所選文本高亮為藍色",
"description": "Title of the button 'Highlight selected text in blue' in the editor"
},
"editorHighlightGreen": {
"message": "將所選文本高亮為綠色",
"description": "Title of the button 'Highlight selected text in green' in the editor"
},
"editorToggleNotes": {
"message": "顯示/隱藏 標註",
"description": "Title of the button 'Display/hide notes' in the editor"
},
"editorToggleHighlights": {
"message": "顯示/隱藏 高亮文本",
"description": "Title of the button 'Display/hide the highlighted text' in the editor"
},
"editorRemoveHighlight": {
"message": "移除所選高亮文本",
"description": "Title of the button 'Remove the selected highlighted text' in the editor"
},
"editorEditPage": {
"message": "啟用/禁用 編輯模式",
"description": "Title of the button 'Enable/disable read-only' in the editor"
},
"editorFormatPage": {
"message": "格式化頁面以提升可讀性",
"description": "Title of the button 'Format the page for better readability' in the editor"
},
"editorCutInnerPage": {
"message": "啟用/禁用 點擊時刪除內部文檔元素",
"description": "Title of the button 'Enable/disable removing of internal elements' in the editor"
},
"editorCutOuterPage": {
"message": "啟用/禁用 點擊時刪除外部文檔元素",
"description": "Title of the button 'Enable/disable removing of external elements' in the editor"
},
"editorUndoCutPage": {
"message": "撤銷上次移除元素的操作",
"description": "Title of the button 'Restore last removed element' in the editor"
},
"editorUndoAllCutPage": {
"message": "撤銷所有移除元素的操作",
"description": "Title of the button 'Restore all removed elements' in the editor"
},
"editorRedoCutPage": {
"message": "恢復上次移除元素的操作",
"description": "Title of the button 'Remove last restored element' in the editor"
},
"editorSavePage": {
"message": "保存該頁面",
"description": "Title of the button 'Save the page' in the editor"
},
"editorPrintPage": {
"message": "打印頁面",
"description": "Title of the button 'Print the page' in the editor"
},
"editorImportMht": {
"message": "導入 MHTML 文件",
"description": "Title of the button 'Import MHTML file' in the editor"
},
"pendingsTitle": {
"message": "掛起保存項",
"description": "Title of the pending save page 'Pending saves' in the editor"
},
"pendingsCancelAllButton": {
"message": "取消全部",
"description": "Pending saves button 'Cancel all'"
},
"pendingsURLTitle": {
"message": "網址",
"description": "Title of the first column in the table of the pending saves 'URL'"
},
"pendingsTitleTitle": {
"message": "標題",
"description": "Title of the first column in the table of the pending saves 'Title'"
},
"pendingsStatusTitle": {
"message": "狀態",
"description": "Title of the second column in the table of the pending saves 'status'"
},
"pendingsPendingStatus": {
"message": "正在掛起",
"description": "Value of 'status' for pending saves"
},
"pendingsProcessingStatus": {
"message": "正在處理",
"description": "Value of 'status' for current saves"
},
"pendingsCancellingStatus": {
"message": "正在取消",
"description": "Value of 'status' for cancelled saves"
},
"pendingsNoPendings": {
"message": "沒有掛起中的保存項",
"description": "Label displayed when they are no pending saves"
},
"pendingsAddUrlsButton": {
"message": "添加網址",
"description": "button 'Add URLs'"
},
"pendingsAddUrls": {
"message": "請按行輸入網址列表",
"description": "Label of the add URLs input"
},
"pendingsAddUrlsOKButton": {
"message": "確定",
"description": "Add URLs popup confirm button: 'OK'"
},
"pendingsAddUrlsCancelButton": {
"message": "取消",
"description": "Add URLs popup cancel button: 'Cancel'"
},
"batchSaveUrlsTitle": {
"message": "批量保存網址",
"description": "Title of the 'batch save URLs' page"
},
"batchSaveUrlsNoURLs": {
"message": "無網址",
"description": "Label displayed when they are no URLs"
},
"batchSaveUrlsAddUrlButton": {
"message": "添加網址",
"description": "label of the button 'Add URL'"
},
"batchSaveUrlsAddUrlsButton": {
"message": "添加多個網址...",
"description": "label of the button 'Add URLs...'"
},
"batchSaveUrlsRemoveAllButton": {
"message": "刪除所有",
"description": "label of the button 'Remove all'"
},
"batchSaveUrlsSavePagesButton": {
"message": "保存頁面",
"description": "label of the button 'Save pages'"
},
"batchSaveUrlsURLTitle": {
"message": "網址",
"description": "Title of the column in the table of the URLs"
},
"optionSaveToRestFormApi": {
"message": "保存到 REST 表單 API",
"description": "Options page label: 'upload to a REST Form API'"
},
"optionRestFormApiUrl": {
"message": "網址",
"description": "Options page label: 'URL'"
},
"optionRestFormApiToken": {
"message": "授權令牌",
"description": "Options page label: 'authorization token'"
},
"optionRestFormApiFileFieldName": {
"message": "文件字段名稱",
"description": "Options page label: 'archive data field name'"
},
"optionRestFormApiUrlFieldName": {
"message": "網址字段名稱",
"description": "Options page label: 'archive URL field name'"
},
"optionsEditorTitle": {
"message": "選項編輯器",
"description": "Options title: 'Options editor'"
},
"optionsEditorSaveButton": {
"message": "保存",
"description": "Options editor button: 'Save'"
},
"optionsEditorConfigSaved": {
"message": "配置已保存",
"description": "Options editor message: 'Configuration saved'"
},
"optionsEditorInvalidJSON": {
"message": "無效的 JSON",
"description": "Options editor error message: 'Invalid JSON'"
}
}
================================================
FILE: build-dev.sh
================================================
#!/bin/bash
npx rollup -c rollup.config.dev.js
cat lib/chrome-browser-polyfill.js lib/single-file-frames.js lib/single-file-extension-frames.js > lib/single-file-frames.bundle.js
cat lib/chrome-browser-polyfill.js lib/single-file-bootstrap.js lib/single-file-extension-bootstrap.js lib/single-file-infobar.js > lib/single-file-bootstrap.bundle.js
================================================
FILE: build-extension.sh
================================================
#!/bin/bash
dpkg -s zip &> /dev/null
if [ $? -ne 0 ]
then
if ! command -v zip &> /dev/null; then
echo "Installing zip"
sudo apt install zip
fi
fi
dpkg -s jq &> /dev/null
if [ $? -ne 0 ]
then
if ! command -v jq &> /dev/null; then
echo "Installing jq"
sudo apt install jq
fi
fi
npm install
npm update
./build.sh
rm singlefile-extension-chromium.zip singlefile-extension-edge.zip
zip -r singlefile-extension-chromium.zip manifest.json lib _locales src
cp src/core/bg/config.js config.copy.js
cp manifest.json manifest.copy.json
jq 'del(.oauth2)' manifest.json > manifest.tmp.json && mv manifest.tmp.json manifest.json
sed -i "" 's/forceWebAuthFlow: false/forceWebAuthFlow: true/g' src/core/bg/config.js
sed -i "" 's/image\/avif,//g' src/core/bg/config.js
zip -r singlefile-extension-edge.zip manifest.json lib _locales src
mv config.copy.js src/core/bg/config.js
mv manifest.copy.json manifest.json
================================================
FILE: build.sh
================================================
#!/bin/bash
npx rollup -c rollup.config.js
cat lib/chrome-browser-polyfill.js lib/single-file-frames.js lib/single-file-extension-frames.js > lib/single-file-frames.bundle.js
cat lib/chrome-browser-polyfill.js lib/single-file-bootstrap.js lib/single-file-extension-bootstrap.js lib/single-file-infobar.js > lib/single-file-bootstrap.bundle.js
================================================
FILE: eslint.config.mjs
================================================
import js from "@eslint/js";
export default [
js.configs.recommended,
{
languageOptions: {
ecmaVersion: 2025,
sourceType: "module",
globals: {
console: "readonly",
}
},
rules: {
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
],
"no-console": [
"warn"
]
}
}
];
================================================
FILE: faq.md
================================================
# FAQ
## What does SingleFile do?
SingleFile is a browser extension designed to help users save web pages as complete, self-contained files. The extension's primary function is to capture an entire web page, including its HTML, CSS, JavaScript, images, and other resources, and package them into a single HTML file.
## I am a web archivist, is it ok to use SingleFile to archive content?
No, SingleFile is not a tool used by professionals to archive content on the Web, especially in the academic field. Professionals prefer to rely on tools based on the [WARC specification](https://iipc.github.io/warc-specifications/) instead.
## Does SingleFile upload any data to third-party servers?
As stated in the [privacy policy](https://github.com/gildas-lormeau/SingleFile/blob/master/privacy.md), SingleFile does not upload any data to third-party servers. All the work is done in your browser. However, when you save a page with SingleFile, it can download resources (images, CSS, frame contents, fonts etc.) that are not displayed or not already cached but present in the page.
## Why can't I save some pages like https://addons.mozilla.org/addon/single-file?
For security purposes, browsers block web extensions on certain domains. This prevents a malicious extension to remove or change bad reviews, for example.
## Why aren't images saved on sites like sspai.com or weibo.com?
These sites require the HTTP header "referer" to be present in order to download images. For privacy reasons, this feature is not enabled by default in SingleFile. To enable it, you need to check the option "Network > pass "Referer" header after a cross-origin request error".
## Why don't interactive elements like folding titles, dynamic maps or carousels work properly in saved pages?
These elements need JavaScript to work properly. By default, SingleFile removes scripts because they can alter the rendering and there is no guarantee they will work offline. However, you can save them by unchecking the option "Network > blocked resources > scripts", and optionally unchecking "HTML Content > remove hidden elements", unchecking "Stylesheets > remove unused styles", and checking the option "HTML content > save raw page".
## Why isn't the infobar displayed / Why cannot I save a page from the filesystem in Chrome?
By default, Chrome extensions are not allowed to access to pages stored on the filesystem. Therefore, you must enable the option "Allow access to file URLs" in the extension page to display the infobar when viewing a saved page, or to save a page stored on the filesystem.
## How does the self-extracting ZIP format work?
The self-extracting ZIP files created by SingleFile are essentially regular ZIP files. They take advantage of the flexibility in the ZIP specification, which allows for additional data to be included before and after the ZIP payload. See this [presentation](https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG) for more info.
## What are the permissions requested by SingleFile for?
The permissions requested by SingleFile are defined in the [manifest.json](https://github.com/gildas-lormeau/SingleFile/blob/master/manifest.json) file. Below are the reasons why they are necessary.
- `identity`: allows SingleFile to connect to your Google Drive account.
- `storage`: allows SingleFile to store your settings.
- `contextMenus`: allows SingleFile to display an entry in the context menu of web pages.
- `tabs` (all_urls): allows SingleFile to inject the code needed to process a page in any tab. This permission is needed for saving several tabs in one click, for example.
- `downloads`: allows SingleFile to save pages as if they were downloaded from the web.
- `clipboardWrite`: allows SingleFile to copy the content of a page into the clipboard instead of saving it.
- `nativeMessaging`: allows you to use [SingleFile Companion](https://github.com/gildas-lormeau/single-file-companion) to save pages.
## SingleFile is slow on my computer/tablet/phone, can it run faster?
The default configuration of SingleFile is optimized to produce small pages. This can sometimes slow down the save process considerably. Below are the options you can disable to save time and CPU.
- HTML content > remove hidden elements
- Stylesheets > remove unused styles
You can also disable the options below. Some resources (e.g. images, frames) on the page may be missing though.
- HTML content > remove frames
- Images > save deferred images
## How to convert MHTML files to single HTML files?
See https://github.com/gildas-lormeau/mhtml-to-html.
================================================
FILE: lib/chrome-browser-polyfill.js
================================================
!function(){"use strict";"undefined"==typeof globalThis&&(window.globalThis=window),(()=>{const e=globalThis.chrome;globalThis.__defineGetter__("browser",()=>({action:{onClicked:{addListener:t=>e.action.onClicked.addListener(t)},setBadgeText:t=>e.action.setBadgeText(t),setBadgeBackgroundColor:t=>e.action.setBadgeBackgroundColor(t),setTitle:t=>e.action.setTitle(t),setIcon:t=>e.action.setIcon(t)},bookmarks:{get:t=>e.bookmarks.get(t),onCreated:{addListener:t=>e.bookmarks.onCreated.addListener(t),removeListener:t=>e.bookmarks.onCreated.removeListener(t)},onChanged:{addListener:t=>e.bookmarks.onChanged.addListener(t),removeListener:t=>e.bookmarks.onChanged.removeListener(t)},onMoved:{addListener:t=>e.bookmarks.onMoved.addListener(t),removeListener:t=>e.bookmarks.onMoved.removeListener(t)},update:(t,n)=>e.bookmarks.update(t,n)},commands:{onCommand:{addListener:t=>e.commands.onCommand.addListener(t)}},downloads:{download:t=>e.downloads.download(t),onChanged:{addListener:t=>e.downloads.onChanged.addListener(t),removeListener:t=>e.downloads.onChanged.removeListener(t)},search:t=>e.downloads.search(t)},i18n:{getUILanguage:()=>e.i18n.getUILanguage(),getMessage:(t,n)=>e.i18n.getMessage(t,n)},identity:{getRedirectURL:()=>e.identity.getRedirectURL(),getAuthToken:t=>e.identity.getAuthToken(t),launchWebAuthFlow:t=>e.identity.launchWebAuthFlow(t),removeCachedAuthToken:t=>e.identity.removeCachedAuthToken(t)},contextMenus:{onClicked:{addListener:t=>e.contextMenus.onClicked.addListener(t)},create:t=>e.contextMenus.create(t),update:(t,n)=>e.contextMenus.update(t,n),removeAll:()=>e.contextMenus.removeAll()},permissions:{request:t=>e.permissions.request(t),remove:t=>e.permissions.remove(t)},runtime:{id:e.runtime.id,sendNativeMessage:(t,n)=>new Promise((r,o)=>{e.runtime.sendNativeMessage(t,n,t=>{e.runtime.lastError?o(e.runtime.lastError):r(t)})}),getManifest:()=>e.runtime.getManifest(),onMessage:{addListener:t=>e.runtime.onMessage.addListener((e,n,r)=>{const o=t(e,n);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{r(e)}catch(e){}}),!0}),removeListener:t=>e.runtime.onMessage.removeListener(t)},onMessageExternal:{addListener:t=>e.runtime.onMessageExternal.addListener((e,n,r)=>{const o=t(e,n);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{r(e)}catch(e){}}),!0})},sendMessage:t=>new Promise((n,r)=>{e.runtime.sendMessage(t,t=>{e.runtime.lastError?r(e.runtime.lastError):n(t)}),e.runtime.lastError&&r(e.runtime.lastError)}),getURL:t=>e.runtime.getURL(t),getContexts:t=>e.runtime.getContexts(t),get lastError(){return e.runtime.lastError}},scripting:{executeScript:t=>e.scripting.executeScript(t)},storage:{local:{set:t=>e.storage.local.set(t),get:t=>e.storage.local.get(t),clear:()=>e.storage.local.clear(),remove:t=>e.storage.local.remove(t)},sync:{set:t=>e.storage.sync.set(t),get:t=>e.storage.sync.get(t),clear:()=>e.storage.sync.clear(),remove:t=>e.storage.sync.remove(t)}},tabs:{onCreated:{addListener:t=>e.tabs.onCreated.addListener(t)},onActivated:{addListener:t=>e.tabs.onActivated.addListener(t)},onUpdated:{addListener:t=>e.tabs.onUpdated.addListener(t),removeListener:t=>e.tabs.onUpdated.removeListener(t)},onRemoved:{addListener:t=>e.tabs.onRemoved.addListener(t),removeListener:t=>e.tabs.onRemoved.removeListener(t)},onReplaced:{addListener:t=>e.tabs.onReplaced.addListener(t),removeListener:t=>e.tabs.onReplaced.removeListener(t)},captureVisibleTab:(t,n)=>e.tabs.captureVisibleTab(t,n),sendMessage:(t,n,r={})=>new Promise((o,s)=>{e.tabs.sendMessage(t,n,r,t=>{e.runtime.lastError?s(e.runtime.lastError):o(t)}),e.runtime.lastError&&s(e.runtime.lastError)}),query:t=>e.tabs.query(t),create:t=>e.tabs.create(t),get:t=>e.tabs.get(t),remove:t=>e.tabs.remove(t),update:(t,n)=>e.tabs.update(t,n)},devtools:{inspectedWindow:{onResourceContentCommitted:{addListener:t=>e.devtools.inspectedWindow.onResourceContentCommitted.addListener(t)},get tabId(){return e.devtools.inspectedWindow.tabId}}},offscreen:{createDocument:t=>e.offscreen.createDocument(t)},declarativeNetRequest:{updateSessionRules:t=>e.declarativeNetRequest.updateSessionRules(t)}}))})()}();
================================================
FILE: lib/single-file-background.js
================================================
!function(){"use strict";"undefined"==typeof globalThis&&(window.globalThis=window),(()=>{const e=globalThis.chrome;globalThis.__defineGetter__("browser",()=>({action:{onClicked:{addListener:t=>e.action.onClicked.addListener(t)},setBadgeText:t=>e.action.setBadgeText(t),setBadgeBackgroundColor:t=>e.action.setBadgeBackgroundColor(t),setTitle:t=>e.action.setTitle(t),setIcon:t=>e.action.setIcon(t)},bookmarks:{get:t=>e.bookmarks.get(t),onCreated:{addListener:t=>e.bookmarks.onCreated.addListener(t),removeListener:t=>e.bookmarks.onCreated.removeListener(t)},onChanged:{addListener:t=>e.bookmarks.onChanged.addListener(t),removeListener:t=>e.bookmarks.onChanged.removeListener(t)},onMoved:{addListener:t=>e.bookmarks.onMoved.addListener(t),removeListener:t=>e.bookmarks.onMoved.removeListener(t)},update:(t,r)=>e.bookmarks.update(t,r)},commands:{onCommand:{addListener:t=>e.commands.onCommand.addListener(t)}},downloads:{download:t=>e.downloads.download(t),onChanged:{addListener:t=>e.downloads.onChanged.addListener(t),removeListener:t=>e.downloads.onChanged.removeListener(t)},search:t=>e.downloads.search(t)},i18n:{getUILanguage:()=>e.i18n.getUILanguage(),getMessage:(t,r)=>e.i18n.getMessage(t,r)},identity:{getRedirectURL:()=>e.identity.getRedirectURL(),getAuthToken:t=>e.identity.getAuthToken(t),launchWebAuthFlow:t=>e.identity.launchWebAuthFlow(t),removeCachedAuthToken:t=>e.identity.removeCachedAuthToken(t)},contextMenus:{onClicked:{addListener:t=>e.contextMenus.onClicked.addListener(t)},create:t=>e.contextMenus.create(t),update:(t,r)=>e.contextMenus.update(t,r),removeAll:()=>e.contextMenus.removeAll()},permissions:{request:t=>e.permissions.request(t),remove:t=>e.permissions.remove(t)},runtime:{id:e.runtime.id,sendNativeMessage:(t,r)=>new Promise((s,a)=>{e.runtime.sendNativeMessage(t,r,t=>{e.runtime.lastError?a(e.runtime.lastError):s(t)})}),getManifest:()=>e.runtime.getManifest(),onMessage:{addListener:t=>e.runtime.onMessage.addListener((e,r,s)=>{const a=t(e,r);if(a&&"function"==typeof a.then)return a.then(e=>{if(void 0!==e)try{s(e)}catch(e){}}),!0}),removeListener:t=>e.runtime.onMessage.removeListener(t)},onMessageExternal:{addListener:t=>e.runtime.onMessageExternal.addListener((e,r,s)=>{const a=t(e,r);if(a&&"function"==typeof a.then)return a.then(e=>{if(void 0!==e)try{s(e)}catch(e){}}),!0})},sendMessage:t=>new Promise((r,s)=>{e.runtime.sendMessage(t,t=>{e.runtime.lastError?s(e.runtime.lastError):r(t)}),e.runtime.lastError&&s(e.runtime.lastError)}),getURL:t=>e.runtime.getURL(t),getContexts:t=>e.runtime.getContexts(t),get lastError(){return e.runtime.lastError}},scripting:{executeScript:t=>e.scripting.executeScript(t)},storage:{local:{set:t=>e.storage.local.set(t),get:t=>e.storage.local.get(t),clear:()=>e.storage.local.clear(),remove:t=>e.storage.local.remove(t)},sync:{set:t=>e.storage.sync.set(t),get:t=>e.storage.sync.get(t),clear:()=>e.storage.sync.clear(),remove:t=>e.storage.sync.remove(t)}},tabs:{onCreated:{addListener:t=>e.tabs.onCreated.addListener(t)},onActivated:{addListener:t=>e.tabs.onActivated.addListener(t)},onUpdated:{addListener:t=>e.tabs.onUpdated.addListener(t),removeListener:t=>e.tabs.onUpdated.removeListener(t)},onRemoved:{addListener:t=>e.tabs.onRemoved.addListener(t),removeListener:t=>e.tabs.onRemoved.removeListener(t)},onReplaced:{addListener:t=>e.tabs.onReplaced.addListener(t),removeListener:t=>e.tabs.onReplaced.removeListener(t)},captureVisibleTab:(t,r)=>e.tabs.captureVisibleTab(t,r),sendMessage:(t,r,s={})=>new Promise((a,n)=>{e.tabs.sendMessage(t,r,s,t=>{e.runtime.lastError?n(e.runtime.lastError):a(t)}),e.runtime.lastError&&n(e.runtime.lastError)}),query:t=>e.tabs.query(t),create:t=>e.tabs.create(t),get:t=>e.tabs.get(t),remove:t=>e.tabs.remove(t),update:(t,r)=>e.tabs.update(t,r)},devtools:{inspectedWindow:{onResourceContentCommitted:{addListener:t=>e.devtools.inspectedWindow.onResourceContentCommitted.addListener(t)},get tabId(){return e.devtools.inspectedWindow.tabId}}},offscreen:{createDocument:t=>e.offscreen.createDocument(t)},declarativeNetRequest:{updateSessionRules:t=>e.declarativeNetRequest.updateSessionRules(t)}}))})();const e=8388608;let t=1;async function r(t,r,s){for(let a=0;a*e<=s.array.length;a++){const n={method:"singlefile.fetchResponse",requestId:r,headers:s.headers,status:s.status,error:s.error};n.truncated=s.array.length>e,n.truncated?(n.finished=(a+1)*e>s.array.length,n.array=s.array.slice(a*e,(a+1)*e)):n.array=s.array,await browser.tabs.sendMessage(t,n)}return{}}async function s(e,r){const s=t++;return await browser.declarativeNetRequest.updateSessionRules({addRules:[{action:{type:"modifyHeaders",requestHeaders:[{header:"Referer",operation:"set",value:r}]},condition:{initiatorDomains:[browser.runtime.id],urlFilter:e,resourceTypes:["xmlhttprequest"]},id:s}]}),s}browser.runtime.onMessage.addListener((e,t)=>{if(e.method&&e.method.startsWith("singlefile.fetch"))return new Promise(a=>{(async function(e,t){if("singlefile.fetch"==e.method)try{const a=await async function(e,t={}){t.cache="no-store";const r=await fetch(e,t);if(t.referrer&&(401==r.status||403==r.status||404==r.status)){const r=await s(e,t.referrer);await new Promise(e=>setTimeout(e,1e3));try{const r=await fetch(e,t),s=Array.from(new Uint8Array(await r.arrayBuffer())),a={"content-type":r.headers.get("content-type")};return{array:s,headers:a,status:r.status}}finally{await async function(e){await browser.declarativeNetRequest.updateSessionRules({removeRuleIds:[e]})}(r)}}const a=Array.from(new Uint8Array(await r.arrayBuffer())),n={"content-type":r.headers.get("content-type")},o=r.status;return{array:a,headers:n,status:o}}(e.url,{referrer:e.referrer,headers:e.headers});return r(t.tab.id,e.requestId,a)}catch(s){return r(t.tab.id,e.requestId,{error:s.message,array:[]})}else if("singlefile.fetchFrame"==e.method)return browser.tabs.sendMessage(t.tab.id,e)})(e,t).then(a).catch(e=>a({error:e&&(e.message||e.toString())}))})}),browser.runtime.onMessage.addListener((e,t)=>{if("singlefile.frameTree.initResponse"==e.method||"singlefile.frameTree.ackInitRequest"==e.method)return browser.tabs.sendMessage(t.tab.id,e,{frameId:0}),Promise.resolve({})});const a=new Map;function n(e,t){e.delete(t)}browser.runtime.onMessage.addListener((e,t)=>{if("singlefile.lazyTimeout.setTimeout"==e.method){let r,s=a.get(t.tab.id);if(s)if(r=s.get(t.frameId),r){const t=r.get(e.type);t&&clearTimeout(t)}else r=new Map;const o=setTimeout(async()=>{try{const r=a.get(t.tab.id),s=r.get(t.frameId);r&&s&&n(s,e.type),await browser.tabs.sendMessage(t.tab.id,{method:"singlefile.lazyTimeout.onTimeout",type:e.type})}catch(e){}},e.delay);return s||(s=new Map,r=new Map,s.set(t.frameId,r),a.set(t.tab.id,s)),r.set(e.type,o),Promise.resolve({})}if("singlefile.lazyTimeout.clearTimeout"==e.method){let r=a.get(t.tab.id);if(r){const s=r.get(t.frameId);if(s){const t=s.get(e.type);t&&clearTimeout(t),n(s,e.type)}}return Promise.resolve({})}}),browser.tabs.onRemoved.addListener(e=>a.delete(e))}();
================================================
FILE: lib/single-file-bootstrap.bundle.js
================================================
!function(){"use strict";"undefined"==typeof globalThis&&(window.globalThis=window),(()=>{const e=globalThis.chrome;globalThis.__defineGetter__("browser",()=>({action:{onClicked:{addListener:t=>e.action.onClicked.addListener(t)},setBadgeText:t=>e.action.setBadgeText(t),setBadgeBackgroundColor:t=>e.action.setBadgeBackgroundColor(t),setTitle:t=>e.action.setTitle(t),setIcon:t=>e.action.setIcon(t)},bookmarks:{get:t=>e.bookmarks.get(t),onCreated:{addListener:t=>e.bookmarks.onCreated.addListener(t),removeListener:t=>e.bookmarks.onCreated.removeListener(t)},onChanged:{addListener:t=>e.bookmarks.onChanged.addListener(t),removeListener:t=>e.bookmarks.onChanged.removeListener(t)},onMoved:{addListener:t=>e.bookmarks.onMoved.addListener(t),removeListener:t=>e.bookmarks.onMoved.removeListener(t)},update:(t,n)=>e.bookmarks.update(t,n)},commands:{onCommand:{addListener:t=>e.commands.onCommand.addListener(t)}},downloads:{download:t=>e.downloads.download(t),onChanged:{addListener:t=>e.downloads.onChanged.addListener(t),removeListener:t=>e.downloads.onChanged.removeListener(t)},search:t=>e.downloads.search(t)},i18n:{getUILanguage:()=>e.i18n.getUILanguage(),getMessage:(t,n)=>e.i18n.getMessage(t,n)},identity:{getRedirectURL:()=>e.identity.getRedirectURL(),getAuthToken:t=>e.identity.getAuthToken(t),launchWebAuthFlow:t=>e.identity.launchWebAuthFlow(t),removeCachedAuthToken:t=>e.identity.removeCachedAuthToken(t)},contextMenus:{onClicked:{addListener:t=>e.contextMenus.onClicked.addListener(t)},create:t=>e.contextMenus.create(t),update:(t,n)=>e.contextMenus.update(t,n),removeAll:()=>e.contextMenus.removeAll()},permissions:{request:t=>e.permissions.request(t),remove:t=>e.permissions.remove(t)},runtime:{id:e.runtime.id,sendNativeMessage:(t,n)=>new Promise((r,o)=>{e.runtime.sendNativeMessage(t,n,t=>{e.runtime.lastError?o(e.runtime.lastError):r(t)})}),getManifest:()=>e.runtime.getManifest(),onMessage:{addListener:t=>e.runtime.onMessage.addListener((e,n,r)=>{const o=t(e,n);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{r(e)}catch(e){}}),!0}),removeListener:t=>e.runtime.onMessage.removeListener(t)},onMessageExternal:{addListener:t=>e.runtime.onMessageExternal.addListener((e,n,r)=>{const o=t(e,n);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{r(e)}catch(e){}}),!0})},sendMessage:t=>new Promise((n,r)=>{e.runtime.sendMessage(t,t=>{e.runtime.lastError?r(e.runtime.lastError):n(t)}),e.runtime.lastError&&r(e.runtime.lastError)}),getURL:t=>e.runtime.getURL(t),getContexts:t=>e.runtime.getContexts(t),get lastError(){return e.runtime.lastError}},scripting:{executeScript:t=>e.scripting.executeScript(t)},storage:{local:{set:t=>e.storage.local.set(t),get:t=>e.storage.local.get(t),clear:()=>e.storage.local.clear(),remove:t=>e.storage.local.remove(t)},sync:{set:t=>e.storage.sync.set(t),get:t=>e.storage.sync.get(t),clear:()=>e.storage.sync.clear(),remove:t=>e.storage.sync.remove(t)}},tabs:{onCreated:{addListener:t=>e.tabs.onCreated.addListener(t)},onActivated:{addListener:t=>e.tabs.onActivated.addListener(t)},onUpdated:{addListener:t=>e.tabs.onUpdated.addListener(t),removeListener:t=>e.tabs.onUpdated.removeListener(t)},onRemoved:{addListener:t=>e.tabs.onRemoved.addListener(t),removeListener:t=>e.tabs.onRemoved.removeListener(t)},onReplaced:{addListener:t=>e.tabs.onReplaced.addListener(t),removeListener:t=>e.tabs.onReplaced.removeListener(t)},captureVisibleTab:(t,n)=>e.tabs.captureVisibleTab(t,n),sendMessage:(t,n,r={})=>new Promise((o,s)=>{e.tabs.sendMessage(t,n,r,t=>{e.runtime.lastError?s(e.runtime.lastError):o(t)}),e.runtime.lastError&&s(e.runtime.lastError)}),query:t=>e.tabs.query(t),create:t=>e.tabs.create(t),get:t=>e.tabs.get(t),remove:t=>e.tabs.remove(t),update:(t,n)=>e.tabs.update(t,n)},devtools:{inspectedWindow:{onResourceContentCommitted:{addListener:t=>e.devtools.inspectedWindow.onResourceContentCommitted.addListener(t)},get tabId(){return e.devtools.inspectedWindow.tabId}}},offscreen:{createDocument:t=>e.offscreen.createDocument(t)},declarativeNetRequest:{updateSessionRules:t=>e.declarativeNetRequest.updateSessionRules(t)}}))})()}();
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).singlefileBootstrap={})}(this,function(e){"use strict";const t="single-file-load-image",s="single-file-image-loaded",o="_singleFile_fontFaces",n="_singleFile_worklets",i=globalThis.CustomEvent,a=globalThis.document,r=globalThis.Document,l=globalThis.JSON,d=globalThis.MutationObserver;let c,u;function m(){a instanceof r&&(a.addEventListener("single-file-new-font-face",e=>{const t=e.detail,s=Object.assign({},t);delete s.src,c.set(l.stringify(s),t)}),a.addEventListener("single-file-delete-font",e=>{const t=e.detail,s=Object.assign({},t);delete s.src,c.delete(l.stringify(s))}),a.addEventListener("single-file-clear-fonts",()=>c=new Map),a.addEventListener("single-file-new-worklet",e=>{const t=e.detail;u.set(t.moduleURL,t)}))}c=globalThis.window[o]?globalThis.window[o]:globalThis.window[o]=new Map,u=globalThis.window[n]?globalThis.window[n]:globalThis.window[n]=new Map,m(),new d(m).observe(a,{childList:!0});const g="[\\x20\\t\\r\\n\\f]",h=new RegExp("\\\\([\\da-f]{1,6}"+g+"?|("+g+")|.)","ig");const p="single-file-",f="_singleFile_waitForUserScript",T="__frameTree__::",b=p+"on-before-capture",E=p+"on-after-capture",y=p+"request-get-adopted-stylesheets",w=p+"response-get-adopted-stylesheets",I=p+"unregister-request-get-adopted-stylesheets",A=p+"user-script-init",v="data-"+p+"removed-content",S="data-"+p+"hidden-content",R="data-"+p+"kept-content",N="data-"+p+"hidden-frame",P="data-"+p+"preserved-space-element",M="data-"+p+"shadow-root-element",L="data-"+p+"win-id",C="data-"+p+"image",O="data-"+p+"poster",D="data-"+p+"video",_="data-"+p+"canvas",x="data-"+p+"movable-style",F="data-"+p+"input-value",k="data-"+p+"input-checked",U="data-"+p+"lazy-loaded-src",q="data-"+p+"stylesheet",H="data-"+p+"disabled-noscript",B="data-"+p+"async-script",V="*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)",W=["NOSCRIPT","DISABLED-NOSCRIPT","META","LINK","STYLE","TITLE","TEMPLATE","SOURCE","OBJECT","SCRIPT","HEAD","BODY"],z=["SCRIPT","NOSCRIPT","META","LINK","TEMPLATE"],Y=/^'(.*?)'$/,j=/^"(.*?)"$/,G={regular:"400",normal:"400",bold:"700",bolder:"700",lighter:"100"},K="single-file-ui-element",$="data:,",X="data-sf-nesting-track-id",Z=(e,t,s)=>globalThis.addEventListener(e,t,s),J=globalThis.JSON,Q=globalThis.CustomEvent,ee=globalThis.MutationObserver,te=globalThis.URL,se=globalThis.DOMParser;function oe(e,t,s){e.querySelectorAll("noscript:not(["+H+"])").forEach(e=>{e.setAttribute(H,e.textContent),e.textContent=""}),function(e){e.querySelectorAll("meta[http-equiv=refresh]").forEach(e=>{e.removeAttribute("http-equiv"),e.setAttribute("disabled-http-equiv","refresh")})}(e),e.head&&e.head.querySelectorAll(V).forEach(e=>e.hidden=!0),e.querySelectorAll("svg foreignObject").forEach(e=>{const t=e.querySelectorAll("html > head > "+V+", html > body > "+V);t.length&&(Array.from(e.childNodes).forEach(e=>e.remove()),t.forEach(t=>e.appendChild(t)))});const o=new Map;let n;t&&e.documentElement?(!function(e){i(e.body);const t=function(e,t){const s=(new se).parseFromString(e,"text/html");s.head||s.documentElement.insertBefore(s.createElement("HEAD"),s.body);let o=s.querySelector("base");o&&o.getAttribute("href")||(o&&o.remove(),o=s.createElement("base"),o.setAttribute("href",t),s.head.insertBefore(o,s.head.firstChild));return s}(ge(e)),s=a(e.body),o=a(t.body),n=new Set;function i(e,t=0,s=""){const o=s?`${s}.${t+1}`:`${t+1}`;e.setAttribute(X,o),Array.from(e.children).forEach((e,t)=>i(e,t,o))}function a(e){const t={};return s(e),t;function s(e){if(e.getAttribute){const o=e.getAttribute(X);o&&(t[o]=e),Array.from(e.children).forEach(s)}}}function r(e,t){const s=e.getAttribute(X);s&&!t.has(s)&&e.removeAttribute(X),Array.from(e.children).forEach(e=>r(e,t))}Object.keys(s).forEach(t=>{if(t in o){if((s[t].parentElement?.getAttribute(X)||null)!==(o[t]?.parentElement?.getAttribute(X)||null)){let o=s[t];for(;o&&o!==e.body;){const e=o.getAttribute(X);e&&n.add(e),o=o.parentElement}}}}),r(e.body,n)}(e),n=ne(t,e,e.documentElement,s),s.moveStylesInHead&&e.querySelectorAll("body style, body ~ style").forEach(e=>{const s=he(t,e);s&&de(e,s)&&(e.setAttribute(x,""),n.markedElements.push(e))})):n={canvases:[],images:[],posters:[],videos:[],usedFonts:[],shadowRoots:[],markedElements:[]};let i="";if(e.referrer)try{i=new te("/",new te(e.referrer).origin).href}catch(e){}return{canvases:n.canvases,fonts:Array.from(c.values()),worklets:Array.from(u.values()),stylesheets:ue(e),images:n.images,posters:n.posters,videos:n.videos,usedFonts:Array.from(n.usedFonts.values()),shadowRoots:n.shadowRoots,referrer:i,markedElements:n.markedElements,invalidElements:o,scrollPosition:{x:t.scrollX,y:t.scrollY},adoptedStyleSheets:ie(e.adoptedStyleSheets)}}function ne(e,t,s,o,n={usedFonts:new Map,canvases:[],images:[],posters:[],videos:[],shadowRoots:[],markedElements:[]},i=new Map,a){if(s.childNodes){Array.from(s.childNodes).filter(t=>t instanceof e.HTMLElement||t instanceof e.SVGElement||t instanceof globalThis.HTMLElement||t instanceof globalThis.SVGElement).forEach(s=>{let r,l,d;if(!o.autoSaveExternalSave&&(o.removeHiddenElements||o.removeUnusedFonts||o.compressHTML)&&(d=he(e,s),(s instanceof e.HTMLElement||s instanceof globalThis.HTMLElement)&&o.removeHiddenElements&&(l=(a||s.closest("html > head"))&&W.includes(s.tagName.toUpperCase())||s.closest("details"),l||(r=a||de(s,d),r&&!z.includes(s.tagName.toUpperCase())&&(s.setAttribute(S,""),n.markedElements.push(s)))),!r)){if(o.compressHTML&&d){const e=d.getPropertyValue("white-space");e&&e.startsWith("pre")&&(s.setAttribute(P,""),n.markedElements.push(s))}o.removeUnusedFonts&&(ae(d,o,n.usedFonts),ae(he(e,s,":first-letter"),o,n.usedFonts),ae(he(e,s,":before"),o,n.usedFonts),ae(he(e,s,":after"),o,n.usedFonts))}!function(e,t,s,o,n,i,a){const r=s.tagName&&s.tagName.toUpperCase();if("CANVAS"==r)try{n.canvases.push({dataURI:s.toDataURL("image/png"),backgroundColor:a.getPropertyValue("background-color")}),s.setAttribute(_,n.canvases.length-1),n.markedElements.push(s)}catch(e){}if("IMG"==r){const t={currentSrc:i?$:o.loadDeferredImages&&s.getAttribute(U)||s.currentSrc};if(n.images.push(t),s.setAttribute(C,n.images.length-1),n.markedElements.push(s),s.removeAttribute(U),a=a||he(e,s)){t.size=function(e,t,s){let o=t.naturalWidth,n=t.naturalHeight;if(!o&&!n){const i=null==t.getAttribute("style");if(s=s||he(e,t)){let e,a,r,l,d,c,u,m,g=!1;if("content-box"==s.getPropertyValue("box-sizing")){const e=t.style.getPropertyValue("box-sizing"),s=t.style.getPropertyPriority("box-sizing"),o=t.clientWidth;t.style.setProperty("box-sizing","border-box","important"),g=t.clientWidth!=o,e?t.style.setProperty("box-sizing",e,s):t.style.removeProperty("box-sizing")}e=me("padding-left",s),a=me("padding-right",s),r=me("padding-top",s),l=me("padding-bottom",s),g?(d=me("border-left-width",s),c=me("border-right-width",s),u=me("border-top-width",s),m=me("border-bottom-width",s)):d=c=u=m=0,o=Math.max(0,t.clientWidth-e-a-d-c),n=Math.max(0,t.clientHeight-r-l-u-m),i&&t.removeAttribute("style")}}return{pxWidth:o,pxHeight:n}}(e,s,a);const o=a.getPropertyValue("box-shadow"),n=a.getPropertyValue("background-image");o&&"none"!=o||n&&"none"!=n||!(t.size.pxWidth>1||t.size.pxHeight>1)||(t.replaceable=!0,t.backgroundColor=a.getPropertyValue("background-color"),t.objectFit=a.getPropertyValue("object-fit"),t.boxSizing=a.getPropertyValue("box-sizing"),t.objectPosition=a.getPropertyValue("object-position"))}}if("VIDEO"==r){const o=s.currentSrc;if(o&&!o.startsWith("blob:")&&!o.startsWith("data:")){const t=he(e,s.parentNode);n.videos.push({positionParent:t&&t.getPropertyValue("position"),src:o,size:{pxWidth:s.clientWidth,pxHeight:s.clientHeight,videoWidth:s.videoWidth,videoHeight:s.videoHeight},currentTime:s.currentTime}),s.setAttribute(D,n.videos.length-1)}if(!s.getAttribute("poster")){const e=t.createElement("canvas"),o=e.getContext("2d");e.width=s.videoWidth,e.height=s.videoHeight;try{o.drawImage(s,0,0,e.width,e.height),n.posters.push(e.toDataURL("image/png")),s.setAttribute(O,n.posters.length-1),n.markedElements.push(s)}catch(e){}}}"IFRAME"==r&&i&&o.removeHiddenElements&&(s.setAttribute(N,""),n.markedElements.push(s));"INPUT"==r&&("password"!=s.type&&(s.setAttribute(F,s.value),n.markedElements.push(s)),"radio"!=s.type&&"checkbox"!=s.type||(s.setAttribute(k,s.checked),n.markedElements.push(s)));"TEXTAREA"==r&&(s.setAttribute(F,s.value),n.markedElements.push(s));"SELECT"==r&&s.querySelectorAll("option").forEach(e=>{e.selected&&(e.setAttribute(F,""),n.markedElements.push(e))});"SCRIPT"==r&&(s.async&&""!=s.getAttribute("async")&&"async"!=s.getAttribute("async")&&(s.setAttribute(B,""),n.markedElements.push(s)),s.textContent=s.textContent.replace(/<\/script>/gi,"<\\/script>"))}(e,t,s,o,n,r,d);const c=!(s instanceof e.SVGElement||s instanceof globalThis.SVGElement)&&re(s);if(c&&!s.classList.contains(K)&&"single-file-infobar"!=s.tagName.toLowerCase()){const a={};s.setAttribute(M,n.shadowRoots.length),n.markedElements.push(s),n.shadowRoots.push(a);try{if(c.adoptedStyleSheets){const e=e=>a.adoptedStyleSheets=e.detail.adoptedStyleSheets;c.addEventListener(w,e),c.dispatchEvent(new Q(y,{bubbles:!0})),a.adoptedStyleSheets||s.dispatchEvent(new Q(y,{bubbles:!0})),c.removeEventListener(w,e)}}catch(e){}ne(e,t,c,o,n,i,r),a.content=c.innerHTML,a.mode=c.mode,a.delegateFocus=c.delegatesFocus,a.clonable=c.clonable,a.serializable=c.serializable;try{c.adoptedStyleSheets&&void 0===c.adoptedStyleSheets.length&&c.dispatchEvent(new Q(I,{bubbles:!0}))}catch(e){}}ne(e,t,s,o,n,i,r),!o.autoSaveExternalSave&&o.removeHiddenElements&&a&&(l||""==s.getAttribute(R)?s.parentElement&&(s.parentElement.setAttribute(R,""),n.markedElements.push(s.parentElement)):r&&(s.setAttribute(v,""),n.markedElements.push(s)))})}return n}function ie(e,t=new Map){if(e){const s=[];for(const o of Array.from(e))if(t.has(o))s.push(t.get(o));else{let e="";if(o&&o.cssRules)for(const t of o.cssRules)e+=t.cssText+"\n";t.set(o,e),s.push(e)}return s}return[]}function ae(e,t,s){if(e){const o=e.getPropertyValue("font-style")||"normal";e.getPropertyValue("font-family").split(",").forEach(n=>{if(n=le(n),!t.loadedFonts||t.loadedFonts.find(e=>le(e.family)==n&&e.style==o)){const t=(i=e.getPropertyValue("font-weight"),G[i.toLowerCase().trim()]||i),a=e.getPropertyValue("font-variant")||"normal",r=[n,t,o,a];s.set(J.stringify(r),[n,t,o,a])}var i})}}function re(e){const t=globalThis.chrome;if(e.openOrClosedShadowRoot)return e.openOrClosedShadowRoot;if(!(t&&t.dom&&t.dom.openOrClosedShadowRoot))return e.shadowRoot;try{return t.dom.openOrClosedShadowRoot(e)}catch(t){return e.shadowRoot}}function le(e=""){return function(e){e=e.match(Y)?e.replace(Y,"$1"):e.replace(j,"$1");return e.trim()}((t=e.trim(),t.replace(h,(e,t,s)=>{const o="0x"+t-65536;return o!=o||s?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)}))).toLowerCase();var t}function de(e,t){let s=!1;if(t){const o=t.getPropertyValue("display"),n=t.getPropertyValue("opacity"),i=t.getPropertyValue("visibility");if(s="none"==o,!s&&("0"==n||"hidden"==i)&&e.getBoundingClientRect){const t=e.getBoundingClientRect();s=!t.width&&!t.height}}return Boolean(s)}function ce(e,t,s){if(e.querySelectorAll("["+H+"]").forEach(e=>{e.textContent=e.getAttribute(H),e.removeAttribute(H)}),e.querySelectorAll("meta[disabled-http-equiv]").forEach(e=>{e.setAttribute("http-equiv",e.getAttribute("disabled-http-equiv")),e.removeAttribute("disabled-http-equiv")}),e.head&&e.head.querySelectorAll("*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)").forEach(e=>e.removeAttribute("hidden")),!t){const s=[v,N,S,P,C,O,D,_,F,k,M,q,B];t=e.querySelectorAll(s.map(e=>"["+e+"]").join(","))}t.forEach(e=>{e.removeAttribute(v),e.removeAttribute(S),e.removeAttribute(R),e.removeAttribute(N),e.removeAttribute(P),e.removeAttribute(C),e.removeAttribute(O),e.removeAttribute(D),e.removeAttribute(_),e.removeAttribute(F),e.removeAttribute(k),e.removeAttribute(M),e.removeAttribute(q),e.removeAttribute(B),e.removeAttribute(x)}),s&&s.forEach((e,t)=>e.replaceWith(t))}function ue(e){if(e){const t=[];return e.querySelectorAll("style").forEach((s,o)=>{try{if(!s.sheet.disabled){const n=e.createElement("style");n.textContent=s.textContent,e.body.appendChild(n);const i=n.sheet;n.remove();const a=Array.from(i.cssRules).map(e=>e.cssText).join("\n"),r=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n");i&&a==r||(s.setAttribute(q,o),t[o]=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n"))}}catch(e){}}),t}}function me(e,t){if(t.getPropertyValue(e).endsWith("px"))return parseFloat(t.getPropertyValue(e))}function ge(e){const t=e.doctype;let s="";return t&&(s=" "),s+e.documentElement.outerHTML}function he(e,t,s){try{return e.getComputedStyle(t,s)}catch(e){}}const pe={LAZY_SRC_ATTRIBUTE_NAME:U,SINGLE_FILE_UI_ELEMENT_CLASS:K},fe="attributes",Te=globalThis.browser,be=globalThis.document,Ee=globalThis.MutationObserver,ye=new Map;let we;async function Ie(e){if(be.documentElement){ye.clear();const o=be.body?Math.max(be.body.scrollHeight,be.documentElement.scrollHeight):be.documentElement.scrollHeight,n=be.body?Math.max(be.body.scrollWidth,be.documentElement.scrollWidth):be.documentElement.scrollWidth;if(o>globalThis.innerHeight||n>globalThis.innerWidth){const r=Math.max(o-1.5*globalThis.innerHeight,0),l=Math.max(n-1.5*globalThis.innerWidth,0);if(globalThis.scrollY{let n;const r=new Set,l=new Ee(async t=>{if((t=t.filter(e=>e.type==fe)).length){t.filter(e=>{if("src"==e.attributeName&&(e.target.setAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME,e.target.src),e.target.addEventListener("load",c)),"src"==e.attributeName||"srcset"==e.attributeName||e.target.tagName&&"SOURCE"==e.target.tagName.toUpperCase())return!e.target.classList||!e.target.classList.contains(pe.SINGLE_FILE_UI_ELEMENT_CLASS)}).length&&(n=!0,await ve(l,e,g),r.size||await Ae(l,e,g))}});async function d(t){await Re("idleTimeout",async()=>{n?we<10&&(we++,Pe("idleTimeout"),await d(Math.max(500,t/2))):(Pe("loadTimeout"),Pe("maxTimeout"),Se(l,e,g))},t,e.loadDeferredImagesNativeTimeout)}function c(e){const t=e.target;t.removeAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME),t.removeEventListener("load",c)}async function u(t){n=!0,await ve(l,e,g),await Ae(l,e,g),t.detail&&r.add(t.detail)}async function m(t){await ve(l,e,g),await Ae(l,e,g),r.delete(t.detail),r.size||await Ae(l,e,g)}function g(e){l.disconnect(),be.removeEventListener(t,u),be.removeEventListener(s,m),o(e)}await d(2*e.loadDeferredImagesMaxIdleTime),await ve(l,e,g),l.observe(be,{subtree:!0,childList:!0,attributes:!0}),be.addEventListener(t,u),be.addEventListener(s,m),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-start")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-start")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-start")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-start")):a.dispatchEvent(new i("single-file-load-deferred-images-start"))}(e)})}(e)}}}async function Ae(e,t,s){await Re("loadTimeout",()=>Se(e,t,s),t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function ve(e,t,s){await Re("maxTimeout",async()=>{await Pe("loadTimeout"),await Se(e,t,s)},10*t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function Se(e,t,s){await Pe("idleTimeout"),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-end")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-end")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-end")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-end")):a.dispatchEvent(new i("single-file-load-deferred-images-end"))}(t),await Re("endTimeout",async()=>{await Pe("maxTimeout"),s()},t.loadDeferredImagesMaxIdleTime/2,t.loadDeferredImagesNativeTimeout),e.disconnect()}async function Re(e,t,s,o){if(Te&&Te.runtime&&Te.runtime.sendMessage&&!o){if(!ye.get(e)||!ye.get(e).pending){const o={callback:t,pending:!0};ye.set(e,o);try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.setTimeout",type:e,delay:s})}catch(o){Ne(e,t,s)}o.pending=!1}}else Ne(e,t,s)}function Ne(e,t,s){const o=ye.get(e);o&&globalThis.clearTimeout(o),ye.set(e,t),globalThis.setTimeout(t,s)}async function Pe(e){if(Te&&Te.runtime&&Te.runtime.sendMessage)try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.clearTimeout",type:e})}catch(t){Me(e)}else Me(e)}function Me(e){const t=ye.get(e);ye.delete(e),t&&globalThis.clearTimeout(t)}Te&&Te.runtime&&Te.runtime.onMessage&&Te.runtime.onMessage.addListener&&Te.runtime.onMessage.addListener(e=>{if("singlefile.lazyTimeout.onTimeout"==e.method){const t=ye.get(e.type);if(t){ye.delete(e.type);try{t.callback()}catch(t){Me(e.type)}}}});const Le={ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WIN_ID_ATTRIBUTE_NAME:L,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,serialize:ge,postProcessDoc:ce,getShadowRoot:re},Ce="singlefile.frameTree.initRequest",Oe="singlefile.frameTree.ackInitRequest",De="singlefile.frameTree.cleanupRequest",_e="singlefile.frameTree.initResponse",xe=5e3,Fe=".",ke=globalThis.window==globalThis.top,Ue=globalThis.browser,qe=globalThis.top,He=globalThis.MessageChannel,Be=globalThis.document,Ve=globalThis.JSON,We=globalThis.MutationObserver,ze=globalThis.DOMParser;let Ye,je=globalThis.sessions;function Ge(){globalThis.addEventListener("message",async e=>{if("string"==typeof e.data&&e.data.startsWith(T)){e.preventDefault(),e.stopPropagation();const t=Ve.parse(e.data.substring(15));if(t.method==Ce)e.source&&ot(e.source,{method:Oe,windowId:t.windowId,sessionId:t.sessionId}),ke||(globalThis.stop(),t.options.loadDeferredImages&&Ie(t.options),await $e(t));else if(t.method==Oe)Qe("requestTimeouts",t.sessionId,t.windowId),et(t.sessionId,t.windowId);else if(t.method==De)Xe(t);else if(t.method==_e&&je.get(t.sessionId)){e.ports[0].onmessage=e=>Ze(e.data)}}},!0)}function Ke(){return globalThis.crypto.getRandomValues(new Uint32Array(32)).join("")}async function $e(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId),Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}function Xe(e){if(!globalThis._singleFile_cleaningUp){globalThis._singleFile_cleaningUp=!0;const t=e.sessionId;tt(it(Be),e.windowId,t)}}function Ze(e){e.frames.forEach(t=>Qe("responseTimeouts",e.sessionId,t.windowId));const t=je.get(e.sessionId);if(t){e.requestedFrameId&&(t.requestedFrameId=e.requestedFrameId),e.frames.forEach(e=>{let s=t.frames.find(t=>e.windowId==t.windowId);s||(s={windowId:e.windowId},t.frames.push(s)),s.processed||(s.content=e.content,s.baseURI=e.baseURI,s.title=e.title,s.url=e.url,s.canvases=e.canvases,s.fonts=e.fonts,s.worklets=e.worklets,s.stylesheets=e.stylesheets,s.images=e.images,s.posters=e.posters,s.videos=e.videos,s.usedFonts=e.usedFonts,s.shadowRoots=e.shadowRoots,s.processed=e.processed,s.scrollPosition=e.scrollPosition,s.scrolling=e.scrolling,s.adoptedStyleSheets=e.adoptedStyleSheets)});t.frames.filter(e=>!e.processed).length||(t.frames=t.frames.sort((e,t)=>t.windowId.split(Fe).length-e.windowId.split(Fe).length),t.resolve&&(t.requestedFrameId&&t.frames.forEach(e=>{e.windowId==t.requestedFrameId&&(e.requestedFrame=!0)}),t.resolve(t.frames)))}}function Je(e,t,s,o){const n=it(e);!function(e,t,s,o,n){const i=[];let a;je.get(n)?a=je.get(n).requestTimeouts:(a={},je.set(n,{requestTimeouts:a}));t.forEach((e,t)=>{const s=o+Fe+t;e.setAttribute(Le.WIN_ID_ATTRIBUTE_NAME,s),i.push({windowId:s})}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),t.forEach((e,t)=>{const i=o+Fe+t;try{ot(e.contentWindow,{method:Ce,windowId:i,sessionId:n,options:s,scrolling:e.scrolling})}catch(e){}a[i]=globalThis.setTimeout(()=>st({frames:[{windowId:i,processed:!0}],sessionId:n}),xe)}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o),n.length&&function(e,t,s,o,n){const i=[];t.forEach((e,t)=>{const a=o+Fe+t;let r,l;try{r=e.contentDocument,l=e.contentWindow,l.stop()}catch(e){}const d=e.getAttribute("srcdoc");if(!r&&d){r=(new ze).parseFromString(d,"text/html"),l=globalThis}if(r)try{Qe("requestTimeouts",n,a),Je(r,s,a,n),i.push(nt(r,l,a,s,e.scrolling))}catch(e){i.push({windowId:a,processed:!0})}}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o)}function Qe(e,t,s){const o=je.get(t);if(o&&o[e]){const t=o[e][s];t&&(globalThis.clearTimeout(t),delete o[e][s])}}function et(e,t){const s=je.get(e);s&&s.responseTimeouts&&(s.responseTimeouts[t]=globalThis.setTimeout(()=>st({frames:[{windowId:t,processed:!0}],sessionId:e}),1e4))}function tt(e,t,s){e.forEach((e,o)=>{const n=t+Fe+o;e.removeAttribute(Le.WIN_ID_ATTRIBUTE_NAME);try{ot(e.contentWindow,{method:De,windowId:n,sessionId:s})}catch(e){}}),e.forEach((e,o)=>{const n=t+Fe+o;let i;try{i=e.contentDocument}catch(e){}if(i)try{tt(it(i),n,s)}catch(e){}})}function st(e){e.method=_e;try{qe.singlefile.processors.frameTree.initResponse(e)}catch(t){ot(qe,e,!0)}}function ot(e,t,s){if(e==qe&&Ue&&Ue.runtime&&Ue.runtime.sendMessage)Ue.runtime.sendMessage(t);else if(s){const s=new He;e.postMessage(T+Ve.stringify({method:t.method,sessionId:t.sessionId}),"*",[s.port2]),s.port1.postMessage(t)}else e.postMessage(T+Ve.stringify(t),"*")}function nt(e,t,s,o,n){const i=Le.preProcessDoc(e,t,o),a=Le.serialize(e);Le.postProcessDoc(e,i.markedElements,i.invalidElements);return{windowId:s,content:a,baseURI:e.baseURI.split("#")[0],url:e.documentURI,title:e.title,canvases:i.canvases,fonts:i.fonts,worklets:i.worklets,stylesheets:i.stylesheets,images:i.images,posters:i.posters,videos:i.videos,usedFonts:i.usedFonts,shadowRoots:i.shadowRoots,scrollPosition:i.scrollPosition,scrolling:n,adoptedStyleSheets:i.adoptedStyleSheets,processed:!0}}function it(e){let t=Array.from(e.querySelectorAll('iframe, frame, object[type="text/html"][data]'));return e.querySelectorAll("*").forEach(e=>{const s=Le.getShadowRoot(e);s&&(t=t.concat(...it(s)))}),t}je||(je=globalThis.sessions=new Map),ke&&(Ye="0",Ue&&Ue.runtime&&Ue.runtime.onMessage&&Ue.runtime.onMessage.addListener&&Ue.runtime.onMessage.addListener(e=>e.method==_e?(Ze(e),Promise.resolve({})):e.method==Oe?(Qe("requestTimeouts",e.sessionId,e.windowId),et(e.sessionId,e.windowId),Promise.resolve({})):void 0)),Ge(),function e(){Z(A,({detail:e})=>globalThis[f]=async(t,s)=>{const o=Object.assign({},s);let n;delete o.win,delete o.doc,delete o.onprogress,delete o.frames,delete o.taskId,delete o._migratedTemplateFormat,delete o.woleetKey;try{n="jsonDetail"==e?J.stringify({options:o}):{options:o}}catch(e){}const i=new Q(t+"-request",{cancelable:!0,detail:n});let a;const r=new Promise(e=>{a=e,Z(t+"-response",t=>{if(t.detail)try{const e="string"==typeof t.detail?J.parse(t.detail):t.detail;e.options&&Object.assign(s,e.options)}catch(e){}e()})});(e=>{try{globalThis.dispatchEvent(e)}catch(e){}})(i),i.defaultPrevented?await r:a()}),new ee(e).observe(globalThis.document,{childList:!0})}(),new We(Ge).observe(Be,{childList:!0});const at=["AREA","BASE","BASEFONT","BGSOUND","BR","COL","COMMAND","EMBED","FRAME","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"],rt=[{tagName:"HEAD",accept:e=>!e.childNodes.length||1==e.childNodes[0].nodeType},{tagName:"BODY",accept:e=>!e.childNodes.length}],lt=[{tagName:"HTML",accept:e=>!e||8!=e.nodeType},{tagName:"HEAD",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"BODY",accept:e=>!e||8!=e.nodeType},{tagName:"LI",accept:(e,t)=>!e&&t.parentElement&&("UL"==mt(t.parentElement)||"OL"==mt(t.parentElement))||e&&["LI"].includes(mt(e))},{tagName:"DT",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"P",accept:e=>e&&["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DETAILS","DIV","DL","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","MAIN","NAV","OL","P","PRE","SECTION","TABLE","UL"].includes(mt(e))},{tagName:"DD",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"RT",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"RP",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"OPTGROUP",accept:e=>!e||["OPTGROUP"].includes(mt(e))},{tagName:"OPTION",accept:e=>!e||["OPTION","OPTGROUP"].includes(mt(e))},{tagName:"COLGROUP",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"CAPTION",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"THEAD",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TBODY",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TFOOT",accept:e=>!e},{tagName:"TR",accept:e=>!e||["TR"].includes(mt(e))},{tagName:"TD",accept:e=>!e||["TD","TH"].includes(mt(e))},{tagName:"TH",accept:e=>!e||["TD","TH"].includes(mt(e))}],dt=["STYLE","SCRIPT","XMP","IFRAME","NOEMBED","NOFRAMES","PLAINTEXT","NOSCRIPT"];function ct(e,t,s){return 3==e.nodeType?function(e){const t=e.parentNode;let s;t&&1==t.nodeType&&(s=mt(t));return!s||dt.includes(s)?("SCRIPT"!=s||t.type&&"text/javascript"!=t.type)&&"STYLE"!=s?e.textContent:e.textContent.replace(/<\//gi,"<\\/").replace(/\/>/gi,"\\/>"):e.textContent.replace(/&/g,"&").replace(/\u00a0/g," ").replace(//g,">")}(e):8==e.nodeType?"\x3c!--"+e.textContent+"--\x3e":1==e.nodeType?function(e,t,s){const o=mt(e),n=t&&rt.find(t=>o==mt(t)&&t.accept(e));let i="";n&&!e.attributes.length||(i="<"+o.toLowerCase(),Array.from(e.attributes).forEach(s=>i+=function(e,t,s){const o=e.name;let n="";if(!o.match(/["'>/=]/)){let i,a=e.value;s&&"class"==o&&(a=Array.from(t.classList).map(e=>e.trim()).join(" ")),a=a.replace(/&/g,"&").replace(/\u00a0/g," "),a.includes('"')&&(a.includes("'")||!s?a=a.replace(/"/g,"""):i=!0);const r=!s||a.match(/[ \t\n\f\r'"`=<>]/);n+=" ";const l=e.namespaceURI,d=e.localName||o;l?"http://www.w3.org/XML/1998/namespace"==l?n+="xml:"+d:"http://www.w3.org/2000/xmlns/"==l?n+="xmlns"===d?"xmlns":"xmlns:"+d:"http://www.w3.org/1999/xlink"==l?n+="xlink:"+d:e.prefix?n+=e.prefix+":"+d:n+=o:n+=o,""!=a&&(n+="=",r&&(n+=i?"'":'"'),n+=a,r&&(n+=i?"'":'"'))}return n}(s,e,t)),i+=">");"TEMPLATE"!=o||e.childNodes.length?Array.from(e.childNodes).forEach(e=>i+=ct(e,t,s||"svg"==o)):i+=e.innerHTML;const a=t&<.find(t=>o==mt(t)&&t.accept(e.nextSibling,e));(s||!a&&!at.includes(o))&&(i+=""+o.toLowerCase()+">");return i}(e,t,s):void 0}function ut(e){return Boolean(e.match(/^[ \t\n\f\r]/))}function mt(e){return e.tagName&&e.tagName.toUpperCase()}const gt={frameTree:Object.freeze({__proto__:null,TIMEOUT_INIT_REQUEST_MESSAGE:xe,cleanup:function(e){je.delete(e),Xe({windowId:Ye,sessionId:e})},getAsync:function(e){const t=Ke();return e=Ve.parse(Ve.stringify(e)),new Promise(s=>{je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{},resolve:e=>{e.sessionId=t,s(e)}}),$e({windowId:Ye,sessionId:t,options:e})})},getSync:function(e){const t=Ke();e=Ve.parse(Ve.stringify(e)),je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{}}),function(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId);Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}({windowId:Ye,sessionId:t,options:e});const s=je.get(t).frames;return s.sessionId=t,s},initResponse:Ze})},ht={COMMENT_HEADER:"Page saved with SingleFile",COMMENT_HEADER_LEGACY:"Archive processed by SingleFile",ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,postProcessDoc:ce,serialize:(e,t)=>function(e,t){const s=e.doctype;let o="";return s&&(o=" "),o+ct(e.documentElement,t)}(e,t),getShadowRoot:re};e.helper=ht,e.processors=gt});
!function(){"use strict";const e=33554432,t="data-sf-nesting-track-id",o=globalThis.singlefileBootstrap,n=new Map;let a,r,s,d,i,c,l,u,m,f,h,v,y,E;async function p(){if(document.documentElement.dataset&&void 0!==document.documentElement.dataset.sfz){const e=await g();document.querySelectorAll("#sfz-error-message").forEach(e=>e.remove()),function(e){document.dispatchEvent(new CustomEvent("single-file-bootstrap",{detail:{data:e}}))}(e)}else if(document.body&&1==document.body.childNodes.length&&"PRE"==document.body.childNodes[0].tagName&&/]* data-sfz[^>]*>/i.test(document.body.childNodes[0].textContent)){const e=(new DOMParser).parseFromString(document.body.childNodes[0].textContent,"text/html");document.replaceChild(e.documentElement,document.documentElement),document.querySelectorAll("script").forEach(e=>{const t=document.createElement("script");t.textContent=e.textContent,e.parentElement.replaceChild(t,e)}),await p()}}function g(){return new Promise((e,t)=>{const o=new XMLHttpRequest;o.open("GET",location.href),o.send(),o.responseType="arraybuffer",o.onload=()=>e(new Uint8Array(o.response)),o.onerror=()=>{const o=document.getElementById("sfz-error-message");o&&o.remove();const a=n.size;n.set(a,{resolve:e,reject:t}),browser.runtime.sendMessage({method:"singlefile.fetch",requestId:a,url:location.href})}})}async function b(e){return i&&"content.autosave"==e.method?(async function(e){r=e.options,"complete"!=document.readyState&&await new Promise(e=>globalThis.addEventListener("load",e));await w(),r.autoSaveRepeat&&setTimeout(()=>{i&&!l&&(u=!1,r.autoSaveDelay=0,b(e))},1e3*r.autoSaveRepeatDelay)}(e),{}):"content.maybeInit"==e.method?(S(),{}):"content.init"==e.method?(r=e.options,i=e.autoSaveEnabled,T(),{}):"content.openEditor"==e.method?(O(document)?D(document):T(),{}):"devtools.resourceCommitted"==e.method?(o.pageInfo.updatedResources[e.url]={content:e.content,type:e.type,encoding:e.encoding},{}):"singlefile.fetchResponse"==e.method?await async function(e){const t=n.get(e.requestId);if(t)return e.error?(t.reject(new Error(e.error)),n.delete(e.requestId)):(e.truncated&&(t.array?t.array=t.array.concat(e.array):(t.array=e.array,n.set(e.requestId,t)),e.finished&&(e.array=t.array)),e.truncated&&!e.finished||(t.resolve(e.array),n.delete(e.requestId))),{}}(e):void 0}function S(){const e=document.querySelector("singlefile-infobar");e&&e.remove(),m==location.href||o.pageInfo.processing||(u=!1,m=location.href,browser.runtime.sendMessage({method:"tabs.init",savedPageDetected:O(document)}).catch(()=>{}),browser.runtime.sendMessage({method:"ui.processInit"}).catch(()=>{}))}async function w(){const e=o.helper;if((!l||c)&&!u)if(l=!0,r.autoSaveDelay&&!c)await new Promise(e=>c=setTimeout(e,1e3*r.autoSaveDelay)),await w();else{const t=globalThis[e.WAIT_FOR_USERSCRIPT_PROPERTY_NAME];let n,a=[];c=null,!r.removeFrames&&globalThis.frames&&globalThis.frames.length&&(a=await o.processors.frameTree.getAsync(r)),n=a&&a.sessionId,r.userScriptEnabled&&t&&await t(e.ON_BEFORE_CAPTURE_EVENT_NAME);const s=e.preProcessDoc(document,globalThis,r);C(s,a),n&&o.processors.frameTree.cleanup(n),e.postProcessDoc(document,s.markedElements,s.invalidElements),r.userScriptEnabled&&t&&await t(e.ON_AFTER_CAPTURE_EVENT_NAME),u=!0,l=!1}}function T(){i&&r&&(r.autoSaveUnload||r.autoSaveLoadOrUnload||r.autoSaveDiscard||r.autoSaveRemove)?a||(globalThis.addEventListener("unload",R),document.addEventListener("visibilitychange",A),a=!0):(globalThis.removeEventListener("unload",R),document.removeEventListener("visibilitychange",A),a=!1)}function A(){"hidden"==document.visibilityState&&r.autoSaveDiscard&&I({autoSaveDiscard:r.autoSaveDiscard})}function R(){!u&&(r.autoSaveUnload||r.autoSaveLoadOrUnload||r.autoSaveRemove)&&I({autoSaveUnload:r.autoSaveUnload,autoSaveRemove:r.autoSaveRemove})}function I({autoSaveUnload:e,autoSaveDiscard:t,autoSaveRemove:n}){const a=o.helper,s=globalThis[a.WAIT_FOR_USERSCRIPT_PROPERTY_NAME];let d=[];!r.removeFrames&&globalThis.frames&&globalThis.frames.length&&(d=o.processors.frameTree.getSync(r)),r.userScriptEnabled&&s&&s(a.ON_BEFORE_CAPTURE_EVENT_NAME);C(a.preProcessDoc(document,globalThis,r),d,{autoSaveUnload:e,autoSaveDiscard:t,autoSaveRemove:n})}function C(e,t,{autoSaveUnload:n,autoSaveDiscard:a,autoSaveRemove:i}={}){const c=o.helper,l=o.pageInfo.updatedResources,u=o.pageInfo.visitDate.getTime();Object.keys(l).forEach(e=>l[e].retrieved=!1),browser.runtime.sendMessage({method:"autosave.save",tabId:s,tabIndex:d,taskId:r.taskId,content:c.serialize(document),canvases:e.canvases,fonts:e.fonts,stylesheets:e.stylesheets,images:e.images,posters:e.posters,usedFonts:e.usedFonts,shadowRoots:e.shadowRoots,videos:e.videos,referrer:e.referrer,adoptedStyleSheets:e.adoptedStyleSheets,worklets:e.worklets,frames:t,url:location.href,updatedResources:l,visitDate:u,autoSaveUnload:n,autoSaveDiscard:a,autoSaveRemove:i})}async function D(n){let a;h?a=await g():(P(n),function(e){s(e.body);const o=function(e,t){const o=(new DOMParser).parseFromString(e,"text/html");o.head||o.documentElement.insertBefore(o.createElement("HEAD"),o.body);let n=o.querySelector("base");n&&n.getAttribute("href")||(n&&n.remove(),n=o.createElement("base"),n.setAttribute("href",t),o.head.insertBefore(n,o.head.firstChild));return o}(function(e){const t=e.doctype;let o="";t&&(o=" ");return o+e.documentElement.outerHTML}(e)),n=d(e.body),a=d(o.body),r=new Set;function s(e,o=0,n=""){const a=n?`${n}.${o+1}`:`${o+1}`;e.setAttribute(t,a),Array.from(e.children).forEach((e,t)=>s(e,t,a))}function d(e){const o={};return n(e),o;function n(e){if(e.getAttribute){const a=e.getAttribute(t);a&&(o[a]=e),Array.from(e.children).forEach(n)}}}function i(e,o){const n=e.getAttribute(t);n&&!o.has(n)&&e.removeAttribute(t),Array.from(e.children).forEach(e=>i(e,o))}Object.keys(n).forEach(o=>{if(o in a){if((n[o].parentElement?.getAttribute(t)||null)!==(a[o]?.parentElement?.getAttribute(t)||null)){let a=n[o];for(;a&&a!==e.body;){const e=a.getAttribute(t);e&&r.add(e),a=a.parentElement}}}}),i(e.body,r)}(n),a=o.helper.serialize(n));for(let t=0;t*ee,o.truncated?(o.finished=(t+1)*e>a.length,a instanceof Uint8Array?o.content=Array.from(a.subarray(t*e,(t+1)*e)):o.content=a.substring(t*e,(t+1)*e)):(o.embeddedImage=await M(a),o.content=a instanceof Uint8Array?Array.from(a):a),await browser.runtime.sendMessage(o)}}async function M(e){if(137==e[0]&&80==e[1]&&78==e[2]&&71==e[3]){let t=new Blob([new Uint8Array(e)],{type:"image/png"});const o=URL.createObjectURL(t),n=new Image;n.src=o,await new Promise((e,t)=>{n.onload=e,n.onerror=t});const a=new OffscreenCanvas(n.width,n.height);a.getContext("2d").drawImage(n,0,0),t=await a.convertToBlob({type:"image/png"});const r=await t.arrayBuffer();return Array.from(new Uint8Array(r))}}function O(e){if(void 0===f){const t=o.helper,n=e.documentElement.firstChild;h=e.documentElement.dataset&&""==e.documentElement.dataset.sfz,v=Boolean(e.querySelector("sfz-extra-data")),y=Boolean(e.querySelector("body > main[hidden]")),E=Boolean(e.querySelector("meta[http-equiv=content-security-policy]")),f=h||n.nodeType==Node.COMMENT_NODE&&(n.textContent.includes(t.COMMENT_HEADER)||n.textContent.includes(t.COMMENT_HEADER_LEGACY))}return f}function P(e){e.querySelectorAll("*").forEach(e=>{const t=o.helper.getShadowRoot(e);if(t){P(t);const o=document.createElement("template");o.setAttribute("shadowrootmode","open"),Array.from(t.childNodes).forEach(e=>o.appendChild(e)),e.appendChild(o)}})}o.pageInfo={updatedResources:{},visitDate:new Date},browser.runtime.sendMessage({method:"bootstrap.init"}).then(e=>{r=e.optionsAutoSave;const t=e.options;s=e.tabId,d=e.tabIndex,i=e.autoSaveEnabled,t&&t.autoOpenEditor&&O(document)?"loading"==document.readyState?document.addEventListener("DOMContentLoaded",()=>D(document)):D(document):"loading"==document.readyState?document.addEventListener("DOMContentLoaded",T):T()}),browser.runtime.onMessage.addListener(e=>{if(i&&"content.autosave"==e.method||"content.maybeInit"==e.method||"content.init"==e.method||"content.openEditor"==e.method||"devtools.resourceCommitted"==e.method||"singlefile.fetchResponse"==e.method)return b(e)}),document.addEventListener("DOMContentLoaded",S,!1),globalThis.window==globalThis.top&&location&&location.href&&(location.href.startsWith("file://")||location.href.startsWith("content://"))&&("loading"==document.readyState?document.addEventListener("DOMContentLoaded",p,!1):p())}();
!function(){"use strict";const n="single-file-infobar";function o(o,i,t){if(!o.querySelector(n)){let t;i.infobarContent?t=i.infobarContent.replace(/\\n/g,"\n").replace(/\\t/g,"\t"):i.saveDate&&(t=i.saveDate),t=t||"No info";const e="BODY"==o.body.tagName?o.body:o.documentElement,a=function(n,o,i){const t=n.createElement(o);return i.appendChild(t),Array.from(getComputedStyle(t)).forEach(n=>t.style.setProperty(n,"initial","important")),t}(o,n,e);let r;r=a.attachShadow({mode:"open"});const A=o.createElement("div"),c=o.createElement("style");if(c.textContent="\n.infobar,\n.infobar .infobar-icon,\n.infobar .infobar-link-icon {\n min-inline-size: 28px;\n min-block-size: 28px;\n box-sizing: border-box;\n}\n\n.infobar,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n opacity: 0.7;\n transition: opacity 250ms;\n}\n\n.infobar:hover,\n.infobar .infobar-close-icon:hover,\n.infobar .infobar-link-icon:hover {\n opacity: 1;\n}\n\n.infobar,\n.infobar-content {\n display: flex;\n}\n\n.infobar {\n position: fixed;\n max-height: calc(100% - 32px);\n top: 16px;\n right: 16px;\n margin-inline-start: 16px;\n margin-block-end: 16px;\n color: #2d2d2d;\n background-color: #737373;\n border: 2px solid;\n border-color: #eee;\n border-radius: 16px;\n z-index: 2147483647;\n animation-name: flash;\n animation-duration: .5s;\n animation-timing-function: cubic-bezier(0.39, 0.58, 0.57, 1);\n animation-delay: 1s;\n animation-iteration-count: 2;\n}\n\n.infobar:valid, .infobar:not(:focus-within):not(.infobar-focus) .infobar-content {\n display: none;\n}\n\n.infobar:focus-within, .infobar.infobar-focus {\n background-color: #f9f9f9;\n border-color: #878787;\n border-radius: 8px;\n opacity: 1;\n transition-property: opacity, background-color, border-color, border-radius, color;\n}\n\n.infobar-content {\n border: 2px solid;\n border-color: #f9f9f9;\n border-radius: 6px;\n background-color: #f9f9f9;\n overflow: auto;\n}\n\n.infobar-content span {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 14px;\n line-height: 18px;\n word-break: break-word;\n white-space: pre-wrap;\n margin-inline: 4px;\n margin-block: 4px;\n}\n\n.infobar .infobar-icon,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n cursor: pointer;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n align-self: flex-start;\n}\n\n.infobar .infobar-icon {\n position: absolute;\n min-inline-size: 24px;\n min-block-size: 24px;\n}\n\n@keyframes flash {\n 0%, 100% {\n\tbackground-color: #737373;\n }\n 50% {\n\tbackground-color: #dd6a00;\n }\n}\n\n.infobar:focus-within .infobar-icon, .infobar.infobar-focus .infobar-icon {\n z-index: -1;\n background-image: none;\n margin: 4px;\n}\n\n.infobar .infobar-close-icon {\n min-inline-size: 22px;\n min-block-size: 22px;\n}\n\n.infobar .infobar-icon {\n background-color: transparent;\n background-size: 70%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHADIRLMaOHwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAPUExURQAAAIqKioyNjY2OjvDw8L2y1DEAAAABdFJOUwBA5thmAAAAAWJLR0QB/wIt3gAAAGNJREFUSMdjYCAJsLi4OBCQx6/CBQwIGIDPCBcXAkYQUsACU+AwlBVQHg6Eg5pgZBGOboIJZugDFwRwoJECJCUOhJI1wZwzqmBUwagCuipgIqTABG9h7YIKaKGAURAFEF/6AQAO4HqSoDP8bgAAAABJRU5ErkJggg==);\n}\n\n.infobar .infobar-link-icon {\n right: 4px;\n background-size: 60%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8H+DhhoQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJJJREFUOI3t070NRCEMA2CnYAOyDyPwpHj/Va7hJ3FzV7zy3ET5JIwoAF6Jk4wzAJAkzxAYG9YRTgB+24wBgKmfrGAKTcEfAY4KRlRoIeBTgKOCERVaCPgU4Khge2GqKOBTgKOCERVaAEC/4PNcnyoSWHpjqkhwKxbcig0Q6AorXYF/+A6eIYD1lVbwG/jdA6/kA2THRAURVubcAAAAAElFTkSuQmCC);\n}\n\n.infobar .infobar-close-icon {\n appearance: none;\n background-size: 80%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8VC4EQ6QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJtJREFUOI3NkrsBgCAMRLFwBPdxBArcfxXFkO8rbKWAAJfHJ9faf9vuYX/749T5NmShm3bEwbe2SxeuM4+2oxDL1cDoKtVUjRy+tH78Cv2CS+wIiQNC1AEhk4AQeUTMWUJMfUJMSEJMSEY8kIx4IONroaYAimNxsXp1PA7PxwfVL8QnowwoVC0lig07wDDVUjAdbAnjwtow/z/bDW7eI4M2KruJAAAAAElFTkSuQmCC);\n}\n",i.infobarPositionAbsolute){c.textContent+=".infobar { position: absolute; }";"static"==getComputedStyle(e).position&&e.style.setProperty("position","relative","important")}i.infobarPositionTop?c.textContent+=`.infobar { top: ${i.infobarPositionTop}; bottom: auto; }`:i.infobarPositionBottom&&(c.textContent+=`.infobar { bottom: ${i.infobarPositionBottom}; top: auto; }`),i.infobarPositionRight?c.textContent+=`.infobar { right: ${i.infobarPositionRight}; left: auto; }`:i.infobarPositionLeft&&(c.textContent+=`.infobar { left: ${i.infobarPositionLeft}; right: auto; }`),c.textContent=c.textContent.replace(/ {2}/g,"").replace(/\n/g,"").replace(/: /g,":").replace(/, /g,","),A.appendChild(c);const s=o.createElement("form");s.classList.add("infobar"),i.openInfobar&&s.classList.add("infobar-focus"),A.appendChild(s);const l=o.createElement("span");l.tabIndex=-1,l.classList.add("infobar-icon"),s.appendChild(l);const b=o.createElement("span");b.tabIndex=-1,b.classList.add("infobar-content");const f=o.createElement("input");f.type="checkbox",f.required=!0,f.classList.add("infobar-close-icon"),f.title="Close",b.appendChild(f);const d=o.createElement("span");d.textContent=t,b.appendChild(d);const p=o.createElement("a");p.classList.add("infobar-link-icon"),p.target="_blank",p.rel="noopener noreferrer",p.title="Open source URL: "+i.saveUrl,p.href=i.saveUrl,b.appendChild(p),s.appendChild(b),r.appendChild(A)}}(n=>{const i=n.browser,t=n.MutationObserver;let e;async function a(){let n={displayInfobar:!0};const t=function(n,o="SingleFile"){const i=n.evaluate("//comment()",n,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);let t=i&&i.singleNodeValue;if(t&&t.nodeType==Node.COMMENT_NODE&&t.textContent.includes(o)){const n=t.textContent.split("\n"),[,,o,...i]=n,e=o.match(/^ url: (.*) ?$/),a=e&&e[1];if(a){let n,o;if(i.length&&(o=i[0].split("saved date: ")[1],o&&i.shift(),i.length>1)){let o=i[0].split("info: ")[1].trim();for(let n=1;n{const t=e.detail,s=Object.assign({},t);delete s.src,c.set(l.stringify(s),t)}),a.addEventListener("single-file-delete-font",e=>{const t=e.detail,s=Object.assign({},t);delete s.src,c.delete(l.stringify(s))}),a.addEventListener("single-file-clear-fonts",()=>c=new Map),a.addEventListener("single-file-new-worklet",e=>{const t=e.detail;u.set(t.moduleURL,t)}))}c=globalThis.window[o]?globalThis.window[o]:globalThis.window[o]=new Map,u=globalThis.window[n]?globalThis.window[n]:globalThis.window[n]=new Map,m(),new d(m).observe(a,{childList:!0});const g="[\\x20\\t\\r\\n\\f]",h=new RegExp("\\\\([\\da-f]{1,6}"+g+"?|("+g+")|.)","ig");const p="single-file-",f="_singleFile_waitForUserScript",T="__frameTree__::",b=p+"on-before-capture",E=p+"on-after-capture",y=p+"request-get-adopted-stylesheets",w=p+"response-get-adopted-stylesheets",I=p+"unregister-request-get-adopted-stylesheets",A=p+"user-script-init",v="data-"+p+"removed-content",S="data-"+p+"hidden-content",R="data-"+p+"kept-content",N="data-"+p+"hidden-frame",P="data-"+p+"preserved-space-element",M="data-"+p+"shadow-root-element",L="data-"+p+"win-id",C="data-"+p+"image",O="data-"+p+"poster",D="data-"+p+"video",_="data-"+p+"canvas",x="data-"+p+"movable-style",F="data-"+p+"input-value",k="data-"+p+"input-checked",U="data-"+p+"lazy-loaded-src",q="data-"+p+"stylesheet",H="data-"+p+"disabled-noscript",B="data-"+p+"async-script",V="*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)",W=["NOSCRIPT","DISABLED-NOSCRIPT","META","LINK","STYLE","TITLE","TEMPLATE","SOURCE","OBJECT","SCRIPT","HEAD","BODY"],z=["SCRIPT","NOSCRIPT","META","LINK","TEMPLATE"],Y=/^'(.*?)'$/,j=/^"(.*?)"$/,G={regular:"400",normal:"400",bold:"700",bolder:"700",lighter:"100"},K="single-file-ui-element",$="data:,",X="data-sf-nesting-track-id",Z=(e,t,s)=>globalThis.addEventListener(e,t,s),J=globalThis.JSON,Q=globalThis.CustomEvent,ee=globalThis.MutationObserver,te=globalThis.URL,se=globalThis.DOMParser;function oe(e,t,s){e.querySelectorAll("noscript:not(["+H+"])").forEach(e=>{e.setAttribute(H,e.textContent),e.textContent=""}),function(e){e.querySelectorAll("meta[http-equiv=refresh]").forEach(e=>{e.removeAttribute("http-equiv"),e.setAttribute("disabled-http-equiv","refresh")})}(e),e.head&&e.head.querySelectorAll(V).forEach(e=>e.hidden=!0),e.querySelectorAll("svg foreignObject").forEach(e=>{const t=e.querySelectorAll("html > head > "+V+", html > body > "+V);t.length&&(Array.from(e.childNodes).forEach(e=>e.remove()),t.forEach(t=>e.appendChild(t)))});const o=new Map;let n;t&&e.documentElement?(!function(e){i(e.body);const t=function(e,t){const s=(new se).parseFromString(e,"text/html");s.head||s.documentElement.insertBefore(s.createElement("HEAD"),s.body);let o=s.querySelector("base");o&&o.getAttribute("href")||(o&&o.remove(),o=s.createElement("base"),o.setAttribute("href",t),s.head.insertBefore(o,s.head.firstChild));return s}(ge(e)),s=a(e.body),o=a(t.body),n=new Set;function i(e,t=0,s=""){const o=s?`${s}.${t+1}`:`${t+1}`;e.setAttribute(X,o),Array.from(e.children).forEach((e,t)=>i(e,t,o))}function a(e){const t={};return s(e),t;function s(e){if(e.getAttribute){const o=e.getAttribute(X);o&&(t[o]=e),Array.from(e.children).forEach(s)}}}function r(e,t){const s=e.getAttribute(X);s&&!t.has(s)&&e.removeAttribute(X),Array.from(e.children).forEach(e=>r(e,t))}Object.keys(s).forEach(t=>{if(t in o){if((s[t].parentElement?.getAttribute(X)||null)!==(o[t]?.parentElement?.getAttribute(X)||null)){let o=s[t];for(;o&&o!==e.body;){const e=o.getAttribute(X);e&&n.add(e),o=o.parentElement}}}}),r(e.body,n)}(e),n=ne(t,e,e.documentElement,s),s.moveStylesInHead&&e.querySelectorAll("body style, body ~ style").forEach(e=>{const s=he(t,e);s&&de(e,s)&&(e.setAttribute(x,""),n.markedElements.push(e))})):n={canvases:[],images:[],posters:[],videos:[],usedFonts:[],shadowRoots:[],markedElements:[]};let i="";if(e.referrer)try{i=new te("/",new te(e.referrer).origin).href}catch(e){}return{canvases:n.canvases,fonts:Array.from(c.values()),worklets:Array.from(u.values()),stylesheets:ue(e),images:n.images,posters:n.posters,videos:n.videos,usedFonts:Array.from(n.usedFonts.values()),shadowRoots:n.shadowRoots,referrer:i,markedElements:n.markedElements,invalidElements:o,scrollPosition:{x:t.scrollX,y:t.scrollY},adoptedStyleSheets:ie(e.adoptedStyleSheets)}}function ne(e,t,s,o,n={usedFonts:new Map,canvases:[],images:[],posters:[],videos:[],shadowRoots:[],markedElements:[]},i=new Map,a){if(s.childNodes){Array.from(s.childNodes).filter(t=>t instanceof e.HTMLElement||t instanceof e.SVGElement||t instanceof globalThis.HTMLElement||t instanceof globalThis.SVGElement).forEach(s=>{let r,l,d;if(!o.autoSaveExternalSave&&(o.removeHiddenElements||o.removeUnusedFonts||o.compressHTML)&&(d=he(e,s),(s instanceof e.HTMLElement||s instanceof globalThis.HTMLElement)&&o.removeHiddenElements&&(l=(a||s.closest("html > head"))&&W.includes(s.tagName.toUpperCase())||s.closest("details"),l||(r=a||de(s,d),r&&!z.includes(s.tagName.toUpperCase())&&(s.setAttribute(S,""),n.markedElements.push(s)))),!r)){if(o.compressHTML&&d){const e=d.getPropertyValue("white-space");e&&e.startsWith("pre")&&(s.setAttribute(P,""),n.markedElements.push(s))}o.removeUnusedFonts&&(ae(d,o,n.usedFonts),ae(he(e,s,":first-letter"),o,n.usedFonts),ae(he(e,s,":before"),o,n.usedFonts),ae(he(e,s,":after"),o,n.usedFonts))}!function(e,t,s,o,n,i,a){const r=s.tagName&&s.tagName.toUpperCase();if("CANVAS"==r)try{n.canvases.push({dataURI:s.toDataURL("image/png"),backgroundColor:a.getPropertyValue("background-color")}),s.setAttribute(_,n.canvases.length-1),n.markedElements.push(s)}catch(e){}if("IMG"==r){const t={currentSrc:i?$:o.loadDeferredImages&&s.getAttribute(U)||s.currentSrc};if(n.images.push(t),s.setAttribute(C,n.images.length-1),n.markedElements.push(s),s.removeAttribute(U),a=a||he(e,s)){t.size=function(e,t,s){let o=t.naturalWidth,n=t.naturalHeight;if(!o&&!n){const i=null==t.getAttribute("style");if(s=s||he(e,t)){let e,a,r,l,d,c,u,m,g=!1;if("content-box"==s.getPropertyValue("box-sizing")){const e=t.style.getPropertyValue("box-sizing"),s=t.style.getPropertyPriority("box-sizing"),o=t.clientWidth;t.style.setProperty("box-sizing","border-box","important"),g=t.clientWidth!=o,e?t.style.setProperty("box-sizing",e,s):t.style.removeProperty("box-sizing")}e=me("padding-left",s),a=me("padding-right",s),r=me("padding-top",s),l=me("padding-bottom",s),g?(d=me("border-left-width",s),c=me("border-right-width",s),u=me("border-top-width",s),m=me("border-bottom-width",s)):d=c=u=m=0,o=Math.max(0,t.clientWidth-e-a-d-c),n=Math.max(0,t.clientHeight-r-l-u-m),i&&t.removeAttribute("style")}}return{pxWidth:o,pxHeight:n}}(e,s,a);const o=a.getPropertyValue("box-shadow"),n=a.getPropertyValue("background-image");o&&"none"!=o||n&&"none"!=n||!(t.size.pxWidth>1||t.size.pxHeight>1)||(t.replaceable=!0,t.backgroundColor=a.getPropertyValue("background-color"),t.objectFit=a.getPropertyValue("object-fit"),t.boxSizing=a.getPropertyValue("box-sizing"),t.objectPosition=a.getPropertyValue("object-position"))}}if("VIDEO"==r){const o=s.currentSrc;if(o&&!o.startsWith("blob:")&&!o.startsWith("data:")){const t=he(e,s.parentNode);n.videos.push({positionParent:t&&t.getPropertyValue("position"),src:o,size:{pxWidth:s.clientWidth,pxHeight:s.clientHeight,videoWidth:s.videoWidth,videoHeight:s.videoHeight},currentTime:s.currentTime}),s.setAttribute(D,n.videos.length-1)}if(!s.getAttribute("poster")){const e=t.createElement("canvas"),o=e.getContext("2d");e.width=s.videoWidth,e.height=s.videoHeight;try{o.drawImage(s,0,0,e.width,e.height),n.posters.push(e.toDataURL("image/png")),s.setAttribute(O,n.posters.length-1),n.markedElements.push(s)}catch(e){}}}"IFRAME"==r&&i&&o.removeHiddenElements&&(s.setAttribute(N,""),n.markedElements.push(s));"INPUT"==r&&("password"!=s.type&&(s.setAttribute(F,s.value),n.markedElements.push(s)),"radio"!=s.type&&"checkbox"!=s.type||(s.setAttribute(k,s.checked),n.markedElements.push(s)));"TEXTAREA"==r&&(s.setAttribute(F,s.value),n.markedElements.push(s));"SELECT"==r&&s.querySelectorAll("option").forEach(e=>{e.selected&&(e.setAttribute(F,""),n.markedElements.push(e))});"SCRIPT"==r&&(s.async&&""!=s.getAttribute("async")&&"async"!=s.getAttribute("async")&&(s.setAttribute(B,""),n.markedElements.push(s)),s.textContent=s.textContent.replace(/<\/script>/gi,"<\\/script>"))}(e,t,s,o,n,r,d);const c=!(s instanceof e.SVGElement||s instanceof globalThis.SVGElement)&&re(s);if(c&&!s.classList.contains(K)&&"single-file-infobar"!=s.tagName.toLowerCase()){const a={};s.setAttribute(M,n.shadowRoots.length),n.markedElements.push(s),n.shadowRoots.push(a);try{if(c.adoptedStyleSheets){const e=e=>a.adoptedStyleSheets=e.detail.adoptedStyleSheets;c.addEventListener(w,e),c.dispatchEvent(new Q(y,{bubbles:!0})),a.adoptedStyleSheets||s.dispatchEvent(new Q(y,{bubbles:!0})),c.removeEventListener(w,e)}}catch(e){}ne(e,t,c,o,n,i,r),a.content=c.innerHTML,a.mode=c.mode,a.delegateFocus=c.delegatesFocus,a.clonable=c.clonable,a.serializable=c.serializable;try{c.adoptedStyleSheets&&void 0===c.adoptedStyleSheets.length&&c.dispatchEvent(new Q(I,{bubbles:!0}))}catch(e){}}ne(e,t,s,o,n,i,r),!o.autoSaveExternalSave&&o.removeHiddenElements&&a&&(l||""==s.getAttribute(R)?s.parentElement&&(s.parentElement.setAttribute(R,""),n.markedElements.push(s.parentElement)):r&&(s.setAttribute(v,""),n.markedElements.push(s)))})}return n}function ie(e,t=new Map){if(e){const s=[];for(const o of Array.from(e))if(t.has(o))s.push(t.get(o));else{let e="";if(o&&o.cssRules)for(const t of o.cssRules)e+=t.cssText+"\n";t.set(o,e),s.push(e)}return s}return[]}function ae(e,t,s){if(e){const o=e.getPropertyValue("font-style")||"normal";e.getPropertyValue("font-family").split(",").forEach(n=>{if(n=le(n),!t.loadedFonts||t.loadedFonts.find(e=>le(e.family)==n&&e.style==o)){const t=(i=e.getPropertyValue("font-weight"),G[i.toLowerCase().trim()]||i),a=e.getPropertyValue("font-variant")||"normal",r=[n,t,o,a];s.set(J.stringify(r),[n,t,o,a])}var i})}}function re(e){const t=globalThis.chrome;if(e.openOrClosedShadowRoot)return e.openOrClosedShadowRoot;if(!(t&&t.dom&&t.dom.openOrClosedShadowRoot))return e.shadowRoot;try{return t.dom.openOrClosedShadowRoot(e)}catch(t){return e.shadowRoot}}function le(e=""){return function(e){e=e.match(Y)?e.replace(Y,"$1"):e.replace(j,"$1");return e.trim()}((t=e.trim(),t.replace(h,(e,t,s)=>{const o="0x"+t-65536;return o!=o||s?t:o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320)}))).toLowerCase();var t}function de(e,t){let s=!1;if(t){const o=t.getPropertyValue("display"),n=t.getPropertyValue("opacity"),i=t.getPropertyValue("visibility");if(s="none"==o,!s&&("0"==n||"hidden"==i)&&e.getBoundingClientRect){const t=e.getBoundingClientRect();s=!t.width&&!t.height}}return Boolean(s)}function ce(e,t,s){if(e.querySelectorAll("["+H+"]").forEach(e=>{e.textContent=e.getAttribute(H),e.removeAttribute(H)}),e.querySelectorAll("meta[disabled-http-equiv]").forEach(e=>{e.setAttribute("http-equiv",e.getAttribute("disabled-http-equiv")),e.removeAttribute("disabled-http-equiv")}),e.head&&e.head.querySelectorAll("*:not(base):not(link):not(meta):not(noscript):not(script):not(style):not(template):not(title)").forEach(e=>e.removeAttribute("hidden")),!t){const s=[v,N,S,P,C,O,D,_,F,k,M,q,B];t=e.querySelectorAll(s.map(e=>"["+e+"]").join(","))}t.forEach(e=>{e.removeAttribute(v),e.removeAttribute(S),e.removeAttribute(R),e.removeAttribute(N),e.removeAttribute(P),e.removeAttribute(C),e.removeAttribute(O),e.removeAttribute(D),e.removeAttribute(_),e.removeAttribute(F),e.removeAttribute(k),e.removeAttribute(M),e.removeAttribute(q),e.removeAttribute(B),e.removeAttribute(x)}),s&&s.forEach((e,t)=>e.replaceWith(t))}function ue(e){if(e){const t=[];return e.querySelectorAll("style").forEach((s,o)=>{try{if(!s.sheet.disabled){const n=e.createElement("style");n.textContent=s.textContent,e.body.appendChild(n);const i=n.sheet;n.remove();const a=Array.from(i.cssRules).map(e=>e.cssText).join("\n"),r=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n");i&&a==r||(s.setAttribute(q,o),t[o]=Array.from(s.sheet.cssRules).map(e=>e.cssText).join("\n"))}}catch(e){}}),t}}function me(e,t){if(t.getPropertyValue(e).endsWith("px"))return parseFloat(t.getPropertyValue(e))}function ge(e){const t=e.doctype;let s="";return t&&(s=" "),s+e.documentElement.outerHTML}function he(e,t,s){try{return e.getComputedStyle(t,s)}catch(e){}}const pe={LAZY_SRC_ATTRIBUTE_NAME:U,SINGLE_FILE_UI_ELEMENT_CLASS:K},fe="attributes",Te=globalThis.browser,be=globalThis.document,Ee=globalThis.MutationObserver,ye=new Map;let we;async function Ie(e){if(be.documentElement){ye.clear();const o=be.body?Math.max(be.body.scrollHeight,be.documentElement.scrollHeight):be.documentElement.scrollHeight,n=be.body?Math.max(be.body.scrollWidth,be.documentElement.scrollWidth):be.documentElement.scrollWidth;if(o>globalThis.innerHeight||n>globalThis.innerWidth){const r=Math.max(o-1.5*globalThis.innerHeight,0),l=Math.max(n-1.5*globalThis.innerWidth,0);if(globalThis.scrollY{let n;const r=new Set,l=new Ee(async t=>{if((t=t.filter(e=>e.type==fe)).length){t.filter(e=>{if("src"==e.attributeName&&(e.target.setAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME,e.target.src),e.target.addEventListener("load",c)),"src"==e.attributeName||"srcset"==e.attributeName||e.target.tagName&&"SOURCE"==e.target.tagName.toUpperCase())return!e.target.classList||!e.target.classList.contains(pe.SINGLE_FILE_UI_ELEMENT_CLASS)}).length&&(n=!0,await ve(l,e,g),r.size||await Ae(l,e,g))}});async function d(t){await Re("idleTimeout",async()=>{n?we<10&&(we++,Pe("idleTimeout"),await d(Math.max(500,t/2))):(Pe("loadTimeout"),Pe("maxTimeout"),Se(l,e,g))},t,e.loadDeferredImagesNativeTimeout)}function c(e){const t=e.target;t.removeAttribute(pe.LAZY_SRC_ATTRIBUTE_NAME),t.removeEventListener("load",c)}async function u(t){n=!0,await ve(l,e,g),await Ae(l,e,g),t.detail&&r.add(t.detail)}async function m(t){await ve(l,e,g),await Ae(l,e,g),r.delete(t.detail),r.size||await Ae(l,e,g)}function g(e){l.disconnect(),be.removeEventListener(t,u),be.removeEventListener(s,m),o(e)}await d(2*e.loadDeferredImagesMaxIdleTime),await ve(l,e,g),l.observe(be,{subtree:!0,childList:!0,attributes:!0}),be.addEventListener(t,u),be.addEventListener(s,m),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-start")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-start")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-start")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-start")):a.dispatchEvent(new i("single-file-load-deferred-images-start"))}(e)})}(e)}}}async function Ae(e,t,s){await Re("loadTimeout",()=>Se(e,t,s),t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function ve(e,t,s){await Re("maxTimeout",async()=>{await Pe("loadTimeout"),await Se(e,t,s)},10*t.loadDeferredImagesMaxIdleTime,t.loadDeferredImagesNativeTimeout)}async function Se(e,t,s){await Pe("idleTimeout"),function(e){e.loadDeferredImagesBlockCookies&&a.dispatchEvent(new i("single-file-block-cookies-end")),e.loadDeferredImagesBlockStorage&&a.dispatchEvent(new i("single-file-block-storage-end")),e.loadDeferredImagesDispatchScrollEvent&&a.dispatchEvent(new i("single-file-dispatch-scroll-event-end")),e.loadDeferredImagesKeepZoomLevel?a.dispatchEvent(new i("single-file-load-deferred-images-keep-zoom-level-end")):a.dispatchEvent(new i("single-file-load-deferred-images-end"))}(t),await Re("endTimeout",async()=>{await Pe("maxTimeout"),s()},t.loadDeferredImagesMaxIdleTime/2,t.loadDeferredImagesNativeTimeout),e.disconnect()}async function Re(e,t,s,o){if(Te&&Te.runtime&&Te.runtime.sendMessage&&!o){if(!ye.get(e)||!ye.get(e).pending){const o={callback:t,pending:!0};ye.set(e,o);try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.setTimeout",type:e,delay:s})}catch(o){Ne(e,t,s)}o.pending=!1}}else Ne(e,t,s)}function Ne(e,t,s){const o=ye.get(e);o&&globalThis.clearTimeout(o),ye.set(e,t),globalThis.setTimeout(t,s)}async function Pe(e){if(Te&&Te.runtime&&Te.runtime.sendMessage)try{await Te.runtime.sendMessage({method:"singlefile.lazyTimeout.clearTimeout",type:e})}catch(t){Me(e)}else Me(e)}function Me(e){const t=ye.get(e);ye.delete(e),t&&globalThis.clearTimeout(t)}Te&&Te.runtime&&Te.runtime.onMessage&&Te.runtime.onMessage.addListener&&Te.runtime.onMessage.addListener(e=>{if("singlefile.lazyTimeout.onTimeout"==e.method){const t=ye.get(e.type);if(t){ye.delete(e.type);try{t.callback()}catch(t){Me(e.type)}}}});const Le={ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WIN_ID_ATTRIBUTE_NAME:L,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,serialize:ge,postProcessDoc:ce,getShadowRoot:re},Ce="singlefile.frameTree.initRequest",Oe="singlefile.frameTree.ackInitRequest",De="singlefile.frameTree.cleanupRequest",_e="singlefile.frameTree.initResponse",xe=5e3,Fe=".",ke=globalThis.window==globalThis.top,Ue=globalThis.browser,qe=globalThis.top,He=globalThis.MessageChannel,Be=globalThis.document,Ve=globalThis.JSON,We=globalThis.MutationObserver,ze=globalThis.DOMParser;let Ye,je=globalThis.sessions;function Ge(){globalThis.addEventListener("message",async e=>{if("string"==typeof e.data&&e.data.startsWith(T)){e.preventDefault(),e.stopPropagation();const t=Ve.parse(e.data.substring(15));if(t.method==Ce)e.source&&ot(e.source,{method:Oe,windowId:t.windowId,sessionId:t.sessionId}),ke||(globalThis.stop(),t.options.loadDeferredImages&&Ie(t.options),await $e(t));else if(t.method==Oe)Qe("requestTimeouts",t.sessionId,t.windowId),et(t.sessionId,t.windowId);else if(t.method==De)Xe(t);else if(t.method==_e&&je.get(t.sessionId)){e.ports[0].onmessage=e=>Ze(e.data)}}},!0)}function Ke(){return globalThis.crypto.getRandomValues(new Uint32Array(32)).join("")}async function $e(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId),Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}function Xe(e){if(!globalThis._singleFile_cleaningUp){globalThis._singleFile_cleaningUp=!0;const t=e.sessionId;tt(it(Be),e.windowId,t)}}function Ze(e){e.frames.forEach(t=>Qe("responseTimeouts",e.sessionId,t.windowId));const t=je.get(e.sessionId);if(t){e.requestedFrameId&&(t.requestedFrameId=e.requestedFrameId),e.frames.forEach(e=>{let s=t.frames.find(t=>e.windowId==t.windowId);s||(s={windowId:e.windowId},t.frames.push(s)),s.processed||(s.content=e.content,s.baseURI=e.baseURI,s.title=e.title,s.url=e.url,s.canvases=e.canvases,s.fonts=e.fonts,s.worklets=e.worklets,s.stylesheets=e.stylesheets,s.images=e.images,s.posters=e.posters,s.videos=e.videos,s.usedFonts=e.usedFonts,s.shadowRoots=e.shadowRoots,s.processed=e.processed,s.scrollPosition=e.scrollPosition,s.scrolling=e.scrolling,s.adoptedStyleSheets=e.adoptedStyleSheets)});t.frames.filter(e=>!e.processed).length||(t.frames=t.frames.sort((e,t)=>t.windowId.split(Fe).length-e.windowId.split(Fe).length),t.resolve&&(t.requestedFrameId&&t.frames.forEach(e=>{e.windowId==t.requestedFrameId&&(e.requestedFrame=!0)}),t.resolve(t.frames)))}}function Je(e,t,s,o){const n=it(e);!function(e,t,s,o,n){const i=[];let a;je.get(n)?a=je.get(n).requestTimeouts:(a={},je.set(n,{requestTimeouts:a}));t.forEach((e,t)=>{const s=o+Fe+t;e.setAttribute(Le.WIN_ID_ATTRIBUTE_NAME,s),i.push({windowId:s})}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),t.forEach((e,t)=>{const i=o+Fe+t;try{ot(e.contentWindow,{method:Ce,windowId:i,sessionId:n,options:s,scrolling:e.scrolling})}catch(e){}a[i]=globalThis.setTimeout(()=>st({frames:[{windowId:i,processed:!0}],sessionId:n}),xe)}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o),n.length&&function(e,t,s,o,n){const i=[];t.forEach((e,t)=>{const a=o+Fe+t;let r,l;try{r=e.contentDocument,l=e.contentWindow,l.stop()}catch(e){}const d=e.getAttribute("srcdoc");if(!r&&d){r=(new ze).parseFromString(d,"text/html"),l=globalThis}if(r)try{Qe("requestTimeouts",n,a),Je(r,s,a,n),i.push(nt(r,l,a,s,e.scrolling))}catch(e){i.push({windowId:a,processed:!0})}}),st({frames:i,sessionId:n,requestedFrameId:e.documentElement.dataset.requestedFrameId&&o}),delete e.documentElement.dataset.requestedFrameId}(e,n,t,s,o)}function Qe(e,t,s){const o=je.get(t);if(o&&o[e]){const t=o[e][s];t&&(globalThis.clearTimeout(t),delete o[e][s])}}function et(e,t){const s=je.get(e);s&&s.responseTimeouts&&(s.responseTimeouts[t]=globalThis.setTimeout(()=>st({frames:[{windowId:t,processed:!0}],sessionId:e}),1e4))}function tt(e,t,s){e.forEach((e,o)=>{const n=t+Fe+o;e.removeAttribute(Le.WIN_ID_ATTRIBUTE_NAME);try{ot(e.contentWindow,{method:De,windowId:n,sessionId:s})}catch(e){}}),e.forEach((e,o)=>{const n=t+Fe+o;let i;try{i=e.contentDocument}catch(e){}if(i)try{tt(it(i),n,s)}catch(e){}})}function st(e){e.method=_e;try{qe.singlefile.processors.frameTree.initResponse(e)}catch(t){ot(qe,e,!0)}}function ot(e,t,s){if(e==qe&&Ue&&Ue.runtime&&Ue.runtime.sendMessage)Ue.runtime.sendMessage(t);else if(s){const s=new He;e.postMessage(T+Ve.stringify({method:t.method,sessionId:t.sessionId}),"*",[s.port2]),s.port1.postMessage(t)}else e.postMessage(T+Ve.stringify(t),"*")}function nt(e,t,s,o,n){const i=Le.preProcessDoc(e,t,o),a=Le.serialize(e);Le.postProcessDoc(e,i.markedElements,i.invalidElements);return{windowId:s,content:a,baseURI:e.baseURI.split("#")[0],url:e.documentURI,title:e.title,canvases:i.canvases,fonts:i.fonts,worklets:i.worklets,stylesheets:i.stylesheets,images:i.images,posters:i.posters,videos:i.videos,usedFonts:i.usedFonts,shadowRoots:i.shadowRoots,scrollPosition:i.scrollPosition,scrolling:n,adoptedStyleSheets:i.adoptedStyleSheets,processed:!0}}function it(e){let t=Array.from(e.querySelectorAll('iframe, frame, object[type="text/html"][data]'));return e.querySelectorAll("*").forEach(e=>{const s=Le.getShadowRoot(e);s&&(t=t.concat(...it(s)))}),t}je||(je=globalThis.sessions=new Map),ke&&(Ye="0",Ue&&Ue.runtime&&Ue.runtime.onMessage&&Ue.runtime.onMessage.addListener&&Ue.runtime.onMessage.addListener(e=>e.method==_e?(Ze(e),Promise.resolve({})):e.method==Oe?(Qe("requestTimeouts",e.sessionId,e.windowId),et(e.sessionId,e.windowId),Promise.resolve({})):void 0)),Ge(),function e(){Z(A,({detail:e})=>globalThis[f]=async(t,s)=>{const o=Object.assign({},s);let n;delete o.win,delete o.doc,delete o.onprogress,delete o.frames,delete o.taskId,delete o._migratedTemplateFormat,delete o.woleetKey;try{n="jsonDetail"==e?J.stringify({options:o}):{options:o}}catch(e){}const i=new Q(t+"-request",{cancelable:!0,detail:n});let a;const r=new Promise(e=>{a=e,Z(t+"-response",t=>{if(t.detail)try{const e="string"==typeof t.detail?J.parse(t.detail):t.detail;e.options&&Object.assign(s,e.options)}catch(e){}e()})});(e=>{try{globalThis.dispatchEvent(e)}catch(e){}})(i),i.defaultPrevented?await r:a()}),new ee(e).observe(globalThis.document,{childList:!0})}(),new We(Ge).observe(Be,{childList:!0});const at=["AREA","BASE","BASEFONT","BGSOUND","BR","COL","COMMAND","EMBED","FRAME","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"],rt=[{tagName:"HEAD",accept:e=>!e.childNodes.length||1==e.childNodes[0].nodeType},{tagName:"BODY",accept:e=>!e.childNodes.length}],lt=[{tagName:"HTML",accept:e=>!e||8!=e.nodeType},{tagName:"HEAD",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"BODY",accept:e=>!e||8!=e.nodeType},{tagName:"LI",accept:(e,t)=>!e&&t.parentElement&&("UL"==mt(t.parentElement)||"OL"==mt(t.parentElement))||e&&["LI"].includes(mt(e))},{tagName:"DT",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"P",accept:e=>e&&["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DETAILS","DIV","DL","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","MAIN","NAV","OL","P","PRE","SECTION","TABLE","UL"].includes(mt(e))},{tagName:"DD",accept:e=>!e||["DT","DD"].includes(mt(e))},{tagName:"RT",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"RP",accept:e=>!e||["RT","RP"].includes(mt(e))},{tagName:"OPTGROUP",accept:e=>!e||["OPTGROUP"].includes(mt(e))},{tagName:"OPTION",accept:e=>!e||["OPTION","OPTGROUP"].includes(mt(e))},{tagName:"COLGROUP",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"CAPTION",accept:e=>!e||8!=e.nodeType&&(3!=e.nodeType||!ut(e.textContent))},{tagName:"THEAD",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TBODY",accept:e=>!e||["TBODY","TFOOT"].includes(mt(e))},{tagName:"TFOOT",accept:e=>!e},{tagName:"TR",accept:e=>!e||["TR"].includes(mt(e))},{tagName:"TD",accept:e=>!e||["TD","TH"].includes(mt(e))},{tagName:"TH",accept:e=>!e||["TD","TH"].includes(mt(e))}],dt=["STYLE","SCRIPT","XMP","IFRAME","NOEMBED","NOFRAMES","PLAINTEXT","NOSCRIPT"];function ct(e,t,s){return 3==e.nodeType?function(e){const t=e.parentNode;let s;t&&1==t.nodeType&&(s=mt(t));return!s||dt.includes(s)?("SCRIPT"!=s||t.type&&"text/javascript"!=t.type)&&"STYLE"!=s?e.textContent:e.textContent.replace(/<\//gi,"<\\/").replace(/\/>/gi,"\\/>"):e.textContent.replace(/&/g,"&").replace(/\u00a0/g," ").replace(//g,">")}(e):8==e.nodeType?"\x3c!--"+e.textContent+"--\x3e":1==e.nodeType?function(e,t,s){const o=mt(e),n=t&&rt.find(t=>o==mt(t)&&t.accept(e));let i="";n&&!e.attributes.length||(i="<"+o.toLowerCase(),Array.from(e.attributes).forEach(s=>i+=function(e,t,s){const o=e.name;let n="";if(!o.match(/["'>/=]/)){let i,a=e.value;s&&"class"==o&&(a=Array.from(t.classList).map(e=>e.trim()).join(" ")),a=a.replace(/&/g,"&").replace(/\u00a0/g," "),a.includes('"')&&(a.includes("'")||!s?a=a.replace(/"/g,"""):i=!0);const r=!s||a.match(/[ \t\n\f\r'"`=<>]/);n+=" ";const l=e.namespaceURI,d=e.localName||o;l?"http://www.w3.org/XML/1998/namespace"==l?n+="xml:"+d:"http://www.w3.org/2000/xmlns/"==l?n+="xmlns"===d?"xmlns":"xmlns:"+d:"http://www.w3.org/1999/xlink"==l?n+="xlink:"+d:e.prefix?n+=e.prefix+":"+d:n+=o:n+=o,""!=a&&(n+="=",r&&(n+=i?"'":'"'),n+=a,r&&(n+=i?"'":'"'))}return n}(s,e,t)),i+=">");"TEMPLATE"!=o||e.childNodes.length?Array.from(e.childNodes).forEach(e=>i+=ct(e,t,s||"svg"==o)):i+=e.innerHTML;const a=t&<.find(t=>o==mt(t)&&t.accept(e.nextSibling,e));(s||!a&&!at.includes(o))&&(i+=""+o.toLowerCase()+">");return i}(e,t,s):void 0}function ut(e){return Boolean(e.match(/^[ \t\n\f\r]/))}function mt(e){return e.tagName&&e.tagName.toUpperCase()}const gt={frameTree:Object.freeze({__proto__:null,TIMEOUT_INIT_REQUEST_MESSAGE:xe,cleanup:function(e){je.delete(e),Xe({windowId:Ye,sessionId:e})},getAsync:function(e){const t=Ke();return e=Ve.parse(Ve.stringify(e)),new Promise(s=>{je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{},resolve:e=>{e.sessionId=t,s(e)}}),$e({windowId:Ye,sessionId:t,options:e})})},getSync:function(e){const t=Ke();e=Ve.parse(Ve.stringify(e)),je.set(t,{frames:[],requestTimeouts:{},responseTimeouts:{}}),function(e){const t=e.sessionId;delete globalThis._singleFile_cleaningUp,ke||(Ye=globalThis.frameId=e.windowId);Je(Be,e.options,Ye,t),ke||(st({frames:[nt(Be,globalThis,Ye,e.options,e.scrolling)],sessionId:t,requestedFrameId:Be.documentElement.dataset.requestedFrameId&&Ye}),delete Be.documentElement.dataset.requestedFrameId)}({windowId:Ye,sessionId:t,options:e});const s=je.get(t).frames;return s.sessionId=t,s},initResponse:Ze})},ht={COMMENT_HEADER:"Page saved with SingleFile",COMMENT_HEADER_LEGACY:"Archive processed by SingleFile",ON_BEFORE_CAPTURE_EVENT_NAME:b,ON_AFTER_CAPTURE_EVENT_NAME:E,WAIT_FOR_USERSCRIPT_PROPERTY_NAME:f,preProcessDoc:oe,postProcessDoc:ce,serialize:(e,t)=>function(e,t){const s=e.doctype;let o="";return s&&(o=" "),o+ct(e.documentElement,t)}(e,t),getShadowRoot:re};e.helper=ht,e.processors=gt});
================================================
FILE: lib/single-file-extension-background.js
================================================
!function(){"use strict";self.oninstall=()=>skipWaiting(),self.onactivate=()=>clients.claim(),"undefined"==typeof globalThis&&(window.globalThis=window),(()=>{const e=globalThis.chrome;globalThis.__defineGetter__("browser",()=>({action:{onClicked:{addListener:t=>e.action.onClicked.addListener(t)},setBadgeText:t=>e.action.setBadgeText(t),setBadgeBackgroundColor:t=>e.action.setBadgeBackgroundColor(t),setTitle:t=>e.action.setTitle(t),setIcon:t=>e.action.setIcon(t)},bookmarks:{get:t=>e.bookmarks.get(t),onCreated:{addListener:t=>e.bookmarks.onCreated.addListener(t),removeListener:t=>e.bookmarks.onCreated.removeListener(t)},onChanged:{addListener:t=>e.bookmarks.onChanged.addListener(t),removeListener:t=>e.bookmarks.onChanged.removeListener(t)},onMoved:{addListener:t=>e.bookmarks.onMoved.addListener(t),removeListener:t=>e.bookmarks.onMoved.removeListener(t)},update:(t,a)=>e.bookmarks.update(t,a)},commands:{onCommand:{addListener:t=>e.commands.onCommand.addListener(t)}},downloads:{download:t=>e.downloads.download(t),onChanged:{addListener:t=>e.downloads.onChanged.addListener(t),removeListener:t=>e.downloads.onChanged.removeListener(t)},search:t=>e.downloads.search(t)},i18n:{getUILanguage:()=>e.i18n.getUILanguage(),getMessage:(t,a)=>e.i18n.getMessage(t,a)},identity:{getRedirectURL:()=>e.identity.getRedirectURL(),getAuthToken:t=>e.identity.getAuthToken(t),launchWebAuthFlow:t=>e.identity.launchWebAuthFlow(t),removeCachedAuthToken:t=>e.identity.removeCachedAuthToken(t)},contextMenus:{onClicked:{addListener:t=>e.contextMenus.onClicked.addListener(t)},create:t=>e.contextMenus.create(t),update:(t,a)=>e.contextMenus.update(t,a),removeAll:()=>e.contextMenus.removeAll()},permissions:{request:t=>e.permissions.request(t),remove:t=>e.permissions.remove(t)},runtime:{id:e.runtime.id,sendNativeMessage:(t,a)=>new Promise((n,o)=>{e.runtime.sendNativeMessage(t,a,t=>{e.runtime.lastError?o(e.runtime.lastError):n(t)})}),getManifest:()=>e.runtime.getManifest(),onMessage:{addListener:t=>e.runtime.onMessage.addListener((e,a,n)=>{const o=t(e,a);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{n(e)}catch(e){}}),!0}),removeListener:t=>e.runtime.onMessage.removeListener(t)},onMessageExternal:{addListener:t=>e.runtime.onMessageExternal.addListener((e,a,n)=>{const o=t(e,a);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{n(e)}catch(e){}}),!0})},sendMessage:t=>new Promise((a,n)=>{e.runtime.sendMessage(t,t=>{e.runtime.lastError?n(e.runtime.lastError):a(t)}),e.runtime.lastError&&n(e.runtime.lastError)}),getURL:t=>e.runtime.getURL(t),getContexts:t=>e.runtime.getContexts(t),get lastError(){return e.runtime.lastError}},scripting:{executeScript:t=>e.scripting.executeScript(t)},storage:{local:{set:t=>e.storage.local.set(t),get:t=>e.storage.local.get(t),clear:()=>e.storage.local.clear(),remove:t=>e.storage.local.remove(t)},sync:{set:t=>e.storage.sync.set(t),get:t=>e.storage.sync.get(t),clear:()=>e.storage.sync.clear(),remove:t=>e.storage.sync.remove(t)}},tabs:{onCreated:{addListener:t=>e.tabs.onCreated.addListener(t)},onActivated:{addListener:t=>e.tabs.onActivated.addListener(t)},onUpdated:{addListener:t=>e.tabs.onUpdated.addListener(t),removeListener:t=>e.tabs.onUpdated.removeListener(t)},onRemoved:{addListener:t=>e.tabs.onRemoved.addListener(t),removeListener:t=>e.tabs.onRemoved.removeListener(t)},onReplaced:{addListener:t=>e.tabs.onReplaced.addListener(t),removeListener:t=>e.tabs.onReplaced.removeListener(t)},captureVisibleTab:(t,a)=>e.tabs.captureVisibleTab(t,a),sendMessage:(t,a,n={})=>new Promise((o,r)=>{e.tabs.sendMessage(t,a,n,t=>{e.runtime.lastError?r(e.runtime.lastError):o(t)}),e.runtime.lastError&&r(e.runtime.lastError)}),query:t=>e.tabs.query(t),create:t=>e.tabs.create(t),get:t=>e.tabs.get(t),remove:t=>e.tabs.remove(t),update:(t,a)=>e.tabs.update(t,a)},devtools:{inspectedWindow:{onResourceContentCommitted:{addListener:t=>e.devtools.inspectedWindow.onResourceContentCommitted.addListener(t)},get tabId(){return e.devtools.inspectedWindow.tabId}}},offscreen:{createDocument:t=>e.offscreen.createDocument(t)},declarativeNetRequest:{updateSessionRules:t=>e.declarativeNetRequest.updateSessionRules(t)}}))})(),"undefined"==typeof globalThis&&(window.globalThis=window),(()=>{const e=globalThis.chrome;globalThis.__defineGetter__("browser",()=>({action:{onClicked:{addListener:t=>e.action.onClicked.addListener(t)},setBadgeText:t=>e.action.setBadgeText(t),setBadgeBackgroundColor:t=>e.action.setBadgeBackgroundColor(t),setTitle:t=>e.action.setTitle(t),setIcon:t=>e.action.setIcon(t)},bookmarks:{get:t=>e.bookmarks.get(t),onCreated:{addListener:t=>e.bookmarks.onCreated.addListener(t),removeListener:t=>e.bookmarks.onCreated.removeListener(t)},onChanged:{addListener:t=>e.bookmarks.onChanged.addListener(t),removeListener:t=>e.bookmarks.onChanged.removeListener(t)},onMoved:{addListener:t=>e.bookmarks.onMoved.addListener(t),removeListener:t=>e.bookmarks.onMoved.removeListener(t)},update:(t,a)=>e.bookmarks.update(t,a)},commands:{onCommand:{addListener:t=>e.commands.onCommand.addListener(t)}},downloads:{download:t=>e.downloads.download(t),onChanged:{addListener:t=>e.downloads.onChanged.addListener(t),removeListener:t=>e.downloads.onChanged.removeListener(t)},search:t=>e.downloads.search(t)},i18n:{getUILanguage:()=>e.i18n.getUILanguage(),getMessage:(t,a)=>e.i18n.getMessage(t,a)},identity:{getRedirectURL:()=>e.identity.getRedirectURL(),getAuthToken:t=>e.identity.getAuthToken(t),launchWebAuthFlow:t=>e.identity.launchWebAuthFlow(t),removeCachedAuthToken:t=>e.identity.removeCachedAuthToken(t)},contextMenus:{onClicked:{addListener:t=>e.contextMenus.onClicked.addListener(t)},create:t=>e.contextMenus.create(t),update:(t,a)=>e.contextMenus.update(t,a),removeAll:()=>e.contextMenus.removeAll()},permissions:{request:t=>e.permissions.request(t),remove:t=>e.permissions.remove(t)},runtime:{id:e.runtime.id,sendNativeMessage:(t,a)=>new Promise((n,o)=>{e.runtime.sendNativeMessage(t,a,t=>{e.runtime.lastError?o(e.runtime.lastError):n(t)})}),getManifest:()=>e.runtime.getManifest(),onMessage:{addListener:t=>e.runtime.onMessage.addListener((e,a,n)=>{const o=t(e,a);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{n(e)}catch(e){}}),!0}),removeListener:t=>e.runtime.onMessage.removeListener(t)},onMessageExternal:{addListener:t=>e.runtime.onMessageExternal.addListener((e,a,n)=>{const o=t(e,a);if(o&&"function"==typeof o.then)return o.then(e=>{if(void 0!==e)try{n(e)}catch(e){}}),!0})},sendMessage:t=>new Promise((a,n)=>{e.runtime.sendMessage(t,t=>{e.runtime.lastError?n(e.runtime.lastError):a(t)}),e.runtime.lastError&&n(e.runtime.lastError)}),getURL:t=>e.runtime.getURL(t),getContexts:t=>e.runtime.getContexts(t),get lastError(){return e.runtime.lastError}},scripting:{executeScript:t=>e.scripting.executeScript(t)},storage:{local:{set:t=>e.storage.local.set(t),get:t=>e.storage.local.get(t),clear:()=>e.storage.local.clear(),remove:t=>e.storage.local.remove(t)},sync:{set:t=>e.storage.sync.set(t),get:t=>e.storage.sync.get(t),clear:()=>e.storage.sync.clear(),remove:t=>e.storage.sync.remove(t)}},tabs:{onCreated:{addListener:t=>e.tabs.onCreated.addListener(t)},onActivated:{addListener:t=>e.tabs.onActivated.addListener(t)},onUpdated:{addListener:t=>e.tabs.onUpdated.addListener(t),removeListener:t=>e.tabs.onUpdated.removeListener(t)},onRemoved:{addListener:t=>e.tabs.onRemoved.addListener(t),removeListener:t=>e.tabs.onRemoved.removeListener(t)},onReplaced:{addListener:t=>e.tabs.onReplaced.addListener(t),removeListener:t=>e.tabs.onReplaced.removeListener(t)},captureVisibleTab:(t,a)=>e.tabs.captureVisibleTab(t,a),sendMessage:(t,a,n={})=>new Promise((o,r)=>{e.tabs.sendMessage(t,a,n,t=>{e.runtime.lastError?r(e.runtime.lastError):o(t)}),e.runtime.lastError&&r(e.runtime.lastError)}),query:t=>e.tabs.query(t),create:t=>e.tabs.create(t),get:t=>e.tabs.get(t),remove:t=>e.tabs.remove(t),update:(t,a)=>e.tabs.update(t,a)},devtools:{inspectedWindow:{onResourceContentCommitted:{addListener:t=>e.devtools.inspectedWindow.onResourceContentCommitted.addListener(t)},get tabId(){return e.devtools.inspectedWindow.tabId}}},offscreen:{createDocument:t=>e.offscreen.createDocument(t)},declarativeNetRequest:{updateSessionRules:t=>e.declarativeNetRequest.updateSessionRules(t)}}))})();const e=8388608;let t=1;async function a(t,a,n){for(let o=0;o*e<=n.array.length;o++){const r={method:"singlefile.fetchResponse",requestId:a,headers:n.headers,status:n.status,error:n.error};r.truncated=n.array.length>e,r.truncated?(r.finished=(o+1)*e>n.array.length,r.array=n.array.slice(o*e,(o+1)*e)):r.array=n.array,await browser.tabs.sendMessage(t,r)}return{}}browser.runtime.onMessage.addListener((e,n)=>{if(e.method&&e.method.startsWith("singlefile.fetch"))return new Promise(o=>{(async function(e,n){if("singlefile.fetch"==e.method)try{const o=await async function(e,a={}){a.cache="no-store";const n=await fetch(e,a);if(a.referrer&&(401==n.status||403==n.status||404==n.status)){const n=await async function(e,a){const n=t++;return await browser.declarativeNetRequest.updateSessionRules({addRules:[{action:{type:"modifyHeaders",requestHeaders:[{header:"Referer",operation:"set",value:a}]},condition:{initiatorDomains:[browser.runtime.id],urlFilter:e,resourceTypes:["xmlhttprequest"]},id:n}]}),n}(e,a.referrer);await new Promise(e=>setTimeout(e,1e3));try{const t=await fetch(e,a),n=Array.from(new Uint8Array(await t.arrayBuffer())),o={"content-type":t.headers.get("content-type")};return{array:n,headers:o,status:t.status}}finally{await async function(e){await browser.declarativeNetRequest.updateSessionRules({removeRuleIds:[e]})}(n)}}const o=Array.from(new Uint8Array(await n.arrayBuffer())),r={"content-type":n.headers.get("content-type")},i=n.status;return{array:o,headers:r,status:i}}(e.url,{referrer:e.referrer,headers:e.headers});return a(n.tab.id,e.requestId,o)}catch(t){return a(n.tab.id,e.requestId,{error:t.message,array:[]})}else if("singlefile.fetchFrame"==e.method)return browser.tabs.sendMessage(n.tab.id,e)})(e,n).then(o).catch(e=>o({error:e&&(e.message||e.toString())}))})}),browser.runtime.onMessage.addListener((e,t)=>{if("singlefile.frameTree.initResponse"==e.method||"singlefile.frameTree.ackInitRequest"==e.method)return browser.tabs.sendMessage(t.tab.id,e,{frameId:0}),Promise.resolve({})});const n=new Map;function o(e,t){e.delete(t)}browser.runtime.onMessage.addListener((e,t)=>{if("singlefile.lazyTimeout.setTimeout"==e.method){let a,r=n.get(t.tab.id);if(r)if(a=r.get(t.frameId),a){const t=a.get(e.type);t&&clearTimeout(t)}else a=new Map;const i=setTimeout(async()=>{try{const a=n.get(t.tab.id),r=a.get(t.frameId);a&&r&&o(r,e.type),await browser.tabs.sendMessage(t.tab.id,{method:"singlefile.lazyTimeout.onTimeout",type:e.type})}catch(e){}},e.delay);return r||(r=new Map,a=new Map,r.set(t.frameId,a),n.set(t.tab.id,r)),a.set(e.type,i),Promise.resolve({})}if("singlefile.lazyTimeout.clearTimeout"==e.method){let a=n.get(t.tab.id);if(a){const n=a.get(t.frameId);if(n){const t=n.get(e.type);t&&clearTimeout(t),o(n,e.type)}}return Promise.resolve({})}}),browser.tabs.onRemoved.addListener(e=>n.delete(e));async function r(e,t){let a;const n=new Promise((e,t)=>{browser.downloads.onChanged.addListener(function n(o){o.id==a&&o.state&&("complete"==o.state.current&&(browser.downloads.search({id:a}).then(t=>e({filename:t[0]&&t[0].filename})).catch(()=>e({})),browser.downloads.onChanged.removeListener(n)),"interrupted"==o.state.current&&(o.error&&"USER_CANCELED"==o.error.current?e({cancelled:!0}):t(new Error(o.state.current)),browser.downloads.onChanged.removeListener(n)))})});try{a=await browser.downloads.download(e)}catch(a){if(a.message){const n=a.message.toLowerCase(),o=n.includes("illegal characters")||n.includes("invalid filename");if(o&&e.filename.startsWith("."))return e.filename=t+e.filename,r(e,t);if(o&&e.filename.includes(","))return e.filename=e.filename.replace(/,/g,t),r(e,t);if(o&&e.filename.match(/\u200C|\u200D|\u200E|\u200F/))return e.filename=e.filename.replace(/\u200C|\u200D|\u200E|\u200F/g,t),r(e,t);if(o&&!e.filename.match(/^[\x00-\x7F]+$/))return e.filename=e.filename.replace(/[^\x00-\x7F]+/g,t),r(e,t);if((n.includes("'incognito'")||n.includes('"incognito"'))&&e.incognito)return delete e.incognito,r(e,t);if("conflictaction prompt not yet implemented"==n&&e.conflictAction)return delete e.conflictAction,r(e,t);if(n.includes("canceled"))return{cancelled:!0};throw a}throw a}return n}let i,s,c;async function l(e,t,a){e[a]&&!e[t]&&(e[t]=e[a],delete e[a])}async function d(e){s&&delete s[e];const t=await f();if(t[e]){const a=t[e].autoSave;t[e]={autoSave:a},await m(t)}}function u(e){return s||(s={}),void 0===e||s[e]||(s[e]={}),s}async function f(e){if(!i){const e=await browser.storage.local.get();i=e.tabsData||{}}return async function(){if(!c){c=!0;const e=await browser.tabs.query({currentWindow:!0,highlighted:!0});Object.keys(i).filter(t=>{if("autoSaveAll"!=t&&"autoSaveUnpinned"!=t&&"profileName"!=t)return!e.find(e=>e.id==t)}).forEach(e=>delete i[e]),await browser.storage.local.set({tabsData:i})}}(),void 0===e||i[e]||(i[e]={}),i}async function m(e){i=e,await browser.storage.local.set({tabsData:e})}setTimeout(()=>f().then(e=>i=e),0);const h="-",w="__Default_Settings__",p="__Disabled_Settings__",b="regexp:",g="profile_",y=!/Mobile.*Firefox/.test(navigator.userAgent),v=navigator.canShare&&navigator.canShare({files:[new File([new Blob([""],{type:"text/html"})],"test.html")]}),k=["~","+","\\\\","?","%","*",":","|",'"',"<",">","\0-",""],A=["~","+","?","%","*",":","|",'"',"<",">","\\\\","\0-",""],x=["~","+","?","%","*",":","|",""","<",">","\"],T={removeHiddenElements:!0,removedElementsSelector:"",removeUnusedStyles:!0,removeUnusedFonts:!0,removeFrames:!1,compressHTML:!0,compressCSS:!1,loadDeferredImages:!0,loadDeferredImagesMaxIdleTime:1500,loadDeferredImagesBlockCookies:!1,loadDeferredImagesBlockStorage:!1,loadDeferredImagesKeepZoomLevel:!1,loadDeferredImagesDispatchScrollEvent:!1,loadDeferredImagesBeforeFrames:!1,filenameTemplate:"%if-empty<{page-title}|No title> ({date-locale} {time-locale}).{filename-extension}",infobarTemplate:"",includeInfobar:!1,openInfobar:!1,confirmInfobarContent:!1,autoClose:!1,confirmFilename:!1,filenameConflictAction:"uniquify",filenameMaxLength:192,filenameMaxLengthUnit:"bytes",filenameReplacedCharacters:A,filenameReplacementCharacter:"_",filenameReplacementCharacters:x,replaceEmojisInFilename:!1,saveFilenameTemplateData:!1,contextMenuEnabled:!0,tabMenuEnabled:!0,browserActionMenuEnabled:!0,shadowEnabled:!0,logsEnabled:!0,progressBarEnabled:!0,maxResourceSizeEnabled:!1,maxResourceSize:10,displayInfobar:!0,displayStats:!1,backgroundSave:y,defaultEditorMode:"normal",applySystemTheme:!0,contentWidth:70,autoSaveDelay:1,autoSaveLoad:!1,autoSaveUnload:!1,autoSaveLoadOrUnload:!0,autoSaveDiscard:!1,autoSaveRemove:!1,autoSaveRepeat:!1,autoSaveRepeatDelay:10,removeAlternativeFonts:!0,removeAlternativeMedias:!0,removeAlternativeImages:!0,groupDuplicateImages:!0,maxSizeDuplicateImages:524288,saveRawPage:!1,saveToClipboard:!1,addProof:!1,saveToGDrive:!1,saveToDropbox:!1,saveWithWebDAV:!1,webDAVURL:"",webDAVUser:"",webDAVPassword:"",saveWithMCP:!1,mcpServerUrl:"",mcpAuthToken:"",saveToGitHub:!1,saveToRestFormApi:!1,saveToS3:!1,githubToken:"",githubUser:"",githubRepository:"SingleFile-Archives",githubBranch:"main",saveWithCompanion:!1,sharePage:!1,forceWebAuthFlow:!1,resolveFragmentIdentifierURLs:!1,userScriptEnabled:!1,openEditor:!1,openSavedPage:!1,autoOpenEditor:!1,saveCreatedBookmarks:!1,allowedBookmarkFolders:[],ignoredBookmarkFolders:[],replaceBookmarkURL:!0,saveFavicon:!0,includeBOM:!1,warnUnsavedPage:!0,displayInfobarInEditor:!1,compressContent:!1,createRootDirectory:!1,selfExtractingArchive:!1,disableCompression:!1,extractDataFromPage:!1,preventAppendedData:!1,insertEmbeddedImage:!1,insertEmbeddedScreenshotImage:!1,insertTextBody:!1,autoSaveExternalSave:!1,insertMetaNoIndex:!1,insertMetaCSP:!0,passReferrerOnError:!1,password:"",insertSingleFileComment:!0,removeSavedDate:!1,blockMixedContent:!1,saveOriginalURLs:!1,acceptHeaders:{font:"application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8",image:"image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",stylesheet:"text/css,*/*;q=0.1",script:"*/*",document:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",video:"video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5",audio:"audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5"},moveStylesInHead:!1,networkTimeout:0,woleetKey:"",blockImages:!1,blockAlternativeImages:!0,blockStylesheets:!1,blockFonts:!1,blockScripts:!0,blockVideos:!0,blockAudios:!0,delayBeforeProcessing:0,delayAfterProcessing:0,_migratedTemplateFormat:!0,saveToRestFormApiUrl:"",saveToRestFormApiFileFieldName:"",saveToRestFormApiUrlFieldName:"",saveToRestFormApiToken:"",S3Domain:"s3.amazonaws.com",S3Region:"",S3Bucket:"",S3AccessKey:"",S3SecretKey:"",resolveLinks:!0,groupDuplicateStylesheets:!1,infobarPositionAbsolute:!1,infobarPositionTop:"16px",infobarPositionRight:"16px",infobarPositionBottom:"",infobarPositionLeft:"",removeNoScriptTags:!0,customShortcut:null,imageReductionFactor:1},I=[{url:"file:",profile:"__Default_Settings__",autoSaveProfile:"__Disabled_Settings__"}],C={"page-title":"No title","page-heading":"No heading","page-language":"No language","page-description":"No description","page-author":"No author","page-creator":"No creator","page-publisher":"No publisher","url-hash":"No hash","url-host":"No host","url-hostname":"No hostname","url-href":"No href","url-href-digest-sha-1":"No hash","url-href-flat":"No href","url-referrer":"No referrer","url-referrer-flat":"No referrer","url-password":"No password","url-pathname":"No pathname","url-pathname-flat":"No pathname","url-port":"No port","url-protocol":"No protocol","url-search":"No search","url-username":"No username","tab-id":"No tab id","tab-index":"No tab index","url-last-segment":"No last segment"};let S,P=E();async function E(){const{sync:e}=await browser.storage.local.get();S=e?browser.storage.sync:browser.storage.local;const t=await S.get();if(t[g+w])t.profiles&&await S.remove(["profiles"]);else if(t.profiles){const e=Object.keys(t.profiles);for(const a of e)await j(a,t.profiles[a])}else await j(w,T);t.rules||await S.set({rules:I}),t.maxParallelWorkers||await S.set({maxParallelWorkers:navigator.hardwareConcurrency||4}),t.processInForeground||await S.set({processInForeground:!1});(await _()).map(async e=>{const t=await O(e);t._migratedTemplateFormat||(t.filenameTemplate=function(e){try{return Object.keys(C).forEach(t=>{const a=C[t];e=e.replaceAll(`{${t}}`,`%if-empty<{${t}}|${a}>`)}),e}catch(e){}}(t.filenameTemplate),t._migratedTemplateFormat=!0);for(const e of Object.keys(T))void 0===t[e]&&(t[e]=T[e]);Y(t.filenameReplacedCharacters,k)&&Y(t.filenameReplacementCharacters,x)&&(t.filenameReplacedCharacters=A),await j(e,t)})}async function L(e,t){const{rules:a}=await S.get(["rules"]),n=a.filter(e=>U(e));let o=n.sort(M).find(t=>e&&e.match(new RegExp(t.url.split(b)[1])));if(!o){const n=a.filter(e=>!U(e));o=n.sort(M).find(a=>!t&&"*"==a.url||e&&e.includes(a.url))}return o}async function R(){await P;const{maxParallelWorkers:e,processInForeground:t}=await S.get(["maxParallelWorkers","processInForeground"]),a=await N();return{profiles:await D(),rules:a,maxParallelWorkers:e,processInForeground:t}}function M(e,t){return t.url.length-e.url.length}function U(e){return e.url.toLowerCase().startsWith(b)}async function W(e){if(e.method.endsWith(".get"))return await R();if(e.method.endsWith(".set")){const{config:t}=e,a=t.profiles,n=t.rules,o=t.maxParallelWorkers,r=t.processInForeground,i=await B();await S.remove([...i,"rules","maxParallelWorkers","processInForeground"]),await S.set({rules:n,maxParallelWorkers:o,processInForeground:r}),Object.keys(a).forEach(e=>j(e,a[e]))}if(e.method.endsWith(".deleteRules")&&await async function(e){const t=await N();await S.set({rules:e?t.filter(t=>t.autoSaveProfile!=e&&t.profile!=e):[]})}(e.profileName),e.method.endsWith(".deleteRule")&&await async function(e){if(!e)throw new Error("URL is empty");const t=await N();await S.set({rules:t.filter(t=>t.url!=e)})}(e.url),e.method.endsWith(".addRule")&&await z(e.url,e.profileName,e.autoSaveProfileName),e.method.endsWith(".createProfile")&&await async function(e,t){if((await _()).includes(e))throw new Error("Duplicate profile name");const a=await O(t),n=JSON.parse(JSON.stringify(a));n.customShortcut=null,await j(e,n)}(e.profileName,e.fromProfileName||w),e.method.endsWith(".renameProfile")&&await async function(e,t){const a=await _(),n=await f(),o=await N();if(!a.includes(e))throw new Error("Profile not found");if(a.includes(t))throw new Error("Duplicate profile name");if(e==w)throw new Error("Default settings cannot be renamed");n.profileName==e&&(n.profileName=t,await m(n));o.forEach(a=>{a.profile==e&&(a.profile=t),a.autoSaveProfile==e&&(a.autoSaveProfile=t)});const r=await O(e);await S.remove([g+e]),await S.set({[g+t]:r,rules:o})}(e.profileName,e.newProfileName),e.method.endsWith(".deleteProfile")&&await async function(e){const t=await _(),a=await f(),n=await N();if(!t.includes(e))throw new Error("Profile not found");if(e==w)throw new Error("Default settings cannot be deleted");a.profileName==e&&(delete a.profileName,await m(a));n.forEach(t=>{t.profile==e&&(t.profile=w),t.autoSaveProfile==e&&(t.autoSaveProfile=w)}),S.remove([g+e]),await S.set({rules:n})}(e.profileName),e.method.endsWith(".resetProfiles")&&await async function(){await P;const e=await f();delete e.profileName,await m(e);let t=await B();await S.remove([...t,"rules","maxParallelWorkers","processInForeground"]),await E()}(),e.method.endsWith(".resetProfile")&&await async function(e){if(!(await _()).includes(e))throw new Error("Profile not found");await j(e,T)}(e.profileName),e.method.endsWith(".importConfig")&&await async function(e){const t=await _(),a=await B(),n=await f();t.includes(n.profileName)&&(delete n.profileName,await m(n));await S.remove([...a,"rules","maxParallelWorkers","processInForeground"]);const o={rules:e.rules,maxParallelWorkers:e.maxParallelWorkers,processInForeground:e.processInForeground};Object.keys(e.profiles).forEach(t=>o[g+t]=e.profiles[t]),await S.set(o),await E()}(e.config),e.method.endsWith(".updateProfile")&&await async function(e,t){if(!(await _()).includes(e))throw new Error("Profile not found");const a=await O(e);Object.keys(a).forEach(e=>{t[e]=void 0===t[e]?a[e]:t[e]}),await j(e,t)}(e.profileName,e.profile),e.method.endsWith(".updateRule")&&await q(e.url,e.newUrl,e.profileName,e.autoSaveProfileName),e.method.endsWith(".getConstants"))return{DISABLED_PROFILE_NAME:p,DEFAULT_PROFILE_NAME:w,CURRENT_PROFILE_NAME:h,BACKGROUND_SAVE_SUPPORTED:y,SHARE_API_SUPPORTED:v};if(e.method.endsWith(".getRules"))return N();if(e.method.endsWith(".getProfiles"))return D();if(e.method.endsWith(".exportConfig"))return async function(){const e=await R(),t=JSON.stringify({profiles:e.profiles,rules:e.rules,maxParallelWorkers:e.maxParallelWorkers,processInForeground:e.processInForeground},null,2),a=`singlefile-settings-${(new Date).toISOString().replace(/:/g,"_")}.json`,n={url:"data:text/json;base64,"+btoa(unescape(encodeURIComponent(t))),filename:a,saveAs:!0};await r(n,"_")}();if(e.method.endsWith(".enableSync")){await browser.storage.local.set({sync:!0});const e=await browser.storage.sync.get();if(!e||!e.rules){const e=await B(),t=await browser.storage.local.get(["rules","maxParallelWorkers","processInForeground",...e]);await browser.storage.sync.set(t)}return S=browser.storage.sync,await E(),{}}if(e.method.endsWith(".disableSync")){await browser.storage.local.set({sync:!1});const e=await browser.storage.sync.get(),t=await browser.storage.local.get();if(e&&e.rules&&(!t||!t.rules)){await browser.storage.local.set({rules:e.rules,maxParallelWorkers:e.maxParallelWorkers,processInForeground:e.processInForeground});const t={};await browser.storage.local.set(t)}return S=browser.storage.local,await E(),{}}return e.method.endsWith(".isSync")?{sync:(await browser.storage.local.get()).sync}:{}}async function D(){await P;const e=await B(),t=await S.get(e),a={};return Object.keys(t).forEach(e=>a[e.substring(8)]=t[e]),a}async function F(e,t){await P;const[a,n]=await Promise.all([L(e),f()]),o=n.profileName||w;let r;if(a){const e=a[t?"autoSaveProfile":"profile"];r=e==h?o:e}else r=o;const i=await O(r);return Object.assign({profileName:r},i)}async function N(){return(await S.get(["rules"])).rules}async function _(){return Object.keys(await S.get()).filter(e=>e.startsWith(g)).map(e=>e.substring(8))}async function B(){return Object.keys(await S.get()).filter(e=>e.startsWith(g))}async function O(e){const t=g+e;return(await S.get([t]))[t]}async function j(e,t){const a=g+e;await S.set({[a]:t})}async function z(e,t,a){if(!e)throw new Error("URL is empty");const n=await N();if(n.find(t=>t.url==e))throw new Error("URL already exists");n.push({url:e,profile:t,autoSaveProfile:a}),await S.set({rules:n})}async function q(e,t,a,n){if(!e||!t)throw new Error("URL is empty");const o=await N(),r=o.find(t=>t.url==e);if(!r)throw new Error("URL not found");if(o.find(a=>a.url==t&&a.url!=e))throw new Error("New URL already exists");r.url=t,r.profile=a,r.autoSaveProfile=n,await S.set({rules:o})}async function K(){return(await S.get()).authInfo}async function $(){return(await S.get()).dropboxAuthInfo}async function V(e){await S.set({authInfo:e})}async function G(e){await S.set({dropboxAuthInfo:e})}async function J(){let e=K();e.revokableAccessToken?V({revokableAccessToken:e.revokableAccessToken}):await S.remove(["authInfo"])}async function H(){let e=$();e.revokableAccessToken?G({revokableAccessToken:e.revokableAccessToken}):await S.remove(["dropboxAuthInfo"])}function Y(e,t){return e.length==t.length&&e.every((e,a)=>e==t[a])}async function Z(e){if(e){const[t,a]=await Promise.all([f(),L(e.url)]);return Boolean(t.autoSaveAll||t.autoSaveUnpinned&&!e.pinned||t[e.id]&&t[e.id].autoSave)&&(!a||a.autoSaveProfile!=p)}}const Q=33554432,X="/src/ui/pages/editor.html",ee=new Map,te=new Map,ae=browser.runtime.getURL(X);async function ne({tabIndex:e,content:t,filename:a,compressContent:n,selfExtractingArchive:o,disableCompression:r,extractDataFromPage:i,insertTextBody:s,insertMetaCSP:c,embeddedImage:l,url:d}){const u={active:!0,url:X};null!=e&&(u.index=e);const f=await browser.tabs.create(u);ee.set(f.id,{url:d,content:t,filename:a,compressContent:n,selfExtractingArchive:o,disableCompression:r,extractDataFromPage:i,insertTextBody:s,insertMetaCSP:c,embeddedImage:l})}function oe(e){return e.url==ae}async function re(e){return(await browser.tabs.query(e)).sort((e,t)=>e.index-t.index)}function ie(e){return new Promise((t,a)=>{browser.tabs.onUpdated.addListener(function n(o,r){if(r&&r.url&&r.url.startsWith(e)){browser.tabs.onUpdated.removeListener(n);const e=new URLSearchParams(new URL(r.url).search).get("code");e?(browser.tabs.remove(o),t(e)):a()}})})}async function se(e){const t=await browser.tabs.create({url:e.url,active:!0});return new Promise((e,a)=>{browser.tabs.onRemoved.addListener(function e(n){n==t.id&&(browser.tabs.onRemoved.removeListener(e),a(new Error("code_required")))})})}const ce="/src/ui/resources/icon_128.png",le="/src/ui/resources/icon_128_wait",de=browser.i18n.getMessage("buttonDefaultTooltip"),ue=browser.i18n.getMessage("buttonBlockedTooltip"),fe=browser.i18n.getMessage("buttonInitializingBadge"),me=browser.i18n.getMessage("buttonInitializingTooltip"),he=browser.i18n.getMessage("buttonErrorBadge"),we=browser.i18n.getMessage("buttonBlockedBadge"),pe=browser.i18n.getMessage("buttonOKBadge"),be=browser.i18n.getMessage("buttonSaveProgressTooltip"),ge=browser.i18n.getMessage("buttonUploadProgressTooltip"),ye=browser.i18n.getMessage("buttonAutoSaveActiveBadge"),ve=browser.i18n.getMessage("buttonAutoSaveActiveTooltip"),ke=[2,147,20,192],Ae=[4,229,36,192],xe={default:{setBadgeBackgroundColor:{color:ke},setBadgeText:{text:""},setTitle:{title:de},setIcon:{path:ce}},inject:{setBadgeBackgroundColor:{color:ke},setBadgeText:{text:fe},setTitle:{title:me}},execute:{setBadgeBackgroundColor:{color:Ae},setBadgeText:{text:fe}},progress:{setBadgeBackgroundColor:{color:Ae},setBadgeText:{text:""}},edit:{setBadgeBackgroundColor:{color:ke},setBadgeText:{text:""},setTitle:{title:de},setIcon:{path:ce}},end:{setBadgeBackgroundColor:{color:Ae},setBadgeText:{text:pe},setTitle:{title:de},setIcon:{path:ce}},error:{setBadgeBackgroundColor:{color:[229,4,12,192]},setBadgeText:{text:he},setTitle:{title:""},setIcon:{path:ce}},forbidden:{setBadgeBackgroundColor:{color:[255,255,255,1]},setBadgeText:{text:we},setTitle:{title:ue},setIcon:{path:ce}},autosave:{inject:{setBadgeBackgroundColor:{color:[64,64,64,192]},setBadgeText:{text:ye},setTitle:{title:ve},setIcon:{path:ce}},default:{setBadgeBackgroundColor:{color:[208,208,208,192]},setBadgeText:{text:ye},setTitle:{title:ve},setIcon:{path:ce}}}};let Te;function Ie(e,t){if(e.method.endsWith(".processInit")){delete u(t.tab.id)[t.tab.id].button,Le(t.tab)}var a,n,o;return e.method.endsWith(".processProgress")&&e.maxIndex&&(a=t.tab.id,n=e.index,o=e.maxIndex,Ee(a,n,o,be)),e.method.endsWith(".processEnd")&&Se(t.tab.id),e.method.endsWith(".processError")&&(e.error&&console.error("Initialization error",e.error),Ce(t.tab.id)),e.method.endsWith(".processCancelled")&&Pe(t.tab),Promise.resolve({})}function Ce(e){Re(e,Ue("error"))}function Se(e,t){Re(e,t?Ue("default",!0):Ue("end"))}function Pe(e){Le(e)}function Ee(e,t,a,n){const o=Math.max(Math.min(20,Math.floor(t/a*20)),0),r=Math.min(Math.floor(t/a*8),8),i=le+r+".png",s=Ue("progress");s.setTitle={title:n+5*o+"%"},s.setIcon={path:i},Re(e,s)}async function Le(e){const t=Ue("default",await Z(e));await Re(e.id,t)}async function Re(e,t){try{const a=u(e);if(t){a[e].button||(a[e].button={lastState:null});const n=a[e].button.lastState||{},o={};Object.keys(t).forEach(e=>{void 0!==t[e]&&JSON.stringify(n[e])!=JSON.stringify(t[e])&&(o[e]=t[e])}),Object.keys(o).length&&(a[e].button.lastState=t,await async function(e,t){for(const a of Object.keys(t))await Me(e,a,t[a])}(e,o))}}catch(e){}}async function Me(e,t,a){if(browser.action[t]){const n=JSON.parse(JSON.stringify(a));n.tabId=e,await browser.action[t](n)}}function Ue(e,t){return JSON.parse(JSON.stringify(t?xe.autosave[e]:xe[e]))}browser.action.onClicked.addListener(async e=>{const t=(await re({currentWindow:!0,highlighted:!0})).filter(t=>t.windowId===e.windowId&&(void 0===e.workspaceId||t.workspaceId===e.workspaceId));t.length<=1?function(e){Te.isSavingTab(e)?Te.cancelTab(e.id):Te.saveTabs([e])}(e):Te.saveTabs(t)});const We=browser.contextMenus,De="save-page",Fe="edit-and-save-page",Ne="save-with-profile",_e="save-selected-links",Be="view-pendings",Oe="select-profile",je="wasve-with-profile-",ze="select-profile-",qe="associate-with-profile",Ke="associate-with-profile-",$e="save-selected",Ve="save-frame",Ge="save-tabs",Je="save-selected-tabs",He="save-unpinned-tabs",Ye="save-all-tabs",Ze="batch-save-urls",Qe="button-"+Je,Xe="button-"+He,et="button-"+Ye,tt="auto-save",at="auto-save-disabled",nt="auto-save-tab",ot="auto-save-unpinned",rt="auto-save-all",it=browser.i18n.getMessage("menuCreateDomainRule"),st=browser.i18n.getMessage("menuUpdateRule"),ct=browser.i18n.getMessage("menuSavePage"),lt=browser.i18n.getMessage("menuSaveWithProfile"),dt=browser.i18n.getMessage("menuSaveSelectedLinks"),ut=browser.i18n.getMessage("menuEditPage"),ft=browser.i18n.getMessage("menuEditAndSavePage"),mt=browser.i18n.getMessage("menuViewPendingSaves"),ht=browser.i18n.getMessage("menuSaveSelection"),wt=browser.i18n.getMessage("menuSaveFrame"),pt=browser.i18n.getMessage("menuSaveTabs"),bt=browser.i18n.getMessage("menuSaveSelectedTabs"),gt=browser.i18n.getMessage("menuSaveUnpinnedTabs"),yt=browser.i18n.getMessage("menuSaveAllTabs"),vt=browser.i18n.getMessage("menuBatchSaveUrls"),kt=browser.i18n.getMessage("menuSelectProfile"),At=browser.i18n.getMessage("profileDefaultSettings"),xt=browser.i18n.getMessage("menuAutoSave"),Tt=browser.i18n.getMessage("menuAutoSaveDisabled"),It=browser.i18n.getMessage("menuAutoSaveTab"),Ct=browser.i18n.getMessage("menuAutoSaveUnpinnedTabs"),St=browser.i18n.getMessage("menuAutoSaveAllTabs"),Pt=[Fe,_e,$e,Ve,tt,qe],Et=new Map,Lt=new Map;let Rt,Mt,Ut,Wt=!0,Dt=!0,Ft=new Map;async function Nt(e){const[t,a]=await Promise.all([D(),f()]);let n=await F(e&&e.url);if(n){const o=["page","frame","image","link","video","audio","selection"],r=[];if(n.profileName==p&&(n=await F(),n.profileName=p),n.browserActionMenuEnabled&&r.push("action"),n.tabMenuEnabled)try{await We.create({id:"temporary-id",contexts:["tab"],title:"title"}),r.push("tab")}catch(e){n.tabMenuEnabled=!1}await We.removeAll();const i=r.concat(...o),s=n.contextMenuEnabled?i:r;if(We.create({id:De,contexts:s,title:ct}),We.create({id:Fe,contexts:s,title:ft}),We.create({id:_e,contexts:n.contextMenuEnabled?r.concat(["selection"]):r,title:dt}),Object.keys(t).length>1&&We.create({id:Ne,contexts:s,title:lt}),n.contextMenuEnabled&&We.create({id:"separator-1",contexts:o,type:"separator"}),We.create({id:$e,contexts:s,title:ht}),n.contextMenuEnabled&&We.create({id:Ve,contexts:["frame"],title:wt}),We.create({id:Ge,contexts:r,title:pt}),We.create({id:Qe,contexts:r,title:bt,parentId:Ge}),We.create({id:Xe,contexts:r,title:gt,parentId:Ge}),We.create({id:et,contexts:r,title:yt,parentId:Ge}),n.contextMenuEnabled&&(We.create({id:Je,contexts:o,title:bt}),We.create({id:He,contexts:o,title:gt}),We.create({id:Ye,contexts:o,title:yt}),We.create({id:"separator-2",contexts:o,type:"separator"})),Object.keys(t).length>1){We.create({id:Oe,title:kt,contexts:s}),We.create({id:je+"default",contexts:s,title:At,parentId:Ne});const r=ze+"default",i=!a.profileName||a.profileName==w;let c;We.create({id:r,type:"radio",contexts:s,title:At,checked:i,parentId:Oe}),Et.set(r,i),We.create({id:qe,title:it,contexts:s}),Lt.set(qe,it),e&&e.url&&(c=await L(e.url,!0));const l=Ke+"current",d=!c||c.profile==h;We.create({id:l,type:"radio",contexts:s,title:h,checked:d,parentId:qe}),Et.set(l,d);const u=Ke+"default",f=Boolean(c)&&c.profile==w;We.create({id:u,type:"radio",contexts:s,title:At,checked:f,parentId:qe}),Et.set(u,f),Ft=new Map,Object.keys(t).forEach((e,t)=>{if(e!=w){let n=je+t;We.create({id:n,contexts:s,title:e,parentId:Ne}),n=ze+t;let o=a.profileName==e;We.create({id:n,type:"radio",contexts:s,title:e,checked:o,parentId:Oe}),Et.set(n,o),n=Ke+t,o=Boolean(c)&&c.profile==e,We.create({id:n,type:"radio",contexts:s,title:e,checked:o,parentId:qe}),Et.set(n,o),Ft.set(e,t)}}),n.contextMenuEnabled&&We.create({id:"separator-3",contexts:o,type:"separator"})}We.create({id:tt,contexts:s,title:xt}),We.create({id:at,type:"radio",title:Tt,contexts:s,checked:!0,parentId:tt}),Et.set(at,!0),We.create({id:nt,type:"radio",title:It,contexts:s,checked:!1,parentId:tt}),Et.set(nt,!1),We.create({id:ot,type:"radio",title:Ct,contexts:s,checked:!1,parentId:tt}),Et.set(ot,!1),We.create({id:rt,type:"radio",title:St,contexts:s,checked:!1,parentId:tt}),Et.set(rt,!1),We.create({id:"separator-4",contexts:s,type:"separator"}),We.create({id:Ze,contexts:s,title:vt}),We.create({id:Be,contexts:s,title:mt})}Rt=!0,Mt&&(Mt=!1,(await browser.tabs.query({})).forEach(async e=>await Bt(e)))}async function _t(e){const t=await f(e.id);await async function(){const e=await browser.tabs.query({});return Promise.all(e.map(async e=>{const[t,a]=await Promise.all([F(e.url,!0),Z(e)]);try{await browser.tabs.sendMessage(e.id,{method:"content.init",autoSaveEnabled:a,options:t})}catch(e){}}))}(),await Le(e);try{await browser.runtime.sendMessage({method:"options.refresh",profileName:t.profileName})}catch(e){}}async function Bt(e){if(Rt){const t=[],a=await f(e.id);if(a[e.id].editorDetected)Ot(!1);else if(Ot(!0),t.push(zt(at,!a[e.id].autoSave)),t.push(zt(nt,a[e.id].autoSave)),t.push(zt(ot,Boolean(a.autoSaveUnpinned))),t.push(zt(rt,Boolean(a.autoSaveAll))),e&&e.url){const n=await F(e.url);t.push(async function(e,t){const a=Wt;Wt=t,(void 0===a||a!=t)&&await Nt(e)}(e,n.contextMenuEnabled)),t.push(jt(Fe,a[e.id].savedPageDetected?ut:ft)),t.push(We.update($e,{visible:!n.saveRawPage})),t.push(We.update(Fe,{visible:!n.openEditor||a[e.id].savedPageDetected}));let o=Ke+"default",r=it;const[i,s]=await Promise.all([D(),L(e.url)]);if(s){const e=Ft.get(s.profile);e&&(o=Ke+e,r=st)}Object.keys(i).length>1&&(Object.keys(i).forEach((e,a)=>{e==w?t.push(zt(Ke+"default",o==Ke+"default")):t.push(zt(Ke+a,o==Ke+a))}),t.push(jt(qe,r)))}await Promise.all(t)}}async function Ot(e){const t=Dt;if(Dt=e,void 0===t||t!=e){const t=[];try{Pt.forEach(a=>t.push(We.update(a,{visible:e}))),await Promise.all(t)}catch(e){}}}async function jt(e,t){const a=Lt.get(e);try{(void 0===a||a!=t)&&await We.update(e,{title:t}),Lt.set(e,t)}catch(e){}}async function zt(e,t){t=Boolean(t);try{await We.update(e,{checked:t}),Et.set(e,t)}catch(e){}}Promise.resolve().then(async function(){Nt(),We.onClicked.addListener(async(e,t)=>{if(e.menuItemId==De&&(e.linkUrl?Ut.saveUrls([e.linkUrl]):Ut.saveTabs([t])),e.menuItemId==Fe){(await f(t.id))[t.id].savedPageDetected?Ut.openEditor(t):e.linkUrl?Ut.saveUrls([e.linkUrl],{openEditor:!0}):Ut.saveTabs([t],{openEditor:!0})}if(e.menuItemId==_e&&Ut.saveSelectedLinks(t),e.menuItemId==Be&&await browser.tabs.create({active:!0,url:"/src/ui/pages/pendings.html"}),e.menuItemId==$e&&Ut.saveTabs([t],{selected:!0}),e.menuItemId==Ve&&Ut.saveTabs([t],{frameId:e.frameId}),e.menuItemId==Je||e.menuItemId==Qe){const e=await re({currentWindow:!0,highlighted:!0});Ut.saveTabs(e)}if(e.menuItemId==He||e.menuItemId==Xe){const e=await re({currentWindow:!0,pinned:!1});Ut.saveTabs(e)}if(e.menuItemId==Ye||e.menuItemId==et){const e=await re({currentWindow:!0});Ut.saveTabs(e)}if(e.menuItemId==Ze&&Ut.batchSaveUrls(),e.menuItemId==nt){const e=await f(t.id);e[t.id].autoSave=!0,await m(e),_t(t)}if(e.menuItemId==at){const e=await f();Object.keys(e).forEach(t=>{"object"==typeof e[t]&&e[t].autoSave&&(e[t].autoSave=!1)}),e.autoSaveUnpinned=e.autoSaveAll=!1,await m(e),_t(t)}if(e.menuItemId==rt){const a=await f();a.autoSaveAll=e.checked,await m(a),_t(t)}if(e.menuItemId==ot){const a=await f();a.autoSaveUnpinned=e.checked,await m(a),_t(t)}if(e.menuItemId.startsWith(je)){const a=await D(),n=e.menuItemId.split(je)[1];let o;if("default"==n)o=w;else{const e=Number(n);o=Object.keys(a)[e]}a[o].profileName=o,Ut.saveTabs([t],a[o])}if(e.menuItemId.startsWith(ze)){const[a,n]=await Promise.all([D(),f()]),o=e.menuItemId.split(ze)[1];if("default"==o)n.profileName=w;else{const e=Number(o);n.profileName=Object.keys(a)[e]}await m(n),_t(t)}if(e.menuItemId.startsWith(Ke)){const[a,n]=await Promise.all([D(),L(t.url,!0)]),o=e.menuItemId.split(Ke)[1];let r;if("default"==o)r=w;else if("current"==o)r=h;else{const e=Number(o);r=Object.keys(a)[e]}n?await q(n.url,n.url,r,r):(await jt(qe,st),await z(new URL(t.url).hostname,r,r))}}),Rt?Mt=!0:(await browser.tabs.query({})).forEach(async e=>await Bt(e))});let qt;function Kt(e,t){return e.method.endsWith(".refreshMenu")?function(e){if(e.method.endsWith("refreshMenu"))return Nt(),Promise.resolve({})}(e):Ie(e,t)}function $t(e){!function(e){Re(e.id,Ue("forbidden"))}(e)}function Vt(e,t,a){!function(e,t,a){let n;a?n=Ue("inject",!0):(n=Ue(1==t?"inject":"execute"),n.setTitle={title:me+" ("+t+"/2)"},n.setIcon={path:le+"0.png"}),Re(e,n)}(e,t,a)}async function Gt(e,t,a){Ce(e);try{t&&await browser.tabs.sendMessage(e,{method:"content.error",error:t.toString(),link:a})}catch(e){}}function Jt(e){!function(e){Re(e,Ue("edit"))}(e)}function Ht(e,t){Se(e,t)}function Yt(e,t,a){!function(e,t,a){Ee(e,t,a,ge)}(e,t,a)}function Zt(e){Bt(e)}browser.commands.onCommand.addListener(async e=>{if("save-selected-tabs"==e){const e=await re({currentWindow:!0,highlighted:!0});qt.saveTabs(e,{optionallySelected:!0})}else if("save-all-tabs"==e){const e=await re({currentWindow:!0});qt.saveTabs(e)}else if(e.startsWith("custom-command-")){const t=await D();let a;if(Object.keys(t).some(n=>t[n].customShortcut==e&&(a=n,!0)),a){const e=await re({currentWindow:!0,highlighted:!0});qt.saveTabs(e,t[a])}}});const Qt="Could not establish connection. Receiving end does not exist.",Xt="The message port closed before a response was received.",ea="Message manager disconnected",ta="Cannot access contents of url ",aa="A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received",na="pending",oa="processing",ra=["lib/single-file.js","lib/single-file-extension.js"],ia=["lib/chrome-browser-polyfill.js","lib/single-file-frames.js","lib/single-file-extension-frames.js"],sa=["lib/single-file-hooks-frames.js"],ca=["lib/chrome-browser-polyfill.js","lib/single-file-bootstrap.js","lib/single-file-extension-bootstrap.js","lib/single-file-infobar.js"],la=[];let da,ua,fa=0;var ma;async function ha(e){let t;try{t=await xa(e.id)}catch(e){}if(t){const t=await browser.tabs.sendMessage(e.id,{method:"content.getSelectedLinks"});if(t.urls&&t.urls.length){const e=await wa(),a=(n,o)=>{"complete"==o.status&&n==e.id&&(browser.tabs.onUpdated.removeListener(a),browser.tabs.sendMessage(e.id,{method:"newUrls.addURLs",urls:t.urls}))};browser.tabs.onUpdated.addListener(a)}}else $t(e)}async function wa(){return browser.tabs.create({active:!0,url:"/src/ui/pages/batch-save-urls.html"})}async function pa(e,t={}){await ya(),await Promise.all(e.map(async e=>{const a=await F(e);a.profileName!=p&&(Object.keys(t).forEach(e=>a[e]=t[e]),a.autoClose=!0,a.originalUrl=e,ga({tab:{url:e},status:na,options:a,method:"content.save"}))})),va()}async function ba(e,t={}){await ya(),await Promise.all(e.map(async e=>{const a=e.id,n=await F(e.url);if(n.profileName!=p){Object.keys(t).forEach(e=>n[e]=t[e]),n.tabId=a,n.tabIndex=e.index;const o={id:e.id,index:e.index,url:e.url,title:e.title};if(t.autoSave){if(Z(e)){ka(ga({status:oa,tab:o,options:n,method:"content.autosave"}))}}else{let t;Vt(a,1);try{t=await xa(a,n)}catch(e){}t||oe(e)?(Vt(a,2),ga({status:na,tab:o,options:n,method:"content.save"})):$t(e)}}else $t(e)})),va()}function ga(e){const t={id:fa,status:e.status,tab:e.tab,options:e.options,method:e.method,done:function(e=!0){const t=la.findIndex(e=>e.id==this.id);t>-1&&(la.splice(t,1),e&&va())}};return la.push(t),fa++,t}async function ya(){if(!da){const e=await R();ua=e.processInForeground,da=ua?1:e.maxParallelWorkers}}function va(){const e=la.filter(e=>e.status==oa).length;for(let t=0;te.status==na);e&&ka(e)}}async function ka(e){const t=e.id;if(e.status=oa,!e.tab.id){let t;try{const a=await async function(e){const t=await browser.tabs.create(e);return new Promise((e,a)=>{function n(a,r){a==t.id&&"complete"==r.status&&(e(t),browser.tabs.onUpdated.removeListener(n),browser.tabs.onRemoved.removeListener(o))}function o(e){e==t.id&&(a(e),browser.tabs.onRemoved.removeListener(o))}browser.tabs.onUpdated.addListener(n),browser.tabs.onRemoved.addListener(o)})}({url:e.tab.url,active:!1});e.tab.id=e.options.tabId=a.id,e.tab.index=e.options.tabIndex=a.index,Vt(e.tab.id,1);try{t=await xa(e.tab.id,e.options)}catch(e){}}catch(t){e.tab.id=t}if(!t)return void e.done();Vt(e.tab.id,2)}e.options.taskId=t;try{ua&&await browser.tabs.update(e.tab.id,{active:!0}),await browser.tabs.sendMessage(e.tab.id,{method:e.method,options:e.options})}catch(t){!t||t.message&&function(e){return e.message==Xt||e.message==Qt||e.message==ea||e.message==aa||e.message.startsWith(ta+JSON.stringify(ae))}(t)||(console.log(t.message?t.message:t),Gt(e.tab.id,t.message,t.link),e.done())}}function Aa(e){const t=la.find(t=>t.id==e);t&&(t.options.autoClose&&!t.cancelled&&browser.tabs.remove(t.tab.id),t.done())}async function xa(e,t={},a=!0){let n;const o=(await browser.scripting.executeScript({target:{tabId:e},func:()=>Boolean(window.singlefile)}))[0];if(n=o&&o.result,n)try{await browser.scripting.executeScript({target:{tabId:e},files:ra})}catch(e){}else try{if(await browser.scripting.executeScript({target:{tabId:e,allFrames:!0},files:ia}),await browser.scripting.executeScript({target:{tabId:e},files:ca}),await browser.scripting.executeScript({target:{tabId:e,allFrames:!0},files:sa,world:"MAIN"}),a)return await xa(e,t,!1)}catch(e){}return n&&t.frameId&&await browser.scripting.executeScript({target:{tabId:e,frameIds:[t.frameId]},func:()=>document.documentElement.dataset.requestedFrameId=!0}),n}function Ta(e,t){const a=la.find(t=>t.id==e);a&&(a.cancel=t)}function Ia(e,t=!0){Array.from(la).filter(a=>a.tab.id==e&&!a.options.autoSave&&(t||a.status!=oa)).forEach(Sa)}function Ca(e){return la.find(t=>t.id==e)}function Sa(e,t){const a=e.tab.id;e.cancelled=!0,a&&(browser.tabs.sendMessage(a,{method:"content.cancelSave",options:{loadDeferredImages:e.options.loadDeferredImages,loadDeferredImagesKeepZoomLevel:e.options.loadDeferredImagesKeepZoomLevel}}).catch(()=>{}),"content.autosave"==e.method&&Ht(a,!0),function(e){Pe(e)}(e.tab)),e.cancel&&e.cancel(),e.done(t)}function Pa(e){return{id:e.id,tabId:e.tab.id,index:e.tab.index,url:e.tab.url,title:e.tab.title,cancelled:e.cancelled,status:e.status}}(function(e){Ut=e})(ma={isSavingTab:function(e){return Boolean(la.find(t=>t.tab.id==e.id))},saveTabs:ba,saveUrls:pa,cancelTab:Ia,openEditor:function(e){browser.tabs.sendMessage(e.id,{method:"content.openEditor"})},saveSelectedLinks:ha,batchSaveUrls:wa}),function(e){Te=e}(ma),function(e){qt=e}(ma);async function Ea(e){let t;try{t=await browser.runtime.sendNativeMessage("singlefile_companion",{method:"save",pageData:e})}catch(e){if(!e.message||!e.message.includes("Native host has exited"))throw e}if(t&&t.error)throw new Error(t.error+" (Companion)")}const La=new Set;async function Ra(e){return e.method.endsWith(".saveCreatedBookmarks")?(Ma(),{}):e.method.endsWith(".disable")?(async function(){let e;const t=await D();Object.keys(t).forEach(a=>e=e||!t[a].saveCreatedBookmarks),e&&(browser.bookmarks.onCreated.removeListener(Wa),browser.bookmarks.onMoved.removeListener(Da))}(),{}):void 0}async function Ma(){try{browser.bookmarks.onCreated.removeListener(Wa),browser.bookmarks.onMoved.removeListener(Da)}catch(e){}let e;const t=await D();Object.keys(t).forEach(a=>{t[a].saveCreatedBookmarks&&(e=!0)}),e&&(browser.bookmarks.onCreated.addListener(Wa),browser.bookmarks.onMoved.addListener(Da))}async function Ua(e,t){try{await browser.bookmarks.update(e,t)}catch(e){}}async function Wa(e,t){La.add(e),await Fa(e,t.url,t)}async function Da(e,t){if(La.has(e)){const a=await browser.bookmarks.get(e);a[0]&&await Fa(e,a[0].url,t)}}async function Fa(e,t,a){const n=await browser.tabs.query({lastFocusedWindow:!0,active:!0}),o=await F(t);if(o.saveCreatedBookmarks){const i=await async function e(t,a=[]){if(t){const n=(await browser.bookmarks.get(t))[0];n&&n.title&&(a.unshift(n.title),await e(n.parentId,a))}return a}(a.parentId),s=o.allowedBookmarkFolders.toString(),c=i.find(e=>o.allowedBookmarkFolders.includes(e)),l=o.ignoredBookmarkFolders.toString(),d=i.find(e=>o.ignoredBookmarkFolders.includes(e));if((s&&c||!s)&&(l&&!d||!l))if(n.length&&n[0].url==t)La.delete(e),ba(n,{bookmarkId:e,bookmarkFolders:i});else{const a=await browser.tabs.query({});if(a.length){const n=a.find(e=>e.url==t);n?(La.delete(e),ba([n],{bookmarkId:e,bookmarkFolders:i})):t&&("about:blank"==t?browser.bookmarks.onChanged.addListener(function t(a,n){a==e&&n.url&&(browser.bookmarks.onChanged.removeListener(t),r(n.url))}):r(t))}}}function r(t){La.delete(e),pa([t],{bookmarkId:e})}}Promise.resolve().then(Ma);async function Na(e,t){let a=t||"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYzZmZTMzMi0wODNjLTRjZmMtYmYxNC0xNWU5MTJmMWY4OWIiLCJpYXQiOjE1NzYxNzQzNDV9.n31j9ctJj7R1Vjwyc5yd1d6Cmg0NDnpwSaLWsqtZJQA";const n=await fetch("https://api.woleet.io/v1/anchor",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+a},body:JSON.stringify({name:e,hash:e,public:!0})});if(401==n.status){const e=new Error("Your access token on Woleet is invalid. Go to __DOC_LINK__ to create your account.");throw e.link="https://app.woleet.io/",e}if(402==n.status){const e=new Error("You have no more credits on Woleet. Go to __DOC_LINK__ to recharge them.");throw e.link="https://app.woleet.io/",e}if(n.status>=400)throw new Error((n.statusText||"Error "+n.status)+" (Woleet)");return n.json()}const _a="https://oauth2.googleapis.com/token",Ba="https://www.googleapis.com/drive/v3/files",Oa="uniquify";let ja=class{constructor(e){this.file=e.file,this.onProgress=e.onProgress,this.contentType=this.file.type||"application/octet-stream",this.metadata={name:e.filename,mimeType:this.contentType,parents:e.parents||["root"]},this.token=e.token,this.offset=0,this.chunkSize=e.chunkSize||524288,this.filenameConflictAction=e.filenameConflictAction,this.prompt=e.prompt}async upload(e=1){let t,a="POST";const n=Ja(await fetch(Ba+`?q=name = '${this.metadata.name}' and trashed != true and '${this.metadata.parents[0]}' in parents`,{headers:{Authorization:"Bearer "+this.token,"Content-Type":"application/json"}})),o=await n.json();if(o.files.length)if("overwrite"==this.filenameConflictAction)a="PATCH",t=o.files[0].id,this.metadata.parents=null;else if(this.filenameConflictAction==Oa){let t=this.metadata.name,a="";const n=this.metadata.name.lastIndexOf(".");n>-1&&(t=this.metadata.name.substring(0,n),a=this.metadata.name.substring(n+1));const o=t+" ("+e+")."+a,r=Ja(await fetch(Ba+`?q=name = '${o}' and trashed != true and '${this.metadata.parents[0]}' in parents`,{headers:{Authorization:"Bearer "+this.token,"Content-Type":"application/json"}}));if((await r.json()).files.length)return this.upload(e+1);this.metadata.name=o}else{if("prompt"==this.filenameConflictAction){if(this.prompt){const t=await this.prompt(this.metadata.name);return t?(this.metadata.name=t,this.upload(e)):o}return this.filenameConflictAction=Oa,this.upload(e)}if("skip"==this.filenameConflictAction)return o}const r=Ja(await fetch("https://www.googleapis.com/upload/drive/v3/files"+(t?"/"+t:"")+"?uploadType=resumable",{method:a,headers:{Authorization:"Bearer "+this.token,"Content-Type":"application/json","X-Upload-Content-Length":this.file.size,"X-Upload-Content-Type":this.contentType},body:JSON.stringify(this.metadata)})).headers.get("Location");if(this.url=r,!this.cancelled)return this.onProgress&&this.onProgress(0,this.file.size),Va(this)}};async function za(e,t){const a=await fetch(_a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"client_id="+e.clientId+"&client_secret="+e.clientKey+"&grant_type=authorization_code&code="+t.code+"&redirect_uri="+browser.identity.getRedirectURL()}),n=await Ga(a);return e.accessToken=n.access_token,e.refreshToken=n.refresh_token,e.expirationDate=Date.now()+1e3*n.expires_in,{accessToken:e.accessToken,refreshToken:e.refreshToken,expirationDate:e.expirationDate}}function qa(e={}){return Boolean(browser.identity&&browser.identity.getAuthToken)&&!e.forceWebAuthFlow}async function Ka(e,t,a=!0){const n=t.split("/");n.pop();const o=e.folderIds.get(n.join("/"));if(o)return o;let r="root";if(n.length){let o="";for(const i of n){o&&(o+="/"),o+=i;const n=e.folderIds.get(o);if(n)r=n;else try{r=await $a(e,i,r),e.folderIds.set(o,r)}catch(n){if("path_not_found"==n.message&&a)return e.folderIds.clear(),Ka(e,t,!1);throw n}}}return r}async function $a(e,t,a){const n=await async function(e,t,a){const n=await fetch(Ba+"?q=mimeType = 'application/vnd.google-apps.folder' and name = '"+t+"' and trashed != true and '"+a+"' in parents",{headers:{Authorization:"Bearer "+e.accessToken}});return Ga(n)}(e,t,a);if(n.files.length)return n.files[0].id;{const n=await async function(e,t,a){const n=await fetch(Ba,{method:"POST",headers:{Authorization:"Bearer "+e.accessToken,"Content-Type":"application/json"},body:JSON.stringify({name:t,parents:[a],mimeType:"application/vnd.google-apps.folder"})});return Ga(n)}(e,t,a);return n.id}}async function Va(e){let t=e.file,a=e.file.size;(e.offset||e.chunkSize)&&(e.chunkSize&&(a=Math.min(e.offset+e.chunkSize,e.file.size)),t=t.slice(e.offset,a));const n=await fetch(e.url,{method:"PUT",headers:{Authorization:"Bearer "+e.token,"Content-Type":e.contentType,"Content-Range":"bytes "+e.offset+"-"+(a-1)+"/"+e.file.size,"X-Upload-Content-Type":e.contentType},body:t});if(e.onProgress&&!e.cancelled&&e.onProgress(e.offset+e.chunkSize,e.file.size),200==n.status||201==n.status)return n.json();if(308==n.status){const t=n.headers.get("Range");if(t&&(e.offset=parseInt(t.match(/\d+/g).pop(),10)+1),e.cancelled)throw new Error("upload_cancelled");return Va(e)}Ja(n)}async function Ga(e){e=Ja(e);const t=await e.json();if(t.error)throw new Error(t.error);return t}function Ja(e){if(200==e.status)return e;throw 404==e.status?new Error("path_not_found"):401==e.status?new Error("invalid_token"):new Error("unknown_error ("+e.status+")")}const Ha="https://api.dropboxapi.com/oauth2/token",Ya="uniquify",Za="prompt",Qa=/[\u007f-\uffff]/g;class Xa{constructor(e){this.file=e.file,this.onProgress=e.onProgress,this.contentType=this.file.type||"application/octet-stream",this.metadata={name:e.filename,mimeType:this.contentType},this.token=e.token,this.offset=0,this.chunkSize=e.chunkSize||8388608,this.filenameConflictAction=e.filenameConflictAction,this.prompt=e.prompt}async upload(){const e=nn(await fetch("https://api.dropboxapi.com/2/files/search_v2",{method:"POST",headers:{Authorization:"Bearer "+this.token,"Content-Type":"application/json"},body:on({query:this.metadata.name,options:{filename:!0}})})),t=await an(e);if(t.matches.length)if(this.filenameConflictAction==Za)if(this.prompt){const e=await this.prompt(this.metadata.name);if(!e)return t;this.metadata.name=e}else this.filenameConflictAction=Ya;else if("skip"==this.filenameConflictAction)return t;const a=nn(await fetch("https://content.dropboxapi.com/2/files/upload_session/start",{method:"POST",headers:{Authorization:"Bearer "+this.token,"Dropbox-API-Arg":on({close:!1}),"Content-Type":"application/octet-stream"}})),n=(await an(a)).session_id;if(this.sessionId=n,!this.cancelled)return this.onProgress&&this.onProgress(0,this.file.size),tn(this)}}async function en(e,t){const a=await fetch(Ha,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"client_id="+e.clientId+"&client_secret="+e.clientKey+"&grant_type=authorization_code&code="+t.code+"&redirect_uri="+browser.identity.getRedirectURL()}),n=await an(a);return e.accessToken=n.access_token,e.refreshToken=n.refresh_token,e.expirationDate=Date.now()+1e3*n.expires_in,{accessToken:e.accessToken,refreshToken:e.refreshToken,expirationDate:e.expirationDate}}async function tn(e){let t=e.file,a=e.file.size;(e.offset||e.chunkSize)&&(e.chunkSize&&(a=Math.min(e.offset+e.chunkSize,e.file.size)),t=t.slice(e.offset,a));const n=nn(await fetch("https://content.dropboxapi.com/2/files/upload_session/append_v2",{method:"POST",headers:{Authorization:"Bearer "+e.token,"Content-Type":"application/octet-stream","Dropbox-API-Arg":on({cursor:{session_id:e.sessionId,offset:e.offset},close:a==e.file.size})},body:t}));if(e.onProgress&&!e.cancelled&&e.onProgress(e.offset+e.chunkSize,e.file.size),200==n.status&&(e.offset=a,e.offset=wn){if(n=await l(e,"DELETE"),n.status>=wn)throw new Error(un+n.status);return await bn(e,t,a)}}else{let n=await l(e,"HEAD");if(200==n.status){if("uniquify"==o||o==sn&&!r){const{filenameWithoutExtension:n,extension:o,indexFilename:r}=function(e){let t=e,a=rn;const n=e.lastIndexOf(".");n>-1&&(t=e.substring(0,n),a=e.substring(n+1));let o;return({filenameWithoutExtension:t,indexFilename:o}=function(e){const t=e.match(fn);let a=0;if(t&&t.length>1){const n=Number(t[t.length-1]);Number.isNaN(n)||(a=n,e=e.replace(fn,rn))}return{filenameWithoutExtension:e,indexFilename:a}}(t)),{filenameWithoutExtension:t,extension:a,indexFilename:o}}(e);return a.indexFilename=r+1,await bn(function(e,t){return e+" ("+a.indexFilename+")"+(t?dn+t:rn)}(n,o),t,a)}if(o==sn)return(e=await r(e))?bn(e,t,a):n;if("skip"==o)return n}else{if(404==n.status){if(n=await l(e,"PUT",t),n.status>=wn&&!s){if(e.includes(ln))return await async function(){const t=e.split(ln);t.pop();let a=rn;for(const e of t)if(e){a+=e;if(404==(await l(a,mn)).status){const e=await l(a,hn);if(e.status>=wn)throw new Error(un+e.status)}a+=ln}}(),a.preventRetry=!0,await bn(e,t,a);throw new Error(un+n.status)}return n}if(n.status>=wn)throw new Error(un+n.status)}}}catch(e){if("AbortError"!=e.name)throw e}function l(e,t,a){const o={[cn]:n};return a&&(o["Content-Type"]="text/html"),fetch(c+e,{method:t,headers:o,signal:i,body:a,credentials:"omit"})}}const gn="",yn="skip",vn="uniquify",kn="overwrite",An="prompt",xn=".",Tn=/\s\((\d+)\)$/,In="AbortError",Cn="https://github.com",Sn="https://api.github.com",Pn="blob",En="repos",Ln="contents";let Rn;class Mn{constructor(e,t,a,n){this.headers=new Map([["Authorization","Bearer "+e],["Accept","application/vnd.github+json"],["X-GitHub-Api-Version","2022-11-28"]]),this.userName=t,this.repositoryName=a,this.branch=n}async upload(e,t,a){this.controller=new AbortController,a.signal=this.controller.signal,a.headers=this.headers;const n=t instanceof Blob?await(o=t,new Promise((e,t)=>{const a=new FileReader;a.onloadend=()=>e(a.result.match(/^data:[^,]+,(.*)$/)[1]),a.onerror=e=>t(e.detail),a.readAsDataURL(o)})):btoa(unescape(encodeURIComponent(t)));var o;return async function(e,t,a,n,o,r){const{filenameConflictAction:i,prompt:s,signal:c,headers:l}=r;for(;Rn;)await Rn;try{Rn=await d({path:n,content:o})}finally{Rn=null}return{url:`${Cn}/${e}/${t}/${Pn}/${a}/${n}`};async function d({path:n,content:o,message:f="",sha:h}){try{const e=await w("PUT",JSON.stringify({content:o,message:f,branch:a,sha:h})),t=await e.json();if(422==e.status){if(i==kn){const e=await w("GET"),t=(await e.json()).sha;return await d({path:n,content:o,message:f,sha:t})}if(i==vn){const{filenameWithoutExtension:e,extension:t,indexFilename:a}=u(n);return r.indexFilename=a+1,n=m(e,t),await d({path:n,content:o,message:f})}if(i==yn)return t;if(i==An)return s?(n=await s(n))?await d({path:n,content:o,message:f}):t:(r.filenameConflictAction=vn,await d({path:n,content:o,message:f}))}if(e.status<400)return t;throw new Error(t.message)}catch(e){if(e.name!=In)throw e}function w(a,o){return fetch(`${Sn}/${En}/${e}/${t}/${Ln}/${n}`,{method:a,headers:l,body:o,signal:c})}}function u(e){let t=e,a=gn;const n=e.lastIndexOf(xn);let o;return n>-1&&(t=e.substring(0,n),a=e.substring(n+1)),({filenameWithoutExtension:t,indexFilename:o}=f(t)),{filenameWithoutExtension:t,extension:a,indexFilename:o}}function f(e){const t=e.match(Tn);let a=0;if(t&&t.length>1){const n=Number(t[t.length-1]);Number.isNaN(n)||(a=n,e=e.replace(Tn,gn))}return{filenameWithoutExtension:e,indexFilename:a}}function m(e,t){return e+" ("+r.indexFilename+")"+(t?xn+t:gn)}}(this.userName,this.repositoryName,this.branch,e,n,a)}abort(){this.controller&&this.controller.abort()}}const Un="",Wn="uniquify",Dn=".",Fn=/\s\((\d+)\)$/;class Nn{constructor(e,t,a,n,o="s3.amazonaws.com"){this.api=new zn({domain:o,region:e,bucket:t,accessKey:a,secretKey:n}),this.headObjectSupported=!0,this.listObjectsSupported=!0}async upload(e,t,a){const{filenameConflictAction:n,prompt:o}=a;this.controller=new AbortController,a.signal=this.controller.signal;try{if("overwrite"==n)return this.api.putObject({path:e},{body:await _n(t)});{let r;if(this.headObjectSupported&&(r=await this.api.headObject({path:e},a)),this.headObjectSupported&&403!=r.status||(this.headObjectSupported=!1,this.listObjectsSupported&&(r=await this.api.listObjects({path:e},a)),this.listObjectsSupported&&403!=r.status||(this.listObjectsSupported=!1,r=await this.api.getObject({path:e},a))),200!=r.status){if(404==r.status)return t=new Uint8Array(await t.arrayBuffer()),this.api.putObject({path:e},{body:await _n(t)});throw new Error(r.statusText||"Error "+r.status)}if("prompt"==n)return o?(e=await o(e))?this.upload(e,t,a):r:(a.filenameConflictAction=Wn,this.upload(e,t,a));if(n==Wn){const{filenameWithoutExtension:n,extension:o,indexFilename:r}=function(e){let t=e,a="";const n=e.lastIndexOf(".");n>-1&&(t=e.substring(0,n),a=e.substring(n+1));let o;return({filenameWithoutExtension:t,indexFilename:o}=function(e){const t=e.match(Fn);let a=0;if(t&&t.length>1){const n=Number(t[t.length-1]);Number.isNaN(n)||(a=n,e=e.replace(Fn,""))}return{filenameWithoutExtension:e,indexFilename:a}}(t)),{filenameWithoutExtension:t,extension:a,indexFilename:o}}(e);return a.indexFilename=r+1,e=function(e,t,a){return e+" ("+t+")"+(a?Dn+a:Un)}(n,a.indexFilename,o),this.upload(e,t,a)}}}catch(e){if("AbortError"!=e.name)throw e}}abort(){this.controller&&this.controller.abort()}}async function _n(e){return new Uint8Array(await new Response(e).arrayBuffer())}const Bn="AWS4",On=Bn+"-HMAC-SHA256",jn="aws4_request";class zn{constructor({domain:e,region:t,bucket:a,accessKey:n,secretKey:o}){this.domain=e,this.region=t,this.bucket=a,this.accessKey=n,this.secretKey=o}async putObject({path:e},{headers:t={},body:a}){return qn(this,{path:e},{method:"PUT",headers:t,body:a})}async getObject({path:e},{headers:t={}}={}){return qn(this,{path:e},{method:"GET",headers:t})}async headObject({path:e},{headers:t={}}={}){return qn(this,{path:e},{method:"HEAD",headers:t})}async listObjects({path:e},{headers:t={},continuationToken:a,delimiter:n,encodingType:o,prefix:r,maxKeys:i}={}){const s=new URLSearchParams;return s.set("list-type","2"),a&&s.set("continuation-token",a),n&&s.set("delimiter",n),o&&s.set("encoding-type",o),r&&s.set("prefix",r),i&&s.set("max-keys",i),qn(this,{path:e,searchParams:s},{method:"GET",headers:t})}}async function qn({region:e,bucket:t,accessKey:a,secretKey:n,domain:o},{path:r="/",searchParams:i=new URLSearchParams},{method:s,headers:c={},body:l}){const d=function(e){const t=new Date(e);return t.toISOString().replace(/[:-]|\.\d{3}/g,"")}(new Date);r.startsWith("/")||(r="/"+r),c.host=t+"."+o,l&&(c["content-length"]=l.byteLength),c["x-amz-content-sha256"]=await Vn(l),c["x-amz-date"]=d,c.authorization=On+" Credential="+a+"/"+Gn(d,e,"s3")+",SignedHeaders="+$n(c)+",Signature="+await async function({region:e,secretKey:t,service:a},{path:n,searchParams:o},{method:r,headers:i,body:s,isoDate:c}){const l=await async function(e,t,a,n,o,r,i,s){const c=await async function(e,t,a,n,o=new Uint8Array(0)){return n+"\n"+function(e){return decodeURIComponent(e).replace(/[^A-Za-z0-9-._~/]/g,Kn)}(e)+"\n"+function(e){if(e){let t="";e.sort();for(const[a,n]of e)t+=encodeURIComponent(a)+"="+encodeURIComponent(n)+"&";return t.slice(0,-1)}return""}(t)+"\n"+function(e){let t="";const a=Object.keys(e).sort();for(const n of a)t+=n+":"+e[n]+"\n";return t}(a)+"\n"+$n(a)+"\n"+await Vn(o)}(e,t,a,i,n);return On+"\n"+o+"\n"+Gn(o,r,s)+"\n"+Zn(await Jn(Yn(c)))}(n,o,i,s,c,e,r,a),d=await async function(e,t,a,n){const o=await Hn(Yn(Bn+e),Yn(t.substring(0,8))),r=await Hn(o,Yn(a)),i=await Hn(r,Yn(n));return Hn(i,Yn(jn))}(t,c,e,a);return Zn(await Hn(d,Yn(l)))}({region:e,secretKey:n,service:"s3"},{path:r,searchParams:i},{method:s,headers:c,body:l,isoDate:d});const u="https://"+t+"."+o+r+(i.size?"?"+i:""),f={method:s,headers:c};return l&&(f.body=l),fetch(u,f)}function Kn(e){let t=encodeURIComponent(e);return t=t.startsWith("%")?t.toUpperCase():"%"+t.charCodeAt(0).toString(16).toUpperCase(),t}function $n(e){return Object.keys(e).map(e=>e.toLowerCase()).sort().join(";")}async function Vn(e=new Uint8Array(0)){return Zn(await Jn(e))}function Gn(e,t,a){return e.substring(0,8)+"/"+t+"/"+a+"/"+jn}async function Jn(e){return crypto.subtle.digest("SHA-256",e)}async function Hn(e,t){const a={name:"HMAC",hash:{name:"SHA-256"}},n=await crypto.subtle.importKey("raw",e,a,!1,["sign"]);return crypto.subtle.sign(a,n,t)}function Yn(e){return(new TextEncoder).encode(e)}function Zn(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,"0")).join("")}const Qn="",Xn="uniquify",eo=".",to=/\s\((\d+)\)$/,ao="Content-Type",no="application/json",oo="2.0";class ro{constructor(e,t){this.serverUrl=e,this.authToken=t,this.requestId=0}async upload(e,t,a){let n;return this.controller=new AbortController,a.signal=this.controller.signal,a.serverUrl=this.serverUrl,a.authToken=this.authToken,a.getRequestId=()=>++this.requestId,n=t instanceof Blob?await t.text():t,io(e,n,a)}abort(){this.controller&&this.controller.abort()}}async function io(e,t,a){const{filenameConflictAction:n,prompt:o,signal:r,serverUrl:i,authToken:s,getRequestId:c}=a;try{const l=await async function(e,t,a,n,o){const r={jsonrpc:oo,id:o(),method:"tools/call",params:{name:"get_file_info",arguments:{path:a}}},i={[ao]:no,Accept:"application/json, text/event-stream"};t&&(i.Authorization=`Bearer ${t}`);const s=await fetch(e,{method:"POST",headers:i,body:JSON.stringify(r),signal:n});if(!s.ok)throw new Error(`MCP server error: ${s.status} ${s.statusText}`);const c=await s.json();if(c.error)return{exists:!1};if(c.result&&c.result.isError)return{exists:!1};if(c.result)return{exists:!0};return{exists:!1}}(i,s,e,r,c);if(l.exists){if("skip"==n)return{url:e,skipped:!0};if("overwrite"==n);else{if(n==Xn){const{filenameWithoutExtension:n,extension:o,indexFilename:r}=function(e){let t=e,a="";const n=e.lastIndexOf(".");n>-1&&(t=e.substring(0,n),a=e.substring(n+1));let o;return({filenameWithoutExtension:t,indexFilename:o}=function(e){const t=e.match(to);let a=0;if(t&&t.length>1){const n=Number(t[t.length-1]);Number.isNaN(n)||(a=n,e=e.replace(to,""))}return{filenameWithoutExtension:e,indexFilename:a}}(t)),{filenameWithoutExtension:t,extension:a,indexFilename:o}}(e);return a.indexFilename=r+1,e=function(e,t,a){return e+" ("+a+")"+(t?eo+t:Qn)}(n,o,a.indexFilename),await io(e,t,a)}if("prompt"==n)return o?(e=await o(e))?await io(e,t,a):{url:e,skipped:!0}:(a.filenameConflictAction=Xn,await io(e,t,a))}}const d=await async function(e,t,a,n,o,r){const i={jsonrpc:oo,id:r(),method:"tools/call",params:{name:"write_file",arguments:{path:a,content:n}}},s={[ao]:no,Accept:"application/json, text/event-stream"};t&&(s.Authorization=`Bearer ${t}`);const c=await fetch(e,{method:"POST",headers:s,body:JSON.stringify(i),signal:o});if(!c.ok)throw new Error(`MCP server error: ${c.status} ${c.statusText}`);const l=await c.json();if(l.error)throw new Error(l.error.message);return{success:!0}}(i,s,e,t,r,c);if(d.success)return{url:e};throw new Error(d.error||"Failed to write file via MCP")}catch(e){if("AbortError"!=e.name)throw e}}const so=[0],co=Symbol(),lo=new TextEncoder,uo=new TextDecoder,fo=new Array(256);let mo=0;function ho(e,t,a,n){if(void 0===n){if(mo++,!(fo.length-mo>=so.length))throw new Error("Reached maximum number of custom types");fo[fo.length-mo]={serialize:e,parse:t,test:a}}else fo[n]={serialize:e,parse:t,test:a}}ho(async function(e,t){const a=e.objects.indexOf(t);await go(e,a)},async function(e){const t=await Po(e);return new To(t,e)},Uo,0),ho(null,function(){return{}},Do),ho(yo,Eo,Fo),ho(vo,Lo,function(e){return"string"==typeof e}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(8*t);return new Float64Array(a.buffer)},function(e){return"Float64Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(4*t);return new Float32Array(a.buffer)},function(e){return"Float32Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(4*t);return new Uint32Array(a.buffer)},function(e){return"Uint32Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(4*t);return new Int32Array(a.buffer)},function(e){return"Int32Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(2*t);return new Uint16Array(a.buffer)},function(e){return"Uint16Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(2*t);return new Int16Array(a.buffer)},function(e){return"Int16Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(t);return new Uint8ClampedArray(a.buffer)},function(e){return"Uint8ClampedArray"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e);return await e.consume(t)},function(e){return"Uint8Array"==e.constructor.name}),ho(ko,async function(e){const t=await Po(e),a=await e.consume(t);return new Int8Array(a.buffer)},function(e){return"Int8Array"==e.constructor.name}),ho(async function(e,t){await go(e,t.byteLength),await e.append(new Uint8Array(t))},async function(e){const t=await Po(e);return(await e.consume(t)).buffer},function(e){return"ArrayBuffer"==e.constructor.name}),ho(Ao,Ro,_o),ho(async function(e,t){const a=new Uint8Array(new Uint32Array([t]).buffer);await e.append(a)},async function(e){const t=await e.consume(4);return new Uint32Array(t.buffer)[0]},function(e){return Bo(e)&&e>=0&&e<=4294967295}),ho(async function(e,t){const a=new Uint8Array(new Int32Array([t]).buffer);await e.append(a)},async function(e){const t=await e.consume(4);return new Int32Array(t.buffer)[0]},function(e){return Bo(e)&&e>=-2147483648&&e<=2147483647}),ho(async function(e,t){const a=new Uint8Array(new Uint16Array([t]).buffer);await e.append(a)},async function(e){const t=await e.consume(2);return new Uint16Array(t.buffer)[0]},function(e){return Bo(e)&&e>=0&&e<=65535}),ho(async function(e,t){const a=new Uint8Array(new Int16Array([t]).buffer);await e.append(a)},async function(e){const t=await e.consume(2);return new Int16Array(t.buffer)[0]},function(e){return Bo(e)&&e>=-32768&&e<=32767}),ho(async function(e,t){const a=new Uint8Array([t]);await e.append(a)},async function(e){const t=await e.consume(1);return new Uint8Array(t.buffer)[0]},function(e){return Bo(e)&&e>=0&&e<=255}),ho(async function(e,t){const a=new Uint8Array(new Int8Array([t]).buffer);await e.append(a)},async function(e){const t=await e.consume(1);return new Int8Array(t.buffer)[0]},function(e){return Bo(e)&&e>=-128&&e<=127}),ho(null,function(){return},function(e){return void 0===e}),ho(null,function(){return null},function(e){return null===e}),ho(null,function(){return NaN},function(e){return Number.isNaN(e)}),ho(xo,Mo,function(e){return"boolean"==typeof e}),ho(async function(e,t){await vo(e,t.description)},async function(e){const t=await Lo(e);return Symbol(t)},Oo),ho(null,function(){return co},No),ho(async function(e,t){const a=t.entries();await go(e,t.size);for(const[t,n]of a)await go(e,t),await go(e,n)},async function(e){const t=await Po(e),a=new Map;t&&await async function n(o=0){const r=await Po(e),i=await Po(e);e.setObject([r,i],(e,t)=>a.set(e,t)),oa.add(e)),othis.value.length){const t=this.value.length-this.offset;await this.append(new Uint8Array(e).subarray(0,t)),await this.appendData({value:this.value}),this.offset=0,await this.append(new Uint8Array(e).subarray(t))}else this.value.set(e,this.offset),this.offset+=e.length}async flush(){this.offset&&await this.appendData({value:new Uint8Array(this.value).subarray(0,this.offset),done:!0})}}function bo(e,{chunkSize:t=8388608}={}){let a,n,o,r,i,s;return{[Symbol.asyncIterator]:()=>({next:()=>r?{done:r}:async function(){s?s():c().catch(()=>{});i=new Promise(e=>s=e);const e=await async function(){const{value:e,done:t}=await n;r=t,t||l();return e}();return{value:e}}(),return:()=>({done:!0})})};async function c(){l(),a=new wo(d,t),await go(a,e),await a.flush()}function l(){n=new Promise(e=>o=e)}async function d(e){o(e),await i}}async function go(e,t){const a=fo.findIndex(({test:a}={})=>a&&a(t,e));e.addObject(t),await e.append(new Uint8Array([a]));const n=fo[a].serialize;n&&await n(e,t),0!=a&&Do(t)&&(await async function(e,t){const a=Object.getOwnPropertySymbols(t),n=a.map(e=>[e,t[e]]);await yo(e,n)}(e,t),await async function(e,t){if(ArrayBuffer.isView(t))await go(e,0);else{let a=Object.entries(t);Fo(t)&&(a=a.filter(([e])=>!Bo(Number(e)))),await go(e,a.length);for(const[t,n]of a)await vo(e,t),await go(e,n)}}(e,t))}async function yo(e,t){await go(e,t.length);const a=Object.keys(t).filter(e=>Bo(Number(e))).map(e=>Number(e));let n=0,o=a[n];for(const[r,i]of t.entries())o==r?(o=a[++n],await go(e,i)):await go(e,co)}async function vo(e,t){const a=lo.encode(t);await go(e,a.length),await e.append(a)}async function ko(e,t){await go(e,t.length),await e.append("Uint8Array"==t.constructor.name?t:new Uint8Array(t.buffer))}async function Ao(e,t){const a=new Uint8Array(new Float64Array([t]).buffer);await e.append(a)}async function xo(e,t){const a=new Uint8Array([Number(t)]);await e.append(a)}class To{constructor(e,t){this.index=e,this.data=t}getObject(){return this.data.objects[this.index]}}class Io{constructor(e){this.stream=new Co(e),this.objects=[],this.setters=[]}consume(e){return this.stream.consume(e)}getObjectId(){const e=this.objects.length;return this.objects.push(void 0),e}resolveObject(e,t){jo(t)&&!Wo(t)&&(this.objects[e]=t)}setObject(e,t){this.setters.push({functionArguments:e,setterFunction:t})}executeSetters(){this.setters.forEach(({functionArguments:e,setterFunction:t})=>{t(...e.map(e=>Wo(e)?e.getObject():e))})}}class Co{constructor(e){this.offset=0,this.value=new Uint8Array(0),this.consumeData=e}async consume(e){if(this.offset+e>this.value.length){const t=new Uint8Array(this.value).subarray(this.offset,this.value.length),a=await this.consumeData();return t.length+a.length!=this.value.length&&(this.value=new Uint8Array(t.length+a.length)),this.value.set(t),this.value.set(a,t.length),this.offset=0,this.consume(e)}{const t=this.value.slice(this.offset,this.offset+e);return this.offset+=t.length,t}}}function So(){let e,t,a,n,o,r;return{next:async t=>t?async function(t){o?await o:async function(){let t;n=new Promise(e=>t=e),e=new Io(s),i();const a=await Po(e);e.executeSetters(),t(a)}().catch(()=>{});return function(){o=new Promise(e=>r=e)}(),a(t),{done:!1}}(t):{value:await n,done:!0},return:()=>({done:!0})};function i(){t=new Promise(e=>a=e)}async function s(){const e=await t;return i(),r&&r(),e}}async function Po(e){const t=(await e.consume(1))[0],a=fo[t].parse,n=e.getObjectId(),o=await a(e);return 0!=t&&Do(o)&&(await async function(e,t){const a=await Eo(e);e.setObject([a],e=>e.forEach(([e,a])=>t[e]=a))}(e,o),await async function(e,t){const a=await Po(e);a&&await n();async function n(o=0){const r=await Lo(e),i=await Po(e);e.setObject([i],e=>t[r]=e),oa[o]=e);o0||($o?await $o:($o=await browser.offscreen.createDocument({url:qo,justification:"Auto-save/Compression features",reasons:["DOM_PARSER","WORKERS","CLIPBOARD","BLOBS"]}),$o=null))}async function Zo(e,t){let a;Vo++;for(let n=0;n*KoKo,e.truncated?(e.finished=(n+1)*Ko>t.length,e.data=t.slice(n*Ko,(n+1)*Ko)):e.data=t,a=await browser.runtime.sendMessage(e);return a}const Qo=new Map,Xo=new Map,er=/([{}()^$&.*?/+|[\\\\]|\]|-)/g;let tr="207618107333-h1220p1oasj3050kr5r416661adm091a.apps.googleusercontent.com",ar="VQJ8Gq8Vxx72QyxPyeLtWvUt";const nr=browser.runtime.getManifest().oauth2;nr&&(tr=nr.client_id,ar=nr.client_secret);const or=new class{constructor(e,t,a){this.clientId=e,this.clientKey=t,this.scopes=a,this.folderIds=new Map,setInterval(()=>this.folderIds.clear(),6e4)}async auth(e={interactive:!0}){return qa(e)?(this.accessToken=await browser.identity.getAuthToken({interactive:e.interactive}),{revokableAccessToken:this.accessToken}):(this.authURL="https://accounts.google.com/o/oauth2/v2/auth?client_id="+this.clientId+"&response_type=code&access_type=offline&redirect_uri="+browser.identity.getRedirectURL()+"&scope="+this.scopes.join(" "),e.code?za(this,e):async function(e,t){let a;try{if(browser.identity&&browser.identity.launchWebAuthFlow&&!t.forceWebAuthFlow){const a=await browser.identity.launchWebAuthFlow({interactive:t.interactive,url:e.authURL});return t.code=new URLSearchParams(new URL(a).search).get("code"),await za(e,t)}if(t.launchWebAuthFlow)return t.extractAuthCode(browser.identity.getRedirectURL()).then(e=>a=e).catch(()=>{}),await t.launchWebAuthFlow({url:e.authURL});throw new Error("auth_not_supported")}catch(n){if(n.message&&("code_required"==n.message||n.message.includes("access"))){if(a)return t.code=a,await za(e,t);throw new Error("code_required")}throw n}}(this,e))}setAuthInfo(e,t){qa(t)||(e?(this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationDate=e.expirationDate):(delete this.accessToken,delete this.refreshToken,delete this.expirationDate))}async refreshAuthToken(){if(this.refreshToken){const e=await fetch(_a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"client_id="+this.clientId+"&refresh_token="+this.refreshToken+"&grant_type=refresh_token&client_secret="+this.clientKey});if(400==e.status)throw new Error("unknown_token");const t=await Ga(e);return this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),t.expires_in&&(this.expirationDate=Date.now()+1e3*t.expires_in),{accessToken:this.accessToken,refreshToken:this.refreshToken,expirationDate:this.expirationDate}}try{return browser.identity&&browser.identity.removeCachedAuthToken&&this.accessToken&&await browser.identity.removeCachedAuthToken({token:this.accessToken}),this.accessToken=await browser.identity.getAuthToken({interactive:!1}),{revokableAccessToken:this.accessToken}}catch(e){delete this.accessToken}}async revokeAuthToken(e){if(e){if(browser.identity&&browser.identity.removeCachedAuthToken)try{await browser.identity.removeCachedAuthToken({token:e})}catch(e){}const t=await fetch("https://accounts.google.com/o/oauth2/revoke",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"token="+e});try{await Ga(t)}catch(e){if("invalid_token"!=e.message)throw e}finally{delete this.accessToken,delete this.refreshToken,delete this.expirationDate}}}async upload(e,t,a,n,o=!0){const r=await Ka(this,e),i=e.split("/").pop(),s=new ja({token:this.accessToken,file:t,parents:[r],filename:i,onProgress:a.onProgress,filenameConflictAction:a.filenameConflictAction,prompt:a.prompt});try{n&&n(()=>s.cancelled=!0),await s.upload()}catch(r){if("path_not_found"==r.message&&o)return this.folderIds.clear(),this.upload(e,t,a,n);throw r}}}(tr,ar,["https://www.googleapis.com/auth/drive.file"]),rr=new class{constructor(e,t){this.clientId=e,this.clientKey=t}async auth(e={interactive:!0}){return this.authURL="https://www.dropbox.com/oauth2/authorize?client_id="+this.clientId+"&response_type=code&token_access_type=offline&redirect_uri="+browser.identity.getRedirectURL(),e.code?en(this,e):async function(e,t){let a;try{return t.extractAuthCode(browser.identity.getRedirectURL()).then(e=>a=e).catch(()=>{}),await t.launchWebAuthFlow({url:e.authURL})}catch(n){if(n.message&&("code_required"==n.message||n.message.includes("access"))){if(a)return t.code=a,await en(e,t);throw new Error("code_required")}throw n}}(this,e)}setAuthInfo(e){e?(this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationDate=e.expirationDate):(delete this.accessToken,delete this.refreshToken,delete this.expirationDate)}async refreshAuthToken(){if(this.refreshToken){const e=await fetch(Ha,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"client_id="+this.clientId+"&refresh_token="+this.refreshToken+"&grant_type=refresh_token&client_secret="+this.clientKey});if(400==e.status)throw new Error("unknown_token");const t=await an(e);return this.accessToken=t.access_token,t.refresh_token&&(this.refreshToken=t.refresh_token),t.expires_in&&(this.expirationDate=Date.now()+1e3*t.expires_in),{accessToken:this.accessToken,refreshToken:this.refreshToken,expirationDate:this.expirationDate}}delete this.accessToken}async revokeAuthToken(e){if(e){const t=await fetch("https://api.dropboxapi.com/2/auth/token/revoke",{method:"POST",headers:{Authorization:"Bearer "+e}});try{await t.text()}catch(e){if("invalid_token"!=e.message)throw e}finally{delete this.accessToken,delete this.refreshToken,delete this.expirationDate}}}async upload(e,t,a,n){const o=new Xa({token:this.accessToken,file:t,filename:e,onProgress:a.onProgress,filenameConflictAction:a.filenameConflictAction,prompt:a.prompt});n&&n(()=>o.cancelled=!0),await o.upload()}}("s50p6litdvuzrtb","i1vzwllesr14fzd");async function ir(e,t){if(e.method.endsWith(".download"))return async function(e,t){const a=t.id;let n;if(e.blobURL)try{e.url=e.blobURL,e.compressContent?(e.pageData=await async function(e){const t=So();return await t.next(e),(await t.next()).value}(new Uint8Array(await(await fetch(e.blobURL)).arrayBuffer())),await cr(e,t)):(e.content=await(await fetch(e.blobURL)).text(),await sr(e,t))}catch(e){return{error:!0}}finally{try{await Go(e.blobURL)}catch(e){}}else if(e.compressContent){let n=Xo.get(a);if(n||(n=So(),Xo.set(a,n)),e.data)await n.next(new Uint8Array(e.data));else{Xo.delete(a);const e=(await n.next()).value;await cr(e,t)}}else if(e.truncated?(n=Qo.get(a),n||(n=[],Qo.set(a,n)),n.push(e.content),e.finished&&Qo.delete(a)):e.content&&(n=[e.content]),!e.truncated||e.finished){e.content=n.join("");try{e.url=await Jo(Array.from((new TextEncoder).encode(e.content)),e.mimeType),await sr(e,t)}finally{try{await Go(e.url)}catch(e){}}}return{}}(e,t.tab);if(e.method.endsWith(".disableGDrive")){const e=await K();return J(),await or.revokeAuthToken(e&&(e.accessToken||e.revokableAccessToken)),{}}if(e.method.endsWith(".disableDropbox")){const e=await $();return H(),await rr.revokeAuthToken(e&&(e.accessToken||e.revokableAccessToken)),{}}if(e.method.endsWith(".end")){if(e.hash)try{await Na(e.hash,e.woleetKey)}catch(e){Gt(t.tab.id,e.message,e.link)}return Aa(e.taskId),{}}return e.method.endsWith(".getInfo")?la.map(Pa):e.method.endsWith(".cancel")?(e.taskId?function(e){const t=la.find(t=>t.id==e);t&&Sa(t)}(e.taskId):Ia(t.tab.id),{}):e.method.endsWith(".cancelAll")?(Array.from(la).forEach(e=>Sa(e,!1)),{}):e.method.endsWith(".saveUrls")?(pa(e.urls),{}):void 0}async function sr(e,t){const a=t.id;try{let n;if(e.backgroundSave&&!e.saveToGDrive&&!e.saveToDropbox&&!e.saveWithWebDAV&&!e.saveToGitHub&&!e.saveToRestFormApi&&!e.saveToS3){const t=await gr(e.filename,e);e.filenameConflictAction=t.filenameConflictAction,n=t.skipped}if(n)Ht(a);else{const n=e=>yr(a,e);let o;if(e.openEditor)Jt(a),await ne({tabIndex:t.index+1,filename:e.filename,content:e.content,url:e.originalUrl});else if(e.saveToClipboard)await async function(e,t){return await Yo(),Zo({method:"saveToClipboard",mimeType:t,requestId:Vo},Array.from((new TextEncoder).encode(e)))}(e.content,e.mimeType);else if(e.saveWithWebDAV)o=await hr(e.taskId,lr(e.filename),e.content,e.webDAVURL,e.webDAVUser,e.webDAVPassword,{filenameConflictAction:e.filenameConflictAction,prompt:n});else if(e.saveWithMCP)o=await wr(e.taskId,lr(e.filename),e.content,e.mcpServerUrl,e.mcpAuthToken,{filenameConflictAction:e.filenameConflictAction,prompt:n});else if(e.saveToGDrive)await pr(e.taskId,lr(e.filename),new Blob([e.content],{type:e.mimeType}),{forceWebAuthFlow:e.forceWebAuthFlow},{onProgress:(e,t)=>Yt(a,e,t),filenameConflictAction:e.filenameConflictAction,prompt:n});else if(e.saveToDropbox)await br(e.taskId,lr(e.filename),new Blob([e.content],{type:e.mimeType}),{onProgress:(e,t)=>Yt(a,e,t),filenameConflictAction:e.filenameConflictAction,prompt:n});else if(e.saveToGitHub)o=await fr(e.taskId,lr(e.filename),e.content,e.githubToken,e.githubUser,e.githubRepository,e.githubBranch,{filenameConflictAction:e.filenameConflictAction,prompt:n}),await o.pushPromise;else if(e.saveWithCompanion)await Ea({filename:e.filename,content:e.content,title:e.title,url:e.originalUrl,filenameConflictAction:e.filenameConflictAction});else if(e.saveToRestFormApi)o=await kr(e.taskId,e.filename,e.content,t.url,e.saveToRestFormApiToken,e.saveToRestFormApiUrl,e.saveToRestFormApiFileFieldName,e.saveToRestFormApiUrlFieldName);else if(e.saveToS3)o=await mr(e.taskId,lr(e.filename),new Blob([e.content],{type:e.mimeType}),e.S3Domain,e.S3Region,e.S3Bucket,e.S3AccessKey,e.S3SecretKey,{filenameConflictAction:e.filenameConflictAction,prompt:n});else if(o=await vr(e,{confirmFilename:e.confirmFilename,incognito:t.incognito,filenameConflictAction:e.filenameConflictAction,filenameReplacementCharacter:e.filenameReplacementCharacter,bookmarkId:e.bookmarkId,replaceBookmarkURL:e.replaceBookmarkURL,includeInfobar:e.includeInfobar,openInfobar:e.openInfobar,infobarPositionAbsolute:e.infobarPositionAbsolute,infobarPositionTop:e.infobarPositionTop,infobarPositionBottom:e.infobarPositionBottom,infobarPositionLeft:e.infobarPositionLeft,infobarPositionRight:e.infobarPositionRight}),!o)throw new Error("upload_cancelled");if(e.bookmarkId&&e.replaceBookmarkURL&&o&&o.url&&await Ua(e.bookmarkId,{url:o.url}),Ht(a),e.openSavedPage&&!e.openEditor){const a={active:!0,url:"/src/ui/pages/viewer.html?blobURI="+e.url};null!=t.index&&(a.index=t.index+1),browser.tabs.create(a)}}}catch(e){e.message&&"upload_cancelled"==e.message||(console.error(e),Gt(a,e.message,e.link))}finally{if(!e.openSavedPage&&e.url)try{await Go(e.url)}catch(e){}}}async function cr(e,t){const a=t.id;let n;try{const o=e=>yr(a,e);let r,i;if(e.backgroundSave&&!e.saveToGDrive&&!e.saveToDropbox&&!e.saveWithWebDAV&&!e.saveWithMCP&&!e.saveToGitHub&&!e.saveToRestFormApi&&!e.sharePage){const t=await gr(e.filename,e);e.filenameConflictAction=t.filenameConflictAction,r=t.skipped}if(r)Ht(a);else{if(n=await async function(e,t){await Yo();const a=bo(e);for await(const e of a)await browser.runtime.sendMessage({method:"compressPage",tabId:t.tabId,data:Array.from(e)});return browser.runtime.sendMessage({method:"compressPage",tabId:t.tabId,options:t})}(e.pageData,{insertTextBody:e.insertTextBody,url:e.pageData.url||t.url,createRootDirectory:e.createRootDirectory,tabId:a,selfExtractingArchive:e.selfExtractingArchive,disableCompression:e.disableCompression,extractDataFromPage:e.extractDataFromPage,preventAppendedData:e.preventAppendedData,insertCanonicalLink:e.insertCanonicalLink,insertMetaNoIndex:e.insertMetaNoIndex,insertMetaCSP:e.insertMetaCSP,password:e.password,embeddedImage:e.embeddedImage}),e.openEditor){Jt(a);const o=Array.from(new Uint8Array(await(await fetch(n)).arrayBuffer()));await ne({tabIndex:t.index+1,filename:e.filename,content:o,compressContent:e.compressContent,selfExtractingArchive:e.selfExtractingArchive,disableCompression:e.disableCompression,extractDataFromPage:e.extractDataFromPage,insertTextBody:e.insertTextBody,insertMetaCSP:e.insertMetaCSP,embeddedImage:e.embeddedImage,url:e.originalUrl})}else if(e.foregroundSave||e.sharePage){const t=(await fetch(n)).blob();await Ar(e.taskId,e.filename,t,e.pageData.mimeType,a,{foregroundSave:e.foregroundSave,sharePage:e.sharePage})}else if(e.saveWithWebDAV){const t=await(await fetch(n)).blob();i=await hr(e.taskId,lr(e.filename),t,e.webDAVURL,e.webDAVUser,e.webDAVPassword,{filenameConflictAction:e.filenameConflictAction,prompt:o})}else if(e.saveWithMCP){const t=await(await fetch(n)).blob();i=await wr(e.taskId,lr(e.filename),t,e.mcpServerUrl,e.mcpAuthToken,{filenameConflictAction:e.filenameConflictAction,prompt:o})}else if(e.saveToGDrive){const t=await(await fetch(n)).blob();await pr(e.taskId,lr(e.filename),t,{forceWebAuthFlow:e.forceWebAuthFlow},{onProgress:(e,t)=>Yt(a,e,t),filenameConflictAction:e.filenameConflictAction,prompt:o})}else if(e.saveToDropbox){const t=await(await fetch(n)).blob();await br(e.taskId,lr(e.filename),t,{onProgress:(e,t)=>Yt(a,e,t),filenameConflictAction:e.filenameConflictAction,prompt:o})}else if(e.saveToGitHub){const t=await(await fetch(n)).blob();i=await fr(e.taskId,lr(e.filename),t,e.githubToken,e.githubUser,e.githubRepository,e.githubBranch,{filenameConflictAction:e.filenameConflictAction,prompt:o}),await i.pushPromise}else if(e.saveToRestFormApi){const a=await(await fetch(n)).blob();i=await kr(e.taskId,e.filename,a,t.url,e.saveToRestFormApiToken,e.saveToRestFormApiUrl,e.saveToRestFormApiFileFieldName,e.saveToRestFormApiUrlFieldName)}else if(e.saveToS3){const t=await(await fetch(n)).blob();i=await mr(e.taskId,lr(e.filename),t,e.S3Domain,e.S3Region,e.S3Bucket,e.S3AccessKey,e.S3SecretKey,{filenameConflictAction:e.filenameConflictAction,prompt:o})}else if(e.backgroundSave)e.url=n,i=await vr(e,{confirmFilename:e.confirmFilename,incognito:t.incognito,filenameConflictAction:e.filenameConflictAction,filenameReplacementCharacter:e.filenameReplacementCharacter,bookmarkId:e.bookmarkId,replaceBookmarkURL:e.replaceBookmarkURL,includeInfobar:e.includeInfobar,openInfobar:e.openInfobar,infobarPositionAbsolute:e.infobarPositionAbsolute,infobarPositionTop:e.infobarPositionTop,infobarPositionBottom:e.infobarPositionBottom,infobarPositionLeft:e.infobarPositionLeft,infobarPositionRight:e.infobarPositionRight});else{const t=await(await fetch(n)).blob();await Ar(e.taskId,e.filename,t,e.mimeType,a)}if(e.bookmarkId&&e.replaceBookmarkURL&&i&&i.url&&await Ua(e.bookmarkId,{url:i.url}),Ht(a),e.openSavedPage&&!e.openEditor){const e={active:!0,url:"/src/ui/pages/viewer.html?compressed&blobURI="+n,windowId:t.windowId};null!=t.index&&(e.index=t.index+1),browser.tabs.create(e)}}}catch(e){e.message&&"upload_cancelled"==e.message||(console.error(e),Gt(a,e.message,e.link))}finally{if(!e.openSavedPage&&n)try{await Go(n)}catch(e){}}}function lr(e){return e.replace(/#/g,"%23")}async function dr(e,t){let a=await K();const n={interactive:!0,forceWebAuthFlow:e.forceWebAuthFlow,launchWebAuthFlow:e=>se(e),extractAuthCode:e=>ie(e)};return or.setAuthInfo(a,n),a&&a.accessToken&&!t||(a=await or.auth(n),a?await V(a):await J()),a}async function ur(e){let t=await $();const a={launchWebAuthFlow:e=>se(e),extractAuthCode:e=>ie(e)};return rr.setAuthInfo(t),t&&t.accessToken&&!e||(t=await rr.auth(a),t?await G(t):await H()),t}async function fr(e,t,a,n,o,r,i,{filenameConflictAction:s,prompt:c}){try{const l=Ca(e);if(!l||!l.cancelled){const l=new Mn(n,o,r,i);return Ta(e,()=>l.abort()),await l.upload(t,a,{filenameConflictAction:s,prompt:c})}}catch(e){throw new Error(e.message+" (GitHub)")}}async function mr(e,t,a,n,o,r,i,s,{filenameConflictAction:c,prompt:l}){try{const d=Ca(e);if(!d||!d.cancelled){const d=new Nn(o,r,i,s,n);return Ta(e,()=>d.abort()),await d.upload(t,a,{filenameConflictAction:c,prompt:l})}}catch(e){throw new Error(e.message+" (S3)")}}async function hr(e,t,a,n,o,r,{filenameConflictAction:i,prompt:s}){try{const c=Ca(e);if(!c||!c.cancelled){const c=new pn(n,o,r);return Ta(e,()=>c.abort()),await c.upload(t,a,{filenameConflictAction:i,prompt:s})}}catch(e){throw new Error(e.message+" (WebDAV)")}}async function wr(e,t,a,n,o,{filenameConflictAction:r,prompt:i}){try{const s=Ca(e);if(!s||!s.cancelled){const s=new ro(n,o);return Ta(e,()=>s.abort()),await s.upload(t,a,{filenameConflictAction:r,prompt:i})}}catch(e){throw new Error(e.message+" (MCP)")}}async function pr(e,t,a,n,o){try{await dr(n);const r=Ca(e);if(!r||!r.cancelled)return await or.upload(t,a,o,t=>Ta(e,t))}catch(r){if("invalid_token"==r.message){let r;try{r=await or.refreshAuthToken()}catch(e){if("unknown_token"!=e.message)throw new Error(e.message+" (Google Drive)");r=await dr(n,!0)}return r?await V(r):await J(),await pr(e,t,a,n,o)}throw new Error(r.message+" (Google Drive)")}}async function br(e,t,a,n){try{await ur();const o=Ca(e);if(!o||!o.cancelled)return await rr.upload(t,a,n,t=>Ta(e,t))}catch(o){if("invalid_token"==o.message){let o;try{o=await rr.refreshAuthToken()}catch(e){if("unknown_token"!=e.message)throw new Error(e.message+" (Dropbox)");o=await ur(!0)}return o?await G(o):await H(),await br(e,t,a,n)}throw new Error(o.message+" (Dropbox)")}}async function gr(e,t){let a,n=t.filenameConflictAction;if("skip"==n){(await browser.downloads.search({filenameRegex:"(\\\\|/)"+(o=e,o.replace(er,"\\$1")+"$"),exists:!0})).length?a=!0:n="uniquify"}var o;return{skipped:a,filenameConflictAction:n}}function yr(e,t){return browser.tabs.sendMessage(e,{method:"content.prompt",message:"Filename conflict, please enter a new filename",value:t})}async function vr(e,t){const a={url:e.url,saveAs:t.confirmFilename,filename:e.filename,conflictAction:t.filenameConflictAction};t.incognito&&(a.incognito=!0);const n=await r(a,t.filenameReplacementCharacter);if(n.filename){let e=n.filename;return e.startsWith("file:")||(e.startsWith("/")&&(e=e.substring(1)),e="file:///"+lr(e)),{url:e}}}async function kr(e,t,a,n,o,r,i,s){try{const c=Ca(e);if(!c||!c.cancelled){const c=new zo(o,r,i,s);return Ta(e,()=>c.abort()),await c.upload(t,a,n)}}catch(e){throw new Error(e.message+" (RestFormApi)")}}async function Ar(e,t,a,n,o,{foregroundSave:r,sharePage:i}={}){const s=bo({filename:t,taskId:e,foregroundSave:r,sharePage:i,content:await a.arrayBuffer(),mimeType:n});for await(const e of s)await browser.tabs.sendMessage(o,{method:"content.download",data:Array.from(e)});return browser.tabs.sendMessage(o,{method:"content.download"})}const xr={},Tr={};async function Ir(e,t){if("enableAutoSave"==e.method){const a=await f(t.id);a[t.id].autoSave=e.enabled,await m(a),async function(e){Promise.all([Nt(e),Le(e)])}(t)}if("isAutoSaveEnabled"==e.method)return Z(t)}async function Cr(e,t){const a=t.id,n=await F(t.url,!0);if(n){let o;Vt(a,1,!0),n.content=e.content,n.url=e.url,n.frames=e.frames,n.canvases=e.canvases,n.fonts=e.fonts,n.stylesheets=e.stylesheets,n.images=e.images,n.posters=e.posters,n.videos=e.videos,n.usedFonts=e.usedFonts,n.shadowRoots=e.shadowRoots,n.referrer=e.referrer,n.updatedResources=e.updatedResources,n.worklets=e.worklets,n.adoptedStyleSheets=e.adoptedStyleSheets,n.visitDate=new Date(e.visitDate),n.backgroundTab=!0,n.autoSave=!0,n.incognito=t.incognito,n.tabId=a,n.tabIndex=t.index;try{if(n.autoSaveExternalSave)await async function(e){let t;e.autoSaveExternalSave=!1;try{t=await browser.runtime.sendNativeMessage("singlefile_companion",{method:"externalSave",pageData:e})}catch(e){if(!e.message||!e.message.includes("Native host has exited"))throw e}if(t&&t.error)throw new Error(t.error+" (Companion)")}(n);else{let r;if(o=await async function(e){return await Yo(),browser.runtime.sendMessage({method:"processPage",options:e})}(n),!(n.saveToGDrive||n.saveWithWebDAV||n.saveWithMCP||n.saveToGitHub||n.saveToDropbox||n.saveWithCompanion||n.saveToRestFormApi||n.saveToS3)){const e=await gr(o.filename,n);r=e.skipped,n.filenameConflictAction=e.filenameConflictAction}if(!r){if(n.saveToGDrive){const t=await(await fetch(o.url)).blob();await pr(e.taskId,lr(o.filename),t,n,{forceWebAuthFlow:n.forceWebAuthFlow},n.filenameConflictAction)}if(n.saveToDropbox){const t=await(await fetch(o.url)).blob();await br(e.taskId,lr(o.filename),t,{filenameConflictAction:n.filenameConflictAction})}else if(n.saveWithWebDAV){const t=await(await fetch(o.url)).blob();await hr(e.taskId,lr(o.filename),t,n.webDAVURL,n.webDAVUser,n.webDAVPassword,{filenameConflictAction:n.filenameConflictAction})}else if(n.saveWithMCP){const t=await(await fetch(o.url)).blob();await wr(e.taskId,lr(o.filename),t,n.mcpServerUrl,n.mcpAuthToken,{filenameConflictAction:n.filenameConflictAction})}else if(n.saveToGitHub){const t=await(await fetch(o.url)).blob();await(await fr(e.taskId,lr(o.filename),t,n.githubToken,n.githubUser,n.githubRepository,n.githubBranch,{filenameConflictAction:n.filenameConflictAction})).pushPromise}else if(n.saveWithCompanion&&!n.compressContent){const e=await(await fetch(o.url)).text();await Ea({filename:o.filename,content:e,title:o.title,url:n.url,filenameConflictAction:n.filenameConflictAction})}else if(n.saveToRestFormApi){const t=await(await fetch(o.url)).blob();await kr(e.taskId,o.filename,t,n.url,n.saveToRestFormApiToken,n.saveToRestFormApiUrl,n.saveToRestFormApiFileFieldName,n.saveToRestFormApiUrlFieldName)}else if(n.saveToS3){const t=await(await fetch(o.url)).blob();await mr(e.taskId,o.filename,t,n.S3Domain,n.S3Region,n.S3Bucket,n.S3AccessKey,n.S3SecretKey,{filenameConflictAction:n.filenameConflictAction})}else await vr(o,n);if(n.openSavedPage){const e={active:!0,url:"/src/ui/pages/viewer.html?compressed=true&blobURI="+o.url,windowId:t.windowId},n=t.index;try{await browser.tabs.get(a),e.index=n+1}catch(t){e.index=n}browser.tabs.create(e)}o.hash&&await Na(o.hash,n.woleetKey)}}}finally{e.taskId?Aa(e.taskId):n.autoClose&&(browser.tabs.remove(Tr[a]||a),delete Tr[a]),o&&o.url&&!n.openSavedPage&&Go(o.url),Ht(a,!0)}}}async function Sr(e,t){return e.method.endsWith(".init")&&(await async function(e,t){await d(e.id);const a=await f(e.id);a[e.id].savedPageDetected=t.savedPageDetected,await m(a)}(t.tab,e),Bt(t.tab),function(e){Ia(e.id,!1)}(t.tab),async function(e){const[t,a]=await Promise.all([F(e.url,!0),Z(e)]);t&&(t.autoSaveLoad||t.autoSaveLoadOrUnload)&&a&&ba([e],{autoSave:!0})}(t.tab)),e.method.endsWith(".getOptions")?F(e.url):(e.method.endsWith(".activate")&&await browser.tabs.update(e.tabId,{active:!0}),e.method.endsWith(".getScreenshot")?Pr(t.tab.id,e):void 0)}async function Pr(e,t){const{width:a,height:n,scale:o=1}=t,r=Math.floor(a*o),i=Math.floor(n*o);let s,c,l,d=0,u=0;browser.tabs.captureTab?c=4096:(c=t.innerHeight,l=(await browser.tabs.query({active:!0,currentWindow:!0}))[0].id);const f=Math.floor(c*o);await browser.tabs.sendMessage(e,{method:"content.beginScrollTo"});try{s=new OffscreenCanvas(r,i);const t=s.getContext("2d");for(;de.arrayBuffer());await Go(l);const h=new ImageData(new Uint8ClampedArray(m),a);t.putImageData(h,0,d),d+=c,u+=f}browser.tabs.captureTab||await browser.tabs.update(l,{active:!0})}catch(a){if(o>.1)return t.scale=.75*o,Pr(e,t);throw a}finally{await browser.tabs.sendMessage(e,{method:"content.endScrollTo"})}if(s){await browser.tabs.sendMessage(e,{method:"content.endScrollTo"});const t=await s.convertToBlob({type:"image/png"});return await Jo(Array.from(new Uint8Array(await t.arrayBuffer())))}}browser.tabs.onCreated.addListener(e=>function(e){!function(e){Bt(e)}(e)}(e)),browser.tabs.onActivated.addListener(e=>async function(e){const t=await browser.tabs.get(e.tabId);Zt(t)}(e)),browser.tabs.onRemoved.addListener(e=>function(e){Ia(e),d(e),function(e){ee.delete(e)}(e),async function(e){const t=xr[e];t?t.autoSaveRemove&&(delete xr[e],await Cr(t,t.tab)):xr[e]={removed:!0}}(e)}(e)),browser.tabs.onUpdated.addListener((e,t)=>async function(e,t){if("complete"==t.status){setTimeout(async()=>{try{await browser.tabs.sendMessage(e,{method:"content.maybeInit"})}catch(e){}},1500),function(e){delete xr[e]}(e);const t=await browser.tabs.get(e);if(oe(t)){const e=await f(t.id);e[t.id].editorDetected=!0,await m(e),Zt(t)}}t.discarded&&async function(e){const t=xr[e];t?(delete xr[e],await Cr(t,t.tab)):xr[e]={discarded:!0}}(e)}(e,t)),browser.tabs.onReplaced.addListener((e,t)=>function(e,t){(async function(e,t){let a=await f();await l(a,e,t),m(a),await l(s,e,t)})(e,t),async function(e,t){xr[t]&&!xr[e]&&(xr[e]=xr[t],delete xr[t],Tr[t]=e)}(e,t),function(e,t){la.forEach(a=>{a.tab.id==t&&(a.tab.id=e)})}(e,t)}(e,t));async function Er(e){return(await browser.tabs.query(e)).sort((e,t)=>e.index-t.index)}browser.runtime.onMessage.addListener((e,t)=>e.method.startsWith("tabs.")?Sr(e,t):e.method.startsWith("downloads.")?ir(e,t):e.method.startsWith("autosave.")?async function(e,t){if(e.method.endsWith(".save"))return e.autoSaveDiscard||e.autoSaveRemove?(t.tab?(e.tab=t.tab,xr[t.tab.id]=e):xr[e.tabId]&&(xr[e.tabId].removed&&e.autoSaveRemove||xr[e.tabId].discarded&&e.autoSaveDiscard)&&(delete xr[e.tabId],await Cr(e,{id:e.tabId,index:e.tabIndex,url:t.url})),e.autoSaveUnload&&(delete xr[e.tabId],await Cr(e,t.tab))):(delete xr[e.tabId],await Cr(e,t.tab)),{}}(e,t):e.method.startsWith("ui.")?Kt(e,t):e.method.startsWith("config.")?W(e):e.method.startsWith("tabsData.")?function(e){return e.method.endsWith(".get")?f():e.method.endsWith(".set")?m(e.tabsData):void 0}(e):e.method.startsWith("devtools.")?async function(e){e.method.endsWith(".resourceCommitted")&&e.tabId&&e.url&&("stylesheet"==e.type||"script"==e.type)&&await browser.tabs.sendMessage(e.tabId,e)}(e):e.method.startsWith("editor.")?async function(e,t){if(e.method.endsWith(".getTabData")){const e=t.tab,a=ee.get(e.id);if(a){const t=await F(a.url),n=JSON.stringify(a);for(let o=0;o*QQ,r.truncated?(r.finished=(o+1)*Q>n.length,r.content=n.substring(o*Q,(o+1)*Q),r.finished&&(r.options=t)):(r.content=n,t.embeddedImage=a.embeddedImage,r.options=t),await browser.tabs.sendMessage(e.id,r)}}else{const t={method:"editor.setTabData",tabId:e.id};await browser.tabs.sendMessage(e.id,t)}return{}}if(e.method.endsWith(".open")){let a;const n=t.tab;if(e.truncated?(a=te.get(n.id),a||(a=[],te.set(n.id,a)),a.push(e.content),e.finished&&te.delete(n.id)):e.content&&(a=[e.content]),!e.truncated||e.finished){const t={url:X};await browser.tabs.update(n.id,t);const o=e.compressContent?a.flat():a.join("");ee.set(n.id,{url:n.url,content:o,filename:e.filename,compressContent:e.compressContent,selfExtractingArchive:e.selfExtractingArchive,disableCompression:e.disableCompression,extractDataFromPageTags:e.extractDataFromPageTags,insertTextBody:e.insertTextBody,insertMetaCSP:e.insertMetaCSP,embeddedImage:e.embeddedImage})}return{}}}(e,t):e.method.startsWith("bookmarks.")?Ra(e):e.method.startsWith("companion.")?async function(e){if(e.method.endsWith(".state"))return{enabled:!0}}(e):e.method.startsWith("bootstrap.")?async function(e,t){if(e.method.endsWith(".init")){const[e,a,n]=await Promise.all([F(t.tab.url,!0),F(t.tab.url),Z(t.tab)]);return{optionsAutoSave:e,options:a,autoSaveEnabled:n,tabId:t.tab.id,tabIndex:t.tab.index}}}(e,t):"ping"==e.method?Promise.resolve({}):void 0),browser.runtime.onMessageExternal&&browser.runtime.onMessageExternal.addListener(async function(e,t){if("save-page"==e){const e=await browser.tabs.query({currentWindow:!0,active:!0});e.length=1,await ba(e)}else if("edit-and-save-page"==e){const e=await browser.tabs.query({currentWindow:!0,active:!0});e.length=1,await ba(e,{openEditor:!0})}else if("save-selected-links"==e){const e=await browser.tabs.query({currentWindow:!0,active:!0});await ha(e[0])}else if("save-selected-content"==e){const e=await browser.tabs.query({currentWindow:!0,active:!0});await ba(e,{selected:!0})}else if("save-selected-tabs"==e){const e=await Er({currentWindow:!0,highlighted:!0});await ba(e)}else if("save-unpinned-tabs"==e){const e=await Er({currentWindow:!0,pinned:!1});await ba(e)}else if("save-all-tabs"==e){const e=await Er({currentWindow:!0});await ba(e)}else if(e.method){const t=(await browser.tabs.query({currentWindow:!0,active:!0}))[0];return!!t&&Ir(e,t)}})}();
================================================
FILE: lib/single-file-extension-bootstrap.js
================================================
!function(){"use strict";const e=33554432,t="data-sf-nesting-track-id",o=globalThis.singlefileBootstrap,n=new Map;let a,r,s,d,i,c,l,u,m,f,h,v,y,E;async function p(){if(document.documentElement.dataset&&void 0!==document.documentElement.dataset.sfz){const e=await g();document.querySelectorAll("#sfz-error-message").forEach(e=>e.remove()),function(e){document.dispatchEvent(new CustomEvent("single-file-bootstrap",{detail:{data:e}}))}(e)}else if(document.body&&1==document.body.childNodes.length&&"PRE"==document.body.childNodes[0].tagName&&/]* data-sfz[^>]*>/i.test(document.body.childNodes[0].textContent)){const e=(new DOMParser).parseFromString(document.body.childNodes[0].textContent,"text/html");document.replaceChild(e.documentElement,document.documentElement),document.querySelectorAll("script").forEach(e=>{const t=document.createElement("script");t.textContent=e.textContent,e.parentElement.replaceChild(t,e)}),await p()}}function g(){return new Promise((e,t)=>{const o=new XMLHttpRequest;o.open("GET",location.href),o.send(),o.responseType="arraybuffer",o.onload=()=>e(new Uint8Array(o.response)),o.onerror=()=>{const o=document.getElementById("sfz-error-message");o&&o.remove();const a=n.size;n.set(a,{resolve:e,reject:t}),browser.runtime.sendMessage({method:"singlefile.fetch",requestId:a,url:location.href})}})}async function b(e){return i&&"content.autosave"==e.method?(async function(e){r=e.options,"complete"!=document.readyState&&await new Promise(e=>globalThis.addEventListener("load",e));await w(),r.autoSaveRepeat&&setTimeout(()=>{i&&!l&&(u=!1,r.autoSaveDelay=0,b(e))},1e3*r.autoSaveRepeatDelay)}(e),{}):"content.maybeInit"==e.method?(S(),{}):"content.init"==e.method?(r=e.options,i=e.autoSaveEnabled,T(),{}):"content.openEditor"==e.method?(O(document)?D(document):T(),{}):"devtools.resourceCommitted"==e.method?(o.pageInfo.updatedResources[e.url]={content:e.content,type:e.type,encoding:e.encoding},{}):"singlefile.fetchResponse"==e.method?await async function(e){const t=n.get(e.requestId);if(t)return e.error?(t.reject(new Error(e.error)),n.delete(e.requestId)):(e.truncated&&(t.array?t.array=t.array.concat(e.array):(t.array=e.array,n.set(e.requestId,t)),e.finished&&(e.array=t.array)),e.truncated&&!e.finished||(t.resolve(e.array),n.delete(e.requestId))),{}}(e):void 0}function S(){const e=document.querySelector("singlefile-infobar");e&&e.remove(),m==location.href||o.pageInfo.processing||(u=!1,m=location.href,browser.runtime.sendMessage({method:"tabs.init",savedPageDetected:O(document)}).catch(()=>{}),browser.runtime.sendMessage({method:"ui.processInit"}).catch(()=>{}))}async function w(){const e=o.helper;if((!l||c)&&!u)if(l=!0,r.autoSaveDelay&&!c)await new Promise(e=>c=setTimeout(e,1e3*r.autoSaveDelay)),await w();else{const t=globalThis[e.WAIT_FOR_USERSCRIPT_PROPERTY_NAME];let n,a=[];c=null,!r.removeFrames&&globalThis.frames&&globalThis.frames.length&&(a=await o.processors.frameTree.getAsync(r)),n=a&&a.sessionId,r.userScriptEnabled&&t&&await t(e.ON_BEFORE_CAPTURE_EVENT_NAME);const s=e.preProcessDoc(document,globalThis,r);C(s,a),n&&o.processors.frameTree.cleanup(n),e.postProcessDoc(document,s.markedElements,s.invalidElements),r.userScriptEnabled&&t&&await t(e.ON_AFTER_CAPTURE_EVENT_NAME),u=!0,l=!1}}function T(){i&&r&&(r.autoSaveUnload||r.autoSaveLoadOrUnload||r.autoSaveDiscard||r.autoSaveRemove)?a||(globalThis.addEventListener("unload",R),document.addEventListener("visibilitychange",A),a=!0):(globalThis.removeEventListener("unload",R),document.removeEventListener("visibilitychange",A),a=!1)}function A(){"hidden"==document.visibilityState&&r.autoSaveDiscard&&I({autoSaveDiscard:r.autoSaveDiscard})}function R(){!u&&(r.autoSaveUnload||r.autoSaveLoadOrUnload||r.autoSaveRemove)&&I({autoSaveUnload:r.autoSaveUnload,autoSaveRemove:r.autoSaveRemove})}function I({autoSaveUnload:e,autoSaveDiscard:t,autoSaveRemove:n}){const a=o.helper,s=globalThis[a.WAIT_FOR_USERSCRIPT_PROPERTY_NAME];let d=[];!r.removeFrames&&globalThis.frames&&globalThis.frames.length&&(d=o.processors.frameTree.getSync(r)),r.userScriptEnabled&&s&&s(a.ON_BEFORE_CAPTURE_EVENT_NAME);C(a.preProcessDoc(document,globalThis,r),d,{autoSaveUnload:e,autoSaveDiscard:t,autoSaveRemove:n})}function C(e,t,{autoSaveUnload:n,autoSaveDiscard:a,autoSaveRemove:i}={}){const c=o.helper,l=o.pageInfo.updatedResources,u=o.pageInfo.visitDate.getTime();Object.keys(l).forEach(e=>l[e].retrieved=!1),browser.runtime.sendMessage({method:"autosave.save",tabId:s,tabIndex:d,taskId:r.taskId,content:c.serialize(document),canvases:e.canvases,fonts:e.fonts,stylesheets:e.stylesheets,images:e.images,posters:e.posters,usedFonts:e.usedFonts,shadowRoots:e.shadowRoots,videos:e.videos,referrer:e.referrer,adoptedStyleSheets:e.adoptedStyleSheets,worklets:e.worklets,frames:t,url:location.href,updatedResources:l,visitDate:u,autoSaveUnload:n,autoSaveDiscard:a,autoSaveRemove:i})}async function D(n){let a;h?a=await g():(P(n),function(e){s(e.body);const o=function(e,t){const o=(new DOMParser).parseFromString(e,"text/html");o.head||o.documentElement.insertBefore(o.createElement("HEAD"),o.body);let n=o.querySelector("base");n&&n.getAttribute("href")||(n&&n.remove(),n=o.createElement("base"),n.setAttribute("href",t),o.head.insertBefore(n,o.head.firstChild));return o}(function(e){const t=e.doctype;let o="";t&&(o=" ");return o+e.documentElement.outerHTML}(e)),n=d(e.body),a=d(o.body),r=new Set;function s(e,o=0,n=""){const a=n?`${n}.${o+1}`:`${o+1}`;e.setAttribute(t,a),Array.from(e.children).forEach((e,t)=>s(e,t,a))}function d(e){const o={};return n(e),o;function n(e){if(e.getAttribute){const a=e.getAttribute(t);a&&(o[a]=e),Array.from(e.children).forEach(n)}}}function i(e,o){const n=e.getAttribute(t);n&&!o.has(n)&&e.removeAttribute(t),Array.from(e.children).forEach(e=>i(e,o))}Object.keys(n).forEach(o=>{if(o in a){if((n[o].parentElement?.getAttribute(t)||null)!==(a[o]?.parentElement?.getAttribute(t)||null)){let a=n[o];for(;a&&a!==e.body;){const e=a.getAttribute(t);e&&r.add(e),a=a.parentElement}}}}),i(e.body,r)}(n),a=o.helper.serialize(n));for(let t=0;t*ee,o.truncated?(o.finished=(t+1)*e>a.length,a instanceof Uint8Array?o.content=Array.from(a.subarray(t*e,(t+1)*e)):o.content=a.substring(t*e,(t+1)*e)):(o.embeddedImage=await M(a),o.content=a instanceof Uint8Array?Array.from(a):a),await browser.runtime.sendMessage(o)}}async function M(e){if(137==e[0]&&80==e[1]&&78==e[2]&&71==e[3]){let t=new Blob([new Uint8Array(e)],{type:"image/png"});const o=URL.createObjectURL(t),n=new Image;n.src=o,await new Promise((e,t)=>{n.onload=e,n.onerror=t});const a=new OffscreenCanvas(n.width,n.height);a.getContext("2d").drawImage(n,0,0),t=await a.convertToBlob({type:"image/png"});const r=await t.arrayBuffer();return Array.from(new Uint8Array(r))}}function O(e){if(void 0===f){const t=o.helper,n=e.documentElement.firstChild;h=e.documentElement.dataset&&""==e.documentElement.dataset.sfz,v=Boolean(e.querySelector("sfz-extra-data")),y=Boolean(e.querySelector("body > main[hidden]")),E=Boolean(e.querySelector("meta[http-equiv=content-security-policy]")),f=h||n.nodeType==Node.COMMENT_NODE&&(n.textContent.includes(t.COMMENT_HEADER)||n.textContent.includes(t.COMMENT_HEADER_LEGACY))}return f}function P(e){e.querySelectorAll("*").forEach(e=>{const t=o.helper.getShadowRoot(e);if(t){P(t);const o=document.createElement("template");o.setAttribute("shadowrootmode","open"),Array.from(t.childNodes).forEach(e=>o.appendChild(e)),e.appendChild(o)}})}o.pageInfo={updatedResources:{},visitDate:new Date},browser.runtime.sendMessage({method:"bootstrap.init"}).then(e=>{r=e.optionsAutoSave;const t=e.options;s=e.tabId,d=e.tabIndex,i=e.autoSaveEnabled,t&&t.autoOpenEditor&&O(document)?"loading"==document.readyState?document.addEventListener("DOMContentLoaded",()=>D(document)):D(document):"loading"==document.readyState?document.addEventListener("DOMContentLoaded",T):T()}),browser.runtime.onMessage.addListener(e=>{if(i&&"content.autosave"==e.method||"content.maybeInit"==e.method||"content.init"==e.method||"content.openEditor"==e.method||"devtools.resourceCommitted"==e.method||"singlefile.fetchResponse"==e.method)return b(e)}),document.addEventListener("DOMContentLoaded",S,!1),globalThis.window==globalThis.top&&location&&location.href&&(location.href.startsWith("file://")||location.href.startsWith("content://"))&&("loading"==document.readyState?document.addEventListener("DOMContentLoaded",p,!1):p())}();
================================================
FILE: lib/single-file-extension-core.js
================================================
!function(){"use strict";const e="single-file-response-fetch",r="Host fetch error (SingleFile)",t=Boolean(window.wrappedJSObject),a=window.fetch.bind(window);let s,n=0,i=new Map;async function o(c,d={},u=!0){try{const n={cache:d.cache||"force-cache",headers:d.headers,referrerPolicy:d.referrerPolicy||"strict-origin-when-cross-origin"};let i;try{i=d.referrer&&!t||!u?await a(c,n):await async function(t,a){if(void 0===s&&(s=!1,document.addEventListener("single-file-response-fetch-supported",()=>s=!0,!1),document.dispatchEvent(new CustomEvent("single-file-request-fetch-supported"))),s)return new Promise((r,s)=>{document.dispatchEvent(new CustomEvent("single-file-request-fetch",{detail:JSON.stringify({url:t,options:a})})),document.addEventListener(e,function a(n){n.detail?n.detail.url==t&&(document.removeEventListener(e,a,!1),n.detail.response?r({status:n.detail.status,headers:new Map(n.detail.headers),arrayBuffer:async()=>n.detail.response}):s(n.detail.error)):s()},!1)});throw new Error(r)}(c,n),401!=i.status&&403!=i.status&&404!=i.status||"no-referrer"==n.referrerPolicy||d.referrer||(i=await o(c,{...n,referrerPolicy:"no-referrer"},u))}catch(e){if(e&&e.message==r)i=await o(c,{...n},!1);else{if("no-referrer"==n.referrerPolicy||d.referrer)throw e;i=await o(c,{...n,referrerPolicy:"no-referrer"},u)}}return i}catch(e){n++;const r=new Promise((e,r)=>i.set(n,{resolve:e,reject:r}));return await f({method:"singlefile.fetch",url:c,requestId:n,referrer:d.referrer,headers:d.headers}),r}}async function c(e,r){const t=await f({method:"singlefile.fetchFrame",url:e,frameId:r.frameId,referrer:r.referrer,headers:r.headers});return{status:t.status,headers:new Map(t.headers),arrayBuffer:async()=>new Uint8Array(t.array).buffer}}async function f(e){const r=await browser.runtime.sendMessage(e);if(!r||r.error)throw new Error(r&&r.error&&r.error.toString());return r}browser.runtime.onMessage.addListener(e=>"singlefile.fetchFrame"==e.method&&window.frameId&&window.frameId==e.frameId?async function(e){try{const r=await a(e.url,{cache:"force-cache",headers:e.headers,referrerPolicy:"strict-origin-when-cross-origin"});return{status:r.status,headers:[...r.headers],array:Array.from(new Uint8Array(await r.arrayBuffer()))}}catch(e){return{error:e&&(e.message||e.toString())}}}(e):"singlefile.fetchResponse"==e.method?async function(e){const r=i.get(e.requestId);r&&(e.error?(r.reject(new Error(e.error)),i.delete(e.requestId)):(e.truncated&&(r.array?r.array=r.array.concat(e.array):(r.array=e.array,i.set(e.requestId,r)),e.finished&&(e.array=r.array)),e.truncated&&!e.finished||(r.resolve({status:e.status,headers:{get:r=>e.headers&&e.headers[r]},arrayBuffer:async()=>new Uint8Array(e.array).buffer}),i.delete(e.requestId))));return{}}(e):void 0);const d={getPageData:globalThis.singlefile.getPageData};globalThis.singlefile.getPageData=function(e,r={fetch:o,frameFetch:c},t,a){return d.getPageData(e,r,t,a)}}();
================================================
FILE: lib/single-file-extension-editor-helper.js
================================================
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).singlefile={})}(this,function(n){"use strict";var e="undefined"!=typeof document?document.currentScript:null;const t=["AREA","BASE","BASEFONT","BGSOUND","BR","COL","COMMAND","EMBED","FRAME","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"],a=[{tagName:"HEAD",accept:n=>!n.childNodes.length||1==n.childNodes[0].nodeType},{tagName:"BODY",accept:n=>!n.childNodes.length}],o=[{tagName:"HTML",accept:n=>!n||8!=n.nodeType},{tagName:"HEAD",accept:n=>!n||8!=n.nodeType&&(3!=n.nodeType||!l(n.textContent))},{tagName:"BODY",accept:n=>!n||8!=n.nodeType},{tagName:"LI",accept:(n,e)=>!n&&e.parentElement&&("UL"==c(e.parentElement)||"OL"==c(e.parentElement))||n&&["LI"].includes(c(n))},{tagName:"DT",accept:n=>!n||["DT","DD"].includes(c(n))},{tagName:"P",accept:n=>n&&["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DETAILS","DIV","DL","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","MAIN","NAV","OL","P","PRE","SECTION","TABLE","UL"].includes(c(n))},{tagName:"DD",accept:n=>!n||["DT","DD"].includes(c(n))},{tagName:"RT",accept:n=>!n||["RT","RP"].includes(c(n))},{tagName:"RP",accept:n=>!n||["RT","RP"].includes(c(n))},{tagName:"OPTGROUP",accept:n=>!n||["OPTGROUP"].includes(c(n))},{tagName:"OPTION",accept:n=>!n||["OPTION","OPTGROUP"].includes(c(n))},{tagName:"COLGROUP",accept:n=>!n||8!=n.nodeType&&(3!=n.nodeType||!l(n.textContent))},{tagName:"CAPTION",accept:n=>!n||8!=n.nodeType&&(3!=n.nodeType||!l(n.textContent))},{tagName:"THEAD",accept:n=>!n||["TBODY","TFOOT"].includes(c(n))},{tagName:"TBODY",accept:n=>!n||["TBODY","TFOOT"].includes(c(n))},{tagName:"TFOOT",accept:n=>!n},{tagName:"TR",accept:n=>!n||["TR"].includes(c(n))},{tagName:"TD",accept:n=>!n||["TD","TH"].includes(c(n))},{tagName:"TH",accept:n=>!n||["TD","TH"].includes(c(n))}],i=["STYLE","SCRIPT","XMP","IFRAME","NOEMBED","NOFRAMES","PLAINTEXT","NOSCRIPT"];function r(n,e){const t=n.doctype;let a="";return t&&(a=" "),a+s(n.documentElement,e)}function s(n,e,r){return 3==n.nodeType?function(n){const e=n.parentNode;let t;e&&1==e.nodeType&&(t=c(e));return!t||i.includes(t)?("SCRIPT"!=t||e.type&&"text/javascript"!=e.type)&&"STYLE"!=t?n.textContent:n.textContent.replace(/<\//gi,"<\\/").replace(/\/>/gi,"\\/>"):n.textContent.replace(/&/g,"&").replace(/\u00a0/g," ").replace(//g,">")}(n):8==n.nodeType?"\x3c!--"+n.textContent+"--\x3e":1==n.nodeType?function(n,e,i){const r=c(n),l=e&&a.find(e=>r==c(e)&&e.accept(n));let m="";l&&!n.attributes.length||(m="<"+r.toLowerCase(),Array.from(n.attributes).forEach(t=>m+=function(n,e,t){const a=n.name;let o="";if(!a.match(/["'>/=]/)){let i,r=n.value;t&&"class"==a&&(r=Array.from(e.classList).map(n=>n.trim()).join(" ")),r=r.replace(/&/g,"&").replace(/\u00a0/g," "),r.includes('"')&&(r.includes("'")||!t?r=r.replace(/"/g,"""):i=!0);const s=!t||r.match(/[ \t\n\f\r'"`=<>]/);o+=" ";const l=n.namespaceURI,c=n.localName||a;l?"http://www.w3.org/XML/1998/namespace"==l?o+="xml:"+c:"http://www.w3.org/2000/xmlns/"==l?o+="xmlns"===c?"xmlns":"xmlns:"+c:"http://www.w3.org/1999/xlink"==l?o+="xlink:"+c:n.prefix?o+=n.prefix+":"+c:o+=a:o+=a,""!=r&&(o+="=",s&&(o+=i?"'":'"'),o+=r,s&&(o+=i?"'":'"'))}return o}(t,n,e)),m+=">");"TEMPLATE"!=r||n.childNodes.length?Array.from(n.childNodes).forEach(n=>m+=s(n,e,i||"svg"==r)):m+=n.innerHTML;const d=e&&o.find(e=>r==c(e)&&e.accept(n.nextSibling,n));(i||!d&&!t.includes(r))&&(m+=""+r.toLowerCase()+">");return m}(n,e,r):void 0}function l(n){return Boolean(n.match(/^[ \t\n\f\r]/))}function c(n){return n.tagName&&n.tagName.toUpperCase()}function m(n,e,t,a){this.message=n,this.expected=e,this.found=t,this.location=a,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,m)}async function d(n,e){e=void 0!==e?e:{};var t,a={},o={start:an},i=an,r=function(n){return n.join("")},s="|",l=X("|",!1),c=function(n){return n},d="%",h=X("%",!1),p="<",u=X("<",!1),g=">",w=X(">",!1),b=function(n,t,a){return e.callFunction(n,t,a)},f="{",k=X("{",!1),y="}",v=X("}",!1),j=function(n,t){return e.getVariableValue(n,t)},S="[",x=X("[",!1),C="]",z=X("]",!1),L=function(n,e){return{length:n,unit:e}},A="ch",T=X("ch",!1),I=/^[a-z0-9-]/,R=Q([["a","z"],["0","9"],"-"],!1,!1),E=function(){return $()},D=/^[0-9]/,M=Q([["0","9"]],!1,!1),B=function(){return Number($())},N="\\\\%",P=X("\\\\%",!1),O="\\\\{",_=X("\\\\{",!1),F="\\\\|",q=X("\\\\|",!1),U="\\\\>",H=X("\\\\>",!1),W={type:"any"},G=0,V=0,K=[{line:1,column:1}],J=0,Y=[],Z=0;if("startRule"in e){if(!(e.startRule in o))throw new Error("Can't start parsing from rule \""+e.startRule+'".');i=o[e.startRule]}function $(){return n.substring(V,G)}function X(n,e){return{type:"literal",text:n,ignoreCase:e}}function Q(n,e,t){return{type:"class",parts:n,inverted:e,ignoreCase:t}}function nn(e){var t,a=K[e];if(a)return a;for(t=e-1;!K[t];)t--;for(a={line:(a=K[t]).line,column:a.column};tJ&&(J=G,Y=[]),Y.push(n))}async function an(){return await on()}async function on(){var n,e,t;for(n=G,e=[],t=await rn();t!==a;)e.push(t),t=await rn();return e!==a&&(V=n,e=r(e)),n=e}async function rn(){var e;return(e=await async function(){var e,t,o,i,r,s,l;e=G,37===n.charCodeAt(G)?(t=d,G++):(t=a,0===Z&&tn(h));t!==a&&(o=cn())!==a?(60===n.charCodeAt(G)?(i=p,G++):(i=a,0===Z&&tn(u)),i!==a?(r=await async function(){var n,e,t;n=G,e=await on(),e!==a?(t=await async function(){var n,e;if(n=[],e=await sn(),e!==a)for(;e!==a;)n.push(e),e=await sn();else n=a;return n}(),t===a&&(t=null),t!==a?n=e=[e,t]:(G=n,n=a)):(G=n,n=a);return n}(),r!==a?(62===n.charCodeAt(G)?(s=g,G++):(s=a,0===Z&&tn(w)),s!==a?((l=ln())===a&&(l=null),l!==a?(V=e,e=t=await b(o,r,l)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a);return e}())===a&&(e=await async function(){var e,t,o,i,r;e=G,123===n.charCodeAt(G)?(t=f,G++):(t=a,0===Z&&tn(k));t!==a&&(o=cn())!==a?(125===n.charCodeAt(G)?(i=y,G++):(i=a,0===Z&&tn(v)),i!==a?((r=ln())===a&&(r=null),r!==a?(V=e,e=t=await j(o,r)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a);return e}())===a&&(e=function(){var n,e,t;if(n=G,e=[],(t=mn())!==a)for(;t!==a;)e.push(t),t=mn();else e=a;e!==a&&(V=n,e=E());return n=e,n}()),e}async function sn(){var e,t,o;return e=G,124===n.charCodeAt(G)?(t=s,G++):(t=a,0===Z&&tn(l)),t!==a&&(o=await on())!==a?(V=e,e=t=c(o)):(G=e,e=a),e}function ln(){var e,t,o,i,r;return e=G,91===n.charCodeAt(G)?(t=S,G++):(t=a,0===Z&&tn(x)),t!==a?(o=function(){var e,t,o;e=G,t=[],D.test(n.charAt(G))?(o=n.charAt(G),G++):(o=a,0===Z&&tn(M));if(o!==a)for(;o!==a;)t.push(o),D.test(n.charAt(G))?(o=n.charAt(G),G++):(o=a,0===Z&&tn(M));else t=a;t!==a&&(V=e,t=B());return e=t,e}(),o!==a?(i=function(){var e;n.substr(G,2)===A?(e=A,G+=2):(e=a,0===Z&&tn(T));e===a&&(e=null);return e}(),i!==a?(93===n.charCodeAt(G)?(r=C,G++):(r=a,0===Z&&tn(z)),r!==a?(V=e,e=t=L(o,i)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a),e}function cn(){var e,t,o;if(e=G,t=[],I.test(n.charAt(G))?(o=n.charAt(G),G++):(o=a,0===Z&&tn(R)),o!==a)for(;o!==a;)t.push(o),I.test(n.charAt(G))?(o=n.charAt(G),G++):(o=a,0===Z&&tn(R));else t=a;return t!==a&&(V=e,t=E()),e=t}function mn(){var e,t,o,i,r,c;return e=G,t=G,Z++,37===n.charCodeAt(G)?(o=d,G++):(o=a,0===Z&&tn(h)),Z--,o===a?t=void 0:(G=t,t=a),t!==a?(o=G,Z++,123===n.charCodeAt(G)?(i=f,G++):(i=a,0===Z&&tn(k)),Z--,i===a?o=void 0:(G=o,o=a),o!==a?(i=G,Z++,124===n.charCodeAt(G)?(r=s,G++):(r=a,0===Z&&tn(l)),Z--,r===a?i=void 0:(G=i,i=a),i!==a?(r=G,Z++,62===n.charCodeAt(G)?(c=g,G++):(c=a,0===Z&&tn(w)),Z--,c===a?r=void 0:(G=r,r=a),r!==a?(c=function(){var e;n.substr(G,3)===N?(e=N,G+=3):(e=a,0===Z&&tn(P));e===a&&(n.substr(G,3)===O?(e=O,G+=3):(e=a,0===Z&&tn(_)),e===a&&(n.substr(G,3)===F?(e=F,G+=3):(e=a,0===Z&&tn(q)),e===a&&(n.substr(G,3)===U?(e=U,G+=3):(e=a,0===Z&&tn(H)),e===a&&(n.length>G?(e=n.charAt(G),G++):(e=a,0===Z&&tn(W))))));return e}(),c!==a?e=t=[t,o,i,r,c]:(G=e,e=a)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a)):(G=e,e=a),e}if((t=await i())!==a&&G===n.length)return t;throw t!==a&&G0){for(e=1,t=1;e{const a="0x"+e-65536;return a!=a||t?e:a<0?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,1023&a|56320)})}const g="_singleFile_fontFaces",w="_singleFile_worklets",b=globalThis.document,f=globalThis.Document,k=globalThis.JSON,y=globalThis.MutationObserver;let v,j;function S(){b instanceof f&&(b.addEventListener("single-file-new-font-face",n=>{const e=n.detail,t=Object.assign({},e);delete t.src,v.set(k.stringify(t),e)}),b.addEventListener("single-file-delete-font",n=>{const e=n.detail,t=Object.assign({},e);delete t.src,v.delete(k.stringify(t))}),b.addEventListener("single-file-clear-fonts",()=>v=new Map),b.addEventListener("single-file-new-worklet",n=>{const e=n.detail;j.set(e.moduleURL,e)}))}v=globalThis.window[g]?globalThis.window[g]:globalThis.window[g]=new Map,j=globalThis.window[w]?globalThis.window[w]:globalThis.window[w]=new Map,S(),new y(S).observe(b,{childList:!0});const x="single-file-",C="SingleFile",z="single-file-infobar";function L(n,e,t){if(!n.querySelector(z)){let a;e.infobarContent?a=e.infobarContent.replace(/\\n/g,"\n").replace(/\\t/g,"\t"):e.saveDate&&(a=e.saveDate),a=a||"No info";const o="BODY"==n.body.tagName?n.body:n.documentElement,i=function(n,e,t){const a=n.createElement(e);return t.appendChild(a),Array.from(getComputedStyle(a)).forEach(n=>a.style.setProperty(n,"initial","important")),a}(n,z,o);let r;if(t)r=i.attachShadow({mode:"open"});else{const e=n.createElement("template");e.setAttribute("shadowrootmode","open"),i.appendChild(e),r=e}const s=n.createElement("div"),l=n.createElement("style");if(l.textContent="\n.infobar,\n.infobar .infobar-icon,\n.infobar .infobar-link-icon {\n min-inline-size: 28px;\n min-block-size: 28px;\n box-sizing: border-box;\n}\n\n.infobar,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n opacity: 0.7;\n transition: opacity 250ms;\n}\n\n.infobar:hover,\n.infobar .infobar-close-icon:hover,\n.infobar .infobar-link-icon:hover {\n opacity: 1;\n}\n\n.infobar,\n.infobar-content {\n display: flex;\n}\n\n.infobar {\n position: fixed;\n max-height: calc(100% - 32px);\n top: 16px;\n right: 16px;\n margin-inline-start: 16px;\n margin-block-end: 16px;\n color: #2d2d2d;\n background-color: #737373;\n border: 2px solid;\n border-color: #eee;\n border-radius: 16px;\n z-index: 2147483647;\n animation-name: flash;\n animation-duration: .5s;\n animation-timing-function: cubic-bezier(0.39, 0.58, 0.57, 1);\n animation-delay: 1s;\n animation-iteration-count: 2;\n}\n\n.infobar:valid, .infobar:not(:focus-within):not(.infobar-focus) .infobar-content {\n display: none;\n}\n\n.infobar:focus-within, .infobar.infobar-focus {\n background-color: #f9f9f9;\n border-color: #878787;\n border-radius: 8px;\n opacity: 1;\n transition-property: opacity, background-color, border-color, border-radius, color;\n}\n\n.infobar-content {\n border: 2px solid;\n border-color: #f9f9f9;\n border-radius: 6px;\n background-color: #f9f9f9;\n overflow: auto;\n}\n\n.infobar-content span {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 14px;\n line-height: 18px;\n word-break: break-word;\n white-space: pre-wrap;\n margin-inline: 4px;\n margin-block: 4px;\n}\n\n.infobar .infobar-icon,\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n cursor: pointer;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n.infobar .infobar-close-icon,\n.infobar .infobar-link-icon {\n align-self: flex-start;\n}\n\n.infobar .infobar-icon {\n position: absolute;\n min-inline-size: 24px;\n min-block-size: 24px;\n}\n\n@keyframes flash {\n 0%, 100% {\n\tbackground-color: #737373;\n }\n 50% {\n\tbackground-color: #dd6a00;\n }\n}\n\n.infobar:focus-within .infobar-icon, .infobar.infobar-focus .infobar-icon {\n z-index: -1;\n background-image: none;\n margin: 4px;\n}\n\n.infobar .infobar-close-icon {\n min-inline-size: 22px;\n min-block-size: 22px;\n}\n\n.infobar .infobar-icon {\n background-color: transparent;\n background-size: 70%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHADIRLMaOHwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAPUExURQAAAIqKioyNjY2OjvDw8L2y1DEAAAABdFJOUwBA5thmAAAAAWJLR0QB/wIt3gAAAGNJREFUSMdjYCAJsLi4OBCQx6/CBQwIGIDPCBcXAkYQUsACU+AwlBVQHg6Eg5pgZBGOboIJZugDFwRwoJECJCUOhJI1wZwzqmBUwagCuipgIqTABG9h7YIKaKGAURAFEF/6AQAO4HqSoDP8bgAAAABJRU5ErkJggg==);\n}\n\n.infobar .infobar-link-icon {\n right: 4px;\n background-size: 60%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8H+DhhoQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJJJREFUOI3t070NRCEMA2CnYAOyDyPwpHj/Va7hJ3FzV7zy3ET5JIwoAF6Jk4wzAJAkzxAYG9YRTgB+24wBgKmfrGAKTcEfAY4KRlRoIeBTgKOCERVaCPgU4Khge2GqKOBTgKOCERVaAEC/4PNcnyoSWHpjqkhwKxbcig0Q6AorXYF/+A6eIYD1lVbwG/jdA6/kA2THRAURVubcAAAAAElFTkSuQmCC);\n}\n\n.infobar .infobar-close-icon {\n appearance: none;\n background-size: 80%;\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAABhmlDQ1BJQ0MgcHJvZmlsZQAAKJF9kj1Iw0AYht+mSkUrDnYQcchQnSyIijqWKhbBQmkrtOpgcukfNGlIUlwcBdeCgz+LVQcXZ10dXAVB8AfEydFJ0UVK/C4ptIjx4LiH9+59+e67A4RGhalm1wSgapaRisfEbG5VDLyiDwEAvZiVmKkn0osZeI6ve/j4ehfhWd7n/hz9St5kgE8kjjLdsIg3iGc2LZ3zPnGIlSSF+Jx43KACiR+5Lrv8xrnosMAzQ0YmNU8cIhaLHSx3MCsZKvE0cVhRNcoXsi4rnLc4q5Uaa9XJbxjMaytprtMcQRxLSCAJETJqKKMCCxFaNVJMpGg/5uEfdvxJcsnkKoORYwFVqJAcP/gb/O6tWZiadJOCMaD7xbY/RoHALtCs2/b3sW03TwD/M3Cltf3VBjD3SXq9rYWPgIFt4OK6rcl7wOUOMPSkS4bkSH6aQqEAvJ/RM+WAwVv6EGtu31r7OH0AMtSr5Rvg4BAYK1L2use9ezr79u+ZVv9+AFlNcp0UUpiqAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AsHAB8VC4EQ6QAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAAJUExURQAAAICHi4qKioTuJAkAAAABdFJOUwBA5thmAAAAAWJLR0QCZgt8ZAAAAJtJREFUOI3NkrsBgCAMRLFwBPdxBArcfxXFkO8rbKWAAJfHJ9faf9vuYX/749T5NmShm3bEwbe2SxeuM4+2oxDL1cDoKtVUjRy+tH78Cv2CS+wIiQNC1AEhk4AQeUTMWUJMfUJMSEJMSEY8kIx4IONroaYAimNxsXp1PA7PxwfVL8QnowwoVC0lig07wDDVUjAdbAnjwtow/z/bDW7eI4M2KruJAAAAAElFTkSuQmCC);\n}\n",e.infobarPositionAbsolute){l.textContent+=".infobar { position: absolute; }";"static"==getComputedStyle(o).position&&o.style.setProperty("position","relative","important")}e.infobarPositionTop?l.textContent+=`.infobar { top: ${e.infobarPositionTop}; bottom: auto; }`:e.infobarPositionBottom&&(l.textContent+=`.infobar { bottom: ${e.infobarPositionBottom}; top: auto; }`),e.infobarPositionRight?l.textContent+=`.infobar { right: ${e.infobarPositionRight}; left: auto; }`:e.infobarPositionLeft&&(l.textContent+=`.infobar { left: ${e.infobarPositionLeft}; right: auto; }`),l.textContent=l.textContent.replace(/ {2}/g,"").replace(/\n/g,"").replace(/: /g,":").replace(/, /g,","),s.appendChild(l);const c=n.createElement("form");c.classList.add("infobar"),e.openInfobar&&c.classList.add("infobar-focus"),s.appendChild(c);const m=n.createElement("span");m.tabIndex=-1,m.classList.add("infobar-icon"),c.appendChild(m);const d=n.createElement("span");d.tabIndex=-1,d.classList.add("infobar-content");const h=n.createElement("input");h.type="checkbox",h.required=!0,h.classList.add("infobar-close-icon"),h.title="Close",d.appendChild(h);const p=n.createElement("span");p.textContent=a,d.appendChild(p);const u=n.createElement("a");if(u.classList.add("infobar-link-icon"),u.target="_blank",u.rel="noopener noreferrer",u.title="Open source URL: "+e.saveUrl,u.href=e.saveUrl,d.appendChild(u),c.appendChild(d),t)r.appendChild(s);else{const e=n.createElement("script");let t=T.toString()+";";t+=A.toString()+";",t+="("+I.toString()+")(document, "+JSON.stringify(C)+");",e.textContent=t,s.appendChild(e),r.innerHTML=s.outerHTML}}}function A(n,e=C){const t=n.evaluate("//comment()",n,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);let a=t&&t.singleNodeValue;if(a&&a.nodeType==Node.COMMENT_NODE&&a.textContent.includes(e)){const n=a.textContent.split("\n"),[,,e,...t]=n,o=e.match(/^ url: (.*) ?$/),i=o&&o[1];if(i){let n,e;if(t.length&&(e=t[0].split("saved date: ")[1],e&&t.shift(),t.length>1)){let e=t[0].split("info: ")[1].trim();for(let n=1;n","\\\\","\0-",""],pn=["~","+","?","%","*",":","|",""","<",">","\"],un="data-sf-nesting-track-id",gn=globalThis.JSON,wn=globalThis.crypto,bn=globalThis.TextEncoder,fn=globalThis.Blob,kn=globalThis.CustomEvent,yn=globalThis.URL,vn=globalThis.DOMParser;function jn(n,e,t){n.querySelectorAll("noscript:not(["+X+"])").forEach(n=>{n.setAttribute(X,n.textContent),n.textContent=""}),function(n){n.querySelectorAll("meta[http-equiv=refresh]").forEach(n=>{n.removeAttribute("http-equiv"),n.setAttribute("disabled-http-equiv","refresh")})}(n),n.head&&n.head.querySelectorAll(tn).forEach(n=>n.hidden=!0),n.querySelectorAll("svg foreignObject").forEach(n=>{const e=n.querySelectorAll("html > head > "+tn+", html > body > "+tn);e.length&&(Array.from(n.childNodes).forEach(n=>n.remove()),e.forEach(e=>n.appendChild(e)))});const a=new Map;let o;e&&n.documentElement?(Sn(n),o=Cn(e,n,n.documentElement,t),t.moveStylesInHead&&n.querySelectorAll("body style, body ~ style").forEach(n=>{const t=Pn(e,n);t&&Tn(n,t)&&(n.setAttribute(K,""),o.markedElements.push(n))})):o={canvases:[],images:[],posters:[],videos:[],usedFonts:[],shadowRoots:[],markedElements:[]};let i="";if(n.referrer)try{i=new yn("/",new yn(n.referrer).origin).href}catch(n){}return{canvases:o.canvases,fonts:Array.from(v.values()),worklets:Array.from(j.values()),stylesheets:In(n),images:o.images,posters:o.posters,videos:o.videos,usedFonts:Array.from(o.usedFonts.values()),shadowRoots:o.shadowRoots,referrer:i,markedElements:o.markedElements,invalidElements:a,scrollPosition:{x:e.scrollX,y:e.scrollY},adoptedStyleSheets:zn(n.adoptedStyleSheets)}}function Sn(n){!function n(e,t=0,a=""){const o=a?`${a}.${t+1}`:`${t+1}`;e.setAttribute(un,o),Array.from(e.children).forEach((e,t)=>n(e,t,o))}(n.body);const e=_n(function(n){const e=n.doctype;let t="";e&&(t=" ");return t+n.documentElement.outerHTML}(n)),t=i(n.body),a=i(e.body),o=new Set;function i(n){const e={};return function n(t){if(t.getAttribute){const a=t.getAttribute(un);a&&(e[a]=t),Array.from(t.children).forEach(n)}}(n),e}Object.keys(t).forEach(e=>{if(e in a){if((t[e].parentElement?.getAttribute(un)||null)!==(a[e]?.parentElement?.getAttribute(un)||null)){let a=t[e];for(;a&&a!==n.body;){const n=a.getAttribute(un);n&&o.add(n),a=a.parentElement}}}}),function n(e,t){const a=e.getAttribute(un);a&&!t.has(a)&&e.removeAttribute(un);Array.from(e.children).forEach(e=>n(e,t))}(n.body,o)}function xn(n,e,t=!1){const a={};n.currentScript&&n.currentScript.remove(),function n(t){const o=t.getAttribute(e);o&&(a[o]=t);Array.from(t.children).forEach(n)}(n.body),Object.keys(a).forEach(n=>{const e=a[n],t=n.split(".");if(t.length>1){const n=t.slice(0,-1).join("."),o=a[n];o&&e.parentElement!==o&&o.appendChild(e)}}),t||n.querySelectorAll("["+e+"]").forEach(n=>n.removeAttribute(e))}function Cn(n,e,t,a,o={usedFonts:new Map,canvases:[],images:[],posters:[],videos:[],shadowRoots:[],markedElements:[]},i=new Map,r){if(t.childNodes){Array.from(t.childNodes).filter(e=>e instanceof n.HTMLElement||e instanceof n.SVGElement||e instanceof globalThis.HTMLElement||e instanceof globalThis.SVGElement).forEach(t=>{let s,l,c;if(!a.autoSaveExternalSave&&(a.removeHiddenElements||a.removeUnusedFonts||a.compressHTML)&&(c=Pn(n,t),(t instanceof n.HTMLElement||t instanceof globalThis.HTMLElement)&&a.removeHiddenElements&&(l=(r||t.closest("html > head"))&&an.includes(t.tagName.toUpperCase())||t.closest("details"),l||(s=r||Tn(t,c),s&&!on.includes(t.tagName.toUpperCase())&&(t.setAttribute(P,""),o.markedElements.push(t)))),!s)){if(a.compressHTML&&c){const n=c.getPropertyValue("white-space");n&&n.startsWith("pre")&&(t.setAttribute(F,""),o.markedElements.push(t))}a.removeUnusedFonts&&(Ln(c,a,o.usedFonts),Ln(Pn(n,t,":first-letter"),a,o.usedFonts),Ln(Pn(n,t,":before"),a,o.usedFonts),Ln(Pn(n,t,":after"),a,o.usedFonts))}!function(n,e,t,a,o,i,r){const s=t.tagName&&t.tagName.toUpperCase();if("CANVAS"==s)try{o.canvases.push({dataURI:t.toDataURL("image/png"),backgroundColor:r.getPropertyValue("background-color")}),t.setAttribute(V,o.canvases.length-1),o.markedElements.push(t)}catch(n){}if("IMG"==s){const e={currentSrc:i?dn:a.loadDeferredImages&&t.getAttribute(Z)||t.currentSrc};if(o.images.push(e),t.setAttribute(H,o.images.length-1),o.markedElements.push(t),t.removeAttribute(Z),r=r||Pn(n,t)){e.size=function(n,e,t){let a=e.naturalWidth,o=e.naturalHeight;if(!a&&!o){const i=null==e.getAttribute("style");if(t=t||Pn(n,e)){let n,r,s,l,c,m,d,h,p=!1;if("content-box"==t.getPropertyValue("box-sizing")){const n=e.style.getPropertyValue("box-sizing"),t=e.style.getPropertyPriority("box-sizing"),a=e.clientWidth;e.style.setProperty("box-sizing","border-box","important"),p=e.clientWidth!=a,n?e.style.setProperty("box-sizing",n,t):e.style.removeProperty("box-sizing")}n=Rn("padding-left",t),r=Rn("padding-right",t),s=Rn("padding-top",t),l=Rn("padding-bottom",t),p?(c=Rn("border-left-width",t),m=Rn("border-right-width",t),d=Rn("border-top-width",t),h=Rn("border-bottom-width",t)):c=m=d=h=0,a=Math.max(0,e.clientWidth-n-r-c-m),o=Math.max(0,e.clientHeight-s-l-d-h),i&&e.removeAttribute("style")}}return{pxWidth:a,pxHeight:o}}(n,t,r);const a=r.getPropertyValue("box-shadow"),o=r.getPropertyValue("background-image");a&&"none"!=a||o&&"none"!=o||!(e.size.pxWidth>1||e.size.pxHeight>1)||(e.replaceable=!0,e.backgroundColor=r.getPropertyValue("background-color"),e.objectFit=r.getPropertyValue("object-fit"),e.boxSizing=r.getPropertyValue("box-sizing"),e.objectPosition=r.getPropertyValue("object-position"))}}if("VIDEO"==s){const a=t.currentSrc;if(a&&!a.startsWith("blob:")&&!a.startsWith("data:")){const e=Pn(n,t.parentNode);o.videos.push({positionParent:e&&e.getPropertyValue("position"),src:a,size:{pxWidth:t.clientWidth,pxHeight:t.clientHeight,videoWidth:t.videoWidth,videoHeight:t.videoHeight},currentTime:t.currentTime}),t.setAttribute(G,o.videos.length-1)}if(!t.getAttribute("poster")){const n=e.createElement("canvas"),a=n.getContext("2d");n.width=t.videoWidth,n.height=t.videoHeight;try{a.drawImage(t,0,0,n.width,n.height),o.posters.push(n.toDataURL("image/png")),t.setAttribute(W,o.posters.length-1),o.markedElements.push(t)}catch(n){}}}"IFRAME"==s&&i&&a.removeHiddenElements&&(t.setAttribute(_,""),o.markedElements.push(t));"INPUT"==s&&("password"!=t.type&&(t.setAttribute(J,t.value),o.markedElements.push(t)),"radio"!=t.type&&"checkbox"!=t.type||(t.setAttribute(Y,t.checked),o.markedElements.push(t)));"TEXTAREA"==s&&(t.setAttribute(J,t.value),o.markedElements.push(t));"SELECT"==s&&t.querySelectorAll("option").forEach(n=>{n.selected&&(n.setAttribute(J,""),o.markedElements.push(n))});"SCRIPT"==s&&(t.async&&""!=t.getAttribute("async")&&"async"!=t.getAttribute("async")&&(t.setAttribute(en,""),o.markedElements.push(t)),t.textContent=t.textContent.replace(/<\/script>/gi,"<\\/script>"))}(n,e,t,a,o,s,c);const m=!(t instanceof n.SVGElement||t instanceof globalThis.SVGElement)&&function(n){const e=globalThis.chrome;if(n.openOrClosedShadowRoot)return n.openOrClosedShadowRoot;if(!(e&&e.dom&&e.dom.openOrClosedShadowRoot))return n.shadowRoot;try{return e.dom.openOrClosedShadowRoot(n)}catch(e){return n.shadowRoot}}(t);if(m&&!t.classList.contains(cn)&&t.tagName.toLowerCase()!=mn){const r={};t.setAttribute(q,o.shadowRoots.length),o.markedElements.push(t),o.shadowRoots.push(r);try{if(m.adoptedStyleSheets){const n=n=>r.adoptedStyleSheets=n.detail.adoptedStyleSheets;m.addEventListener(M,n),m.dispatchEvent(new kn(D,{bubbles:!0})),r.adoptedStyleSheets||t.dispatchEvent(new kn(D,{bubbles:!0})),m.removeEventListener(M,n)}}catch(n){}Cn(n,e,m,a,o,i,s),r.content=m.innerHTML,r.mode=m.mode,r.delegateFocus=m.delegatesFocus,r.clonable=m.clonable,r.serializable=m.serializable;try{m.adoptedStyleSheets&&void 0===m.adoptedStyleSheets.length&&m.dispatchEvent(new kn(B,{bubbles:!0}))}catch(n){}}Cn(n,e,t,a,o,i,s),!a.autoSaveExternalSave&&a.removeHiddenElements&&r&&(l||""==t.getAttribute(O)?t.parentElement&&(t.parentElement.setAttribute(O,""),o.markedElements.push(t.parentElement)):s&&(t.setAttribute(N,""),o.markedElements.push(t)))})}return o}function zn(n,e=new Map){if(n){const t=[];for(const a of Array.from(n))if(e.has(a))t.push(e.get(a));else{let n="";if(a&&a.cssRules)for(const e of a.cssRules)n+=e.cssText+"\n";e.set(a,n),t.push(n)}return t}return[]}function Ln(n,e,t){if(n){const a=n.getPropertyValue("font-style")||"normal";n.getPropertyValue("font-family").split(",").forEach(o=>{if(o=An(o),!e.loadedFonts||e.loadedFonts.find(n=>An(n.family)==o&&n.style==a)){const e=Dn(n.getPropertyValue("font-weight")),i=n.getPropertyValue("font-variant")||"normal",r=[o,e,a,i];t.set(gn.stringify(r),[o,e,a,i])}})}}function An(n=""){return En(u(n.trim())).toLowerCase()}function Tn(n,e){let t=!1;if(e){const a=e.getPropertyValue("display"),o=e.getPropertyValue("opacity"),i=e.getPropertyValue("visibility");if(t="none"==a,!t&&("0"==o||"hidden"==i)&&n.getBoundingClientRect){const e=n.getBoundingClientRect();t=!e.width&&!e.height}}return Boolean(t)}function In(n){if(n){const e=[];return n.querySelectorAll("style").forEach((t,a)=>{try{if(!t.sheet.disabled){const o=n.createElement("style");o.textContent=t.textContent,n.body.appendChild(o);const i=o.sheet;o.remove();const r=Array.from(i.cssRules).map(n=>n.cssText).join("\n"),s=Array.from(t.sheet.cssRules).map(n=>n.cssText).join("\n");i&&r==s||(t.setAttribute($,a),e[a]=Array.from(t.sheet.cssRules).map(n=>n.cssText).join("\n"))}}catch(n){}}),e}}function Rn(n,e){if(e.getPropertyValue(n).endsWith("px"))return parseFloat(e.getPropertyValue(n))}function En(n){return(n=n.match(rn)?n.replace(rn,"$1"):n.replace(sn,"$1")).trim()}function Dn(n){return ln[n.toLowerCase().trim()]||n}function Mn(n){return new fn([n]).size}async function Bn(n,e){try{return function(n){const e=[],t=new DataView(n);for(let n=0;nn.concat(Array.isArray(e)?Nn(e):e),[])}function Pn(n,e,t){try{return n.getComputedStyle(e,t)}catch(n){}}function On(n,e=hn,t="_",a=pn){return a.forEach((t,o)=>n=n.replace(new RegExp("["+e[o]+"]+","g"),a[o])),e.forEach(e=>n=n.replace(new RegExp("["+e+"]+","g"),t)),n=n.replace(/\.\.\//g,"").replace(/^\/+/,"").replace(/\/+/g,"/").replace(/\/$/,"").replace(/\.$/,"").replace(/\.\//g,"."+t).replace(/\/\./g,"/"+t)}function _n(n,e){const t=(new vn).parseFromString(n,"text/html");t.head||t.documentElement.insertBefore(t.createElement("HEAD"),t.body);let a=t.querySelector("base");return a&&a.getAttribute("href")||(a&&a.remove(),a=t.createElement("base"),a.setAttribute("href",e),t.head.insertBefore(a,t.head.firstChild)),t}const Fn=globalThis.Blob,qn=globalThis.FileReader,Un=globalThis.URL,Hn=globalThis.Intl,Wn=globalThis.URLSearchParams,Gn=globalThis.navigator,Vn=/([{}()^$&.*?/+|[\\\\]|\]|-)/g,Kn={"😀":"grinning-face","😃":"grinning-face-with-big-eyes","😄":"grinning-face-with-smiling-eyes","😁":"beaming-face-with-smiling-eyes","😆":"grinning-squinting-face","😅":"grinning-face-with-sweat","🤣":"rolling-on-the-floor-laughing","😂":"face-with-tears-of-joy","🙂":"slightly-smiling-face","🙃":"upside-down-face","🫠":"melting-face","😉":"winking-face","😊":"smiling-face-with-smiling-eyes","😇":"smiling-face-with-halo","🥰":"smiling-face-with-hearts","😍":"smiling-face-with-heart-eyes","🤩":"star-struck","😘":"face-blowing-a-kiss","😗":"kissing-face","☺":"smiling-face","😚":"kissing-face-with-closed-eyes","😙":"kissing-face-with-smiling-eyes","🥲":"smiling-face-with-tear","😋":"face-savoring-food","😛":"face-with-tongue","😜":"winking-face-with-tongue","🤪":"zany-face","😝":"squinting-face-with-tongue","🤑":"money-mouth-face","🤗":"smiling-face-with-open-hands","🤭":"face-with-hand-over-mouth","🫢":"face-with-open-eyes-and-hand-over-mouth","🫣":"face-with-peeking-eye","🤫":"shushing-face","🤔":"thinking-face","🫡":"saluting-face","🤐":"zipper-mouth-face","🤨":"face-with-raised-eyebrow","😐":"neutral-face","😑":"expressionless-face","😶":"face-without-mouth","🫥":"dotted-line-face","😶🌫️":"face-in-clouds","😏":"smirking-face","😒":"unamused-face","🙄":"face-with-rolling-eyes","😬":"grimacing-face","😮💨":"face-exhaling","🤥":"lying-face","🫨":"⊛-shaking-face","😌":"relieved-face","😔":"pensive-face","😪":"sleepy-face","🤤":"drooling-face","😴":"sleeping-face","😷":"face-with-medical-mask","🤒":"face-with-thermometer","🤕":"face-with-head-bandage","🤢":"nauseated-face","🤮":"face-vomiting","🤧":"sneezing-face","🥵":"hot-face","🥶":"cold-face","🥴":"woozy-face","😵":"face-with-crossed-out-eyes","😵💫":"face-with-spiral-eyes","🤯":"exploding-head","🤠":"cowboy-hat-face","🥳":"partying-face","🥸":"disguised-face","😎":"smiling-face-with-sunglasses","🤓":"nerd-face","🧐":"face-with-monocle","😕":"confused-face","🫤":"face-with-diagonal-mouth","😟":"worried-face","🙁":"slightly-frowning-face","☹":"frowning-face","😮":"face-with-open-mouth","😯":"hushed-face","😲":"astonished-face","😳":"flushed-face","🥺":"pleading-face","🥹":"face-holding-back-tears","😦":"frowning-face-with-open-mouth","😧":"anguished-face","😨":"fearful-face","😰":"anxious-face-with-sweat","😥":"sad-but-relieved-face","😢":"crying-face","😭":"loudly-crying-face","😱":"face-screaming-in-fear","😖":"confounded-face","😣":"persevering-face","😞":"disappointed-face","😓":"downcast-face-with-sweat","😩":"weary-face","😫":"tired-face","🥱":"yawning-face","😤":"face-with-steam-from-nose","😡":"enraged-face","😠":"angry-face","🤬":"face-with-symbols-on-mouth","😈":"smiling-face-with-horns","👿":"angry-face-with-horns","💀":"skull","☠":"skull-and-crossbones","💩":"pile-of-poo","🤡":"clown-face","👹":"ogre","👺":"goblin","👻":"ghost","👽":"alien","👾":"alien-monster","🤖":"robot","😺":"grinning-cat","😸":"grinning-cat-with-smiling-eyes","😹":"cat-with-tears-of-joy","😻":"smiling-cat-with-heart-eyes","😼":"cat-with-wry-smile","😽":"kissing-cat","🙀":"weary-cat","😿":"crying-cat","😾":"pouting-cat","🙈":"see-no-evil-monkey","🙉":"hear-no-evil-monkey","🙊":"speak-no-evil-monkey","💌":"love-letter","💘":"heart-with-arrow","💝":"heart-with-ribbon","💖":"sparkling-heart","💗":"growing-heart","💓":"beating-heart","💞":"revolving-hearts","💕":"two-hearts","💟":"heart-decoration","❣":"heart-exclamation","💔":"broken-heart","❤️🔥":"heart-on-fire","❤️🩹":"mending-heart","❤":"red-heart","🩷":"⊛-pink-heart","🧡":"orange-heart","💛":"yellow-heart","💚":"green-heart","💙":"blue-heart","🩵":"⊛-light-blue-heart","💜":"purple-heart","🤎":"brown-heart","🖤":"black-heart","🩶":"⊛-grey-heart","🤍":"white-heart","💋":"kiss-mark","💯":"hundred-points","💢":"anger-symbol","💥":"collision","💫":"dizzy","💦":"sweat-droplets","💨":"dashing-away","🕳":"hole","💬":"speech-balloon","👁️🗨️":"eye-in-speech-bubble","🗨":"left-speech-bubble","🗯":"right-anger-bubble","💭":"thought-balloon","💤":"zzz","👋":"waving-hand","🤚":"raised-back-of-hand","🖐":"hand-with-fingers-splayed","✋":"raised-hand","🖖":"vulcan-salute","🫱":"rightwards-hand","🫲":"leftwards-hand","🫳":"palm-down-hand","🫴":"palm-up-hand","🫷":"⊛-leftwards-pushing-hand","🫸":"⊛-rightwards-pushing-hand","👌":"ok-hand","🤌":"pinched-fingers","🤏":"pinching-hand","✌":"victory-hand","🤞":"crossed-fingers","🫰":"hand-with-index-finger-and-thumb-crossed","🤟":"love-you-gesture","🤘":"sign-of-the-horns","🤙":"call-me-hand","👈":"backhand-index-pointing-left","👉":"backhand-index-pointing-right","👆":"backhand-index-pointing-up","🖕":"middle-finger","👇":"backhand-index-pointing-down","☝":"index-pointing-up","🫵":"index-pointing-at-the-viewer","👍":"thumbs-up","👎":"thumbs-down","✊":"raised-fist","👊":"oncoming-fist","🤛":"left-facing-fist","🤜":"right-facing-fist","👏":"clapping-hands","🙌":"raising-hands","🫶":"heart-hands","👐":"open-hands","🤲":"palms-up-together","🤝":"handshake","🙏":"folded-hands","✍":"writing-hand","💅":"nail-polish","🤳":"selfie","💪":"flexed-biceps","🦾":"mechanical-arm","🦿":"mechanical-leg","🦵":"leg","🦶":"foot","👂":"ear","🦻":"ear-with-hearing-aid","👃":"nose","🧠":"brain","🫀":"anatomical-heart","🫁":"lungs","🦷":"tooth","🦴":"bone","👀":"eyes","👁":"eye","👅":"tongue","👄":"mouth","🫦":"biting-lip","👶":"baby","🧒":"child","👦":"boy","👧":"girl","🧑":"person","👱":"person-blond-hair","👨":"man","🧔":"person-beard","🧔♂️":"man-beard","🧔♀️":"woman-beard","👨🦰":"man-red-hair","👨🦱":"man-curly-hair","👨🦳":"man-white-hair","👨🦲":"man-bald","👩":"woman","👩🦰":"woman-red-hair","🧑🦰":"person-red-hair","👩🦱":"woman-curly-hair","🧑🦱":"person-curly-hair","👩🦳":"woman-white-hair","🧑🦳":"person-white-hair","👩🦲":"woman-bald","🧑🦲":"person-bald","👱♀️":"woman-blond-hair","👱♂️":"man-blond-hair","🧓":"older-person","👴":"old-man","👵":"old-woman","🙍":"person-frowning","🙍♂️":"man-frowning","🙍♀️":"woman-frowning","🙎":"person-pouting","🙎♂️":"man-pouting","🙎♀️":"woman-pouting","🙅":"person-gesturing-no","🙅♂️":"man-gesturing-no","🙅♀️":"woman-gesturing-no","🙆":"person-gesturing-ok","🙆♂️":"man-gesturing-ok","🙆♀️":"woman-gesturing-ok","💁":"person-tipping-hand","💁♂️":"man-tipping-hand","💁♀️":"woman-tipping-hand","🙋":"person-raising-hand","🙋♂️":"man-raising-hand","🙋♀️":"woman-raising-hand","🧏":"deaf-person","🧏♂️":"deaf-man","🧏♀️":"deaf-woman","🙇":"person-bowing","🙇♂️":"man-bowing","🙇♀️":"woman-bowing","🤦":"person-facepalming","🤦♂️":"man-facepalming","🤦♀️":"woman-facepalming","🤷":"person-shrugging","🤷♂️":"man-shrugging","🤷♀️":"woman-shrugging","🧑⚕️":"health-worker","👨⚕️":"man-health-worker","👩⚕️":"woman-health-worker","🧑🎓":"student","👨🎓":"man-student","👩🎓":"woman-student","🧑🏫":"teacher","👨🏫":"man-teacher","👩🏫":"woman-teacher","🧑⚖️":"judge","👨⚖️":"man-judge","👩⚖️":"woman-judge","🧑🌾":"farmer","👨🌾":"man-farmer","👩🌾":"woman-farmer","🧑🍳":"cook","👨🍳":"man-cook","👩🍳":"woman-cook","🧑🔧":"mechanic","👨🔧":"man-mechanic","👩🔧":"woman-mechanic","🧑🏭":"factory-worker","👨🏭":"man-factory-worker","👩🏭":"woman-factory-worker","🧑💼":"office-worker","👨💼":"man-office-worker","👩💼":"woman-office-worker","🧑🔬":"scientist","👨🔬":"man-scientist","👩🔬":"woman-scientist","🧑💻":"technologist","👨💻":"man-technologist","👩💻":"woman-technologist","🧑🎤":"singer","👨🎤":"man-singer","👩🎤":"woman-singer","🧑🎨":"artist","👨🎨":"man-artist","👩🎨":"woman-artist","🧑✈️":"pilot","👨✈️":"man-pilot","👩✈️":"woman-pilot","🧑🚀":"astronaut","👨🚀":"man-astronaut","👩🚀":"woman-astronaut","🧑🚒":"firefighter","👨🚒":"man-firefighter","👩🚒":"woman-firefighter","👮":"police-officer","👮♂️":"man-police-officer","👮♀️":"woman-police-officer","🕵":"detective","🕵️♂️":"man-detective","🕵️♀️":"woman-detective","💂":"guard","💂♂️":"man-guard","💂♀️":"woman-guard","🥷":"ninja","👷":"construction-worker","👷♂️":"man-construction-worker","👷♀️":"woman-construction-worker","🫅":"person-with-crown","🤴":"prince","👸":"princess","👳":"person-wearing-turban","👳♂️":"man-wearing-turban","👳♀️":"woman-wearing-turban","👲":"person-with-skullcap","🧕":"woman-with-headscarf","🤵":"person-in-tuxedo","🤵♂️":"man-in-tuxedo","🤵♀️":"woman-in-tuxedo","👰":"person-with-veil","👰♂️":"man-with-veil","👰♀️":"woman-with-veil","🤰":"pregnant-woman","🫃":"pregnant-man","🫄":"pregnant-person","🤱":"breast-feeding","👩🍼":"woman-feeding-baby","👨🍼":"man-feeding-baby","🧑🍼":"person-feeding-baby","👼":"baby-angel","🎅":"santa-claus","🤶":"mrs-claus","🧑🎄":"mx-claus","🦸":"superhero","🦸♂️":"man-superhero","🦸♀️":"woman-superhero","🦹":"supervillain","🦹♂️":"man-supervillain","🦹♀️":"woman-supervillain","🧙":"mage","🧙♂️":"man-mage","🧙♀️":"woman-mage","🧚":"fairy","🧚♂️":"man-fairy","🧚♀️":"woman-fairy","🧛":"vampire","🧛♂️":"man-vampire","🧛♀️":"woman-vampire","🧜":"merperson","🧜♂️":"merman","🧜♀️":"mermaid","🧝":"elf","🧝♂️":"man-elf","🧝♀️":"woman-elf","🧞":"genie","🧞♂️":"man-genie","🧞♀️":"woman-genie","🧟":"zombie","🧟♂️":"man-zombie","🧟♀️":"woman-zombie","🧌":"troll","💆":"person-getting-massage","💆♂️":"man-getting-massage","💆♀️":"woman-getting-massage","💇":"person-getting-haircut","💇♂️":"man-getting-haircut","💇♀️":"woman-getting-haircut","🚶":"person-walking","🚶♂️":"man-walking","🚶♀️":"woman-walking","🧍":"person-standing","🧍♂️":"man-standing","🧍♀️":"woman-standing","🧎":"person-kneeling","🧎♂️":"man-kneeling","🧎♀️":"woman-kneeling","🧑🦯":"person-with-white-cane","👨🦯":"man-with-white-cane","👩🦯":"woman-with-white-cane","🧑🦼":"person-in-motorized-wheelchair","👨🦼":"man-in-motorized-wheelchair","👩🦼":"woman-in-motorized-wheelchair","🧑🦽":"person-in-manual-wheelchair","👨🦽":"man-in-manual-wheelchair","👩🦽":"woman-in-manual-wheelchair","🏃":"person-running","🏃♂️":"man-running","🏃♀️":"woman-running","💃":"woman-dancing","🕺":"man-dancing","🕴":"person-in-suit-levitating","👯":"people-with-bunny-ears","👯♂️":"men-with-bunny-ears","👯♀️":"women-with-bunny-ears","🧖":"person-in-steamy-room","🧖♂️":"man-in-steamy-room","🧖♀️":"woman-in-steamy-room","🧗":"person-climbing","🧗♂️":"man-climbing","🧗♀️":"woman-climbing","🤺":"person-fencing","🏇":"horse-racing","⛷":"skier","🏂":"snowboarder","🏌":"person-golfing","🏌️♂️":"man-golfing","🏌️♀️":"woman-golfing","🏄":"person-surfing","🏄♂️":"man-surfing","🏄♀️":"woman-surfing","🚣":"person-rowing-boat","🚣♂️":"man-rowing-boat","🚣♀️":"woman-rowing-boat","🏊":"person-swimming","🏊♂️":"man-swimming","🏊♀️":"woman-swimming","⛹":"person-bouncing-ball","⛹️♂️":"man-bouncing-ball","⛹️♀️":"woman-bouncing-ball","🏋":"person-lifting-weights","🏋️♂️":"man-lifting-weights","🏋️♀️":"woman-lifting-weights","🚴":"person-biking","🚴♂️":"man-biking","🚴♀️":"woman-biking","🚵":"person-mountain-biking","🚵♂️":"man-mountain-biking","🚵♀️":"woman-mountain-biking","🤸":"person-cartwheeling","🤸♂️":"man-cartwheeling","🤸♀️":"woman-cartwheeling","🤼":"people-wrestling","🤼♂️":"men-wrestling","🤼♀️":"women-wrestling","🤽":"person-playing-water-polo","🤽♂️":"man-playing-water-polo","🤽♀️":"woman-playing-water-polo","🤾":"person-playing-handball","🤾♂️":"man-playing-handball","🤾♀️":"woman-playing-handball","🤹":"person-juggling","🤹♂️":"man-juggling","🤹♀️":"woman-juggling","🧘":"person-in-lotus-position","🧘♂️":"man-in-lotus-position","🧘♀️":"woman-in-lotus-position","🛀":"person-taking-bath","🛌":"person-in-bed","🧑🤝🧑":"people-holding-hands","👭":"women-holding-hands","👫":"woman-and-man-holding-hands","👬":"men-holding-hands","💏":"kiss","👩❤️💋👨":"kiss-woman,-man","👨❤️💋👨":"kiss-man,-man","👩❤️💋👩":"kiss-woman,-woman","💑":"couple-with-heart","👩❤️👨":"couple-with-heart-woman,-man","👨❤️👨":"couple-with-heart-man,-man","👩❤️👩":"couple-with-heart-woman,-woman","👪":"family","👨👩👦":"family-man,-woman,-boy","👨👩👧":"family-man,-woman,-girl","👨👩👧👦":"family-man,-woman,-girl,-boy","👨👩👦👦":"family-man,-woman,-boy,-boy","👨👩👧👧":"family-man,-woman,-girl,-girl","👨👨👦":"family-man,-man,-boy","👨👨👧":"family-man,-man,-girl","👨👨👧👦":"family-man,-man,-girl,-boy","👨👨👦👦":"family-man,-man,-boy,-boy","👨👨👧👧":"family-man,-man,-girl,-girl","👩👩👦":"family-woman,-woman,-boy","👩👩👧":"family-woman,-woman,-girl","👩👩👧👦":"family-woman,-woman,-girl,-boy","👩👩👦👦":"family-woman,-woman,-boy,-boy","👩👩👧👧":"family-woman,-woman,-girl,-girl","👨👦":"family-man,-boy","👨👦👦":"family-man,-boy,-boy","👨👧":"family-man,-girl","👨👧👦":"family-man,-girl,-boy","👨👧👧":"family-man,-girl,-girl","👩👦":"family-woman,-boy","👩👦👦":"family-woman,-boy,-boy","👩👧":"family-woman,-girl","👩👧👦":"family-woman,-girl,-boy","👩👧👧":"family-woman,-girl,-girl","🗣":"speaking-head","👤":"bust-in-silhouette","👥":"busts-in-silhouette","🫂":"people-hugging","👣":"footprints","🦰":"red-hair","🦱":"curly-hair","🦳":"white-hair","🦲":"bald","🐵":"monkey-face","🐒":"monkey","🦍":"gorilla","🦧":"orangutan","🐶":"dog-face","🐕":"dog","🦮":"guide-dog","🐕🦺":"service-dog","🐩":"poodle","🐺":"wolf","🦊":"fox","🦝":"raccoon","🐱":"cat-face","🐈":"cat","🐈⬛":"black-cat","🦁":"lion","🐯":"tiger-face","🐅":"tiger","🐆":"leopard","🐴":"horse-face","🫎":"⊛-moose","🫏":"⊛-donkey","🐎":"horse","🦄":"unicorn","🦓":"zebra","🦌":"deer","🦬":"bison","🐮":"cow-face","🐂":"ox","🐃":"water-buffalo","🐄":"cow","🐷":"pig-face","🐖":"pig","🐗":"boar","🐽":"pig-nose","🐏":"ram","🐑":"ewe","🐐":"goat","🐪":"camel","🐫":"two-hump-camel","🦙":"llama","🦒":"giraffe","🐘":"elephant","🦣":"mammoth","🦏":"rhinoceros","🦛":"hippopotamus","🐭":"mouse-face","🐁":"mouse","🐀":"rat","🐹":"hamster","🐰":"rabbit-face","🐇":"rabbit","🐿":"chipmunk","🦫":"beaver","🦔":"hedgehog","🦇":"bat","🐻":"bear","🐻❄️":"polar-bear","🐨":"koala","🐼":"panda","🦥":"sloth","🦦":"otter","🦨":"skunk","🦘":"kangaroo","🦡":"badger","🐾":"paw-prints","🦃":"turkey","🐔":"chicken","🐓":"rooster","🐣":"hatching-chick","🐤":"baby-chick","🐥":"front-facing-baby-chick","🐦":"bird","🐧":"penguin","🕊":"dove","🦅":"eagle","🦆":"duck","🦢":"swan","🦉":"owl","🦤":"dodo","🪶":"feather","🦩":"flamingo","🦚":"peacock","🦜":"parrot","🪽":"⊛-wing","🐦⬛":"⊛-black-bird","🪿":"⊛-goose","🐸":"frog","🐊":"crocodile","🐢":"turtle","🦎":"lizard","🐍":"snake","🐲":"dragon-face","🐉":"dragon","🦕":"sauropod","🦖":"t-rex","🐳":"spouting-whale","🐋":"whale","🐬":"dolphin","🦭":"seal","🐟":"fish","🐠":"tropical-fish","🐡":"blowfish","🦈":"shark","🐙":"octopus","🐚":"spiral-shell","🪸":"coral","🪼":"⊛-jellyfish","🐌":"snail","🦋":"butterfly","🐛":"bug","🐜":"ant","🐝":"honeybee","🪲":"beetle","🐞":"lady-beetle","🦗":"cricket","🪳":"cockroach","🕷":"spider","🕸":"spider-web","🦂":"scorpion","🦟":"mosquito","🪰":"fly","🪱":"worm","🦠":"microbe","💐":"bouquet","🌸":"cherry-blossom","💮":"white-flower","🪷":"lotus","🏵":"rosette","🌹":"rose","🥀":"wilted-flower","🌺":"hibiscus","🌻":"sunflower","🌼":"blossom","🌷":"tulip","🪻":"⊛-hyacinth","🌱":"seedling","🪴":"potted-plant","🌲":"evergreen-tree","🌳":"deciduous-tree","🌴":"palm-tree","🌵":"cactus","🌾":"sheaf-of-rice","🌿":"herb","☘":"shamrock","🍀":"four-leaf-clover","🍁":"maple-leaf","🍂":"fallen-leaf","🍃":"leaf-fluttering-in-wind","🪹":"empty-nest","🪺":"nest-with-eggs","🍄":"mushroom","🍇":"grapes","🍈":"melon","🍉":"watermelon","🍊":"tangerine","🍋":"lemon","🍌":"banana","🍍":"pineapple","🥭":"mango","🍎":"red-apple","🍏":"green-apple","🍐":"pear","🍑":"peach","🍒":"cherries","🍓":"strawberry","🫐":"blueberries","🥝":"kiwi-fruit","🍅":"tomato","🫒":"olive","🥥":"coconut","🥑":"avocado","🍆":"eggplant","🥔":"potato","🥕":"carrot","🌽":"ear-of-corn","🌶":"hot-pepper","🫑":"bell-pepper","🥒":"cucumber","🥬":"leafy-green","🥦":"broccoli","🧄":"garlic","🧅":"onion","🥜":"peanuts","🫘":"beans","🌰":"chestnut","🫚":"⊛-ginger-root","🫛":"⊛-pea-pod","🍞":"bread","🥐":"croissant","🥖":"baguette-bread","🫓":"flatbread","🥨":"pretzel","🥯":"bagel","🥞":"pancakes","🧇":"waffle","🧀":"cheese-wedge","🍖":"meat-on-bone","🍗":"poultry-leg","🥩":"cut-of-meat","🥓":"bacon","🍔":"hamburger","🍟":"french-fries","🍕":"pizza","🌭":"hot-dog","🥪":"sandwich","🌮":"taco","🌯":"burrito","🫔":"tamale","🥙":"stuffed-flatbread","🧆":"falafel","🥚":"egg","🍳":"cooking","🥘":"shallow-pan-of-food","🍲":"pot-of-food","🫕":"fondue","🥣":"bowl-with-spoon","🥗":"green-salad","🍿":"popcorn","🧈":"butter","🧂":"salt","🥫":"canned-food","🍱":"bento-box","🍘":"rice-cracker","🍙":"rice-ball","🍚":"cooked-rice","🍛":"curry-rice","🍜":"steaming-bowl","🍝":"spaghetti","🍠":"roasted-sweet-potato","🍢":"oden","🍣":"sushi","🍤":"fried-shrimp","🍥":"fish-cake-with-swirl","🥮":"moon-cake","🍡":"dango","🥟":"dumpling","🥠":"fortune-cookie","🥡":"takeout-box","🦀":"crab","🦞":"lobster","🦐":"shrimp","🦑":"squid","🦪":"oyster","🍦":"soft-ice-cream","🍧":"shaved-ice","🍨":"ice-cream","🍩":"doughnut","🍪":"cookie","🎂":"birthday-cake","🍰":"shortcake","🧁":"cupcake","🥧":"pie","🍫":"chocolate-bar","🍬":"candy","🍭":"lollipop","🍮":"custard","🍯":"honey-pot","🍼":"baby-bottle","🥛":"glass-of-milk","☕":"hot-beverage","🫖":"teapot","🍵":"teacup-without-handle","🍶":"sake","🍾":"bottle-with-popping-cork","🍷":"wine-glass","🍸":"cocktail-glass","🍹":"tropical-drink","🍺":"beer-mug","🍻":"clinking-beer-mugs","🥂":"clinking-glasses","🥃":"tumbler-glass","🫗":"pouring-liquid","🥤":"cup-with-straw","🧋":"bubble-tea","🧃":"beverage-box","🧉":"mate","🧊":"ice","🥢":"chopsticks","🍽":"fork-and-knife-with-plate","🍴":"fork-and-knife","🥄":"spoon","🔪":"kitchen-knife","🫙":"jar","🏺":"amphora","🌍":"globe-showing-europe-africa","🌎":"globe-showing-americas","🌏":"globe-showing-asia-australia","🌐":"globe-with-meridians","🗺":"world-map","🗾":"map-of-japan","🧭":"compass","🏔":"snow-capped-mountain","⛰":"mountain","🌋":"volcano","🗻":"mount-fuji","🏕":"camping","🏖":"beach-with-umbrella","🏜":"desert","🏝":"desert-island","🏞":"national-park","🏟":"stadium","🏛":"classical-building","🏗":"building-construction","🧱":"brick","🪨":"rock","🪵":"wood","🛖":"hut","🏘":"houses","🏚":"derelict-house","🏠":"house","🏡":"house-with-garden","🏢":"office-building","🏣":"japanese-post-office","🏤":"post-office","🏥":"hospital","🏦":"bank","🏨":"hotel","🏩":"love-hotel","🏪":"convenience-store","🏫":"school","🏬":"department-store","🏭":"factory","🏯":"japanese-castle","🏰":"castle","💒":"wedding","🗼":"tokyo-tower","🗽":"statue-of-liberty","⛪":"church","🕌":"mosque","🛕":"hindu-temple","🕍":"synagogue","⛩":"shinto-shrine","🕋":"kaaba","⛲":"fountain","⛺":"tent","🌁":"foggy","🌃":"night-with-stars","🏙":"cityscape","🌄":"sunrise-over-mountains","🌅":"sunrise","🌆":"cityscape-at-dusk","🌇":"sunset","🌉":"bridge-at-night","♨":"hot-springs","🎠":"carousel-horse","🛝":"playground-slide","🎡":"ferris-wheel","🎢":"roller-coaster","💈":"barber-pole","🎪":"circus-tent","🚂":"locomotive","🚃":"railway-car","🚄":"high-speed-train","🚅":"bullet-train","🚆":"train","🚇":"metro","🚈":"light-rail","🚉":"station","🚊":"tram","🚝":"monorail","🚞":"mountain-railway","🚋":"tram-car","🚌":"bus","🚍":"oncoming-bus","🚎":"trolleybus","🚐":"minibus","🚑":"ambulance","🚒":"fire-engine","🚓":"police-car","🚔":"oncoming-police-car","🚕":"taxi","🚖":"oncoming-taxi","🚗":"automobile","🚘":"oncoming-automobile","🚙":"sport-utility-vehicle","🛻":"pickup-truck","🚚":"delivery-truck","🚛":"articulated-lorry","🚜":"tractor","🏎":"racing-car","🏍":"motorcycle","🛵":"motor-scooter","🦽":"manual-wheelchair","🦼":"motorized-wheelchair","🛺":"auto-rickshaw","🚲":"bicycle","🛴":"kick-scooter","🛹":"skateboard","🛼":"roller-skate","🚏":"bus-stop","🛣":"motorway","🛤":"railway-track","🛢":"oil-drum","⛽":"fuel-pump","🛞":"wheel","🚨":"police-car-light","🚥":"horizontal-traffic-light","🚦":"vertical-traffic-light","🛑":"stop-sign","🚧":"construction","⚓":"anchor","🛟":"ring-buoy","⛵":"sailboat","🛶":"canoe","🚤":"speedboat","🛳":"passenger-ship","⛴":"ferry","🛥":"motor-boat","🚢":"ship","✈":"airplane","🛩":"small-airplane","🛫":"airplane-departure","🛬":"airplane-arrival","🪂":"parachute","💺":"seat","🚁":"helicopter","🚟":"suspension-railway","🚠":"mountain-cableway","🚡":"aerial-tramway","🛰":"satellite","🚀":"rocket","🛸":"flying-saucer","🛎":"bellhop-bell","🧳":"luggage","⌛":"hourglass-done","⏳":"hourglass-not-done","⌚":"watch","⏰":"alarm-clock","⏱":"stopwatch","⏲":"timer-clock","🕰":"mantelpiece-clock","🕛":"twelve-o-clock","🕧":"twelve-thirty","🕐":"one-o-clock","🕜":"one-thirty","🕑":"two-o-clock","🕝":"two-thirty","🕒":"three-o-clock","🕞":"three-thirty","🕓":"four-o-clock","🕟":"four-thirty","🕔":"five-o-clock","🕠":"five-thirty","🕕":"six-o-clock","🕡":"six-thirty","🕖":"seven-o-clock","🕢":"seven-thirty","🕗":"eight-o-clock","🕣":"eight-thirty","🕘":"nine-o-clock","🕤":"nine-thirty","🕙":"ten-o-clock","🕥":"ten-thirty","🕚":"eleven-o-clock","🕦":"eleven-thirty","🌑":"new-moon","🌒":"waxing-crescent-moon","🌓":"first-quarter-moon","🌔":"waxing-gibbous-moon","🌕":"full-moon","🌖":"waning-gibbous-moon","🌗":"last-quarter-moon","🌘":"waning-crescent-moon","🌙":"crescent-moon","🌚":"new-moon-face","🌛":"first-quarter-moon-face","🌜":"last-quarter-moon-face","🌡":"thermometer","☀":"sun","🌝":"full-moon-face","🌞":"sun-with-face","🪐":"ringed-planet","⭐":"star","🌟":"glowing-star","🌠":"shooting-star","🌌":"milky-way","☁":"cloud","⛅":"sun-behind-cloud","⛈":"cloud-with-lightning-and-rain","🌤":"sun-behind-small-cloud","🌥":"sun-behind-large-cloud","🌦":"sun-behind-rain-cloud","🌧":"cloud-with-rain","🌨":"cloud-with-snow","🌩":"cloud-with-lightning","🌪":"tornado","🌫":"fog","🌬":"wind-face","🌀":"cyclone","🌈":"rainbow","🌂":"closed-umbrella","☂":"umbrella","☔":"umbrella-with-rain-drops","⛱":"umbrella-on-ground","⚡":"high-voltage","❄":"snowflake","☃":"snowman","⛄":"snowman-without-snow","☄":"comet","🔥":"fire","💧":"droplet","🌊":"water-wave","🎃":"jack-o-lantern","🎄":"christmas-tree","🎆":"fireworks","🎇":"sparkler","🧨":"firecracker","✨":"sparkles","🎈":"balloon","🎉":"party-popper","🎊":"confetti-ball","🎋":"tanabata-tree","🎍":"pine-decoration","🎎":"japanese-dolls","🎏":"carp-streamer","🎐":"wind-chime","🎑":"moon-viewing-ceremony","🧧":"red-envelope","🎀":"ribbon","🎁":"wrapped-gift","🎗":"reminder-ribbon","🎟":"admission-tickets","🎫":"ticket","🎖":"military-medal","🏆":"trophy","🏅":"sports-medal","🥇":"1st-place-medal","🥈":"2nd-place-medal","🥉":"3rd-place-medal","⚽":"soccer-ball","⚾":"baseball","🥎":"softball","🏀":"basketball","🏐":"volleyball","🏈":"american-football","🏉":"rugby-football","🎾":"tennis","🥏":"flying-disc","🎳":"bowling","🏏":"cricket-game","🏑":"field-hockey","🏒":"ice-hockey","🥍":"lacrosse","🏓":"ping-pong","🏸":"badminton","🥊":"boxing-glove","🥋":"martial-arts-uniform","🥅":"goal-net","⛳":"flag-in-hole","⛸":"ice-skate","🎣":"fishing-pole","🤿":"diving-mask","🎽":"running-shirt","🎿":"skis","🛷":"sled","🥌":"curling-stone","🎯":"bullseye","🪀":"yo-yo","🪁":"kite","🔫":"water-pistol","🎱":"pool-8-ball","🔮":"crystal-ball","🪄":"magic-wand","🎮":"video-game","🕹":"joystick","🎰":"slot-machine","🎲":"game-die","🧩":"puzzle-piece","🧸":"teddy-bear","🪅":"piñata","🪩":"mirror-ball","🪆":"nesting-dolls","♠":"spade-suit","♥":"heart-suit","♦":"diamond-suit","♣":"club-suit","♟":"chess-pawn","🃏":"joker","🀄":"mahjong-red-dragon","🎴":"flower-playing-cards","🎭":"performing-arts","🖼":"framed-picture","🎨":"artist-palette","🧵":"thread","🪡":"sewing-needle","🧶":"yarn","🪢":"knot","👓":"glasses","🕶":"sunglasses","🥽":"goggles","🥼":"lab-coat","🦺":"safety-vest","👔":"necktie","👕":"t-shirt","👖":"jeans","🧣":"scarf","🧤":"gloves","🧥":"coat","🧦":"socks","👗":"dress","👘":"kimono","🥻":"sari","🩱":"one-piece-swimsuit","🩲":"briefs","🩳":"shorts","👙":"bikini","👚":"woman-s-clothes","🪭":"⊛-folding-hand-fan","👛":"purse","👜":"handbag","👝":"clutch-bag","🛍":"shopping-bags","🎒":"backpack","🩴":"thong-sandal","👞":"man-s-shoe","👟":"running-shoe","🥾":"hiking-boot","🥿":"flat-shoe","👠":"high-heeled-shoe","👡":"woman-s-sandal","🩰":"ballet-shoes","👢":"woman-s-boot","🪮":"⊛-hair-pick","👑":"crown","👒":"woman-s-hat","🎩":"top-hat","🎓":"graduation-cap","🧢":"billed-cap","🪖":"military-helmet","⛑":"rescue-worker-s-helmet","📿":"prayer-beads","💄":"lipstick","💍":"ring","💎":"gem-stone","🔇":"muted-speaker","🔈":"speaker-low-volume","🔉":"speaker-medium-volume","🔊":"speaker-high-volume","📢":"loudspeaker","📣":"megaphone","📯":"postal-horn","🔔":"bell","🔕":"bell-with-slash","🎼":"musical-score","🎵":"musical-note","🎶":"musical-notes","🎙":"studio-microphone","🎚":"level-slider","🎛":"control-knobs","🎤":"microphone","🎧":"headphone","📻":"radio","🎷":"saxophone","🪗":"accordion","🎸":"guitar","🎹":"musical-keyboard","🎺":"trumpet","🎻":"violin","🪕":"banjo","🥁":"drum","🪘":"long-drum","🪇":"maracas","🪈":"flute","📱":"mobile-phone","📲":"mobile-phone-with-arrow","☎":"telephone","📞":"telephone-receiver","📟":"pager","📠":"fax-machine","🔋":"battery","🪫":"low-battery","🔌":"electric-plug","💻":"laptop","🖥":"desktop-computer","🖨":"printer","⌨":"keyboard","🖱":"computer-mouse","🖲":"trackball","💽":"computer-disk","💾":"floppy-disk","💿":"optical-disk","📀":"dvd","🧮":"abacus","🎥":"movie-camera","🎞":"film-frames","📽":"film-projector","🎬":"clapper-board","📺":"television","📷":"camera","📸":"camera-with-flash","📹":"video-camera","📼":"videocassette","🔍":"magnifying-glass-tilted-left","🔎":"magnifying-glass-tilted-right","🕯":"candle","💡":"light-bulb","🔦":"flashlight","🏮":"red-paper-lantern","🪔":"diya-lamp","📔":"notebook-with-decorative-cover","📕":"closed-book","📖":"open-book","📗":"green-book","📘":"blue-book","📙":"orange-book","📚":"books","📓":"notebook","📒":"ledger","📃":"page-with-curl","📜":"scroll","📄":"page-facing-up","📰":"newspaper","🗞":"rolled-up-newspaper","📑":"bookmark-tabs","🔖":"bookmark","🏷":"label","💰":"money-bag","🪙":"coin","💴":"yen-banknote","💵":"dollar-banknote","💶":"euro-banknote","💷":"pound-banknote","💸":"money-with-wings","💳":"credit-card","🧾":"receipt","💹":"chart-increasing-with-yen","✉":"envelope","📧":"e-mail","📨":"incoming-envelope","📩":"envelope-with-arrow","📤":"outbox-tray","📥":"inbox-tray","📦":"package","📫":"closed-mailbox-with-raised-flag","📪":"closed-mailbox-with-lowered-flag","📬":"open-mailbox-with-raised-flag","📭":"open-mailbox-with-lowered-flag","📮":"postbox","🗳":"ballot-box-with-ballot","✏":"pencil","✒":"black-nib","🖋":"fountain-pen","🖊":"pen","🖌":"paintbrush","🖍":"crayon","📝":"memo","💼":"briefcase","📁":"file-folder","📂":"open-file-folder","🗂":"card-index-dividers","📅":"calendar","📆":"tear-off-calendar","🗒":"spiral-notepad","🗓":"spiral-calendar","📇":"card-index","📈":"chart-increasing","📉":"chart-decreasing","📊":"bar-chart","📋":"clipboard","📌":"pushpin","📍":"round-pushpin","📎":"paperclip","🖇":"linked-paperclips","📏":"straight-ruler","📐":"triangular-ruler","✂":"scissors","🗃":"card-file-box","🗄":"file-cabinet","🗑":"wastebasket","🔒":"locked","🔓":"unlocked","🔏":"locked-with-pen","🔐":"locked-with-key","🔑":"key","🗝":"old-key","🔨":"hammer","🪓":"axe","⛏":"pick","⚒":"hammer-and-pick","🛠":"hammer-and-wrench","🗡":"dagger","⚔":"crossed-swords","💣":"bomb","🪃":"boomerang","🏹":"bow-and-arrow","🛡":"shield","🪚":"carpentry-saw","🔧":"wrench","🪛":"screwdriver","🔩":"nut-and-bolt","⚙":"gear","🗜":"clamp","⚖":"balance-scale","🦯":"white-cane","🔗":"link","⛓":"chains","🪝":"hook","🧰":"toolbox","🧲":"magnet","🪜":"ladder","⚗":"alembic","🧪":"test-tube","🧫":"petri-dish","🧬":"dna","🔬":"microscope","🔭":"telescope","📡":"satellite-antenna","💉":"syringe","🩸":"drop-of-blood","💊":"pill","🩹":"adhesive-bandage","🩼":"crutch","🩺":"stethoscope","🩻":"x-ray","🚪":"door","🛗":"elevator","🪞":"mirror","🪟":"window","🛏":"bed","🛋":"couch-and-lamp","🪑":"chair","🚽":"toilet","🪠":"plunger","🚿":"shower","🛁":"bathtub","🪤":"mouse-trap","🪒":"razor","🧴":"lotion-bottle","🧷":"safety-pin","🧹":"broom","🧺":"basket","🧻":"roll-of-paper","🪣":"bucket","🧼":"soap","🫧":"bubbles","🪥":"toothbrush","🧽":"sponge","🧯":"fire-extinguisher","🛒":"shopping-cart","🚬":"cigarette","⚰":"coffin","🪦":"headstone","⚱":"funeral-urn","🧿":"nazar-amulet","🪬":"hamsa","🗿":"moai","🪧":"placard","🪪":"identification-card","🏧":"atm-sign","🚮":"litter-in-bin-sign","🚰":"potable-water","♿":"wheelchair-symbol","🚹":"men-s-room","🚺":"women-s-room","🚻":"restroom","🚼":"baby-symbol","🚾":"water-closet","🛂":"passport-control","🛃":"customs","🛄":"baggage-claim","🛅":"left-luggage","⚠":"warning","🚸":"children-crossing","⛔":"no-entry","🚫":"prohibited","🚳":"no-bicycles","🚭":"no-smoking","🚯":"no-littering","🚱":"non-potable-water","🚷":"no-pedestrians","📵":"no-mobile-phones","🔞":"no-one-under-eighteen","☢":"radioactive","☣":"biohazard","⬆":"up-arrow","↗":"up-right-arrow","➡":"right-arrow","↘":"down-right-arrow","⬇":"down-arrow","↙":"down-left-arrow","⬅":"left-arrow","↖":"up-left-arrow","↕":"up-down-arrow","↔":"left-right-arrow","↩":"right-arrow-curving-left","↪":"left-arrow-curving-right","⤴":"right-arrow-curving-up","⤵":"right-arrow-curving-down","🔃":"clockwise-vertical-arrows","🔄":"counterclockwise-arrows-button","🔙":"back-arrow","🔚":"end-arrow","🔛":"on!-arrow","🔜":"soon-arrow","🔝":"top-arrow","🛐":"place-of-worship","⚛":"atom-symbol","🕉":"om","✡":"star-of-david","☸":"wheel-of-dharma","☯":"yin-yang","✝":"latin-cross","☦":"orthodox-cross","☪":"star-and-crescent","☮":"peace-symbol","🕎":"menorah","🔯":"dotted-six-pointed-star","🪯":"⊛-khanda","♈":"aries","♉":"taurus","♊":"gemini","♋":"cancer","♌":"leo","♍":"virgo","♎":"libra","♏":"scorpio","♐":"sagittarius","♑":"capricorn","♒":"aquarius","♓":"pisces","⛎":"ophiuchus","🔀":"shuffle-tracks-button","🔁":"repeat-button","🔂":"repeat-single-button","▶":"play-button","⏩":"fast-forward-button","⏭":"next-track-button","⏯":"play-or-pause-button","◀":"reverse-button","⏪":"fast-reverse-button","⏮":"last-track-button","🔼":"upwards-button","⏫":"fast-up-button","🔽":"downwards-button","⏬":"fast-down-button","⏸":"pause-button","⏹":"stop-button","⏺":"record-button","⏏":"eject-button","🎦":"cinema","🔅":"dim-button","🔆":"bright-button","📶":"antenna-bars","🛜":"⊛-wireless","📳":"vibration-mode","📴":"mobile-phone-off","♀":"female-sign","♂":"male-sign","⚧":"transgender-symbol","✖":"multiply","➕":"plus","➖":"minus","➗":"divide","🟰":"heavy-equals-sign","♾":"infinity","‼":"double-exclamation-mark","⁉":"exclamation-question-mark","❓":"red-question-mark","❔":"white-question-mark","❕":"white-exclamation-mark","❗":"red-exclamation-mark","〰":"wavy-dash","💱":"currency-exchange","💲":"heavy-dollar-sign","⚕":"medical-symbol","♻":"recycling-symbol","⚜":"fleur-de-lis","🔱":"trident-emblem","📛":"name-badge","🔰":"japanese-symbol-for-beginner","⭕":"hollow-red-circle","✅":"check-mark-button","☑":"check-box-with-check","✔":"check-mark","❌":"cross-mark","❎":"cross-mark-button","➰":"curly-loop","➿":"double-curly-loop","〽":"part-alternation-mark","✳":"eight-spoked-asterisk","✴":"eight-pointed-star","❇":"sparkle","©":"copyright","®":"registered","™":"trade-mark","#️⃣":"keycap-#","*️⃣":"keycap-*","0️⃣":"keycap-0","1️⃣":"keycap-1","2️⃣":"keycap-2","3️⃣":"keycap-3","4️⃣":"keycap-4","5️⃣":"keycap-5","6️⃣":"keycap-6","7️⃣":"keycap-7","8️⃣":"keycap-8","9️⃣":"keycap-9","🔟":"keycap-10","🔠":"input-latin-uppercase","🔡":"input-latin-lowercase","🔢":"input-numbers","🔣":"input-symbols","🔤":"input-latin-letters","🅰":"a-button-(blood-type)","🆎":"ab-button-(blood-type)","🅱":"b-button-(blood-type)","🆑":"cl-button","🆒":"cool-button","🆓":"free-button","ℹ":"information","🆔":"id-button","Ⓜ":"circled-m","🆕":"new-button","🆖":"ng-button","🅾":"o-button-(blood-type)","🆗":"ok-button","🅿":"p-button","🆘":"sos-button","🆙":"up!-button","🆚":"vs-button","🈁":"japanese-here-button","🈂":"japanese-service-charge-button","🈷":"japanese-monthly-amount-button","🈶":"japanese-not-free-of-charge-button","🈯":"japanese-reserved-button","🉐":"japanese-bargain-button","🈹":"japanese-discount-button","🈚":"japanese-free-of-charge-button","🈲":"japanese-prohibited-button","🉑":"japanese-acceptable-button","🈸":"japanese-application-button","🈴":"japanese-passing-grade-button","🈳":"japanese-vacancy-button","㊗":"japanese-congratulations-button","㊙":"japanese-secret-button","🈺":"japanese-open-for-business-button","🈵":"japanese-no-vacancy-button","🔴":"red-circle","🟠":"orange-circle","🟡":"yellow-circle","🟢":"green-circle","🔵":"blue-circle","🟣":"purple-circle","🟤":"brown-circle","⚫":"black-circle","⚪":"white-circle","🟥":"red-square","🟧":"orange-square","🟨":"yellow-square","🟩":"green-square","🟦":"blue-square","🟪":"purple-square","🟫":"brown-square","⬛":"black-large-square","⬜":"white-large-square","◼":"black-medium-square","◻":"white-medium-square","◾":"black-medium-small-square","◽":"white-medium-small-square","▪":"black-small-square","▫":"white-small-square","🔶":"large-orange-diamond","🔷":"large-blue-diamond","🔸":"small-orange-diamond","🔹":"small-blue-diamond","🔺":"red-triangle-pointed-up","🔻":"red-triangle-pointed-down","💠":"diamond-with-a-dot","🔘":"radio-button","🔳":"white-square-button","🔲":"black-square-button","🏁":"chequered-flag","🚩":"triangular-flag","🎌":"crossed-flags","🏴":"black-flag","🏳":"white-flag","🏳️🌈":"rainbow-flag","🏳️⚧️":"transgender-flag","🏴☠️":"pirate-flag","🇦🇨":"flag-ascension-island","🇦🇩":"flag-andorra","🇦🇪":"flag-united-arab-emirates","🇦🇫":"flag-afghanistan","🇦🇬":"flag-antigua-and-barbuda","🇦🇮":"flag-anguilla","🇦🇱":"flag-albania","🇦🇲":"flag-armenia","🇦🇴":"flag-angola","🇦🇶":"flag-antarctica","🇦🇷":"flag-argentina","🇦🇸":"flag-american-samoa","🇦🇹":"flag-austria","🇦🇺":"flag-australia","🇦🇼":"flag-aruba","🇦🇽":"flag-åland-islands","🇦🇿":"flag-azerbaijan","🇧🇦":"flag-bosnia-and-herzegovina","🇧🇧":"flag-barbados","🇧🇩":"flag-bangladesh","🇧🇪":"flag-belgium","🇧🇫":"flag-burkina-faso","🇧🇬":"flag-bulgaria","🇧🇭":"flag-bahrain","🇧🇮":"flag-burundi","🇧🇯":"flag-benin","🇧🇱":"flag-st-barthelemy","🇧🇲":"flag-bermuda","🇧🇳":"flag-brunei","🇧🇴":"flag-bolivia","🇧🇶":"flag-caribbean-netherlands","🇧🇷":"flag-brazil","🇧🇸":"flag-bahamas","🇧🇹":"flag-bhutan","🇧🇻":"flag-bouvet-island","🇧🇼":"flag-botswana","🇧🇾":"flag-belarus","🇧🇿":"flag-belize","🇨🇦":"flag-canada","🇨🇨":"flag-cocos-(keeling)-islands","🇨🇩":"flag-congo---kinshasa","🇨🇫":"flag-central-african-republic","🇨🇬":"flag-congo---brazzaville","🇨🇭":"flag-switzerland","🇨🇮":"flag-côte-d-ivoire","🇨🇰":"flag-cook-islands","🇨🇱":"flag-chile","🇨🇲":"flag-cameroon","🇨🇳":"flag-china","🇨🇴":"flag-colombia","🇨🇵":"flag-clipperton-island","🇨🇷":"flag-costa-rica","🇨🇺":"flag-cuba","🇨🇻":"flag-cape-verde","🇨🇼":"flag-curaçao","🇨🇽":"flag-christmas-island","🇨🇾":"flag-cyprus","🇨🇿":"flag-czechia","🇩🇪":"flag-germany","🇩🇬":"flag-diego-garcia","🇩🇯":"flag-djibouti","🇩🇰":"flag-denmark","🇩🇲":"flag-dominica","🇩🇴":"flag-dominican-republic","🇩🇿":"flag-algeria","🇪🇦":"flag-ceuta-and-melilla","🇪🇨":"flag-ecuador","🇪🇪":"flag-estonia","🇪🇬":"flag-egypt","🇪🇭":"flag-western-sahara","🇪🇷":"flag-eritrea","🇪🇸":"flag-spain","🇪🇹":"flag-ethiopia","🇪🇺":"flag-european-union","🇫🇮":"flag-finland","🇫🇯":"flag-fiji","🇫🇰":"flag-falkland-islands","🇫🇲":"flag-micronesia","🇫🇴":"flag-faroe-islands","🇫🇷":"flag-france","🇬🇦":"flag-gabon","🇬🇧":"flag-united-kingdom","🇬🇩":"flag-grenada","🇬🇪":"flag-georgia","🇬🇫":"flag-french-guiana","🇬🇬":"flag-guernsey","🇬🇭":"flag-ghana","🇬🇮":"flag-gibraltar","🇬🇱":"flag-greenland","🇬🇲":"flag-gambia","🇬🇳":"flag-guinea","🇬🇵":"flag-guadeloupe","🇬🇶":"flag-equatorial-guinea","🇬🇷":"flag-greece","🇬🇸":"flag-south-georgia-and-south-sandwich-islands","🇬🇹":"flag-guatemala","🇬🇺":"flag-guam","🇬🇼":"flag-guinea-bissau","🇬🇾":"flag-guyana","🇭🇰":"flag-hong-kong-sar-china","🇭🇲":"flag-heard-and-mcdonald-islands","🇭🇳":"flag-honduras","🇭🇷":"flag-croatia","🇭🇹":"flag-haiti","🇭🇺":"flag-hungary","🇮🇨":"flag-canary-islands","🇮🇩":"flag-indonesia","🇮🇪":"flag-ireland","🇮🇱":"flag-israel","🇮🇲":"flag-isle-of-man","🇮🇳":"flag-india","🇮🇴":"flag-british-indian-ocean-territory","🇮🇶":"flag-iraq","🇮🇷":"flag-iran","🇮🇸":"flag-iceland","🇮🇹":"flag-italy","🇯🇪":"flag-jersey","🇯🇲":"flag-jamaica","🇯🇴":"flag-jordan","🇯🇵":"flag-japan","🇰🇪":"flag-kenya","🇰🇬":"flag-kyrgyzstan","🇰🇭":"flag-cambodia","🇰🇮":"flag-kiribati","🇰🇲":"flag-comoros","🇰🇳":"flag-st-kitts-and-nevis","🇰🇵":"flag-north-korea","🇰🇷":"flag-south-korea","🇰🇼":"flag-kuwait","🇰🇾":"flag-cayman-islands","🇰🇿":"flag-kazakhstan","🇱🇦":"flag-laos","🇱🇧":"flag-lebanon","🇱🇨":"flag-st-lucia","🇱🇮":"flag-liechtenstein","🇱🇰":"flag-sri-lanka","🇱🇷":"flag-liberia","🇱🇸":"flag-lesotho","🇱🇹":"flag-lithuania","🇱🇺":"flag-luxembourg","🇱🇻":"flag-latvia","🇱🇾":"flag-libya","🇲🇦":"flag-morocco","🇲🇨":"flag-monaco","🇲🇩":"flag-moldova","🇲🇪":"flag-montenegro","🇲🇫":"flag-st-martin","🇲🇬":"flag-madagascar","🇲🇭":"flag-marshall-islands","🇲🇰":"flag-north-macedonia","🇲🇱":"flag-mali","🇲🇲":"flag-myanmar-(burma)","🇲🇳":"flag-mongolia","🇲🇴":"flag-macao-sar-china","🇲🇵":"flag-northern-mariana-islands","🇲🇶":"flag-martinique","🇲🇷":"flag-mauritania","🇲🇸":"flag-montserrat","🇲🇹":"flag-malta","🇲🇺":"flag-mauritius","🇲🇻":"flag-maldives","🇲🇼":"flag-malawi","🇲🇽":"flag-mexico","🇲🇾":"flag-malaysia","🇲🇿":"flag-mozambique","🇳🇦":"flag-namibia","🇳🇨":"flag-new-caledonia","🇳🇪":"flag-niger","🇳🇫":"flag-norfolk-island","🇳🇬":"flag-nigeria","🇳🇮":"flag-nicaragua","🇳🇱":"flag-netherlands","🇳🇴":"flag-norway","🇳🇵":"flag-nepal","🇳🇷":"flag-nauru","🇳🇺":"flag-niue","🇳🇿":"flag-new-zealand","🇴🇲":"flag-oman","🇵🇦":"flag-panama","🇵🇪":"flag-peru","🇵🇫":"flag-french-polynesia","🇵🇬":"flag-papua-new-guinea","🇵🇭":"flag-philippines","🇵🇰":"flag-pakistan","🇵🇱":"flag-poland","🇵🇲":"flag-st-pierre-and-miquelon","🇵🇳":"flag-pitcairn-islands","🇵🇷":"flag-puerto-rico","🇵🇸":"flag-palestinian-territories","🇵🇹":"flag-portugal","🇵🇼":"flag-palau","🇵🇾":"flag-paraguay","🇶🇦":"flag-qatar","🇷🇪":"flag-reunion","🇷🇴":"flag-romania","🇷🇸":"flag-serbia","🇷🇺":"flag-russia","🇷🇼":"flag-rwanda","🇸🇦":"flag-saudi-arabia","🇸🇧":"flag-solomon-islands","🇸🇨":"flag-seychelles","🇸🇩":"flag-sudan","🇸🇪":"flag-sweden","🇸🇬":"flag-singapore","🇸🇭":"flag-st-helena","🇸🇮":"flag-slovenia","🇸🇯":"flag-svalbard-and-jan-mayen","🇸🇰":"flag-slovakia","🇸🇱":"flag-sierra-leone","🇸🇲":"flag-san-marino","🇸🇳":"flag-senegal","🇸🇴":"flag-somalia","🇸🇷":"flag-suriname","🇸🇸":"flag-south-sudan","🇸🇹":"flag-são-tome-and-príncipe","🇸🇻":"flag-el-salvador","🇸🇽":"flag-sint-maarten","🇸🇾":"flag-syria","🇸🇿":"flag-eswatini","🇹🇦":"flag-tristan-da-cunha","🇹🇨":"flag-turks-and-caicos-islands","🇹🇩":"flag-chad","🇹🇫":"flag-french-southern-territories","🇹🇬":"flag-togo","🇹🇭":"flag-thailand","🇹🇯":"flag-tajikistan","🇹🇰":"flag-tokelau","🇹🇱":"flag-timor-leste","🇹🇲":"flag-turkmenistan","🇹🇳":"flag-tunisia","🇹🇴":"flag-tonga","🇹🇷":"flag-turkey","🇹🇹":"flag-trinidad-and-tobago","🇹🇻":"flag-tuvalu","🇹🇼":"flag-taiwan","🇹🇿":"flag-tanzania","🇺🇦":"flag-ukraine","🇺🇬":"flag-uganda","🇺🇲":"flag-us-outlying-islands","🇺🇳":"flag-united-nations","🇺🇸":"flag-united-states","🇺🇾":"flag-uruguay","🇺🇿":"flag-uzbekistan","🇻🇦":"flag-vatican-city","🇻🇨":"flag-st-vincent-and-grenadines","🇻🇪":"flag-venezuela","🇻🇬":"flag-british-virgin-islands","🇻🇮":"flag-us-virgin-islands","🇻🇳":"flag-vietnam","🇻🇺":"flag-vanuatu","🇼🇫":"flag-wallis-and-futuna","🇼🇸":"flag-samoa","🇽🇰":"flag-kosovo","🇾🇪":"flag-yemen","🇾🇹":"flag-mayotte","🇿🇦":"flag-south-africa","🇿🇲":"flag-zambia","🇿🇼":"flag-zimbabwe","🏴":"flag-england","🏴":"flag-scotland","🏴":"flag-wales"},Jn=Object.keys(Kn),Yn='\n// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at https://mozilla.org/MPL/2.0/.\n\n// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat,\n// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported.\n\n// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/.\n\n// ===BEGIN ICANN DOMAINS===\n\n// ac : http://nic.ac/rules.htm\nac\ncom.ac\nedu.ac\ngov.ac\nnet.ac\nmil.ac\norg.ac\n\n// ad : https://en.wikipedia.org/wiki/.ad\nad\nnom.ad\n\n// ae : https://tdra.gov.ae/en/aeda/ae-policies\nae\nco.ae\nnet.ae\norg.ae\nsch.ae\nac.ae\ngov.ae\nmil.ae\n\n// aero : see https://www.information.aero/index.php?id=66\naero\naccident-investigation.aero\naccident-prevention.aero\naerobatic.aero\naeroclub.aero\naerodrome.aero\nagents.aero\naircraft.aero\nairline.aero\nairport.aero\nair-surveillance.aero\nairtraffic.aero\nair-traffic-control.aero\nambulance.aero\namusement.aero\nassociation.aero\nauthor.aero\nballooning.aero\nbroker.aero\ncaa.aero\ncargo.aero\ncatering.aero\ncertification.aero\nchampionship.aero\ncharter.aero\ncivilaviation.aero\nclub.aero\nconference.aero\nconsultant.aero\nconsulting.aero\ncontrol.aero\ncouncil.aero\ncrew.aero\ndesign.aero\ndgca.aero\neducator.aero\nemergency.aero\nengine.aero\nengineer.aero\nentertainment.aero\nequipment.aero\nexchange.aero\nexpress.aero\nfederation.aero\nflight.aero\nfuel.aero\ngliding.aero\ngovernment.aero\ngroundhandling.aero\ngroup.aero\nhanggliding.aero\nhomebuilt.aero\ninsurance.aero\njournal.aero\njournalist.aero\nleasing.aero\nlogistics.aero\nmagazine.aero\nmaintenance.aero\nmedia.aero\nmicrolight.aero\nmodelling.aero\nnavigation.aero\nparachuting.aero\nparagliding.aero\npassenger-association.aero\npilot.aero\npress.aero\nproduction.aero\nrecreation.aero\nrepbody.aero\nres.aero\nresearch.aero\nrotorcraft.aero\nsafety.aero\nscientist.aero\nservices.aero\nshow.aero\nskydiving.aero\nsoftware.aero\nstudent.aero\ntrader.aero\ntrading.aero\ntrainer.aero\nunion.aero\nworkinggroup.aero\nworks.aero\n\n// af : http://www.nic.af/help.jsp\naf\ngov.af\ncom.af\norg.af\nnet.af\nedu.af\n\n// ag : http://www.nic.ag/prices.htm\nag\ncom.ag\norg.ag\nnet.ag\nco.ag\nnom.ag\n\n// ai : http://nic.com.ai/\nai\noff.ai\ncom.ai\nnet.ai\norg.ai\n\n// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31\nal\ncom.al\nedu.al\ngov.al\nmil.al\nnet.al\norg.al\n\n// am : https://www.amnic.net/policy/en/Policy_EN.pdf\nam\nco.am\ncom.am\ncommune.am\nnet.am\norg.am\n\n// ao : https://en.wikipedia.org/wiki/.ao\n// http://www.dns.ao/REGISTR.DOC\nao\ned.ao\ngv.ao\nog.ao\nco.ao\npb.ao\nit.ao\n\n// aq : https://en.wikipedia.org/wiki/.aq\naq\n\n// ar : https://nic.ar/es/nic-argentina/normativa\nar\nbet.ar\ncom.ar\ncoop.ar\nedu.ar\ngob.ar\ngov.ar\nint.ar\nmil.ar\nmusica.ar\nmutual.ar\nnet.ar\norg.ar\nsenasa.ar\ntur.ar\n\n// arpa : https://en.wikipedia.org/wiki/.arpa\n// Confirmed by registry 2008-06-18\narpa\ne164.arpa\nin-addr.arpa\nip6.arpa\niris.arpa\nuri.arpa\nurn.arpa\n\n// as : https://en.wikipedia.org/wiki/.as\nas\ngov.as\n\n// asia : https://en.wikipedia.org/wiki/.asia\nasia\n\n// at : https://en.wikipedia.org/wiki/.at\n// Confirmed by registry 2008-06-17\nat\nac.at\nco.at\ngv.at\nor.at\nsth.ac.at\n\n// au : https://en.wikipedia.org/wiki/.au\n// http://www.auda.org.au/\nau\n// 2LDs\ncom.au\nnet.au\norg.au\nedu.au\ngov.au\nasn.au\nid.au\n// Historic 2LDs (closed to new registration, but sites still exist)\ninfo.au\nconf.au\noz.au\n// CGDNs - http://www.cgdn.org.au/\nact.au\nnsw.au\nnt.au\nqld.au\nsa.au\ntas.au\nvic.au\nwa.au\n// 3LDs\nact.edu.au\ncatholic.edu.au\n// eq.edu.au - Removed at the request of the Queensland Department of Education\nnsw.edu.au\nnt.edu.au\nqld.edu.au\nsa.edu.au\ntas.edu.au\nvic.edu.au\nwa.edu.au\n// act.gov.au Bug 984824 - Removed at request of Greg Tankard\n// nsw.gov.au Bug 547985 - Removed at request of \n// nt.gov.au Bug 940478 - Removed at request of Greg Connors \nqld.gov.au\nsa.gov.au\ntas.gov.au\nvic.gov.au\nwa.gov.au\n// 4LDs\n// education.tas.edu.au - Removed at the request of the Department of Education Tasmania\nschools.nsw.edu.au\n\n// aw : https://en.wikipedia.org/wiki/.aw\naw\ncom.aw\n\n// ax : https://en.wikipedia.org/wiki/.ax\nax\n\n// az : https://en.wikipedia.org/wiki/.az\naz\ncom.az\nnet.az\nint.az\ngov.az\norg.az\nedu.az\ninfo.az\npp.az\nmil.az\nname.az\npro.az\nbiz.az\n\n// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf\nba\ncom.ba\nedu.ba\ngov.ba\nmil.ba\nnet.ba\norg.ba\n\n// bb : https://en.wikipedia.org/wiki/.bb\nbb\nbiz.bb\nco.bb\ncom.bb\nedu.bb\ngov.bb\ninfo.bb\nnet.bb\norg.bb\nstore.bb\ntv.bb\n\n// bd : https://en.wikipedia.org/wiki/.bd\n*.bd\n\n// be : https://en.wikipedia.org/wiki/.be\n// Confirmed by registry 2008-06-08\nbe\nac.be\n\n// bf : https://en.wikipedia.org/wiki/.bf\nbf\ngov.bf\n\n// bg : https://en.wikipedia.org/wiki/.bg\n// https://www.register.bg/user/static/rules/en/index.html\nbg\na.bg\nb.bg\nc.bg\nd.bg\ne.bg\nf.bg\ng.bg\nh.bg\ni.bg\nj.bg\nk.bg\nl.bg\nm.bg\nn.bg\no.bg\np.bg\nq.bg\nr.bg\ns.bg\nt.bg\nu.bg\nv.bg\nw.bg\nx.bg\ny.bg\nz.bg\n0.bg\n1.bg\n2.bg\n3.bg\n4.bg\n5.bg\n6.bg\n7.bg\n8.bg\n9.bg\n\n// bh : https://en.wikipedia.org/wiki/.bh\nbh\ncom.bh\nedu.bh\nnet.bh\norg.bh\ngov.bh\n\n// bi : https://en.wikipedia.org/wiki/.bi\n// http://whois.nic.bi/\nbi\nco.bi\ncom.bi\nedu.bi\nor.bi\norg.bi\n\n// biz : https://en.wikipedia.org/wiki/.biz\nbiz\n\n// bj : https://nic.bj/bj-suffixes.txt\n// submitted by registry \nbj\nafrica.bj\nagro.bj\narchitectes.bj\nassur.bj\navocats.bj\nco.bj\ncom.bj\neco.bj\necono.bj\nedu.bj\ninfo.bj\nloisirs.bj\nmoney.bj\nnet.bj\norg.bj\note.bj\nresto.bj\nrestaurant.bj\ntourism.bj\nuniv.bj\n\n// bm : http://www.bermudanic.bm/dnr-text.txt\nbm\ncom.bm\nedu.bm\ngov.bm\nnet.bm\norg.bm\n\n// bn : http://www.bnnic.bn/faqs\nbn\ncom.bn\nedu.bn\ngov.bn\nnet.bn\norg.bn\n\n// bo : https://nic.bo/delegacion2015.php#h-1.10\nbo\ncom.bo\nedu.bo\ngob.bo\nint.bo\norg.bo\nnet.bo\nmil.bo\ntv.bo\nweb.bo\n// Social Domains\nacademia.bo\nagro.bo\narte.bo\nblog.bo\nbolivia.bo\nciencia.bo\ncooperativa.bo\ndemocracia.bo\ndeporte.bo\necologia.bo\neconomia.bo\nempresa.bo\nindigena.bo\nindustria.bo\ninfo.bo\nmedicina.bo\nmovimiento.bo\nmusica.bo\nnatural.bo\nnombre.bo\nnoticias.bo\npatria.bo\npolitica.bo\nprofesional.bo\nplurinacional.bo\npueblo.bo\nrevista.bo\nsalud.bo\ntecnologia.bo\ntksat.bo\ntransporte.bo\nwiki.bo\n\n// br : http://registro.br/dominio/categoria.html\n// Submitted by registry \nbr\n9guacu.br\nabc.br\nadm.br\nadv.br\nagr.br\naju.br\nam.br\nanani.br\naparecida.br\napp.br\narq.br\nart.br\nato.br\nb.br\nbarueri.br\nbelem.br\nbhz.br\nbib.br\nbio.br\nblog.br\nbmd.br\nboavista.br\nbsb.br\ncampinagrande.br\ncampinas.br\ncaxias.br\ncim.br\ncng.br\ncnt.br\ncom.br\ncontagem.br\ncoop.br\ncoz.br\ncri.br\ncuiaba.br\ncuritiba.br\ndef.br\ndes.br\ndet.br\ndev.br\necn.br\neco.br\nedu.br\nemp.br\nenf.br\neng.br\nesp.br\netc.br\neti.br\nfar.br\nfeira.br\nflog.br\nfloripa.br\nfm.br\nfnd.br\nfortal.br\nfot.br\nfoz.br\nfst.br\ng12.br\ngeo.br\nggf.br\ngoiania.br\ngov.br\n// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil\nac.gov.br\nal.gov.br\nam.gov.br\nap.gov.br\nba.gov.br\nce.gov.br\ndf.gov.br\nes.gov.br\ngo.gov.br\nma.gov.br\nmg.gov.br\nms.gov.br\nmt.gov.br\npa.gov.br\npb.gov.br\npe.gov.br\npi.gov.br\npr.gov.br\nrj.gov.br\nrn.gov.br\nro.gov.br\nrr.gov.br\nrs.gov.br\nsc.gov.br\nse.gov.br\nsp.gov.br\nto.gov.br\ngru.br\nimb.br\nind.br\ninf.br\njab.br\njampa.br\njdf.br\njoinville.br\njor.br\njus.br\nleg.br\nlel.br\nlog.br\nlondrina.br\nmacapa.br\nmaceio.br\nmanaus.br\nmaringa.br\nmat.br\nmed.br\nmil.br\nmorena.br\nmp.br\nmus.br\nnatal.br\nnet.br\nniteroi.br\n*.nom.br\nnot.br\nntr.br\nodo.br\nong.br\norg.br\nosasco.br\npalmas.br\npoa.br\nppg.br\npro.br\npsc.br\npsi.br\npvh.br\nqsl.br\nradio.br\nrec.br\nrecife.br\nrep.br\nribeirao.br\nrio.br\nriobranco.br\nriopreto.br\nsalvador.br\nsampa.br\nsantamaria.br\nsantoandre.br\nsaobernardo.br\nsaogonca.br\nseg.br\nsjc.br\nslg.br\nslz.br\nsorocaba.br\nsrv.br\ntaxi.br\ntc.br\ntec.br\nteo.br\nthe.br\ntmp.br\ntrd.br\ntur.br\ntv.br\nudi.br\nvet.br\nvix.br\nvlog.br\nwiki.br\nzlg.br\n\n// bs : http://www.nic.bs/rules.html\nbs\ncom.bs\nnet.bs\norg.bs\nedu.bs\ngov.bs\n\n// bt : https://en.wikipedia.org/wiki/.bt\nbt\ncom.bt\nedu.bt\ngov.bt\nnet.bt\norg.bt\n\n// bv : No registrations at this time.\n// Submitted by registry \nbv\n\n// bw : https://en.wikipedia.org/wiki/.bw\n// http://www.gobin.info/domainname/bw.doc\n// list of other 2nd level tlds ?\nbw\nco.bw\norg.bw\n\n// by : https://en.wikipedia.org/wiki/.by\n// http://tld.by/rules_2006_en.html\n// list of other 2nd level tlds ?\nby\ngov.by\nmil.by\n// Official information does not indicate that com.by is a reserved\n// second-level domain, but it\'s being used as one (see www.google.com.by and\n// www.yahoo.com.by, for example), so we list it here for safety\'s sake.\ncom.by\n\n// http://hoster.by/\nof.by\n\n// bz : https://en.wikipedia.org/wiki/.bz\n// http://www.belizenic.bz/\nbz\ncom.bz\nnet.bz\norg.bz\nedu.bz\ngov.bz\n\n// ca : https://en.wikipedia.org/wiki/.ca\nca\n// ca geographical names\nab.ca\nbc.ca\nmb.ca\nnb.ca\nnf.ca\nnl.ca\nns.ca\nnt.ca\nnu.ca\non.ca\npe.ca\nqc.ca\nsk.ca\nyk.ca\n// gc.ca: https://en.wikipedia.org/wiki/.gc.ca\n// see also: http://registry.gc.ca/en/SubdomainFAQ\ngc.ca\n\n// cat : https://en.wikipedia.org/wiki/.cat\ncat\n\n// cc : https://en.wikipedia.org/wiki/.cc\ncc\n\n// cd : https://en.wikipedia.org/wiki/.cd\n// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1\ncd\ngov.cd\n\n// cf : https://en.wikipedia.org/wiki/.cf\ncf\n\n// cg : https://en.wikipedia.org/wiki/.cg\ncg\n\n// ch : https://en.wikipedia.org/wiki/.ch\nch\n\n// ci : https://en.wikipedia.org/wiki/.ci\n// http://www.nic.ci/index.php?page=charte\nci\norg.ci\nor.ci\ncom.ci\nco.ci\nedu.ci\ned.ci\nac.ci\nnet.ci\ngo.ci\nasso.ci\naéroport.ci\nint.ci\npresse.ci\nmd.ci\ngouv.ci\n\n// ck : https://en.wikipedia.org/wiki/.ck\n*.ck\n!www.ck\n\n// cl : https://www.nic.cl\n// Confirmed by .CL registry \ncl\nco.cl\ngob.cl\ngov.cl\nmil.cl\n\n// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927\ncm\nco.cm\ncom.cm\ngov.cm\nnet.cm\n\n// cn : https://en.wikipedia.org/wiki/.cn\n// Submitted by registry \ncn\nac.cn\ncom.cn\nedu.cn\ngov.cn\nnet.cn\norg.cn\nmil.cn\n公司.cn\n网络.cn\n網絡.cn\n// cn geographic names\nah.cn\nbj.cn\ncq.cn\nfj.cn\ngd.cn\ngs.cn\ngz.cn\ngx.cn\nha.cn\nhb.cn\nhe.cn\nhi.cn\nhl.cn\nhn.cn\njl.cn\njs.cn\njx.cn\nln.cn\nnm.cn\nnx.cn\nqh.cn\nsc.cn\nsd.cn\nsh.cn\nsn.cn\nsx.cn\ntj.cn\nxj.cn\nxz.cn\nyn.cn\nzj.cn\nhk.cn\nmo.cn\ntw.cn\n\n// co : https://en.wikipedia.org/wiki/.co\n// Submitted by registry \nco\narts.co\ncom.co\nedu.co\nfirm.co\ngov.co\ninfo.co\nint.co\nmil.co\nnet.co\nnom.co\norg.co\nrec.co\nweb.co\n\n// com : https://en.wikipedia.org/wiki/.com\ncom\n\n// coop : https://en.wikipedia.org/wiki/.coop\ncoop\n\n// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do\ncr\nac.cr\nco.cr\ned.cr\nfi.cr\ngo.cr\nor.cr\nsa.cr\n\n// cu : https://en.wikipedia.org/wiki/.cu\ncu\ncom.cu\nedu.cu\norg.cu\nnet.cu\ngov.cu\ninf.cu\n\n// cv : https://en.wikipedia.org/wiki/.cv\n// cv : http://www.dns.cv/tldcv_portal/do?com=DS;5446457100;111;+PAGE(4000018)+K-CAT-CODIGO(RDOM)+RCNT(100); <- registration rules\ncv\ncom.cv\nedu.cv\nint.cv\nnome.cv\norg.cv\n\n// cw : http://www.una.cw/cw_registry/\n// Confirmed by registry 2013-03-26\ncw\ncom.cw\nedu.cw\nnet.cw\norg.cw\n\n// cx : https://en.wikipedia.org/wiki/.cx\n// list of other 2nd level tlds ?\ncx\ngov.cx\n\n// cy : http://www.nic.cy/\n// Submitted by registry Panayiotou Fotia \n// namespace policies URL https://www.nic.cy/portal//sites/default/files/symfonia_gia_eggrafi.pdf\ncy\nac.cy\nbiz.cy\ncom.cy\nekloges.cy\ngov.cy\nltd.cy\nmil.cy\nnet.cy\norg.cy\npress.cy\npro.cy\ntm.cy\n\n// cz : https://en.wikipedia.org/wiki/.cz\ncz\n\n// de : https://en.wikipedia.org/wiki/.de\n// Confirmed by registry (with technical\n// reservations) 2008-07-01\nde\n\n// dj : https://en.wikipedia.org/wiki/.dj\ndj\n\n// dk : https://en.wikipedia.org/wiki/.dk\n// Confirmed by registry 2008-06-17\ndk\n\n// dm : https://en.wikipedia.org/wiki/.dm\ndm\ncom.dm\nnet.dm\norg.dm\nedu.dm\ngov.dm\n\n// do : https://en.wikipedia.org/wiki/.do\ndo\nart.do\ncom.do\nedu.do\ngob.do\ngov.do\nmil.do\nnet.do\norg.do\nsld.do\nweb.do\n\n// dz : http://www.nic.dz/images/pdf_nic/charte.pdf\ndz\nart.dz\nasso.dz\ncom.dz\nedu.dz\ngov.dz\norg.dz\nnet.dz\npol.dz\nsoc.dz\ntm.dz\n\n// ec : http://www.nic.ec/reg/paso1.asp\n// Submitted by registry \nec\ncom.ec\ninfo.ec\nnet.ec\nfin.ec\nk12.ec\nmed.ec\npro.ec\norg.ec\nedu.ec\ngov.ec\ngob.ec\nmil.ec\n\n// edu : https://en.wikipedia.org/wiki/.edu\nedu\n\n// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B\nee\nedu.ee\ngov.ee\nriik.ee\nlib.ee\nmed.ee\ncom.ee\npri.ee\naip.ee\norg.ee\nfie.ee\n\n// eg : https://en.wikipedia.org/wiki/.eg\neg\ncom.eg\nedu.eg\neun.eg\ngov.eg\nmil.eg\nname.eg\nnet.eg\norg.eg\nsci.eg\n\n// er : https://en.wikipedia.org/wiki/.er\n*.er\n\n// es : https://www.nic.es/site_ingles/ingles/dominios/index.html\nes\ncom.es\nnom.es\norg.es\ngob.es\nedu.es\n\n// et : https://en.wikipedia.org/wiki/.et\net\ncom.et\ngov.et\norg.et\nedu.et\nbiz.et\nname.et\ninfo.et\nnet.et\n\n// eu : https://en.wikipedia.org/wiki/.eu\neu\n\n// fi : https://en.wikipedia.org/wiki/.fi\nfi\n// aland.fi : https://en.wikipedia.org/wiki/.ax\n// This domain is being phased out in favor of .ax. As there are still many\n// domains under aland.fi, we still keep it on the list until aland.fi is\n// completely removed.\n// TODO: Check for updates (expected to be phased out around Q1/2009)\naland.fi\n\n// fj : http://domains.fj/\n// Submitted by registry 2020-02-11\nfj\nac.fj\nbiz.fj\ncom.fj\ngov.fj\ninfo.fj\nmil.fj\nname.fj\nnet.fj\norg.fj\npro.fj\n\n// fk : https://en.wikipedia.org/wiki/.fk\n*.fk\n\n// fm : https://en.wikipedia.org/wiki/.fm\ncom.fm\nedu.fm\nnet.fm\norg.fm\nfm\n\n// fo : https://en.wikipedia.org/wiki/.fo\nfo\n\n// fr : https://www.afnic.fr/ https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\nfr\nasso.fr\ncom.fr\ngouv.fr\nnom.fr\nprd.fr\ntm.fr\n// Other SLDs now selfmanaged out of AFNIC range. Former "domaines sectoriels", still registration suffixes\navoues.fr\ncci.fr\ngreta.fr\nhuissier-justice.fr\n\n// ga : https://en.wikipedia.org/wiki/.ga\nga\n\n// gb : This registry is effectively dormant\n// Submitted by registry \ngb\n\n// gd : https://en.wikipedia.org/wiki/.gd\nedu.gd\ngov.gd\ngd\n\n// ge : http://www.nic.net.ge/policy_en.pdf\nge\ncom.ge\nedu.ge\ngov.ge\norg.ge\nmil.ge\nnet.ge\npvt.ge\n\n// gf : https://en.wikipedia.org/wiki/.gf\ngf\n\n// gg : http://www.channelisles.net/register-domains/\n// Confirmed by registry 2013-11-28\ngg\nco.gg\nnet.gg\norg.gg\n\n// gh : https://en.wikipedia.org/wiki/.gh\n// see also: http://www.nic.gh/reg_now.php\n// Although domains directly at second level are not possible at the moment,\n// they have been possible for some time and may come back.\ngh\ncom.gh\nedu.gh\ngov.gh\norg.gh\nmil.gh\n\n// gi : http://www.nic.gi/rules.html\ngi\ncom.gi\nltd.gi\ngov.gi\nmod.gi\nedu.gi\norg.gi\n\n// gl : https://en.wikipedia.org/wiki/.gl\n// http://nic.gl\ngl\nco.gl\ncom.gl\nedu.gl\nnet.gl\norg.gl\n\n// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm\ngm\n\n// gn : http://psg.com/dns/gn/gn.txt\n// Submitted by registry \ngn\nac.gn\ncom.gn\nedu.gn\ngov.gn\norg.gn\nnet.gn\n\n// gov : https://en.wikipedia.org/wiki/.gov\ngov\n\n// gp : http://www.nic.gp/index.php?lang=en\ngp\ncom.gp\nnet.gp\nmobi.gp\nedu.gp\norg.gp\nasso.gp\n\n// gq : https://en.wikipedia.org/wiki/.gq\ngq\n\n// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html\n// Submitted by registry \ngr\ncom.gr\nedu.gr\nnet.gr\norg.gr\ngov.gr\n\n// gs : https://en.wikipedia.org/wiki/.gs\ngs\n\n// gt : https://www.gt/sitio/registration_policy.php?lang=en\ngt\ncom.gt\nedu.gt\ngob.gt\nind.gt\nmil.gt\nnet.gt\norg.gt\n\n// gu : http://gadao.gov.gu/register.html\n// University of Guam : https://www.uog.edu\n// Submitted by uognoc@triton.uog.edu\ngu\ncom.gu\nedu.gu\ngov.gu\nguam.gu\ninfo.gu\nnet.gu\norg.gu\nweb.gu\n\n// gw : https://en.wikipedia.org/wiki/.gw\n// gw : https://nic.gw/regras/\ngw\n\n// gy : https://en.wikipedia.org/wiki/.gy\n// http://registry.gy/\ngy\nco.gy\ncom.gy\nedu.gy\ngov.gy\nnet.gy\norg.gy\n\n// hk : https://www.hkirc.hk\n// Submitted by registry \nhk\ncom.hk\nedu.hk\ngov.hk\nidv.hk\nnet.hk\norg.hk\n公司.hk\n教育.hk\n敎育.hk\n政府.hk\n個人.hk\n个人.hk\n箇人.hk\n網络.hk\n网络.hk\n组織.hk\n網絡.hk\n网絡.hk\n组织.hk\n組織.hk\n組织.hk\n\n// hm : https://en.wikipedia.org/wiki/.hm\nhm\n\n// hn : http://www.nic.hn/politicas/ps02,,05.html\nhn\ncom.hn\nedu.hn\norg.hn\nnet.hn\nmil.hn\ngob.hn\n\n// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf\nhr\niz.hr\nfrom.hr\nname.hr\ncom.hr\n\n// ht : http://www.nic.ht/info/charte.cfm\nht\ncom.ht\nshop.ht\nfirm.ht\ninfo.ht\nadult.ht\nnet.ht\npro.ht\norg.ht\nmed.ht\nart.ht\ncoop.ht\npol.ht\nasso.ht\nedu.ht\nrel.ht\ngouv.ht\nperso.ht\n\n// hu : http://www.domain.hu/domain/English/sld.html\n// Confirmed by registry 2008-06-12\nhu\nco.hu\ninfo.hu\norg.hu\npriv.hu\nsport.hu\ntm.hu\n2000.hu\nagrar.hu\nbolt.hu\ncasino.hu\ncity.hu\nerotica.hu\nerotika.hu\nfilm.hu\nforum.hu\ngames.hu\nhotel.hu\ningatlan.hu\njogasz.hu\nkonyvelo.hu\nlakas.hu\nmedia.hu\nnews.hu\nreklam.hu\nsex.hu\nshop.hu\nsuli.hu\nszex.hu\ntozsde.hu\nutazas.hu\nvideo.hu\n\n// id : https://pandi.id/en/domain/registration-requirements/\nid\nac.id\nbiz.id\nco.id\ndesa.id\ngo.id\nmil.id\nmy.id\nnet.id\nor.id\nponpes.id\nsch.id\nweb.id\n\n// ie : https://en.wikipedia.org/wiki/.ie\nie\ngov.ie\n\n// il : http://www.isoc.org.il/domains/\n// see also: https://en.isoc.org.il/il-cctld/registration-rules\n// ISOC-IL (operated by .il Registry)\nil\nac.il\nco.il\ngov.il\nidf.il\nk12.il\nmuni.il\nnet.il\norg.il\n// xn--4dbrk0ce ("Israel", Hebrew) : IL\nישראל\n// xn--4dbgdty6c.xn--4dbrk0ce.\nאקדמיה.ישראל\n// xn--5dbhl8d.xn--4dbrk0ce.\nישוב.ישראל\n// xn--8dbq2a.xn--4dbrk0ce.\nצהל.ישראל\n// xn--hebda8b.xn--4dbrk0ce.\nממשל.ישראל\n\n// im : https://www.nic.im/\n// Submitted by registry \nim\nac.im\nco.im\ncom.im\nltd.co.im\nnet.im\norg.im\nplc.co.im\ntt.im\ntv.im\n\n// in : https://en.wikipedia.org/wiki/.in\n// see also: https://registry.in/policies\n// Please note, that nic.in is not an official eTLD, but used by most\n// government institutions.\nin\n5g.in\n6g.in\nac.in\nai.in\nam.in\nbihar.in\nbiz.in\nbusiness.in\nca.in\ncn.in\nco.in\ncom.in\ncoop.in\ncs.in\ndelhi.in\ndr.in\nedu.in\ner.in\nfirm.in\ngen.in\ngov.in\ngujarat.in\nind.in\ninfo.in\nint.in\ninternet.in\nio.in\nme.in\nmil.in\nnet.in\nnic.in\norg.in\npg.in\npost.in\npro.in\nres.in\ntravel.in\ntv.in\nuk.in\nup.in\nus.in\n\n// info : https://en.wikipedia.org/wiki/.info\ninfo\n\n// int : https://en.wikipedia.org/wiki/.int\n// Confirmed by registry 2008-06-18\nint\neu.int\n\n// io : http://www.nic.io/rules.htm\n// list of other 2nd level tlds ?\nio\ncom.io\n\n// iq : http://www.cmc.iq/english/iq/iqregister1.htm\niq\ngov.iq\nedu.iq\nmil.iq\ncom.iq\norg.iq\nnet.iq\n\n// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules\n// Also see http://www.nic.ir/Internationalized_Domain_Names\n// Two .ir entries added at request of , 2010-04-16\nir\nac.ir\nco.ir\ngov.ir\nid.ir\nnet.ir\norg.ir\nsch.ir\n// xn--mgba3a4f16a.ir (.ir, Persian YEH)\nایران.ir\n// xn--mgba3a4fra.ir (.ir, Arabic YEH)\nايران.ir\n\n// is : http://www.isnic.is/domain/rules.php\n// Confirmed by registry 2008-12-06\nis\nnet.is\ncom.is\nedu.is\ngov.is\norg.is\nint.is\n\n// it : https://en.wikipedia.org/wiki/.it\nit\ngov.it\nedu.it\n// Reserved geo-names (regions and provinces):\n// https://www.nic.it/sites/default/files/archivio/docs/Regulation_assignation_v7.1.pdf\n// Regions\nabr.it\nabruzzo.it\naosta-valley.it\naostavalley.it\nbas.it\nbasilicata.it\ncal.it\ncalabria.it\ncam.it\ncampania.it\nemilia-romagna.it\nemiliaromagna.it\nemr.it\nfriuli-v-giulia.it\nfriuli-ve-giulia.it\nfriuli-vegiulia.it\nfriuli-venezia-giulia.it\nfriuli-veneziagiulia.it\nfriuli-vgiulia.it\nfriuliv-giulia.it\nfriulive-giulia.it\nfriulivegiulia.it\nfriulivenezia-giulia.it\nfriuliveneziagiulia.it\nfriulivgiulia.it\nfvg.it\nlaz.it\nlazio.it\nlig.it\nliguria.it\nlom.it\nlombardia.it\nlombardy.it\nlucania.it\nmar.it\nmarche.it\nmol.it\nmolise.it\npiedmont.it\npiemonte.it\npmn.it\npug.it\npuglia.it\nsar.it\nsardegna.it\nsardinia.it\nsic.it\nsicilia.it\nsicily.it\ntaa.it\ntos.it\ntoscana.it\ntrentin-sud-tirol.it\ntrentin-süd-tirol.it\ntrentin-sudtirol.it\ntrentin-südtirol.it\ntrentin-sued-tirol.it\ntrentin-suedtirol.it\ntrentino-a-adige.it\ntrentino-aadige.it\ntrentino-alto-adige.it\ntrentino-altoadige.it\ntrentino-s-tirol.it\ntrentino-stirol.it\ntrentino-sud-tirol.it\ntrentino-süd-tirol.it\ntrentino-sudtirol.it\ntrentino-südtirol.it\ntrentino-sued-tirol.it\ntrentino-suedtirol.it\ntrentino.it\ntrentinoa-adige.it\ntrentinoaadige.it\ntrentinoalto-adige.it\ntrentinoaltoadige.it\ntrentinos-tirol.it\ntrentinostirol.it\ntrentinosud-tirol.it\ntrentinosüd-tirol.it\ntrentinosudtirol.it\ntrentinosüdtirol.it\ntrentinosued-tirol.it\ntrentinosuedtirol.it\ntrentinsud-tirol.it\ntrentinsüd-tirol.it\ntrentinsudtirol.it\ntrentinsüdtirol.it\ntrentinsued-tirol.it\ntrentinsuedtirol.it\ntuscany.it\numb.it\numbria.it\nval-d-aosta.it\nval-daosta.it\nvald-aosta.it\nvaldaosta.it\nvalle-aosta.it\nvalle-d-aosta.it\nvalle-daosta.it\nvalleaosta.it\nvalled-aosta.it\nvalledaosta.it\nvallee-aoste.it\nvallée-aoste.it\nvallee-d-aoste.it\nvallée-d-aoste.it\nvalleeaoste.it\nvalléeaoste.it\nvalleedaoste.it\nvalléedaoste.it\nvao.it\nvda.it\nven.it\nveneto.it\n// Provinces\nag.it\nagrigento.it\nal.it\nalessandria.it\nalto-adige.it\naltoadige.it\nan.it\nancona.it\nandria-barletta-trani.it\nandria-trani-barletta.it\nandriabarlettatrani.it\nandriatranibarletta.it\nao.it\naosta.it\naoste.it\nap.it\naq.it\naquila.it\nar.it\narezzo.it\nascoli-piceno.it\nascolipiceno.it\nasti.it\nat.it\nav.it\navellino.it\nba.it\nbalsan-sudtirol.it\nbalsan-südtirol.it\nbalsan-suedtirol.it\nbalsan.it\nbari.it\nbarletta-trani-andria.it\nbarlettatraniandria.it\nbelluno.it\nbenevento.it\nbergamo.it\nbg.it\nbi.it\nbiella.it\nbl.it\nbn.it\nbo.it\nbologna.it\nbolzano-altoadige.it\nbolzano.it\nbozen-sudtirol.it\nbozen-südtirol.it\nbozen-suedtirol.it\nbozen.it\nbr.it\nbrescia.it\nbrindisi.it\nbs.it\nbt.it\nbulsan-sudtirol.it\nbulsan-südtirol.it\nbulsan-suedtirol.it\nbulsan.it\nbz.it\nca.it\ncagliari.it\ncaltanissetta.it\ncampidano-medio.it\ncampidanomedio.it\ncampobasso.it\ncarbonia-iglesias.it\ncarboniaiglesias.it\ncarrara-massa.it\ncarraramassa.it\ncaserta.it\ncatania.it\ncatanzaro.it\ncb.it\nce.it\ncesena-forli.it\ncesena-forlì.it\ncesenaforli.it\ncesenaforlì.it\nch.it\nchieti.it\nci.it\ncl.it\ncn.it\nco.it\ncomo.it\ncosenza.it\ncr.it\ncremona.it\ncrotone.it\ncs.it\nct.it\ncuneo.it\ncz.it\ndell-ogliastra.it\ndellogliastra.it\nen.it\nenna.it\nfc.it\nfe.it\nfermo.it\nferrara.it\nfg.it\nfi.it\nfirenze.it\nflorence.it\nfm.it\nfoggia.it\nforli-cesena.it\nforlì-cesena.it\nforlicesena.it\nforlìcesena.it\nfr.it\nfrosinone.it\nge.it\ngenoa.it\ngenova.it\ngo.it\ngorizia.it\ngr.it\ngrosseto.it\niglesias-carbonia.it\niglesiascarbonia.it\nim.it\nimperia.it\nis.it\nisernia.it\nkr.it\nla-spezia.it\nlaquila.it\nlaspezia.it\nlatina.it\nlc.it\nle.it\nlecce.it\nlecco.it\nli.it\nlivorno.it\nlo.it\nlodi.it\nlt.it\nlu.it\nlucca.it\nmacerata.it\nmantova.it\nmassa-carrara.it\nmassacarrara.it\nmatera.it\nmb.it\nmc.it\nme.it\nmedio-campidano.it\nmediocampidano.it\nmessina.it\nmi.it\nmilan.it\nmilano.it\nmn.it\nmo.it\nmodena.it\nmonza-brianza.it\nmonza-e-della-brianza.it\nmonza.it\nmonzabrianza.it\nmonzaebrianza.it\nmonzaedellabrianza.it\nms.it\nmt.it\nna.it\nnaples.it\nnapoli.it\nno.it\nnovara.it\nnu.it\nnuoro.it\nog.it\nogliastra.it\nolbia-tempio.it\nolbiatempio.it\nor.it\noristano.it\not.it\npa.it\npadova.it\npadua.it\npalermo.it\nparma.it\npavia.it\npc.it\npd.it\npe.it\nperugia.it\npesaro-urbino.it\npesarourbino.it\npescara.it\npg.it\npi.it\npiacenza.it\npisa.it\npistoia.it\npn.it\npo.it\npordenone.it\npotenza.it\npr.it\nprato.it\npt.it\npu.it\npv.it\npz.it\nra.it\nragusa.it\nravenna.it\nrc.it\nre.it\nreggio-calabria.it\nreggio-emilia.it\nreggiocalabria.it\nreggioemilia.it\nrg.it\nri.it\nrieti.it\nrimini.it\nrm.it\nrn.it\nro.it\nroma.it\nrome.it\nrovigo.it\nsa.it\nsalerno.it\nsassari.it\nsavona.it\nsi.it\nsiena.it\nsiracusa.it\nso.it\nsondrio.it\nsp.it\nsr.it\nss.it\nsuedtirol.it\nsüdtirol.it\nsv.it\nta.it\ntaranto.it\nte.it\ntempio-olbia.it\ntempioolbia.it\nteramo.it\nterni.it\ntn.it\nto.it\ntorino.it\ntp.it\ntr.it\ntrani-andria-barletta.it\ntrani-barletta-andria.it\ntraniandriabarletta.it\ntranibarlettaandria.it\ntrapani.it\ntrento.it\ntreviso.it\ntrieste.it\nts.it\nturin.it\ntv.it\nud.it\nudine.it\nurbino-pesaro.it\nurbinopesaro.it\nva.it\nvarese.it\nvb.it\nvc.it\nve.it\nvenezia.it\nvenice.it\nverbania.it\nvercelli.it\nverona.it\nvi.it\nvibo-valentia.it\nvibovalentia.it\nvicenza.it\nviterbo.it\nvr.it\nvs.it\nvt.it\nvv.it\n\n// je : http://www.channelisles.net/register-domains/\n// Confirmed by registry 2013-11-28\nje\nco.je\nnet.je\norg.je\n\n// jm : http://www.com.jm/register.html\n*.jm\n\n// jo : http://www.dns.jo/Registration_policy.aspx\njo\ncom.jo\norg.jo\nnet.jo\nedu.jo\nsch.jo\ngov.jo\nmil.jo\nname.jo\n\n// jobs : https://en.wikipedia.org/wiki/.jobs\njobs\n\n// jp : https://en.wikipedia.org/wiki/.jp\n// http://jprs.co.jp/en/jpdomain.html\n// Submitted by registry \njp\n// jp organizational type names\nac.jp\nad.jp\nco.jp\ned.jp\ngo.jp\ngr.jp\nlg.jp\nne.jp\nor.jp\n// jp prefecture type names\naichi.jp\nakita.jp\naomori.jp\nchiba.jp\nehime.jp\nfukui.jp\nfukuoka.jp\nfukushima.jp\ngifu.jp\ngunma.jp\nhiroshima.jp\nhokkaido.jp\nhyogo.jp\nibaraki.jp\nishikawa.jp\niwate.jp\nkagawa.jp\nkagoshima.jp\nkanagawa.jp\nkochi.jp\nkumamoto.jp\nkyoto.jp\nmie.jp\nmiyagi.jp\nmiyazaki.jp\nnagano.jp\nnagasaki.jp\nnara.jp\nniigata.jp\noita.jp\nokayama.jp\nokinawa.jp\nosaka.jp\nsaga.jp\nsaitama.jp\nshiga.jp\nshimane.jp\nshizuoka.jp\ntochigi.jp\ntokushima.jp\ntokyo.jp\ntottori.jp\ntoyama.jp\nwakayama.jp\nyamagata.jp\nyamaguchi.jp\nyamanashi.jp\n栃木.jp\n愛知.jp\n愛媛.jp\n兵庫.jp\n熊本.jp\n茨城.jp\n北海道.jp\n千葉.jp\n和歌山.jp\n長崎.jp\n長野.jp\n新潟.jp\n青森.jp\n静岡.jp\n東京.jp\n石川.jp\n埼玉.jp\n三重.jp\n京都.jp\n佐賀.jp\n大分.jp\n大阪.jp\n奈良.jp\n宮城.jp\n宮崎.jp\n富山.jp\n山口.jp\n山形.jp\n山梨.jp\n岩手.jp\n岐阜.jp\n岡山.jp\n島根.jp\n広島.jp\n徳島.jp\n沖縄.jp\n滋賀.jp\n神奈川.jp\n福井.jp\n福岡.jp\n福島.jp\n秋田.jp\n群馬.jp\n香川.jp\n高知.jp\n鳥取.jp\n鹿児島.jp\n// jp geographic type names\n// http://jprs.jp/doc/rule/saisoku-1.html\n*.kawasaki.jp\n*.kitakyushu.jp\n*.kobe.jp\n*.nagoya.jp\n*.sapporo.jp\n*.sendai.jp\n*.yokohama.jp\n!city.kawasaki.jp\n!city.kitakyushu.jp\n!city.kobe.jp\n!city.nagoya.jp\n!city.sapporo.jp\n!city.sendai.jp\n!city.yokohama.jp\n// 4th level registration\naisai.aichi.jp\nama.aichi.jp\nanjo.aichi.jp\nasuke.aichi.jp\nchiryu.aichi.jp\nchita.aichi.jp\nfuso.aichi.jp\ngamagori.aichi.jp\nhanda.aichi.jp\nhazu.aichi.jp\nhekinan.aichi.jp\nhigashiura.aichi.jp\nichinomiya.aichi.jp\ninazawa.aichi.jp\ninuyama.aichi.jp\nisshiki.aichi.jp\niwakura.aichi.jp\nkanie.aichi.jp\nkariya.aichi.jp\nkasugai.aichi.jp\nkira.aichi.jp\nkiyosu.aichi.jp\nkomaki.aichi.jp\nkonan.aichi.jp\nkota.aichi.jp\nmihama.aichi.jp\nmiyoshi.aichi.jp\nnishio.aichi.jp\nnisshin.aichi.jp\nobu.aichi.jp\noguchi.aichi.jp\noharu.aichi.jp\nokazaki.aichi.jp\nowariasahi.aichi.jp\nseto.aichi.jp\nshikatsu.aichi.jp\nshinshiro.aichi.jp\nshitara.aichi.jp\ntahara.aichi.jp\ntakahama.aichi.jp\ntobishima.aichi.jp\ntoei.aichi.jp\ntogo.aichi.jp\ntokai.aichi.jp\ntokoname.aichi.jp\ntoyoake.aichi.jp\ntoyohashi.aichi.jp\ntoyokawa.aichi.jp\ntoyone.aichi.jp\ntoyota.aichi.jp\ntsushima.aichi.jp\nyatomi.aichi.jp\nakita.akita.jp\ndaisen.akita.jp\nfujisato.akita.jp\ngojome.akita.jp\nhachirogata.akita.jp\nhappou.akita.jp\nhigashinaruse.akita.jp\nhonjo.akita.jp\nhonjyo.akita.jp\nikawa.akita.jp\nkamikoani.akita.jp\nkamioka.akita.jp\nkatagami.akita.jp\nkazuno.akita.jp\nkitaakita.akita.jp\nkosaka.akita.jp\nkyowa.akita.jp\nmisato.akita.jp\nmitane.akita.jp\nmoriyoshi.akita.jp\nnikaho.akita.jp\nnoshiro.akita.jp\nodate.akita.jp\noga.akita.jp\nogata.akita.jp\nsemboku.akita.jp\nyokote.akita.jp\nyurihonjo.akita.jp\naomori.aomori.jp\ngonohe.aomori.jp\nhachinohe.aomori.jp\nhashikami.aomori.jp\nhiranai.aomori.jp\nhirosaki.aomori.jp\nitayanagi.aomori.jp\nkuroishi.aomori.jp\nmisawa.aomori.jp\nmutsu.aomori.jp\nnakadomari.aomori.jp\nnoheji.aomori.jp\noirase.aomori.jp\nowani.aomori.jp\nrokunohe.aomori.jp\nsannohe.aomori.jp\nshichinohe.aomori.jp\nshingo.aomori.jp\ntakko.aomori.jp\ntowada.aomori.jp\ntsugaru.aomori.jp\ntsuruta.aomori.jp\nabiko.chiba.jp\nasahi.chiba.jp\nchonan.chiba.jp\nchosei.chiba.jp\nchoshi.chiba.jp\nchuo.chiba.jp\nfunabashi.chiba.jp\nfuttsu.chiba.jp\nhanamigawa.chiba.jp\nichihara.chiba.jp\nichikawa.chiba.jp\nichinomiya.chiba.jp\ninzai.chiba.jp\nisumi.chiba.jp\nkamagaya.chiba.jp\nkamogawa.chiba.jp\nkashiwa.chiba.jp\nkatori.chiba.jp\nkatsuura.chiba.jp\nkimitsu.chiba.jp\nkisarazu.chiba.jp\nkozaki.chiba.jp\nkujukuri.chiba.jp\nkyonan.chiba.jp\nmatsudo.chiba.jp\nmidori.chiba.jp\nmihama.chiba.jp\nminamiboso.chiba.jp\nmobara.chiba.jp\nmutsuzawa.chiba.jp\nnagara.chiba.jp\nnagareyama.chiba.jp\nnarashino.chiba.jp\nnarita.chiba.jp\nnoda.chiba.jp\noamishirasato.chiba.jp\nomigawa.chiba.jp\nonjuku.chiba.jp\notaki.chiba.jp\nsakae.chiba.jp\nsakura.chiba.jp\nshimofusa.chiba.jp\nshirako.chiba.jp\nshiroi.chiba.jp\nshisui.chiba.jp\nsodegaura.chiba.jp\nsosa.chiba.jp\ntako.chiba.jp\ntateyama.chiba.jp\ntogane.chiba.jp\ntohnosho.chiba.jp\ntomisato.chiba.jp\nurayasu.chiba.jp\nyachimata.chiba.jp\nyachiyo.chiba.jp\nyokaichiba.chiba.jp\nyokoshibahikari.chiba.jp\nyotsukaido.chiba.jp\nainan.ehime.jp\nhonai.ehime.jp\nikata.ehime.jp\nimabari.ehime.jp\niyo.ehime.jp\nkamijima.ehime.jp\nkihoku.ehime.jp\nkumakogen.ehime.jp\nmasaki.ehime.jp\nmatsuno.ehime.jp\nmatsuyama.ehime.jp\nnamikata.ehime.jp\nniihama.ehime.jp\nozu.ehime.jp\nsaijo.ehime.jp\nseiyo.ehime.jp\nshikokuchuo.ehime.jp\ntobe.ehime.jp\ntoon.ehime.jp\nuchiko.ehime.jp\nuwajima.ehime.jp\nyawatahama.ehime.jp\nechizen.fukui.jp\neiheiji.fukui.jp\nfukui.fukui.jp\nikeda.fukui.jp\nkatsuyama.fukui.jp\nmihama.fukui.jp\nminamiechizen.fukui.jp\nobama.fukui.jp\nohi.fukui.jp\nono.fukui.jp\nsabae.fukui.jp\nsakai.fukui.jp\ntakahama.fukui.jp\ntsuruga.fukui.jp\nwakasa.fukui.jp\nashiya.fukuoka.jp\nbuzen.fukuoka.jp\nchikugo.fukuoka.jp\nchikuho.fukuoka.jp\nchikujo.fukuoka.jp\nchikushino.fukuoka.jp\nchikuzen.fukuoka.jp\nchuo.fukuoka.jp\ndazaifu.fukuoka.jp\nfukuchi.fukuoka.jp\nhakata.fukuoka.jp\nhigashi.fukuoka.jp\nhirokawa.fukuoka.jp\nhisayama.fukuoka.jp\niizuka.fukuoka.jp\ninatsuki.fukuoka.jp\nkaho.fukuoka.jp\nkasuga.fukuoka.jp\nkasuya.fukuoka.jp\nkawara.fukuoka.jp\nkeisen.fukuoka.jp\nkoga.fukuoka.jp\nkurate.fukuoka.jp\nkurogi.fukuoka.jp\nkurume.fukuoka.jp\nminami.fukuoka.jp\nmiyako.fukuoka.jp\nmiyama.fukuoka.jp\nmiyawaka.fukuoka.jp\nmizumaki.fukuoka.jp\nmunakata.fukuoka.jp\nnakagawa.fukuoka.jp\nnakama.fukuoka.jp\nnishi.fukuoka.jp\nnogata.fukuoka.jp\nogori.fukuoka.jp\nokagaki.fukuoka.jp\nokawa.fukuoka.jp\noki.fukuoka.jp\nomuta.fukuoka.jp\nonga.fukuoka.jp\nonojo.fukuoka.jp\noto.fukuoka.jp\nsaigawa.fukuoka.jp\nsasaguri.fukuoka.jp\nshingu.fukuoka.jp\nshinyoshitomi.fukuoka.jp\nshonai.fukuoka.jp\nsoeda.fukuoka.jp\nsue.fukuoka.jp\ntachiarai.fukuoka.jp\ntagawa.fukuoka.jp\ntakata.fukuoka.jp\ntoho.fukuoka.jp\ntoyotsu.fukuoka.jp\ntsuiki.fukuoka.jp\nukiha.fukuoka.jp\numi.fukuoka.jp\nusui.fukuoka.jp\nyamada.fukuoka.jp\nyame.fukuoka.jp\nyanagawa.fukuoka.jp\nyukuhashi.fukuoka.jp\naizubange.fukushima.jp\naizumisato.fukushima.jp\naizuwakamatsu.fukushima.jp\nasakawa.fukushima.jp\nbandai.fukushima.jp\ndate.fukushima.jp\nfukushima.fukushima.jp\nfurudono.fukushima.jp\nfutaba.fukushima.jp\nhanawa.fukushima.jp\nhigashi.fukushima.jp\nhirata.fukushima.jp\nhirono.fukushima.jp\niitate.fukushima.jp\ninawashiro.fukushima.jp\nishikawa.fukushima.jp\niwaki.fukushima.jp\nizumizaki.fukushima.jp\nkagamiishi.fukushima.jp\nkaneyama.fukushima.jp\nkawamata.fukushima.jp\nkitakata.fukushima.jp\nkitashiobara.fukushima.jp\nkoori.fukushima.jp\nkoriyama.fukushima.jp\nkunimi.fukushima.jp\nmiharu.fukushima.jp\nmishima.fukushima.jp\nnamie.fukushima.jp\nnango.fukushima.jp\nnishiaizu.fukushima.jp\nnishigo.fukushima.jp\nokuma.fukushima.jp\nomotego.fukushima.jp\nono.fukushima.jp\notama.fukushima.jp\nsamegawa.fukushima.jp\nshimogo.fukushima.jp\nshirakawa.fukushima.jp\nshowa.fukushima.jp\nsoma.fukushima.jp\nsukagawa.fukushima.jp\ntaishin.fukushima.jp\ntamakawa.fukushima.jp\ntanagura.fukushima.jp\ntenei.fukushima.jp\nyabuki.fukushima.jp\nyamato.fukushima.jp\nyamatsuri.fukushima.jp\nyanaizu.fukushima.jp\nyugawa.fukushima.jp\nanpachi.gifu.jp\nena.gifu.jp\ngifu.gifu.jp\nginan.gifu.jp\ngodo.gifu.jp\ngujo.gifu.jp\nhashima.gifu.jp\nhichiso.gifu.jp\nhida.gifu.jp\nhigashishirakawa.gifu.jp\nibigawa.gifu.jp\nikeda.gifu.jp\nkakamigahara.gifu.jp\nkani.gifu.jp\nkasahara.gifu.jp\nkasamatsu.gifu.jp\nkawaue.gifu.jp\nkitagata.gifu.jp\nmino.gifu.jp\nminokamo.gifu.jp\nmitake.gifu.jp\nmizunami.gifu.jp\nmotosu.gifu.jp\nnakatsugawa.gifu.jp\nogaki.gifu.jp\nsakahogi.gifu.jp\nseki.gifu.jp\nsekigahara.gifu.jp\nshirakawa.gifu.jp\ntajimi.gifu.jp\ntakayama.gifu.jp\ntarui.gifu.jp\ntoki.gifu.jp\ntomika.gifu.jp\nwanouchi.gifu.jp\nyamagata.gifu.jp\nyaotsu.gifu.jp\nyoro.gifu.jp\nannaka.gunma.jp\nchiyoda.gunma.jp\nfujioka.gunma.jp\nhigashiagatsuma.gunma.jp\nisesaki.gunma.jp\nitakura.gunma.jp\nkanna.gunma.jp\nkanra.gunma.jp\nkatashina.gunma.jp\nkawaba.gunma.jp\nkiryu.gunma.jp\nkusatsu.gunma.jp\nmaebashi.gunma.jp\nmeiwa.gunma.jp\nmidori.gunma.jp\nminakami.gunma.jp\nnaganohara.gunma.jp\nnakanojo.gunma.jp\nnanmoku.gunma.jp\nnumata.gunma.jp\noizumi.gunma.jp\nora.gunma.jp\nota.gunma.jp\nshibukawa.gunma.jp\nshimonita.gunma.jp\nshinto.gunma.jp\nshowa.gunma.jp\ntakasaki.gunma.jp\ntakayama.gunma.jp\ntamamura.gunma.jp\ntatebayashi.gunma.jp\ntomioka.gunma.jp\ntsukiyono.gunma.jp\ntsumagoi.gunma.jp\nueno.gunma.jp\nyoshioka.gunma.jp\nasaminami.hiroshima.jp\ndaiwa.hiroshima.jp\netajima.hiroshima.jp\nfuchu.hiroshima.jp\nfukuyama.hiroshima.jp\nhatsukaichi.hiroshima.jp\nhigashihiroshima.hiroshima.jp\nhongo.hiroshima.jp\njinsekikogen.hiroshima.jp\nkaita.hiroshima.jp\nkui.hiroshima.jp\nkumano.hiroshima.jp\nkure.hiroshima.jp\nmihara.hiroshima.jp\nmiyoshi.hiroshima.jp\nnaka.hiroshima.jp\nonomichi.hiroshima.jp\nosakikamijima.hiroshima.jp\notake.hiroshima.jp\nsaka.hiroshima.jp\nsera.hiroshima.jp\nseranishi.hiroshima.jp\nshinichi.hiroshima.jp\nshobara.hiroshima.jp\ntakehara.hiroshima.jp\nabashiri.hokkaido.jp\nabira.hokkaido.jp\naibetsu.hokkaido.jp\nakabira.hokkaido.jp\nakkeshi.hokkaido.jp\nasahikawa.hokkaido.jp\nashibetsu.hokkaido.jp\nashoro.hokkaido.jp\nassabu.hokkaido.jp\natsuma.hokkaido.jp\nbibai.hokkaido.jp\nbiei.hokkaido.jp\nbifuka.hokkaido.jp\nbihoro.hokkaido.jp\nbiratori.hokkaido.jp\nchippubetsu.hokkaido.jp\nchitose.hokkaido.jp\ndate.hokkaido.jp\nebetsu.hokkaido.jp\nembetsu.hokkaido.jp\neniwa.hokkaido.jp\nerimo.hokkaido.jp\nesan.hokkaido.jp\nesashi.hokkaido.jp\nfukagawa.hokkaido.jp\nfukushima.hokkaido.jp\nfurano.hokkaido.jp\nfurubira.hokkaido.jp\nhaboro.hokkaido.jp\nhakodate.hokkaido.jp\nhamatonbetsu.hokkaido.jp\nhidaka.hokkaido.jp\nhigashikagura.hokkaido.jp\nhigashikawa.hokkaido.jp\nhiroo.hokkaido.jp\nhokuryu.hokkaido.jp\nhokuto.hokkaido.jp\nhonbetsu.hokkaido.jp\nhorokanai.hokkaido.jp\nhoronobe.hokkaido.jp\nikeda.hokkaido.jp\nimakane.hokkaido.jp\nishikari.hokkaido.jp\niwamizawa.hokkaido.jp\niwanai.hokkaido.jp\nkamifurano.hokkaido.jp\nkamikawa.hokkaido.jp\nkamishihoro.hokkaido.jp\nkamisunagawa.hokkaido.jp\nkamoenai.hokkaido.jp\nkayabe.hokkaido.jp\nkembuchi.hokkaido.jp\nkikonai.hokkaido.jp\nkimobetsu.hokkaido.jp\nkitahiroshima.hokkaido.jp\nkitami.hokkaido.jp\nkiyosato.hokkaido.jp\nkoshimizu.hokkaido.jp\nkunneppu.hokkaido.jp\nkuriyama.hokkaido.jp\nkuromatsunai.hokkaido.jp\nkushiro.hokkaido.jp\nkutchan.hokkaido.jp\nkyowa.hokkaido.jp\nmashike.hokkaido.jp\nmatsumae.hokkaido.jp\nmikasa.hokkaido.jp\nminamifurano.hokkaido.jp\nmombetsu.hokkaido.jp\nmoseushi.hokkaido.jp\nmukawa.hokkaido.jp\nmuroran.hokkaido.jp\nnaie.hokkaido.jp\nnakagawa.hokkaido.jp\nnakasatsunai.hokkaido.jp\nnakatombetsu.hokkaido.jp\nnanae.hokkaido.jp\nnanporo.hokkaido.jp\nnayoro.hokkaido.jp\nnemuro.hokkaido.jp\nniikappu.hokkaido.jp\nniki.hokkaido.jp\nnishiokoppe.hokkaido.jp\nnoboribetsu.hokkaido.jp\nnumata.hokkaido.jp\nobihiro.hokkaido.jp\nobira.hokkaido.jp\noketo.hokkaido.jp\nokoppe.hokkaido.jp\notaru.hokkaido.jp\notobe.hokkaido.jp\notofuke.hokkaido.jp\notoineppu.hokkaido.jp\noumu.hokkaido.jp\nozora.hokkaido.jp\npippu.hokkaido.jp\nrankoshi.hokkaido.jp\nrebun.hokkaido.jp\nrikubetsu.hokkaido.jp\nrishiri.hokkaido.jp\nrishirifuji.hokkaido.jp\nsaroma.hokkaido.jp\nsarufutsu.hokkaido.jp\nshakotan.hokkaido.jp\nshari.hokkaido.jp\nshibecha.hokkaido.jp\nshibetsu.hokkaido.jp\nshikabe.hokkaido.jp\nshikaoi.hokkaido.jp\nshimamaki.hokkaido.jp\nshimizu.hokkaido.jp\nshimokawa.hokkaido.jp\nshinshinotsu.hokkaido.jp\nshintoku.hokkaido.jp\nshiranuka.hokkaido.jp\nshiraoi.hokkaido.jp\nshiriuchi.hokkaido.jp\nsobetsu.hokkaido.jp\nsunagawa.hokkaido.jp\ntaiki.hokkaido.jp\ntakasu.hokkaido.jp\ntakikawa.hokkaido.jp\ntakinoue.hokkaido.jp\nteshikaga.hokkaido.jp\ntobetsu.hokkaido.jp\ntohma.hokkaido.jp\ntomakomai.hokkaido.jp\ntomari.hokkaido.jp\ntoya.hokkaido.jp\ntoyako.hokkaido.jp\ntoyotomi.hokkaido.jp\ntoyoura.hokkaido.jp\ntsubetsu.hokkaido.jp\ntsukigata.hokkaido.jp\nurakawa.hokkaido.jp\nurausu.hokkaido.jp\nuryu.hokkaido.jp\nutashinai.hokkaido.jp\nwakkanai.hokkaido.jp\nwassamu.hokkaido.jp\nyakumo.hokkaido.jp\nyoichi.hokkaido.jp\naioi.hyogo.jp\nakashi.hyogo.jp\nako.hyogo.jp\namagasaki.hyogo.jp\naogaki.hyogo.jp\nasago.hyogo.jp\nashiya.hyogo.jp\nawaji.hyogo.jp\nfukusaki.hyogo.jp\ngoshiki.hyogo.jp\nharima.hyogo.jp\nhimeji.hyogo.jp\nichikawa.hyogo.jp\ninagawa.hyogo.jp\nitami.hyogo.jp\nkakogawa.hyogo.jp\nkamigori.hyogo.jp\nkamikawa.hyogo.jp\nkasai.hyogo.jp\nkasuga.hyogo.jp\nkawanishi.hyogo.jp\nmiki.hyogo.jp\nminamiawaji.hyogo.jp\nnishinomiya.hyogo.jp\nnishiwaki.hyogo.jp\nono.hyogo.jp\nsanda.hyogo.jp\nsannan.hyogo.jp\nsasayama.hyogo.jp\nsayo.hyogo.jp\nshingu.hyogo.jp\nshinonsen.hyogo.jp\nshiso.hyogo.jp\nsumoto.hyogo.jp\ntaishi.hyogo.jp\ntaka.hyogo.jp\ntakarazuka.hyogo.jp\ntakasago.hyogo.jp\ntakino.hyogo.jp\ntamba.hyogo.jp\ntatsuno.hyogo.jp\ntoyooka.hyogo.jp\nyabu.hyogo.jp\nyashiro.hyogo.jp\nyoka.hyogo.jp\nyokawa.hyogo.jp\nami.ibaraki.jp\nasahi.ibaraki.jp\nbando.ibaraki.jp\nchikusei.ibaraki.jp\ndaigo.ibaraki.jp\nfujishiro.ibaraki.jp\nhitachi.ibaraki.jp\nhitachinaka.ibaraki.jp\nhitachiomiya.ibaraki.jp\nhitachiota.ibaraki.jp\nibaraki.ibaraki.jp\nina.ibaraki.jp\ninashiki.ibaraki.jp\nitako.ibaraki.jp\niwama.ibaraki.jp\njoso.ibaraki.jp\nkamisu.ibaraki.jp\nkasama.ibaraki.jp\nkashima.ibaraki.jp\nkasumigaura.ibaraki.jp\nkoga.ibaraki.jp\nmiho.ibaraki.jp\nmito.ibaraki.jp\nmoriya.ibaraki.jp\nnaka.ibaraki.jp\nnamegata.ibaraki.jp\noarai.ibaraki.jp\nogawa.ibaraki.jp\nomitama.ibaraki.jp\nryugasaki.ibaraki.jp\nsakai.ibaraki.jp\nsakuragawa.ibaraki.jp\nshimodate.ibaraki.jp\nshimotsuma.ibaraki.jp\nshirosato.ibaraki.jp\nsowa.ibaraki.jp\nsuifu.ibaraki.jp\ntakahagi.ibaraki.jp\ntamatsukuri.ibaraki.jp\ntokai.ibaraki.jp\ntomobe.ibaraki.jp\ntone.ibaraki.jp\ntoride.ibaraki.jp\ntsuchiura.ibaraki.jp\ntsukuba.ibaraki.jp\nuchihara.ibaraki.jp\nushiku.ibaraki.jp\nyachiyo.ibaraki.jp\nyamagata.ibaraki.jp\nyawara.ibaraki.jp\nyuki.ibaraki.jp\nanamizu.ishikawa.jp\nhakui.ishikawa.jp\nhakusan.ishikawa.jp\nkaga.ishikawa.jp\nkahoku.ishikawa.jp\nkanazawa.ishikawa.jp\nkawakita.ishikawa.jp\nkomatsu.ishikawa.jp\nnakanoto.ishikawa.jp\nnanao.ishikawa.jp\nnomi.ishikawa.jp\nnonoichi.ishikawa.jp\nnoto.ishikawa.jp\nshika.ishikawa.jp\nsuzu.ishikawa.jp\ntsubata.ishikawa.jp\ntsurugi.ishikawa.jp\nuchinada.ishikawa.jp\nwajima.ishikawa.jp\nfudai.iwate.jp\nfujisawa.iwate.jp\nhanamaki.iwate.jp\nhiraizumi.iwate.jp\nhirono.iwate.jp\nichinohe.iwate.jp\nichinoseki.iwate.jp\niwaizumi.iwate.jp\niwate.iwate.jp\njoboji.iwate.jp\nkamaishi.iwate.jp\nkanegasaki.iwate.jp\nkarumai.iwate.jp\nkawai.iwate.jp\nkitakami.iwate.jp\nkuji.iwate.jp\nkunohe.iwate.jp\nkuzumaki.iwate.jp\nmiyako.iwate.jp\nmizusawa.iwate.jp\nmorioka.iwate.jp\nninohe.iwate.jp\nnoda.iwate.jp\nofunato.iwate.jp\noshu.iwate.jp\notsuchi.iwate.jp\nrikuzentakata.iwate.jp\nshiwa.iwate.jp\nshizukuishi.iwate.jp\nsumita.iwate.jp\ntanohata.iwate.jp\ntono.iwate.jp\nyahaba.iwate.jp\nyamada.iwate.jp\nayagawa.kagawa.jp\nhigashikagawa.kagawa.jp\nkanonji.kagawa.jp\nkotohira.kagawa.jp\nmanno.kagawa.jp\nmarugame.kagawa.jp\nmitoyo.kagawa.jp\nnaoshima.kagawa.jp\nsanuki.kagawa.jp\ntadotsu.kagawa.jp\ntakamatsu.kagawa.jp\ntonosho.kagawa.jp\nuchinomi.kagawa.jp\nutazu.kagawa.jp\nzentsuji.kagawa.jp\nakune.kagoshima.jp\namami.kagoshima.jp\nhioki.kagoshima.jp\nisa.kagoshima.jp\nisen.kagoshima.jp\nizumi.kagoshima.jp\nkagoshima.kagoshima.jp\nkanoya.kagoshima.jp\nkawanabe.kagoshima.jp\nkinko.kagoshima.jp\nkouyama.kagoshima.jp\nmakurazaki.kagoshima.jp\nmatsumoto.kagoshima.jp\nminamitane.kagoshima.jp\nnakatane.kagoshima.jp\nnishinoomote.kagoshima.jp\nsatsumasendai.kagoshima.jp\nsoo.kagoshima.jp\ntarumizu.kagoshima.jp\nyusui.kagoshima.jp\naikawa.kanagawa.jp\natsugi.kanagawa.jp\nayase.kanagawa.jp\nchigasaki.kanagawa.jp\nebina.kanagawa.jp\nfujisawa.kanagawa.jp\nhadano.kanagawa.jp\nhakone.kanagawa.jp\nhiratsuka.kanagawa.jp\nisehara.kanagawa.jp\nkaisei.kanagawa.jp\nkamakura.kanagawa.jp\nkiyokawa.kanagawa.jp\nmatsuda.kanagawa.jp\nminamiashigara.kanagawa.jp\nmiura.kanagawa.jp\nnakai.kanagawa.jp\nninomiya.kanagawa.jp\nodawara.kanagawa.jp\noi.kanagawa.jp\noiso.kanagawa.jp\nsagamihara.kanagawa.jp\nsamukawa.kanagawa.jp\ntsukui.kanagawa.jp\nyamakita.kanagawa.jp\nyamato.kanagawa.jp\nyokosuka.kanagawa.jp\nyugawara.kanagawa.jp\nzama.kanagawa.jp\nzushi.kanagawa.jp\naki.kochi.jp\ngeisei.kochi.jp\nhidaka.kochi.jp\nhigashitsuno.kochi.jp\nino.kochi.jp\nkagami.kochi.jp\nkami.kochi.jp\nkitagawa.kochi.jp\nkochi.kochi.jp\nmihara.kochi.jp\nmotoyama.kochi.jp\nmuroto.kochi.jp\nnahari.kochi.jp\nnakamura.kochi.jp\nnankoku.kochi.jp\nnishitosa.kochi.jp\nniyodogawa.kochi.jp\nochi.kochi.jp\nokawa.kochi.jp\notoyo.kochi.jp\notsuki.kochi.jp\nsakawa.kochi.jp\nsukumo.kochi.jp\nsusaki.kochi.jp\ntosa.kochi.jp\ntosashimizu.kochi.jp\ntoyo.kochi.jp\ntsuno.kochi.jp\numaji.kochi.jp\nyasuda.kochi.jp\nyusuhara.kochi.jp\namakusa.kumamoto.jp\narao.kumamoto.jp\naso.kumamoto.jp\nchoyo.kumamoto.jp\ngyokuto.kumamoto.jp\nkamiamakusa.kumamoto.jp\nkikuchi.kumamoto.jp\nkumamoto.kumamoto.jp\nmashiki.kumamoto.jp\nmifune.kumamoto.jp\nminamata.kumamoto.jp\nminamioguni.kumamoto.jp\nnagasu.kumamoto.jp\nnishihara.kumamoto.jp\noguni.kumamoto.jp\nozu.kumamoto.jp\nsumoto.kumamoto.jp\ntakamori.kumamoto.jp\nuki.kumamoto.jp\nuto.kumamoto.jp\nyamaga.kumamoto.jp\nyamato.kumamoto.jp\nyatsushiro.kumamoto.jp\nayabe.kyoto.jp\nfukuchiyama.kyoto.jp\nhigashiyama.kyoto.jp\nide.kyoto.jp\nine.kyoto.jp\njoyo.kyoto.jp\nkameoka.kyoto.jp\nkamo.kyoto.jp\nkita.kyoto.jp\nkizu.kyoto.jp\nkumiyama.kyoto.jp\nkyotamba.kyoto.jp\nkyotanabe.kyoto.jp\nkyotango.kyoto.jp\nmaizuru.kyoto.jp\nminami.kyoto.jp\nminamiyamashiro.kyoto.jp\nmiyazu.kyoto.jp\nmuko.kyoto.jp\nnagaokakyo.kyoto.jp\nnakagyo.kyoto.jp\nnantan.kyoto.jp\noyamazaki.kyoto.jp\nsakyo.kyoto.jp\nseika.kyoto.jp\ntanabe.kyoto.jp\nuji.kyoto.jp\nujitawara.kyoto.jp\nwazuka.kyoto.jp\nyamashina.kyoto.jp\nyawata.kyoto.jp\nasahi.mie.jp\ninabe.mie.jp\nise.mie.jp\nkameyama.mie.jp\nkawagoe.mie.jp\nkiho.mie.jp\nkisosaki.mie.jp\nkiwa.mie.jp\nkomono.mie.jp\nkumano.mie.jp\nkuwana.mie.jp\nmatsusaka.mie.jp\nmeiwa.mie.jp\nmihama.mie.jp\nminamiise.mie.jp\nmisugi.mie.jp\nmiyama.mie.jp\nnabari.mie.jp\nshima.mie.jp\nsuzuka.mie.jp\ntado.mie.jp\ntaiki.mie.jp\ntaki.mie.jp\ntamaki.mie.jp\ntoba.mie.jp\ntsu.mie.jp\nudono.mie.jp\nureshino.mie.jp\nwatarai.mie.jp\nyokkaichi.mie.jp\nfurukawa.miyagi.jp\nhigashimatsushima.miyagi.jp\nishinomaki.miyagi.jp\niwanuma.miyagi.jp\nkakuda.miyagi.jp\nkami.miyagi.jp\nkawasaki.miyagi.jp\nmarumori.miyagi.jp\nmatsushima.miyagi.jp\nminamisanriku.miyagi.jp\nmisato.miyagi.jp\nmurata.miyagi.jp\nnatori.miyagi.jp\nogawara.miyagi.jp\nohira.miyagi.jp\nonagawa.miyagi.jp\nosaki.miyagi.jp\nrifu.miyagi.jp\nsemine.miyagi.jp\nshibata.miyagi.jp\nshichikashuku.miyagi.jp\nshikama.miyagi.jp\nshiogama.miyagi.jp\nshiroishi.miyagi.jp\ntagajo.miyagi.jp\ntaiwa.miyagi.jp\ntome.miyagi.jp\ntomiya.miyagi.jp\nwakuya.miyagi.jp\nwatari.miyagi.jp\nyamamoto.miyagi.jp\nzao.miyagi.jp\naya.miyazaki.jp\nebino.miyazaki.jp\ngokase.miyazaki.jp\nhyuga.miyazaki.jp\nkadogawa.miyazaki.jp\nkawaminami.miyazaki.jp\nkijo.miyazaki.jp\nkitagawa.miyazaki.jp\nkitakata.miyazaki.jp\nkitaura.miyazaki.jp\nkobayashi.miyazaki.jp\nkunitomi.miyazaki.jp\nkushima.miyazaki.jp\nmimata.miyazaki.jp\nmiyakonojo.miyazaki.jp\nmiyazaki.miyazaki.jp\nmorotsuka.miyazaki.jp\nnichinan.miyazaki.jp\nnishimera.miyazaki.jp\nnobeoka.miyazaki.jp\nsaito.miyazaki.jp\nshiiba.miyazaki.jp\nshintomi.miyazaki.jp\ntakaharu.miyazaki.jp\ntakanabe.miyazaki.jp\ntakazaki.miyazaki.jp\ntsuno.miyazaki.jp\nachi.nagano.jp\nagematsu.nagano.jp\nanan.nagano.jp\naoki.nagano.jp\nasahi.nagano.jp\nazumino.nagano.jp\nchikuhoku.nagano.jp\nchikuma.nagano.jp\nchino.nagano.jp\nfujimi.nagano.jp\nhakuba.nagano.jp\nhara.nagano.jp\nhiraya.nagano.jp\niida.nagano.jp\niijima.nagano.jp\niiyama.nagano.jp\niizuna.nagano.jp\nikeda.nagano.jp\nikusaka.nagano.jp\nina.nagano.jp\nkaruizawa.nagano.jp\nkawakami.nagano.jp\nkiso.nagano.jp\nkisofukushima.nagano.jp\nkitaaiki.nagano.jp\nkomagane.nagano.jp\nkomoro.nagano.jp\nmatsukawa.nagano.jp\nmatsumoto.nagano.jp\nmiasa.nagano.jp\nminamiaiki.nagano.jp\nminamimaki.nagano.jp\nminamiminowa.nagano.jp\nminowa.nagano.jp\nmiyada.nagano.jp\nmiyota.nagano.jp\nmochizuki.nagano.jp\nnagano.nagano.jp\nnagawa.nagano.jp\nnagiso.nagano.jp\nnakagawa.nagano.jp\nnakano.nagano.jp\nnozawaonsen.nagano.jp\nobuse.nagano.jp\nogawa.nagano.jp\nokaya.nagano.jp\nomachi.nagano.jp\nomi.nagano.jp\nookuwa.nagano.jp\nooshika.nagano.jp\notaki.nagano.jp\notari.nagano.jp\nsakae.nagano.jp\nsakaki.nagano.jp\nsaku.nagano.jp\nsakuho.nagano.jp\nshimosuwa.nagano.jp\nshinanomachi.nagano.jp\nshiojiri.nagano.jp\nsuwa.nagano.jp\nsuzaka.nagano.jp\ntakagi.nagano.jp\ntakamori.nagano.jp\ntakayama.nagano.jp\ntateshina.nagano.jp\ntatsuno.nagano.jp\ntogakushi.nagano.jp\ntogura.nagano.jp\ntomi.nagano.jp\nueda.nagano.jp\nwada.nagano.jp\nyamagata.nagano.jp\nyamanouchi.nagano.jp\nyasaka.nagano.jp\nyasuoka.nagano.jp\nchijiwa.nagasaki.jp\nfutsu.nagasaki.jp\ngoto.nagasaki.jp\nhasami.nagasaki.jp\nhirado.nagasaki.jp\niki.nagasaki.jp\nisahaya.nagasaki.jp\nkawatana.nagasaki.jp\nkuchinotsu.nagasaki.jp\nmatsuura.nagasaki.jp\nnagasaki.nagasaki.jp\nobama.nagasaki.jp\nomura.nagasaki.jp\noseto.nagasaki.jp\nsaikai.nagasaki.jp\nsasebo.nagasaki.jp\nseihi.nagasaki.jp\nshimabara.nagasaki.jp\nshinkamigoto.nagasaki.jp\ntogitsu.nagasaki.jp\ntsushima.nagasaki.jp\nunzen.nagasaki.jp\nando.nara.jp\ngose.nara.jp\nheguri.nara.jp\nhigashiyoshino.nara.jp\nikaruga.nara.jp\nikoma.nara.jp\nkamikitayama.nara.jp\nkanmaki.nara.jp\nkashiba.nara.jp\nkashihara.nara.jp\nkatsuragi.nara.jp\nkawai.nara.jp\nkawakami.nara.jp\nkawanishi.nara.jp\nkoryo.nara.jp\nkurotaki.nara.jp\nmitsue.nara.jp\nmiyake.nara.jp\nnara.nara.jp\nnosegawa.nara.jp\noji.nara.jp\nouda.nara.jp\noyodo.nara.jp\nsakurai.nara.jp\nsango.nara.jp\nshimoichi.nara.jp\nshimokitayama.nara.jp\nshinjo.nara.jp\nsoni.nara.jp\ntakatori.nara.jp\ntawaramoto.nara.jp\ntenkawa.nara.jp\ntenri.nara.jp\nuda.nara.jp\nyamatokoriyama.nara.jp\nyamatotakada.nara.jp\nyamazoe.nara.jp\nyoshino.nara.jp\naga.niigata.jp\nagano.niigata.jp\ngosen.niigata.jp\nitoigawa.niigata.jp\nizumozaki.niigata.jp\njoetsu.niigata.jp\nkamo.niigata.jp\nkariwa.niigata.jp\nkashiwazaki.niigata.jp\nminamiuonuma.niigata.jp\nmitsuke.niigata.jp\nmuika.niigata.jp\nmurakami.niigata.jp\nmyoko.niigata.jp\nnagaoka.niigata.jp\nniigata.niigata.jp\nojiya.niigata.jp\nomi.niigata.jp\nsado.niigata.jp\nsanjo.niigata.jp\nseiro.niigata.jp\nseirou.niigata.jp\nsekikawa.niigata.jp\nshibata.niigata.jp\ntagami.niigata.jp\ntainai.niigata.jp\ntochio.niigata.jp\ntokamachi.niigata.jp\ntsubame.niigata.jp\ntsunan.niigata.jp\nuonuma.niigata.jp\nyahiko.niigata.jp\nyoita.niigata.jp\nyuzawa.niigata.jp\nbeppu.oita.jp\nbungoono.oita.jp\nbungotakada.oita.jp\nhasama.oita.jp\nhiji.oita.jp\nhimeshima.oita.jp\nhita.oita.jp\nkamitsue.oita.jp\nkokonoe.oita.jp\nkuju.oita.jp\nkunisaki.oita.jp\nkusu.oita.jp\noita.oita.jp\nsaiki.oita.jp\ntaketa.oita.jp\ntsukumi.oita.jp\nusa.oita.jp\nusuki.oita.jp\nyufu.oita.jp\nakaiwa.okayama.jp\nasakuchi.okayama.jp\nbizen.okayama.jp\nhayashima.okayama.jp\nibara.okayama.jp\nkagamino.okayama.jp\nkasaoka.okayama.jp\nkibichuo.okayama.jp\nkumenan.okayama.jp\nkurashiki.okayama.jp\nmaniwa.okayama.jp\nmisaki.okayama.jp\nnagi.okayama.jp\nniimi.okayama.jp\nnishiawakura.okayama.jp\nokayama.okayama.jp\nsatosho.okayama.jp\nsetouchi.okayama.jp\nshinjo.okayama.jp\nshoo.okayama.jp\nsoja.okayama.jp\ntakahashi.okayama.jp\ntamano.okayama.jp\ntsuyama.okayama.jp\nwake.okayama.jp\nyakage.okayama.jp\naguni.okinawa.jp\nginowan.okinawa.jp\nginoza.okinawa.jp\ngushikami.okinawa.jp\nhaebaru.okinawa.jp\nhigashi.okinawa.jp\nhirara.okinawa.jp\niheya.okinawa.jp\nishigaki.okinawa.jp\nishikawa.okinawa.jp\nitoman.okinawa.jp\nizena.okinawa.jp\nkadena.okinawa.jp\nkin.okinawa.jp\nkitadaito.okinawa.jp\nkitanakagusuku.okinawa.jp\nkumejima.okinawa.jp\nkunigami.okinawa.jp\nminamidaito.okinawa.jp\nmotobu.okinawa.jp\nnago.okinawa.jp\nnaha.okinawa.jp\nnakagusuku.okinawa.jp\nnakijin.okinawa.jp\nnanjo.okinawa.jp\nnishihara.okinawa.jp\nogimi.okinawa.jp\nokinawa.okinawa.jp\nonna.okinawa.jp\nshimoji.okinawa.jp\ntaketomi.okinawa.jp\ntarama.okinawa.jp\ntokashiki.okinawa.jp\ntomigusuku.okinawa.jp\ntonaki.okinawa.jp\nurasoe.okinawa.jp\nuruma.okinawa.jp\nyaese.okinawa.jp\nyomitan.okinawa.jp\nyonabaru.okinawa.jp\nyonaguni.okinawa.jp\nzamami.okinawa.jp\nabeno.osaka.jp\nchihayaakasaka.osaka.jp\nchuo.osaka.jp\ndaito.osaka.jp\nfujiidera.osaka.jp\nhabikino.osaka.jp\nhannan.osaka.jp\nhigashiosaka.osaka.jp\nhigashisumiyoshi.osaka.jp\nhigashiyodogawa.osaka.jp\nhirakata.osaka.jp\nibaraki.osaka.jp\nikeda.osaka.jp\nizumi.osaka.jp\nizumiotsu.osaka.jp\nizumisano.osaka.jp\nkadoma.osaka.jp\nkaizuka.osaka.jp\nkanan.osaka.jp\nkashiwara.osaka.jp\nkatano.osaka.jp\nkawachinagano.osaka.jp\nkishiwada.osaka.jp\nkita.osaka.jp\nkumatori.osaka.jp\nmatsubara.osaka.jp\nminato.osaka.jp\nminoh.osaka.jp\nmisaki.osaka.jp\nmoriguchi.osaka.jp\nneyagawa.osaka.jp\nnishi.osaka.jp\nnose.osaka.jp\nosakasayama.osaka.jp\nsakai.osaka.jp\nsayama.osaka.jp\nsennan.osaka.jp\nsettsu.osaka.jp\nshijonawate.osaka.jp\nshimamoto.osaka.jp\nsuita.osaka.jp\ntadaoka.osaka.jp\ntaishi.osaka.jp\ntajiri.osaka.jp\ntakaishi.osaka.jp\ntakatsuki.osaka.jp\ntondabayashi.osaka.jp\ntoyonaka.osaka.jp\ntoyono.osaka.jp\nyao.osaka.jp\nariake.saga.jp\narita.saga.jp\nfukudomi.saga.jp\ngenkai.saga.jp\nhamatama.saga.jp\nhizen.saga.jp\nimari.saga.jp\nkamimine.saga.jp\nkanzaki.saga.jp\nkaratsu.saga.jp\nkashima.saga.jp\nkitagata.saga.jp\nkitahata.saga.jp\nkiyama.saga.jp\nkouhoku.saga.jp\nkyuragi.saga.jp\nnishiarita.saga.jp\nogi.saga.jp\nomachi.saga.jp\nouchi.saga.jp\nsaga.saga.jp\nshiroishi.saga.jp\ntaku.saga.jp\ntara.saga.jp\ntosu.saga.jp\nyoshinogari.saga.jp\narakawa.saitama.jp\nasaka.saitama.jp\nchichibu.saitama.jp\nfujimi.saitama.jp\nfujimino.saitama.jp\nfukaya.saitama.jp\nhanno.saitama.jp\nhanyu.saitama.jp\nhasuda.saitama.jp\nhatogaya.saitama.jp\nhatoyama.saitama.jp\nhidaka.saitama.jp\nhigashichichibu.saitama.jp\nhigashimatsuyama.saitama.jp\nhonjo.saitama.jp\nina.saitama.jp\niruma.saitama.jp\niwatsuki.saitama.jp\nkamiizumi.saitama.jp\nkamikawa.saitama.jp\nkamisato.saitama.jp\nkasukabe.saitama.jp\nkawagoe.saitama.jp\nkawaguchi.saitama.jp\nkawajima.saitama.jp\nkazo.saitama.jp\nkitamoto.saitama.jp\nkoshigaya.saitama.jp\nkounosu.saitama.jp\nkuki.saitama.jp\nkumagaya.saitama.jp\nmatsubushi.saitama.jp\nminano.saitama.jp\nmisato.saitama.jp\nmiyashiro.saitama.jp\nmiyoshi.saitama.jp\nmoroyama.saitama.jp\nnagatoro.saitama.jp\nnamegawa.saitama.jp\nniiza.saitama.jp\nogano.saitama.jp\nogawa.saitama.jp\nogose.saitama.jp\nokegawa.saitama.jp\nomiya.saitama.jp\notaki.saitama.jp\nranzan.saitama.jp\nryokami.saitama.jp\nsaitama.saitama.jp\nsakado.saitama.jp\nsatte.saitama.jp\nsayama.saitama.jp\nshiki.saitama.jp\nshiraoka.saitama.jp\nsoka.saitama.jp\nsugito.saitama.jp\ntoda.saitama.jp\ntokigawa.saitama.jp\ntokorozawa.saitama.jp\ntsurugashima.saitama.jp\nurawa.saitama.jp\nwarabi.saitama.jp\nyashio.saitama.jp\nyokoze.saitama.jp\nyono.saitama.jp\nyorii.saitama.jp\nyoshida.saitama.jp\nyoshikawa.saitama.jp\nyoshimi.saitama.jp\naisho.shiga.jp\ngamo.shiga.jp\nhigashiomi.shiga.jp\nhikone.shiga.jp\nkoka.shiga.jp\nkonan.shiga.jp\nkosei.shiga.jp\nkoto.shiga.jp\nkusatsu.shiga.jp\nmaibara.shiga.jp\nmoriyama.shiga.jp\nnagahama.shiga.jp\nnishiazai.shiga.jp\nnotogawa.shiga.jp\nomihachiman.shiga.jp\notsu.shiga.jp\nritto.shiga.jp\nryuoh.shiga.jp\ntakashima.shiga.jp\ntakatsuki.shiga.jp\ntorahime.shiga.jp\ntoyosato.shiga.jp\nyasu.shiga.jp\nakagi.shimane.jp\nama.shimane.jp\ngotsu.shimane.jp\nhamada.shimane.jp\nhigashiizumo.shimane.jp\nhikawa.shimane.jp\nhikimi.shimane.jp\nizumo.shimane.jp\nkakinoki.shimane.jp\nmasuda.shimane.jp\nmatsue.shimane.jp\nmisato.shimane.jp\nnishinoshima.shimane.jp\nohda.shimane.jp\nokinoshima.shimane.jp\nokuizumo.shimane.jp\nshimane.shimane.jp\ntamayu.shimane.jp\ntsuwano.shimane.jp\nunnan.shimane.jp\nyakumo.shimane.jp\nyasugi.shimane.jp\nyatsuka.shimane.jp\narai.shizuoka.jp\natami.shizuoka.jp\nfuji.shizuoka.jp\nfujieda.shizuoka.jp\nfujikawa.shizuoka.jp\nfujinomiya.shizuoka.jp\nfukuroi.shizuoka.jp\ngotemba.shizuoka.jp\nhaibara.shizuoka.jp\nhamamatsu.shizuoka.jp\nhigashiizu.shizuoka.jp\nito.shizuoka.jp\niwata.shizuoka.jp\nizu.shizuoka.jp\nizunokuni.shizuoka.jp\nkakegawa.shizuoka.jp\nkannami.shizuoka.jp\nkawanehon.shizuoka.jp\nkawazu.shizuoka.jp\nkikugawa.shizuoka.jp\nkosai.shizuoka.jp\nmakinohara.shizuoka.jp\nmatsuzaki.shizuoka.jp\nminamiizu.shizuoka.jp\nmishima.shizuoka.jp\nmorimachi.shizuoka.jp\nnishiizu.shizuoka.jp\nnumazu.shizuoka.jp\nomaezaki.shizuoka.jp\nshimada.shizuoka.jp\nshimizu.shizuoka.jp\nshimoda.shizuoka.jp\nshizuoka.shizuoka.jp\nsusono.shizuoka.jp\nyaizu.shizuoka.jp\nyoshida.shizuoka.jp\nashikaga.tochigi.jp\nbato.tochigi.jp\nhaga.tochigi.jp\nichikai.tochigi.jp\niwafune.tochigi.jp\nkaminokawa.tochigi.jp\nkanuma.tochigi.jp\nkarasuyama.tochigi.jp\nkuroiso.tochigi.jp\nmashiko.tochigi.jp\nmibu.tochigi.jp\nmoka.tochigi.jp\nmotegi.tochigi.jp\nnasu.tochigi.jp\nnasushiobara.tochigi.jp\nnikko.tochigi.jp\nnishikata.tochigi.jp\nnogi.tochigi.jp\nohira.tochigi.jp\nohtawara.tochigi.jp\noyama.tochigi.jp\nsakura.tochigi.jp\nsano.tochigi.jp\nshimotsuke.tochigi.jp\nshioya.tochigi.jp\ntakanezawa.tochigi.jp\ntochigi.tochigi.jp\ntsuga.tochigi.jp\nujiie.tochigi.jp\nutsunomiya.tochigi.jp\nyaita.tochigi.jp\naizumi.tokushima.jp\nanan.tokushima.jp\nichiba.tokushima.jp\nitano.tokushima.jp\nkainan.tokushima.jp\nkomatsushima.tokushima.jp\nmatsushige.tokushima.jp\nmima.tokushima.jp\nminami.tokushima.jp\nmiyoshi.tokushima.jp\nmugi.tokushima.jp\nnakagawa.tokushima.jp\nnaruto.tokushima.jp\nsanagochi.tokushima.jp\nshishikui.tokushima.jp\ntokushima.tokushima.jp\nwajiki.tokushima.jp\nadachi.tokyo.jp\nakiruno.tokyo.jp\nakishima.tokyo.jp\naogashima.tokyo.jp\narakawa.tokyo.jp\nbunkyo.tokyo.jp\nchiyoda.tokyo.jp\nchofu.tokyo.jp\nchuo.tokyo.jp\nedogawa.tokyo.jp\nfuchu.tokyo.jp\nfussa.tokyo.jp\nhachijo.tokyo.jp\nhachioji.tokyo.jp\nhamura.tokyo.jp\nhigashikurume.tokyo.jp\nhigashimurayama.tokyo.jp\nhigashiyamato.tokyo.jp\nhino.tokyo.jp\nhinode.tokyo.jp\nhinohara.tokyo.jp\ninagi.tokyo.jp\nitabashi.tokyo.jp\nkatsushika.tokyo.jp\nkita.tokyo.jp\nkiyose.tokyo.jp\nkodaira.tokyo.jp\nkoganei.tokyo.jp\nkokubunji.tokyo.jp\nkomae.tokyo.jp\nkoto.tokyo.jp\nkouzushima.tokyo.jp\nkunitachi.tokyo.jp\nmachida.tokyo.jp\nmeguro.tokyo.jp\nminato.tokyo.jp\nmitaka.tokyo.jp\nmizuho.tokyo.jp\nmusashimurayama.tokyo.jp\nmusashino.tokyo.jp\nnakano.tokyo.jp\nnerima.tokyo.jp\nogasawara.tokyo.jp\nokutama.tokyo.jp\nome.tokyo.jp\noshima.tokyo.jp\nota.tokyo.jp\nsetagaya.tokyo.jp\nshibuya.tokyo.jp\nshinagawa.tokyo.jp\nshinjuku.tokyo.jp\nsuginami.tokyo.jp\nsumida.tokyo.jp\ntachikawa.tokyo.jp\ntaito.tokyo.jp\ntama.tokyo.jp\ntoshima.tokyo.jp\nchizu.tottori.jp\nhino.tottori.jp\nkawahara.tottori.jp\nkoge.tottori.jp\nkotoura.tottori.jp\nmisasa.tottori.jp\nnanbu.tottori.jp\nnichinan.tottori.jp\nsakaiminato.tottori.jp\ntottori.tottori.jp\nwakasa.tottori.jp\nyazu.tottori.jp\nyonago.tottori.jp\nasahi.toyama.jp\nfuchu.toyama.jp\nfukumitsu.toyama.jp\nfunahashi.toyama.jp\nhimi.toyama.jp\nimizu.toyama.jp\ninami.toyama.jp\njohana.toyama.jp\nkamiichi.toyama.jp\nkurobe.toyama.jp\nnakaniikawa.toyama.jp\nnamerikawa.toyama.jp\nnanto.toyama.jp\nnyuzen.toyama.jp\noyabe.toyama.jp\ntaira.toyama.jp\ntakaoka.toyama.jp\ntateyama.toyama.jp\ntoga.toyama.jp\ntonami.toyama.jp\ntoyama.toyama.jp\nunazuki.toyama.jp\nuozu.toyama.jp\nyamada.toyama.jp\narida.wakayama.jp\naridagawa.wakayama.jp\ngobo.wakayama.jp\nhashimoto.wakayama.jp\nhidaka.wakayama.jp\nhirogawa.wakayama.jp\ninami.wakayama.jp\niwade.wakayama.jp\nkainan.wakayama.jp\nkamitonda.wakayama.jp\nkatsuragi.wakayama.jp\nkimino.wakayama.jp\nkinokawa.wakayama.jp\nkitayama.wakayama.jp\nkoya.wakayama.jp\nkoza.wakayama.jp\nkozagawa.wakayama.jp\nkudoyama.wakayama.jp\nkushimoto.wakayama.jp\nmihama.wakayama.jp\nmisato.wakayama.jp\nnachikatsuura.wakayama.jp\nshingu.wakayama.jp\nshirahama.wakayama.jp\ntaiji.wakayama.jp\ntanabe.wakayama.jp\nwakayama.wakayama.jp\nyuasa.wakayama.jp\nyura.wakayama.jp\nasahi.yamagata.jp\nfunagata.yamagata.jp\nhigashine.yamagata.jp\niide.yamagata.jp\nkahoku.yamagata.jp\nkaminoyama.yamagata.jp\nkaneyama.yamagata.jp\nkawanishi.yamagata.jp\nmamurogawa.yamagata.jp\nmikawa.yamagata.jp\nmurayama.yamagata.jp\nnagai.yamagata.jp\nnakayama.yamagata.jp\nnanyo.yamagata.jp\nnishikawa.yamagata.jp\nobanazawa.yamagata.jp\noe.yamagata.jp\noguni.yamagata.jp\nohkura.yamagata.jp\noishida.yamagata.jp\nsagae.yamagata.jp\nsakata.yamagata.jp\nsakegawa.yamagata.jp\nshinjo.yamagata.jp\nshirataka.yamagata.jp\nshonai.yamagata.jp\ntakahata.yamagata.jp\ntendo.yamagata.jp\ntozawa.yamagata.jp\ntsuruoka.yamagata.jp\nyamagata.yamagata.jp\nyamanobe.yamagata.jp\nyonezawa.yamagata.jp\nyuza.yamagata.jp\nabu.yamaguchi.jp\nhagi.yamaguchi.jp\nhikari.yamaguchi.jp\nhofu.yamaguchi.jp\niwakuni.yamaguchi.jp\nkudamatsu.yamaguchi.jp\nmitou.yamaguchi.jp\nnagato.yamaguchi.jp\noshima.yamaguchi.jp\nshimonoseki.yamaguchi.jp\nshunan.yamaguchi.jp\ntabuse.yamaguchi.jp\ntokuyama.yamaguchi.jp\ntoyota.yamaguchi.jp\nube.yamaguchi.jp\nyuu.yamaguchi.jp\nchuo.yamanashi.jp\ndoshi.yamanashi.jp\nfuefuki.yamanashi.jp\nfujikawa.yamanashi.jp\nfujikawaguchiko.yamanashi.jp\nfujiyoshida.yamanashi.jp\nhayakawa.yamanashi.jp\nhokuto.yamanashi.jp\nichikawamisato.yamanashi.jp\nkai.yamanashi.jp\nkofu.yamanashi.jp\nkoshu.yamanashi.jp\nkosuge.yamanashi.jp\nminami-alps.yamanashi.jp\nminobu.yamanashi.jp\nnakamichi.yamanashi.jp\nnanbu.yamanashi.jp\nnarusawa.yamanashi.jp\nnirasaki.yamanashi.jp\nnishikatsura.yamanashi.jp\noshino.yamanashi.jp\notsuki.yamanashi.jp\nshowa.yamanashi.jp\ntabayama.yamanashi.jp\ntsuru.yamanashi.jp\nuenohara.yamanashi.jp\nyamanakako.yamanashi.jp\nyamanashi.yamanashi.jp\n\n// ke : http://www.kenic.or.ke/index.php/en/ke-domains/ke-domains\nke\nac.ke\nco.ke\ngo.ke\ninfo.ke\nme.ke\nmobi.ke\nne.ke\nor.ke\nsc.ke\n\n// kg : http://www.domain.kg/dmn_n.html\nkg\norg.kg\nnet.kg\ncom.kg\nedu.kg\ngov.kg\nmil.kg\n\n// kh : http://www.mptc.gov.kh/dns_registration.htm\n*.kh\n\n// ki : http://www.ki/dns/index.html\nki\nedu.ki\nbiz.ki\nnet.ki\norg.ki\ngov.ki\ninfo.ki\ncom.ki\n\n// km : https://en.wikipedia.org/wiki/.km\n// http://www.domaine.km/documents/charte.doc\nkm\norg.km\nnom.km\ngov.km\nprd.km\ntm.km\nedu.km\nmil.km\nass.km\ncom.km\n// These are only mentioned as proposed suggestions at domaine.km, but\n// https://en.wikipedia.org/wiki/.km says they\'re available for registration:\ncoop.km\nasso.km\npresse.km\nmedecin.km\nnotaires.km\npharmaciens.km\nveterinaire.km\ngouv.km\n\n// kn : https://en.wikipedia.org/wiki/.kn\n// http://www.dot.kn/domainRules.html\nkn\nnet.kn\norg.kn\nedu.kn\ngov.kn\n\n// kp : http://www.kcce.kp/en_index.php\nkp\ncom.kp\nedu.kp\ngov.kp\norg.kp\nrep.kp\ntra.kp\n\n// kr : https://en.wikipedia.org/wiki/.kr\n// see also: http://domain.nida.or.kr/eng/registration.jsp\nkr\nac.kr\nco.kr\nes.kr\ngo.kr\nhs.kr\nkg.kr\nmil.kr\nms.kr\nne.kr\nor.kr\npe.kr\nre.kr\nsc.kr\n// kr geographical names\nbusan.kr\nchungbuk.kr\nchungnam.kr\ndaegu.kr\ndaejeon.kr\ngangwon.kr\ngwangju.kr\ngyeongbuk.kr\ngyeonggi.kr\ngyeongnam.kr\nincheon.kr\njeju.kr\njeonbuk.kr\njeonnam.kr\nseoul.kr\nulsan.kr\n\n// kw : https://www.nic.kw/policies/\n// Confirmed by registry \nkw\ncom.kw\nedu.kw\nemb.kw\ngov.kw\nind.kw\nnet.kw\norg.kw\n\n// ky : http://www.icta.ky/da_ky_reg_dom.php\n// Confirmed by registry 2008-06-17\nky\ncom.ky\nedu.ky\nnet.ky\norg.ky\n\n// kz : https://en.wikipedia.org/wiki/.kz\n// see also: http://www.nic.kz/rules/index.jsp\nkz\norg.kz\nedu.kz\nnet.kz\ngov.kz\nmil.kz\ncom.kz\n\n// la : https://en.wikipedia.org/wiki/.la\n// Submitted by registry \nla\nint.la\nnet.la\ninfo.la\nedu.la\ngov.la\nper.la\ncom.la\norg.la\n\n// lb : https://en.wikipedia.org/wiki/.lb\n// Submitted by registry \nlb\ncom.lb\nedu.lb\ngov.lb\nnet.lb\norg.lb\n\n// lc : https://en.wikipedia.org/wiki/.lc\n// see also: http://www.nic.lc/rules.htm\nlc\ncom.lc\nnet.lc\nco.lc\norg.lc\nedu.lc\ngov.lc\n\n// li : https://en.wikipedia.org/wiki/.li\nli\n\n// lk : https://www.nic.lk/index.php/domain-registration/lk-domain-naming-structure\nlk\ngov.lk\nsch.lk\nnet.lk\nint.lk\ncom.lk\norg.lk\nedu.lk\nngo.lk\nsoc.lk\nweb.lk\nltd.lk\nassn.lk\ngrp.lk\nhotel.lk\nac.lk\n\n// lr : http://psg.com/dns/lr/lr.txt\n// Submitted by registry \nlr\ncom.lr\nedu.lr\ngov.lr\norg.lr\nnet.lr\n\n// ls : http://www.nic.ls/\n// Confirmed by registry \nls\nac.ls\nbiz.ls\nco.ls\nedu.ls\ngov.ls\ninfo.ls\nnet.ls\norg.ls\nsc.ls\n\n// lt : https://en.wikipedia.org/wiki/.lt\nlt\n// gov.lt : http://www.gov.lt/index_en.php\ngov.lt\n\n// lu : http://www.dns.lu/en/\nlu\n\n// lv : http://www.nic.lv/DNS/En/generic.php\nlv\ncom.lv\nedu.lv\ngov.lv\norg.lv\nmil.lv\nid.lv\nnet.lv\nasn.lv\nconf.lv\n\n// ly : http://www.nic.ly/regulations.php\nly\ncom.ly\nnet.ly\ngov.ly\nplc.ly\nedu.ly\nsch.ly\nmed.ly\norg.ly\nid.ly\n\n// ma : https://en.wikipedia.org/wiki/.ma\n// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf\nma\nco.ma\nnet.ma\ngov.ma\norg.ma\nac.ma\npress.ma\n\n// mc : http://www.nic.mc/\nmc\ntm.mc\nasso.mc\n\n// md : https://en.wikipedia.org/wiki/.md\nmd\n\n// me : https://en.wikipedia.org/wiki/.me\nme\nco.me\nnet.me\norg.me\nedu.me\nac.me\ngov.me\nits.me\npriv.me\n\n// mg : http://nic.mg/nicmg/?page_id=39\nmg\norg.mg\nnom.mg\ngov.mg\nprd.mg\ntm.mg\nedu.mg\nmil.mg\ncom.mg\nco.mg\n\n// mh : https://en.wikipedia.org/wiki/.mh\nmh\n\n// mil : https://en.wikipedia.org/wiki/.mil\nmil\n\n// mk : https://en.wikipedia.org/wiki/.mk\n// see also: http://dns.marnet.net.mk/postapka.php\nmk\ncom.mk\norg.mk\nnet.mk\nedu.mk\ngov.mk\ninf.mk\nname.mk\n\n// ml : http://www.gobin.info/domainname/ml-template.doc\n// see also: https://en.wikipedia.org/wiki/.ml\nml\ncom.ml\nedu.ml\ngouv.ml\ngov.ml\nnet.ml\norg.ml\npresse.ml\n\n// mm : https://en.wikipedia.org/wiki/.mm\n*.mm\n\n// mn : https://en.wikipedia.org/wiki/.mn\nmn\ngov.mn\nedu.mn\norg.mn\n\n// mo : http://www.monic.net.mo/\nmo\ncom.mo\nnet.mo\norg.mo\nedu.mo\ngov.mo\n\n// mobi : https://en.wikipedia.org/wiki/.mobi\nmobi\n\n// mp : http://www.dot.mp/\n// Confirmed by registry 2008-06-17\nmp\n\n// mq : https://en.wikipedia.org/wiki/.mq\nmq\n\n// mr : https://en.wikipedia.org/wiki/.mr\nmr\ngov.mr\n\n// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf\nms\ncom.ms\nedu.ms\ngov.ms\nnet.ms\norg.ms\n\n// mt : https://www.nic.org.mt/go/policy\n// Submitted by registry \nmt\ncom.mt\nedu.mt\nnet.mt\norg.mt\n\n// mu : https://en.wikipedia.org/wiki/.mu\nmu\ncom.mu\nnet.mu\norg.mu\ngov.mu\nac.mu\nco.mu\nor.mu\n\n// museum : https://welcome.museum/wp-content/uploads/2018/05/20180525-Registration-Policy-MUSEUM-EN_VF-2.pdf https://welcome.museum/buy-your-dot-museum-2/\nmuseum\n\n// mv : https://en.wikipedia.org/wiki/.mv\n// "mv" included because, contra Wikipedia, google.mv exists.\nmv\naero.mv\nbiz.mv\ncom.mv\ncoop.mv\nedu.mv\ngov.mv\ninfo.mv\nint.mv\nmil.mv\nmuseum.mv\nname.mv\nnet.mv\norg.mv\npro.mv\n\n// mw : http://www.registrar.mw/\nmw\nac.mw\nbiz.mw\nco.mw\ncom.mw\ncoop.mw\nedu.mw\ngov.mw\nint.mw\nmuseum.mw\nnet.mw\norg.mw\n\n// mx : http://www.nic.mx/\n// Submitted by registry \nmx\ncom.mx\norg.mx\ngob.mx\nedu.mx\nnet.mx\n\n// my : http://www.mynic.my/\n// Available strings: https://mynic.my/resources/domains/buying-a-domain/\nmy\nbiz.my\ncom.my\nedu.my\ngov.my\nmil.my\nname.my\nnet.my\norg.my\n\n// mz : http://www.uem.mz/\n// Submitted by registry \nmz\nac.mz\nadv.mz\nco.mz\nedu.mz\ngov.mz\nmil.mz\nnet.mz\norg.mz\n\n// na : http://www.na-nic.com.na/\n// http://www.info.na/domain/\nna\ninfo.na\npro.na\nname.na\nschool.na\nor.na\ndr.na\nus.na\nmx.na\nca.na\nin.na\ncc.na\ntv.na\nws.na\nmobi.na\nco.na\ncom.na\norg.na\n\n// name : has 2nd-level tlds, but there\'s no list of them\nname\n\n// nc : http://www.cctld.nc/\nnc\nasso.nc\nnom.nc\n\n// ne : https://en.wikipedia.org/wiki/.ne\nne\n\n// net : https://en.wikipedia.org/wiki/.net\nnet\n\n// nf : https://en.wikipedia.org/wiki/.nf\nnf\ncom.nf\nnet.nf\nper.nf\nrec.nf\nweb.nf\narts.nf\nfirm.nf\ninfo.nf\nother.nf\nstore.nf\n\n// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds\nng\ncom.ng\nedu.ng\ngov.ng\ni.ng\nmil.ng\nmobi.ng\nname.ng\nnet.ng\norg.ng\nsch.ng\n\n// ni : http://www.nic.ni/\nni\nac.ni\nbiz.ni\nco.ni\ncom.ni\nedu.ni\ngob.ni\nin.ni\ninfo.ni\nint.ni\nmil.ni\nnet.ni\nnom.ni\norg.ni\nweb.ni\n\n// nl : https://en.wikipedia.org/wiki/.nl\n// https://www.sidn.nl/\n// ccTLD for the Netherlands\nnl\n\n// no : https://www.norid.no/en/om-domenenavn/regelverk-for-no/\n// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/\n// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/\n// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/\n// RSS feed: https://teknisk.norid.no/en/feed/\nno\n// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/\nfhs.no\nvgs.no\nfylkesbibl.no\nfolkebibl.no\nmuseum.no\nidrett.no\npriv.no\n// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/\nmil.no\nstat.no\ndep.no\nkommune.no\nherad.no\n// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/\n// counties\naa.no\nah.no\nbu.no\nfm.no\nhl.no\nhm.no\njan-mayen.no\nmr.no\nnl.no\nnt.no\nof.no\nol.no\noslo.no\nrl.no\nsf.no\nst.no\nsvalbard.no\ntm.no\ntr.no\nva.no\nvf.no\n// primary and lower secondary schools per county\ngs.aa.no\ngs.ah.no\ngs.bu.no\ngs.fm.no\ngs.hl.no\ngs.hm.no\ngs.jan-mayen.no\ngs.mr.no\ngs.nl.no\ngs.nt.no\ngs.of.no\ngs.ol.no\ngs.oslo.no\ngs.rl.no\ngs.sf.no\ngs.st.no\ngs.svalbard.no\ngs.tm.no\ngs.tr.no\ngs.va.no\ngs.vf.no\n// cities\nakrehamn.no\nåkrehamn.no\nalgard.no\nålgård.no\narna.no\nbrumunddal.no\nbryne.no\nbronnoysund.no\nbrønnøysund.no\ndrobak.no\ndrøbak.no\negersund.no\nfetsund.no\nfloro.no\nflorø.no\nfredrikstad.no\nhokksund.no\nhonefoss.no\nhønefoss.no\njessheim.no\njorpeland.no\njørpeland.no\nkirkenes.no\nkopervik.no\nkrokstadelva.no\nlangevag.no\nlangevåg.no\nleirvik.no\nmjondalen.no\nmjøndalen.no\nmo-i-rana.no\nmosjoen.no\nmosjøen.no\nnesoddtangen.no\norkanger.no\nosoyro.no\nosøyro.no\nraholt.no\nråholt.no\nsandnessjoen.no\nsandnessjøen.no\nskedsmokorset.no\nslattum.no\nspjelkavik.no\nstathelle.no\nstavern.no\nstjordalshalsen.no\nstjørdalshalsen.no\ntananger.no\ntranby.no\nvossevangen.no\n// communities\nafjord.no\nåfjord.no\nagdenes.no\nal.no\nål.no\nalesund.no\nålesund.no\nalstahaug.no\nalta.no\náltá.no\nalaheadju.no\nálaheadju.no\nalvdal.no\namli.no\nåmli.no\namot.no\nåmot.no\nandebu.no\nandoy.no\nandøy.no\nandasuolo.no\nardal.no\nårdal.no\naremark.no\narendal.no\nås.no\naseral.no\nåseral.no\nasker.no\naskim.no\naskvoll.no\naskoy.no\naskøy.no\nasnes.no\nåsnes.no\naudnedaln.no\naukra.no\naure.no\naurland.no\naurskog-holand.no\naurskog-høland.no\naustevoll.no\naustrheim.no\naveroy.no\naverøy.no\nbalestrand.no\nballangen.no\nbalat.no\nbálát.no\nbalsfjord.no\nbahccavuotna.no\nbáhccavuotna.no\nbamble.no\nbardu.no\nbeardu.no\nbeiarn.no\nbajddar.no\nbájddar.no\nbaidar.no\nbáidár.no\nberg.no\nbergen.no\nberlevag.no\nberlevåg.no\nbearalvahki.no\nbearalváhki.no\nbindal.no\nbirkenes.no\nbjarkoy.no\nbjarkøy.no\nbjerkreim.no\nbjugn.no\nbodo.no\nbodø.no\nbadaddja.no\nbådåddjå.no\nbudejju.no\nbokn.no\nbremanger.no\nbronnoy.no\nbrønnøy.no\nbygland.no\nbykle.no\nbarum.no\nbærum.no\nbo.telemark.no\nbø.telemark.no\nbo.nordland.no\nbø.nordland.no\nbievat.no\nbievát.no\nbomlo.no\nbømlo.no\nbatsfjord.no\nbåtsfjord.no\nbahcavuotna.no\nbáhcavuotna.no\ndovre.no\ndrammen.no\ndrangedal.no\ndyroy.no\ndyrøy.no\ndonna.no\ndønna.no\neid.no\neidfjord.no\neidsberg.no\neidskog.no\neidsvoll.no\neigersund.no\nelverum.no\nenebakk.no\nengerdal.no\netne.no\netnedal.no\nevenes.no\nevenassi.no\nevenášši.no\nevje-og-hornnes.no\nfarsund.no\nfauske.no\nfuossko.no\nfuoisku.no\nfedje.no\nfet.no\nfinnoy.no\nfinnøy.no\nfitjar.no\nfjaler.no\nfjell.no\nflakstad.no\nflatanger.no\nflekkefjord.no\nflesberg.no\nflora.no\nfla.no\nflå.no\nfolldal.no\nforsand.no\nfosnes.no\nfrei.no\nfrogn.no\nfroland.no\nfrosta.no\nfrana.no\nfræna.no\nfroya.no\nfrøya.no\nfusa.no\nfyresdal.no\nforde.no\nførde.no\ngamvik.no\ngangaviika.no\ngáŋgaviika.no\ngaular.no\ngausdal.no\ngildeskal.no\ngildeskål.no\ngiske.no\ngjemnes.no\ngjerdrum.no\ngjerstad.no\ngjesdal.no\ngjovik.no\ngjøvik.no\ngloppen.no\ngol.no\ngran.no\ngrane.no\ngranvin.no\ngratangen.no\ngrimstad.no\ngrong.no\nkraanghke.no\nkråanghke.no\ngrue.no\ngulen.no\nhadsel.no\nhalden.no\nhalsa.no\nhamar.no\nhamaroy.no\nhabmer.no\nhábmer.no\nhapmir.no\nhápmir.no\nhammerfest.no\nhammarfeasta.no\nhámmárfeasta.no\nharam.no\nhareid.no\nharstad.no\nhasvik.no\naknoluokta.no\nákŋoluokta.no\nhattfjelldal.no\naarborte.no\nhaugesund.no\nhemne.no\nhemnes.no\nhemsedal.no\nheroy.more-og-romsdal.no\nherøy.møre-og-romsdal.no\nheroy.nordland.no\nherøy.nordland.no\nhitra.no\nhjartdal.no\nhjelmeland.no\nhobol.no\nhobøl.no\nhof.no\nhol.no\nhole.no\nholmestrand.no\nholtalen.no\nholtålen.no\nhornindal.no\nhorten.no\nhurdal.no\nhurum.no\nhvaler.no\nhyllestad.no\nhagebostad.no\nhægebostad.no\nhoyanger.no\nhøyanger.no\nhoylandet.no\nhøylandet.no\nha.no\nhå.no\nibestad.no\ninderoy.no\ninderøy.no\niveland.no\njevnaker.no\njondal.no\njolster.no\njølster.no\nkarasjok.no\nkarasjohka.no\nkárášjohka.no\nkarlsoy.no\ngalsa.no\ngálsá.no\nkarmoy.no\nkarmøy.no\nkautokeino.no\nguovdageaidnu.no\nklepp.no\nklabu.no\nklæbu.no\nkongsberg.no\nkongsvinger.no\nkragero.no\nkragerø.no\nkristiansand.no\nkristiansund.no\nkrodsherad.no\nkrødsherad.no\nkvalsund.no\nrahkkeravju.no\nráhkkerávju.no\nkvam.no\nkvinesdal.no\nkvinnherad.no\nkviteseid.no\nkvitsoy.no\nkvitsøy.no\nkvafjord.no\nkvæfjord.no\ngiehtavuoatna.no\nkvanangen.no\nkvænangen.no\nnavuotna.no\nnávuotna.no\nkafjord.no\nkåfjord.no\ngaivuotna.no\ngáivuotna.no\nlarvik.no\nlavangen.no\nlavagis.no\nloabat.no\nloabát.no\nlebesby.no\ndavvesiida.no\nleikanger.no\nleirfjord.no\nleka.no\nleksvik.no\nlenvik.no\nleangaviika.no\nleaŋgaviika.no\nlesja.no\nlevanger.no\nlier.no\nlierne.no\nlillehammer.no\nlillesand.no\nlindesnes.no\nlindas.no\nlindås.no\nlom.no\nloppa.no\nlahppi.no\nláhppi.no\nlund.no\nlunner.no\nluroy.no\nlurøy.no\nluster.no\nlyngdal.no\nlyngen.no\nivgu.no\nlardal.no\nlerdal.no\nlærdal.no\nlodingen.no\nlødingen.no\nlorenskog.no\nlørenskog.no\nloten.no\nløten.no\nmalvik.no\nmasoy.no\nmåsøy.no\nmuosat.no\nmuosát.no\nmandal.no\nmarker.no\nmarnardal.no\nmasfjorden.no\nmeland.no\nmeldal.no\nmelhus.no\nmeloy.no\nmeløy.no\nmeraker.no\nmeråker.no\nmoareke.no\nmoåreke.no\nmidsund.no\nmidtre-gauldal.no\nmodalen.no\nmodum.no\nmolde.no\nmoskenes.no\nmoss.no\nmosvik.no\nmalselv.no\nmålselv.no\nmalatvuopmi.no\nmálatvuopmi.no\nnamdalseid.no\naejrie.no\nnamsos.no\nnamsskogan.no\nnaamesjevuemie.no\nnååmesjevuemie.no\nlaakesvuemie.no\nnannestad.no\nnarvik.no\nnarviika.no\nnaustdal.no\nnedre-eiker.no\nnes.akershus.no\nnes.buskerud.no\nnesna.no\nnesodden.no\nnesseby.no\nunjarga.no\nunjárga.no\nnesset.no\nnissedal.no\nnittedal.no\nnord-aurdal.no\nnord-fron.no\nnord-odal.no\nnorddal.no\nnordkapp.no\ndavvenjarga.no\ndavvenjárga.no\nnordre-land.no\nnordreisa.no\nraisa.no\nráisa.no\nnore-og-uvdal.no\nnotodden.no\nnaroy.no\nnærøy.no\nnotteroy.no\nnøtterøy.no\nodda.no\noksnes.no\nøksnes.no\noppdal.no\noppegard.no\noppegård.no\norkdal.no\norland.no\nørland.no\norskog.no\nørskog.no\norsta.no\nørsta.no\nos.hedmark.no\nos.hordaland.no\nosen.no\nosteroy.no\nosterøy.no\nostre-toten.no\nøstre-toten.no\noverhalla.no\novre-eiker.no\nøvre-eiker.no\noyer.no\nøyer.no\noygarden.no\nøygarden.no\noystre-slidre.no\nøystre-slidre.no\nporsanger.no\nporsangu.no\nporsáŋgu.no\nporsgrunn.no\nradoy.no\nradøy.no\nrakkestad.no\nrana.no\nruovat.no\nrandaberg.no\nrauma.no\nrendalen.no\nrennebu.no\nrennesoy.no\nrennesøy.no\nrindal.no\nringebu.no\nringerike.no\nringsaker.no\nrissa.no\nrisor.no\nrisør.no\nroan.no\nrollag.no\nrygge.no\nralingen.no\nrælingen.no\nrodoy.no\nrødøy.no\nromskog.no\nrømskog.no\nroros.no\nrøros.no\nrost.no\nrøst.no\nroyken.no\nrøyken.no\nroyrvik.no\nrøyrvik.no\nrade.no\nråde.no\nsalangen.no\nsiellak.no\nsaltdal.no\nsalat.no\nsálát.no\nsálat.no\nsamnanger.no\nsande.more-og-romsdal.no\nsande.møre-og-romsdal.no\nsande.vestfold.no\nsandefjord.no\nsandnes.no\nsandoy.no\nsandøy.no\nsarpsborg.no\nsauda.no\nsauherad.no\nsel.no\nselbu.no\nselje.no\nseljord.no\nsigdal.no\nsiljan.no\nsirdal.no\nskaun.no\nskedsmo.no\nski.no\nskien.no\nskiptvet.no\nskjervoy.no\nskjervøy.no\nskierva.no\nskiervá.no\nskjak.no\nskjåk.no\nskodje.no\nskanland.no\nskånland.no\nskanit.no\nskánit.no\nsmola.no\nsmøla.no\nsnillfjord.no\nsnasa.no\nsnåsa.no\nsnoasa.no\nsnaase.no\nsnåase.no\nsogndal.no\nsokndal.no\nsola.no\nsolund.no\nsongdalen.no\nsortland.no\nspydeberg.no\nstange.no\nstavanger.no\nsteigen.no\nsteinkjer.no\nstjordal.no\nstjørdal.no\nstokke.no\nstor-elvdal.no\nstord.no\nstordal.no\nstorfjord.no\nomasvuotna.no\nstrand.no\nstranda.no\nstryn.no\nsula.no\nsuldal.no\nsund.no\nsunndal.no\nsurnadal.no\nsveio.no\nsvelvik.no\nsykkylven.no\nsogne.no\nsøgne.no\nsomna.no\nsømna.no\nsondre-land.no\nsøndre-land.no\nsor-aurdal.no\nsør-aurdal.no\nsor-fron.no\nsør-fron.no\nsor-odal.no\nsør-odal.no\nsor-varanger.no\nsør-varanger.no\nmatta-varjjat.no\nmátta-várjjat.no\nsorfold.no\nsørfold.no\nsorreisa.no\nsørreisa.no\nsorum.no\nsørum.no\ntana.no\ndeatnu.no\ntime.no\ntingvoll.no\ntinn.no\ntjeldsund.no\ndielddanuorri.no\ntjome.no\ntjøme.no\ntokke.no\ntolga.no\ntorsken.no\ntranoy.no\ntranøy.no\ntromso.no\ntromsø.no\ntromsa.no\nromsa.no\ntrondheim.no\ntroandin.no\ntrysil.no\ntrana.no\ntræna.no\ntrogstad.no\ntrøgstad.no\ntvedestrand.no\ntydal.no\ntynset.no\ntysfjord.no\ndivtasvuodna.no\ndivttasvuotna.no\ntysnes.no\ntysvar.no\ntysvær.no\ntonsberg.no\ntønsberg.no\nullensaker.no\nullensvang.no\nulvik.no\nutsira.no\nvadso.no\nvadsø.no\ncahcesuolo.no\nčáhcesuolo.no\nvaksdal.no\nvalle.no\nvang.no\nvanylven.no\nvardo.no\nvardø.no\nvarggat.no\nvárggát.no\nvefsn.no\nvaapste.no\nvega.no\nvegarshei.no\nvegårshei.no\nvennesla.no\nverdal.no\nverran.no\nvestby.no\nvestnes.no\nvestre-slidre.no\nvestre-toten.no\nvestvagoy.no\nvestvågøy.no\nvevelstad.no\nvik.no\nvikna.no\nvindafjord.no\nvolda.no\nvoss.no\nvaroy.no\nværøy.no\nvagan.no\nvågan.no\nvoagat.no\nvagsoy.no\nvågsøy.no\nvaga.no\nvågå.no\nvaler.ostfold.no\nvåler.østfold.no\nvaler.hedmark.no\nvåler.hedmark.no\n\n// np : http://www.mos.com.np/register.html\n*.np\n\n// nr : http://cenpac.net.nr/dns/index.html\n// Submitted by registry \nnr\nbiz.nr\ninfo.nr\ngov.nr\nedu.nr\norg.nr\nnet.nr\ncom.nr\n\n// nu : https://en.wikipedia.org/wiki/.nu\nnu\n\n// nz : https://en.wikipedia.org/wiki/.nz\n// Submitted by registry \nnz\nac.nz\nco.nz\ncri.nz\ngeek.nz\ngen.nz\ngovt.nz\nhealth.nz\niwi.nz\nkiwi.nz\nmaori.nz\nmil.nz\nmāori.nz\nnet.nz\norg.nz\nparliament.nz\nschool.nz\n\n// om : https://en.wikipedia.org/wiki/.om\nom\nco.om\ncom.om\nedu.om\ngov.om\nmed.om\nmuseum.om\nnet.om\norg.om\npro.om\n\n// onion : https://tools.ietf.org/html/rfc7686\nonion\n\n// org : https://en.wikipedia.org/wiki/.org\norg\n\n// pa : http://www.nic.pa/\n// Some additional second level "domains" resolve directly as hostnames, such as\n// pannet.pa, so we add a rule for "pa".\npa\nac.pa\ngob.pa\ncom.pa\norg.pa\nsld.pa\nedu.pa\nnet.pa\ning.pa\nabo.pa\nmed.pa\nnom.pa\n\n// pe : https://www.nic.pe/InformeFinalComision.pdf\npe\nedu.pe\ngob.pe\nnom.pe\nmil.pe\norg.pe\ncom.pe\nnet.pe\n\n// pf : http://www.gobin.info/domainname/formulaire-pf.pdf\npf\ncom.pf\norg.pf\nedu.pf\n\n// pg : https://en.wikipedia.org/wiki/.pg\n*.pg\n\n// ph : http://www.domains.ph/FAQ2.asp\n// Submitted by registry \nph\ncom.ph\nnet.ph\norg.ph\ngov.ph\nedu.ph\nngo.ph\nmil.ph\ni.ph\n\n// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK\npk\ncom.pk\nnet.pk\nedu.pk\norg.pk\nfam.pk\nbiz.pk\nweb.pk\ngov.pk\ngob.pk\ngok.pk\ngon.pk\ngop.pk\ngos.pk\ninfo.pk\n\n// pl http://www.dns.pl/english/index.html\n// Submitted by registry\npl\ncom.pl\nnet.pl\norg.pl\n// pl functional domains (http://www.dns.pl/english/index.html)\naid.pl\nagro.pl\natm.pl\nauto.pl\nbiz.pl\nedu.pl\ngmina.pl\ngsm.pl\ninfo.pl\nmail.pl\nmiasta.pl\nmedia.pl\nmil.pl\nnieruchomosci.pl\nnom.pl\npc.pl\npowiat.pl\npriv.pl\nrealestate.pl\nrel.pl\nsex.pl\nshop.pl\nsklep.pl\nsos.pl\nszkola.pl\ntargi.pl\ntm.pl\ntourism.pl\ntravel.pl\nturystyka.pl\n// Government domains\ngov.pl\nap.gov.pl\ngriw.gov.pl\nic.gov.pl\nis.gov.pl\nkmpsp.gov.pl\nkonsulat.gov.pl\nkppsp.gov.pl\nkwp.gov.pl\nkwpsp.gov.pl\nmup.gov.pl\nmw.gov.pl\noia.gov.pl\noirm.gov.pl\noke.gov.pl\noow.gov.pl\noschr.gov.pl\noum.gov.pl\npa.gov.pl\npinb.gov.pl\npiw.gov.pl\npo.gov.pl\npr.gov.pl\npsp.gov.pl\npsse.gov.pl\npup.gov.pl\nrzgw.gov.pl\nsa.gov.pl\nsdn.gov.pl\nsko.gov.pl\nso.gov.pl\nsr.gov.pl\nstarostwo.gov.pl\nug.gov.pl\nugim.gov.pl\num.gov.pl\numig.gov.pl\nupow.gov.pl\nuppo.gov.pl\nus.gov.pl\nuw.gov.pl\nuzs.gov.pl\nwif.gov.pl\nwiih.gov.pl\nwinb.gov.pl\nwios.gov.pl\nwitd.gov.pl\nwiw.gov.pl\nwkz.gov.pl\nwsa.gov.pl\nwskr.gov.pl\nwsse.gov.pl\nwuoz.gov.pl\nwzmiuw.gov.pl\nzp.gov.pl\nzpisdn.gov.pl\n// pl regional domains (http://www.dns.pl/english/index.html)\naugustow.pl\nbabia-gora.pl\nbedzin.pl\nbeskidy.pl\nbialowieza.pl\nbialystok.pl\nbielawa.pl\nbieszczady.pl\nboleslawiec.pl\nbydgoszcz.pl\nbytom.pl\ncieszyn.pl\nczeladz.pl\nczest.pl\ndlugoleka.pl\nelblag.pl\nelk.pl\nglogow.pl\ngniezno.pl\ngorlice.pl\ngrajewo.pl\nilawa.pl\njaworzno.pl\njelenia-gora.pl\njgora.pl\nkalisz.pl\nkazimierz-dolny.pl\nkarpacz.pl\nkartuzy.pl\nkaszuby.pl\nkatowice.pl\nkepno.pl\nketrzyn.pl\nklodzko.pl\nkobierzyce.pl\nkolobrzeg.pl\nkonin.pl\nkonskowola.pl\nkutno.pl\nlapy.pl\nlebork.pl\nlegnica.pl\nlezajsk.pl\nlimanowa.pl\nlomza.pl\nlowicz.pl\nlubin.pl\nlukow.pl\nmalbork.pl\nmalopolska.pl\nmazowsze.pl\nmazury.pl\nmielec.pl\nmielno.pl\nmragowo.pl\nnaklo.pl\nnowaruda.pl\nnysa.pl\nolawa.pl\nolecko.pl\nolkusz.pl\nolsztyn.pl\nopoczno.pl\nopole.pl\nostroda.pl\nostroleka.pl\nostrowiec.pl\nostrowwlkp.pl\npila.pl\npisz.pl\npodhale.pl\npodlasie.pl\npolkowice.pl\npomorze.pl\npomorskie.pl\nprochowice.pl\npruszkow.pl\nprzeworsk.pl\npulawy.pl\nradom.pl\nrawa-maz.pl\nrybnik.pl\nrzeszow.pl\nsanok.pl\nsejny.pl\nslask.pl\nslupsk.pl\nsosnowiec.pl\nstalowa-wola.pl\nskoczow.pl\nstarachowice.pl\nstargard.pl\nsuwalki.pl\nswidnica.pl\nswiebodzin.pl\nswinoujscie.pl\nszczecin.pl\nszczytno.pl\ntarnobrzeg.pl\ntgory.pl\nturek.pl\ntychy.pl\nustka.pl\nwalbrzych.pl\nwarmia.pl\nwarszawa.pl\nwaw.pl\nwegrow.pl\nwielun.pl\nwlocl.pl\nwloclawek.pl\nwodzislaw.pl\nwolomin.pl\nwroclaw.pl\nzachpomor.pl\nzagan.pl\nzarow.pl\nzgora.pl\nzgorzelec.pl\n\n// pm : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\npm\n\n// pn : http://www.government.pn/PnRegistry/policies.htm\npn\ngov.pn\nco.pn\norg.pn\nedu.pn\nnet.pn\n\n// post : https://en.wikipedia.org/wiki/.post\npost\n\n// pr : http://www.nic.pr/index.asp?f=1\npr\ncom.pr\nnet.pr\norg.pr\ngov.pr\nedu.pr\nisla.pr\npro.pr\nbiz.pr\ninfo.pr\nname.pr\n// these aren\'t mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr\nest.pr\nprof.pr\nac.pr\n\n// pro : http://registry.pro/get-pro\npro\naaa.pro\naca.pro\nacct.pro\navocat.pro\nbar.pro\ncpa.pro\neng.pro\njur.pro\nlaw.pro\nmed.pro\nrecht.pro\n\n// ps : https://en.wikipedia.org/wiki/.ps\n// http://www.nic.ps/registration/policy.html#reg\nps\nedu.ps\ngov.ps\nsec.ps\nplo.ps\ncom.ps\norg.ps\nnet.ps\n\n// pt : https://www.dns.pt/en/domain/pt-terms-and-conditions-registration-rules/\npt\nnet.pt\ngov.pt\norg.pt\nedu.pt\nint.pt\npubl.pt\ncom.pt\nnome.pt\n\n// pw : https://en.wikipedia.org/wiki/.pw\npw\nco.pw\nne.pw\nor.pw\ned.pw\ngo.pw\nbelau.pw\n\n// py : http://www.nic.py/pautas.html#seccion_9\n// Submitted by registry\npy\ncom.py\ncoop.py\nedu.py\ngov.py\nmil.py\nnet.py\norg.py\n\n// qa : http://domains.qa/en/\nqa\ncom.qa\nedu.qa\ngov.qa\nmil.qa\nname.qa\nnet.qa\norg.qa\nsch.qa\n\n// re : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\nre\nasso.re\ncom.re\nnom.re\n\n// ro : http://www.rotld.ro/\nro\narts.ro\ncom.ro\nfirm.ro\ninfo.ro\nnom.ro\nnt.ro\norg.ro\nrec.ro\nstore.ro\ntm.ro\nwww.ro\n\n// rs : https://www.rnids.rs/en/domains/national-domains\nrs\nac.rs\nco.rs\nedu.rs\ngov.rs\nin.rs\norg.rs\n\n// ru : https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf\n// Submitted by George Georgievsky \nru\n\n// rw : https://www.ricta.org.rw/sites/default/files/resources/registry_registrar_contract_0.pdf\nrw\nac.rw\nco.rw\ncoop.rw\ngov.rw\nmil.rw\nnet.rw\norg.rw\n\n// sa : http://www.nic.net.sa/\nsa\ncom.sa\nnet.sa\norg.sa\ngov.sa\nmed.sa\npub.sa\nedu.sa\nsch.sa\n\n// sb : http://www.sbnic.net.sb/\n// Submitted by registry \nsb\ncom.sb\nedu.sb\ngov.sb\nnet.sb\norg.sb\n\n// sc : http://www.nic.sc/\nsc\ncom.sc\ngov.sc\nnet.sc\norg.sc\nedu.sc\n\n// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm\n// Submitted by registry \nsd\ncom.sd\nnet.sd\norg.sd\nedu.sd\nmed.sd\ntv.sd\ngov.sd\ninfo.sd\n\n// se : https://en.wikipedia.org/wiki/.se\n// Submitted by registry \nse\na.se\nac.se\nb.se\nbd.se\nbrand.se\nc.se\nd.se\ne.se\nf.se\nfh.se\nfhsk.se\nfhv.se\ng.se\nh.se\ni.se\nk.se\nkomforb.se\nkommunalforbund.se\nkomvux.se\nl.se\nlanbib.se\nm.se\nn.se\nnaturbruksgymn.se\no.se\norg.se\np.se\nparti.se\npp.se\npress.se\nr.se\ns.se\nt.se\ntm.se\nu.se\nw.se\nx.se\ny.se\nz.se\n\n// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines\nsg\ncom.sg\nnet.sg\norg.sg\ngov.sg\nedu.sg\nper.sg\n\n// sh : http://nic.sh/rules.htm\nsh\ncom.sh\nnet.sh\ngov.sh\norg.sh\nmil.sh\n\n// si : https://en.wikipedia.org/wiki/.si\nsi\n\n// sj : No registrations at this time.\n// Submitted by registry \nsj\n\n// sk : https://en.wikipedia.org/wiki/.sk\n// list of 2nd level domains ?\nsk\n\n// sl : http://www.nic.sl\n// Submitted by registry \nsl\ncom.sl\nnet.sl\nedu.sl\ngov.sl\norg.sl\n\n// sm : https://en.wikipedia.org/wiki/.sm\nsm\n\n// sn : https://en.wikipedia.org/wiki/.sn\nsn\nart.sn\ncom.sn\nedu.sn\ngouv.sn\norg.sn\nperso.sn\nuniv.sn\n\n// so : http://sonic.so/policies/\nso\ncom.so\nedu.so\ngov.so\nme.so\nnet.so\norg.so\n\n// sr : https://en.wikipedia.org/wiki/.sr\nsr\n\n// ss : https://registry.nic.ss/\n// Submitted by registry \nss\nbiz.ss\ncom.ss\nedu.ss\ngov.ss\nme.ss\nnet.ss\norg.ss\nsch.ss\n\n// st : http://www.nic.st/html/policyrules/\nst\nco.st\ncom.st\nconsulado.st\nedu.st\nembaixada.st\nmil.st\nnet.st\norg.st\nprincipe.st\nsaotome.st\nstore.st\n\n// su : https://en.wikipedia.org/wiki/.su\nsu\n\n// sv : http://www.svnet.org.sv/niveldos.pdf\nsv\ncom.sv\nedu.sv\ngob.sv\norg.sv\nred.sv\n\n// sx : https://en.wikipedia.org/wiki/.sx\n// Submitted by registry \nsx\ngov.sx\n\n// sy : https://en.wikipedia.org/wiki/.sy\n// see also: http://www.gobin.info/domainname/sy.doc\nsy\nedu.sy\ngov.sy\nnet.sy\nmil.sy\ncom.sy\norg.sy\n\n// sz : https://en.wikipedia.org/wiki/.sz\n// http://www.sispa.org.sz/\nsz\nco.sz\nac.sz\norg.sz\n\n// tc : https://en.wikipedia.org/wiki/.tc\ntc\n\n// td : https://en.wikipedia.org/wiki/.td\ntd\n\n// tel: https://en.wikipedia.org/wiki/.tel\n// http://www.telnic.org/\ntel\n\n// tf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\ntf\n\n// tg : https://en.wikipedia.org/wiki/.tg\n// http://www.nic.tg/\ntg\n\n// th : https://en.wikipedia.org/wiki/.th\n// Submitted by registry \nth\nac.th\nco.th\ngo.th\nin.th\nmi.th\nnet.th\nor.th\n\n// tj : http://www.nic.tj/policy.html\ntj\nac.tj\nbiz.tj\nco.tj\ncom.tj\nedu.tj\ngo.tj\ngov.tj\nint.tj\nmil.tj\nname.tj\nnet.tj\nnic.tj\norg.tj\ntest.tj\nweb.tj\n\n// tk : https://en.wikipedia.org/wiki/.tk\ntk\n\n// tl : https://en.wikipedia.org/wiki/.tl\ntl\ngov.tl\n\n// tm : http://www.nic.tm/local.html\ntm\ncom.tm\nco.tm\norg.tm\nnet.tm\nnom.tm\ngov.tm\nmil.tm\nedu.tm\n\n// tn : http://www.registre.tn/fr/\n// https://whois.ati.tn/\ntn\ncom.tn\nens.tn\nfin.tn\ngov.tn\nind.tn\ninfo.tn\nintl.tn\nmincom.tn\nnat.tn\nnet.tn\norg.tn\nperso.tn\ntourism.tn\n\n// to : https://en.wikipedia.org/wiki/.to\n// Submitted by registry \nto\ncom.to\ngov.to\nnet.to\norg.to\nedu.to\nmil.to\n\n// tr : https://nic.tr/\n// https://nic.tr/forms/eng/policies.pdf\n// https://nic.tr/index.php?USRACTN=PRICELST\ntr\nav.tr\nbbs.tr\nbel.tr\nbiz.tr\ncom.tr\ndr.tr\nedu.tr\ngen.tr\ngov.tr\ninfo.tr\nmil.tr\nk12.tr\nkep.tr\nname.tr\nnet.tr\norg.tr\npol.tr\ntel.tr\ntsk.tr\ntv.tr\nweb.tr\n// Used by Northern Cyprus\nnc.tr\n// Used by government agencies of Northern Cyprus\ngov.nc.tr\n\n// tt : http://www.nic.tt/\ntt\nco.tt\ncom.tt\norg.tt\nnet.tt\nbiz.tt\ninfo.tt\npro.tt\nint.tt\ncoop.tt\njobs.tt\nmobi.tt\ntravel.tt\nmuseum.tt\naero.tt\nname.tt\ngov.tt\nedu.tt\n\n// tv : https://en.wikipedia.org/wiki/.tv\n// Not listing any 2LDs as reserved since none seem to exist in practice,\n// Wikipedia notwithstanding.\ntv\n\n// tw : https://en.wikipedia.org/wiki/.tw\ntw\nedu.tw\ngov.tw\nmil.tw\ncom.tw\nnet.tw\norg.tw\nidv.tw\ngame.tw\nebiz.tw\nclub.tw\n網路.tw\n組織.tw\n商業.tw\n\n// tz : http://www.tznic.or.tz/index.php/domains\n// Submitted by registry \ntz\nac.tz\nco.tz\ngo.tz\nhotel.tz\ninfo.tz\nme.tz\nmil.tz\nmobi.tz\nne.tz\nor.tz\nsc.tz\ntv.tz\n\n// ua : https://hostmaster.ua/policy/?ua\n// Submitted by registry \nua\n// ua 2LD\ncom.ua\nedu.ua\ngov.ua\nin.ua\nnet.ua\norg.ua\n// ua geographic names\n// https://hostmaster.ua/2ld/\ncherkassy.ua\ncherkasy.ua\nchernigov.ua\nchernihiv.ua\nchernivtsi.ua\nchernovtsy.ua\nck.ua\ncn.ua\ncr.ua\ncrimea.ua\ncv.ua\ndn.ua\ndnepropetrovsk.ua\ndnipropetrovsk.ua\ndonetsk.ua\ndp.ua\nif.ua\nivano-frankivsk.ua\nkh.ua\nkharkiv.ua\nkharkov.ua\nkherson.ua\nkhmelnitskiy.ua\nkhmelnytskyi.ua\nkiev.ua\nkirovograd.ua\nkm.ua\nkr.ua\nkropyvnytskyi.ua\nkrym.ua\nks.ua\nkv.ua\nkyiv.ua\nlg.ua\nlt.ua\nlugansk.ua\nluhansk.ua\nlutsk.ua\nlv.ua\nlviv.ua\nmk.ua\nmykolaiv.ua\nnikolaev.ua\nod.ua\nodesa.ua\nodessa.ua\npl.ua\npoltava.ua\nrivne.ua\nrovno.ua\nrv.ua\nsb.ua\nsebastopol.ua\nsevastopol.ua\nsm.ua\nsumy.ua\nte.ua\nternopil.ua\nuz.ua\nuzhgorod.ua\nuzhhorod.ua\nvinnica.ua\nvinnytsia.ua\nvn.ua\nvolyn.ua\nyalta.ua\nzakarpattia.ua\nzaporizhzhe.ua\nzaporizhzhia.ua\nzhitomir.ua\nzhytomyr.ua\nzp.ua\nzt.ua\n\n// ug : https://www.registry.co.ug/\nug\nco.ug\nor.ug\nac.ug\nsc.ug\ngo.ug\nne.ug\ncom.ug\norg.ug\n\n// uk : https://en.wikipedia.org/wiki/.uk\n// Submitted by registry \nuk\nac.uk\nco.uk\ngov.uk\nltd.uk\nme.uk\nnet.uk\nnhs.uk\norg.uk\nplc.uk\npolice.uk\n*.sch.uk\n\n// us : https://en.wikipedia.org/wiki/.us\nus\ndni.us\nfed.us\nisa.us\nkids.us\nnsn.us\n// us geographic names\nak.us\nal.us\nar.us\nas.us\naz.us\nca.us\nco.us\nct.us\ndc.us\nde.us\nfl.us\nga.us\ngu.us\nhi.us\nia.us\nid.us\nil.us\nin.us\nks.us\nky.us\nla.us\nma.us\nmd.us\nme.us\nmi.us\nmn.us\nmo.us\nms.us\nmt.us\nnc.us\nnd.us\nne.us\nnh.us\nnj.us\nnm.us\nnv.us\nny.us\noh.us\nok.us\nor.us\npa.us\npr.us\nri.us\nsc.us\nsd.us\ntn.us\ntx.us\nut.us\nvi.us\nvt.us\nva.us\nwa.us\nwi.us\nwv.us\nwy.us\n// The registrar notes several more specific domains available in each state,\n// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat\n// haphazard; in some states these domains resolve as addresses, while in others\n// only subdomains are available, or even nothing at all. We include the\n// most common ones where it\'s clear that different sites are different\n// entities.\nk12.ak.us\nk12.al.us\nk12.ar.us\nk12.as.us\nk12.az.us\nk12.ca.us\nk12.co.us\nk12.ct.us\nk12.dc.us\nk12.fl.us\nk12.ga.us\nk12.gu.us\n// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login\nk12.ia.us\nk12.id.us\nk12.il.us\nk12.in.us\nk12.ks.us\nk12.ky.us\nk12.la.us\nk12.ma.us\nk12.md.us\nk12.me.us\nk12.mi.us\nk12.mn.us\nk12.mo.us\nk12.ms.us\nk12.mt.us\nk12.nc.us\n// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso \nk12.ne.us\nk12.nh.us\nk12.nj.us\nk12.nm.us\nk12.nv.us\nk12.ny.us\nk12.oh.us\nk12.ok.us\nk12.or.us\nk12.pa.us\nk12.pr.us\n// k12.ri.us Removed at request of Kim Cournoyer \nk12.sc.us\n// k12.sd.us Bug 934131 - Removed at request of James Booze \nk12.tn.us\nk12.tx.us\nk12.ut.us\nk12.vi.us\nk12.vt.us\nk12.va.us\nk12.wa.us\nk12.wi.us\n// k12.wv.us Bug 947705 - Removed at request of Verne Britton \nk12.wy.us\ncc.ak.us\ncc.al.us\ncc.ar.us\ncc.as.us\ncc.az.us\ncc.ca.us\ncc.co.us\ncc.ct.us\ncc.dc.us\ncc.de.us\ncc.fl.us\ncc.ga.us\ncc.gu.us\ncc.hi.us\ncc.ia.us\ncc.id.us\ncc.il.us\ncc.in.us\ncc.ks.us\ncc.ky.us\ncc.la.us\ncc.ma.us\ncc.md.us\ncc.me.us\ncc.mi.us\ncc.mn.us\ncc.mo.us\ncc.ms.us\ncc.mt.us\ncc.nc.us\ncc.nd.us\ncc.ne.us\ncc.nh.us\ncc.nj.us\ncc.nm.us\ncc.nv.us\ncc.ny.us\ncc.oh.us\ncc.ok.us\ncc.or.us\ncc.pa.us\ncc.pr.us\ncc.ri.us\ncc.sc.us\ncc.sd.us\ncc.tn.us\ncc.tx.us\ncc.ut.us\ncc.vi.us\ncc.vt.us\ncc.va.us\ncc.wa.us\ncc.wi.us\ncc.wv.us\ncc.wy.us\nlib.ak.us\nlib.al.us\nlib.ar.us\nlib.as.us\nlib.az.us\nlib.ca.us\nlib.co.us\nlib.ct.us\nlib.dc.us\n// lib.de.us Issue #243 - Moved to Private section at request of Ed Moore \nlib.fl.us\nlib.ga.us\nlib.gu.us\nlib.hi.us\nlib.ia.us\nlib.id.us\nlib.il.us\nlib.in.us\nlib.ks.us\nlib.ky.us\nlib.la.us\nlib.ma.us\nlib.md.us\nlib.me.us\nlib.mi.us\nlib.mn.us\nlib.mo.us\nlib.ms.us\nlib.mt.us\nlib.nc.us\nlib.nd.us\nlib.ne.us\nlib.nh.us\nlib.nj.us\nlib.nm.us\nlib.nv.us\nlib.ny.us\nlib.oh.us\nlib.ok.us\nlib.or.us\nlib.pa.us\nlib.pr.us\nlib.ri.us\nlib.sc.us\nlib.sd.us\nlib.tn.us\nlib.tx.us\nlib.ut.us\nlib.vi.us\nlib.vt.us\nlib.va.us\nlib.wa.us\nlib.wi.us\n// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold \nlib.wy.us\n// k12.ma.us contains school districts in Massachusetts. The 4LDs are\n// managed independently except for private (PVT), charter (CHTR) and\n// parochial (PAROCH) schools. Those are delegated directly to the\n// 5LD operators. \npvt.k12.ma.us\nchtr.k12.ma.us\nparoch.k12.ma.us\n// Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following\n// see also: http://domreg.merit.edu\n// see also: whois -h whois.domreg.merit.edu help\nann-arbor.mi.us\ncog.mi.us\ndst.mi.us\neaton.mi.us\ngen.mi.us\nmus.mi.us\ntec.mi.us\nwashtenaw.mi.us\n\n// uy : http://www.nic.org.uy/\nuy\ncom.uy\nedu.uy\ngub.uy\nmil.uy\nnet.uy\norg.uy\n\n// uz : http://www.reg.uz/\nuz\nco.uz\ncom.uz\nnet.uz\norg.uz\n\n// va : https://en.wikipedia.org/wiki/.va\nva\n\n// vc : https://en.wikipedia.org/wiki/.vc\n// Submitted by registry \nvc\ncom.vc\nnet.vc\norg.vc\ngov.vc\nmil.vc\nedu.vc\n\n// ve : https://registro.nic.ve/\n// Submitted by registry nic@nic.ve and nicve@conatel.gob.ve\nve\narts.ve\nbib.ve\nco.ve\ncom.ve\ne12.ve\nedu.ve\nfirm.ve\ngob.ve\ngov.ve\ninfo.ve\nint.ve\nmil.ve\nnet.ve\nnom.ve\norg.ve\nrar.ve\nrec.ve\nstore.ve\ntec.ve\nweb.ve\n\n// vg : https://en.wikipedia.org/wiki/.vg\nvg\n\n// vi : http://www.nic.vi/newdomainform.htm\n// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other\n// TLDs are "reserved", such as edu.vi and gov.vi, but doesn\'t actually say they\n// are available for registration (which they do not seem to be).\nvi\nco.vi\ncom.vi\nk12.vi\nnet.vi\norg.vi\n\n// vn : https://www.vnnic.vn/en/domain/cctld-vn\n// https://vnnic.vn/sites/default/files/tailieu/vn.cctld.domains.txt\nvn\nac.vn\nai.vn\nbiz.vn\ncom.vn\nedu.vn\ngov.vn\nhealth.vn\nid.vn\ninfo.vn\nint.vn\nio.vn\nname.vn\nnet.vn\norg.vn\npro.vn\n\n// vn geographical names\nangiang.vn\nbacgiang.vn\nbackan.vn\nbaclieu.vn\nbacninh.vn\nbaria-vungtau.vn\nbentre.vn\nbinhdinh.vn\nbinhduong.vn\nbinhphuoc.vn\nbinhthuan.vn\ncamau.vn\ncantho.vn\ncaobang.vn\ndaklak.vn\ndaknong.vn\ndanang.vn\ndienbien.vn\ndongnai.vn\ndongthap.vn\ngialai.vn\nhagiang.vn\nhaiduong.vn\nhaiphong.vn\nhanam.vn\nhanoi.vn\nhatinh.vn\nhaugiang.vn\nhoabinh.vn\nhungyen.vn\nkhanhhoa.vn\nkiengiang.vn\nkontum.vn\nlaichau.vn\nlamdong.vn\nlangson.vn\nlaocai.vn\nlongan.vn\nnamdinh.vn\nnghean.vn\nninhbinh.vn\nninhthuan.vn\nphutho.vn\nphuyen.vn\nquangbinh.vn\nquangnam.vn\nquangngai.vn\nquangninh.vn\nquangtri.vn\nsoctrang.vn\nsonla.vn\ntayninh.vn\nthaibinh.vn\nthainguyen.vn\nthanhhoa.vn\nthanhphohochiminh.vn\nthuathienhue.vn\ntiengiang.vn\ntravinh.vn\ntuyenquang.vn\nvinhlong.vn\nvinhphuc.vn\nyenbai.vn\n\n// vu : https://en.wikipedia.org/wiki/.vu\n// http://www.vunic.vu/\nvu\ncom.vu\nedu.vu\nnet.vu\norg.vu\n\n// wf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\nwf\n\n// ws : https://en.wikipedia.org/wiki/.ws\n// http://samoanic.ws/index.dhtml\nws\ncom.ws\nnet.ws\norg.ws\ngov.ws\nedu.ws\n\n// yt : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf\nyt\n\n// IDN ccTLDs\n// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then\n// U-label, and follow this format:\n// // A-Label ("", [, variant info]) : \n// // [sponsoring org]\n// U-Label\n\n// xn--mgbaam7a8h ("Emerat", Arabic) : AE\n// http://nic.ae/english/arabicdomain/rules.jsp\nامارات\n\n// xn--y9a3aq ("hye", Armenian) : AM\n// ISOC AM (operated by .am Registry)\nհայ\n\n// xn--54b7fta0cc ("Bangla", Bangla) : BD\nবাংলা\n\n// xn--90ae ("bg", Bulgarian) : BG\nбг\n\n// xn--mgbcpq6gpa1a ("albahrain", Arabic) : BH\nالبحرين\n\n// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY\n// Operated by .by registry\nбел\n\n// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN\n// CNNIC\n// http://cnnic.cn/html/Dir/2005/10/11/3218.htm\n中国\n\n// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN\n// CNNIC\n// http://cnnic.cn/html/Dir/2005/10/11/3218.htm\n中國\n\n// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ\nالجزائر\n\n// xn--wgbh1c ("Egypt/Masr", Arabic) : EG\n// http://www.dotmasr.eg/\nمصر\n\n// xn--e1a4c ("eu", Cyrillic) : EU\n// https://eurid.eu\nею\n\n// xn--qxa6a ("eu", Greek) : EU\n// https://eurid.eu\nευ\n\n// xn--mgbah1a3hjkrd ("Mauritania", Arabic) : MR\nموريتانيا\n\n// xn--node ("ge", Georgian Mkhedruli) : GE\nგე\n\n// xn--qxam ("el", Greek) : GR\n// Hellenic Ministry of Infrastructure, Transport, and Networks\nελ\n\n// xn--j6w193g ("Hong Kong", Chinese) : HK\n// https://www.hkirc.hk\n// Submitted by registry \n// https://www.hkirc.hk/content.jsp?id=30#!/34\n香港\n公司.香港\n教育.香港\n政府.香港\n個人.香港\n網絡.香港\n組織.香港\n\n// xn--2scrj9c ("Bharat", Kannada) : IN\n// India\nಭಾರತ\n\n// xn--3hcrj9c ("Bharat", Oriya) : IN\n// India\nଭାରତ\n\n// xn--45br5cyl ("Bharatam", Assamese) : IN\n// India\nভাৰত\n\n// xn--h2breg3eve ("Bharatam", Sanskrit) : IN\n// India\nभारतम्\n\n// xn--h2brj9c8c ("Bharot", Santali) : IN\n// India\nभारोत\n\n// xn--mgbgu82a ("Bharat", Sindhi) : IN\n// India\nڀارت\n\n// xn--rvc1e0am3e ("Bharatam", Malayalam) : IN\n// India\nഭാരതം\n\n// xn--h2brj9c ("Bharat", Devanagari) : IN\n// India\nभारत\n\n// xn--mgbbh1a ("Bharat", Kashmiri) : IN\n// India\nبارت\n\n// xn--mgbbh1a71e ("Bharat", Arabic) : IN\n// India\nبھارت\n\n// xn--fpcrj9c3d ("Bharat", Telugu) : IN\n// India\nభారత్\n\n// xn--gecrj9c ("Bharat", Gujarati) : IN\n// India\nભારત\n\n// xn--s9brj9c ("Bharat", Gurmukhi) : IN\n// India\nਭਾਰਤ\n\n// xn--45brj9c ("Bharat", Bengali) : IN\n// India\nভারত\n\n// xn--xkc2dl3a5ee0h ("India", Tamil) : IN\n// India\nஇந்தியா\n\n// xn--mgba3a4f16a ("Iran", Persian) : IR\nایران\n\n// xn--mgba3a4fra ("Iran", Arabic) : IR\nايران\n\n// xn--mgbtx2b ("Iraq", Arabic) : IQ\n// Communications and Media Commission\nعراق\n\n// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO\n// National Information Technology Center (NITC)\n// Royal Scientific Society, Al-Jubeiha\nالاردن\n\n// xn--3e0b707e ("Republic of Korea", Hangul) : KR\n한국\n\n// xn--80ao21a ("Kaz", Kazakh) : KZ\nқаз\n\n// xn--q7ce6a ("Lao", Lao) : LA\nລາວ\n\n// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK\n// https://nic.lk\nලංකා\n\n// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK\n// https://nic.lk\nஇலங்கை\n\n// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA\nالمغرب\n\n// xn--d1alf ("mkd", Macedonian) : MK\n// MARnet\nмкд\n\n// xn--l1acc ("mon", Mongolian) : MN\nмон\n\n// xn--mix891f ("Macao", Chinese, Traditional) : MO\n// MONIC / HNET Asia (Registry Operator for .mo)\n澳門\n\n// xn--mix082f ("Macao", Chinese, Simplified) : MO\n澳门\n\n// xn--mgbx4cd0ab ("Malaysia", Malay) : MY\nمليسيا\n\n// xn--mgb9awbf ("Oman", Arabic) : OM\nعمان\n\n// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK\nپاکستان\n\n// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK\nپاكستان\n\n// xn--ygbi2ammx ("Falasteen", Arabic) : PS\n// The Palestinian National Internet Naming Authority (PNINA)\n// http://www.pnina.ps\nفلسطين\n\n// xn--90a3ac ("srb", Cyrillic) : RS\n// https://www.rnids.rs/en/domains/national-domains\nсрб\nпр.срб\nорг.срб\nобр.срб\nод.срб\nупр.срб\nак.срб\n\n// xn--p1ai ("rf", Russian-Cyrillic) : RU\n// https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf\n// Submitted by George Georgievsky \nрф\n\n// xn--wgbl6a ("Qatar", Arabic) : QA\n// http://www.ict.gov.qa/\nقطر\n\n// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA\n// http://www.nic.net.sa/\nالسعودية\n\n// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA\nالسعودیة\n\n// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA\nالسعودیۃ\n\n// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA\nالسعوديه\n\n// xn--mgbpl2fh ("sudan", Arabic) : SD\n// Operated by .sd registry\nسودان\n\n// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG\n新加坡\n\n// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG\nசிங்கப்பூர்\n\n// xn--ogbpf8fl ("Syria", Arabic) : SY\nسورية\n\n// xn--mgbtf8fl ("Syria", Arabic, variant) : SY\nسوريا\n\n// xn--o3cw4h ("Thai", Thai) : TH\n// http://www.thnic.co.th\nไทย\nศึกษา.ไทย\nธุรกิจ.ไทย\nรัฐบาล.ไทย\nทหาร.ไทย\nเน็ต.ไทย\nองค์กร.ไทย\n\n// xn--pgbs0dh ("Tunisia", Arabic) : TN\n// http://nic.tn\nتونس\n\n// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW\n// http://www.twnic.net/english/dn/dn_07a.htm\n台灣\n\n// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW\n// http://www.twnic.net/english/dn/dn_07a.htm\n台湾\n\n// xn--nnx388a ("Taiwan", Chinese, variant) : TW\n臺灣\n\n// xn--j1amh ("ukr", Cyrillic) : UA\nукр\n\n// xn--mgb2ddes ("AlYemen", Arabic) : YE\nاليمن\n\n// xxx : http://icmregistry.com\nxxx\n\n// ye : http://www.y.net.ye/services/domain_name.htm\nye\ncom.ye\nedu.ye\ngov.ye\nnet.ye\nmil.ye\norg.ye\n\n// za : https://www.zadna.org.za/content/page/domain-information/\nac.za\nagric.za\nalt.za\nco.za\nedu.za\ngov.za\ngrondar.za\nlaw.za\nmil.za\nnet.za\nngo.za\nnic.za\nnis.za\nnom.za\norg.za\nschool.za\ntm.za\nweb.za\n\n// zm : https://zicta.zm/\n// Submitted by registry \nzm\nac.zm\nbiz.zm\nco.zm\ncom.zm\nedu.zm\ngov.zm\ninfo.zm\nmil.zm\nnet.zm\norg.zm\nsch.zm\n\n// zw : https://www.potraz.gov.zw/\n// Confirmed by registry 2017-01-25\nzw\nac.zw\nco.zw\ngov.zw\nmil.zw\norg.zw\n\n\n// newGTLDs\n\n// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2023-10-20T15:11:50Z\n// This list is auto-generated, don\'t edit it manually.\n// aaa : American Automobile Association, Inc.\n// https://www.iana.org/domains/root/db/aaa.html\naaa\n\n// aarp : AARP\n// https://www.iana.org/domains/root/db/aarp.html\naarp\n\n// abb : ABB Ltd\n// https://www.iana.org/domains/root/db/abb.html\nabb\n\n// abbott : Abbott Laboratories, Inc.\n// https://www.iana.org/domains/root/db/abbott.html\nabbott\n\n// abbvie : AbbVie Inc.\n// https://www.iana.org/domains/root/db/abbvie.html\nabbvie\n\n// abc : Disney Enterprises, Inc.\n// https://www.iana.org/domains/root/db/abc.html\nabc\n\n// able : Able Inc.\n// https://www.iana.org/domains/root/db/able.html\nable\n\n// abogado : Registry Services, LLC\n// https://www.iana.org/domains/root/db/abogado.html\nabogado\n\n// abudhabi : Abu Dhabi Systems and Information Centre\n// https://www.iana.org/domains/root/db/abudhabi.html\nabudhabi\n\n// academy : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/academy.html\nacademy\n\n// accenture : Accenture plc\n// https://www.iana.org/domains/root/db/accenture.html\naccenture\n\n// accountant : dot Accountant Limited\n// https://www.iana.org/domains/root/db/accountant.html\naccountant\n\n// accountants : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/accountants.html\naccountants\n\n// aco : ACO Severin Ahlmann GmbH & Co. KG\n// https://www.iana.org/domains/root/db/aco.html\naco\n\n// actor : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/actor.html\nactor\n\n// ads : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/ads.html\nads\n\n// adult : ICM Registry AD LLC\n// https://www.iana.org/domains/root/db/adult.html\nadult\n\n// aeg : Aktiebolaget Electrolux\n// https://www.iana.org/domains/root/db/aeg.html\naeg\n\n// aetna : Aetna Life Insurance Company\n// https://www.iana.org/domains/root/db/aetna.html\naetna\n\n// afl : Australian Football League\n// https://www.iana.org/domains/root/db/afl.html\nafl\n\n// africa : ZA Central Registry NPC trading as Registry.Africa\n// https://www.iana.org/domains/root/db/africa.html\nafrica\n\n// agakhan : Fondation Aga Khan (Aga Khan Foundation)\n// https://www.iana.org/domains/root/db/agakhan.html\nagakhan\n\n// agency : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/agency.html\nagency\n\n// aig : American International Group, Inc.\n// https://www.iana.org/domains/root/db/aig.html\naig\n\n// airbus : Airbus S.A.S.\n// https://www.iana.org/domains/root/db/airbus.html\nairbus\n\n// airforce : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/airforce.html\nairforce\n\n// airtel : Bharti Airtel Limited\n// https://www.iana.org/domains/root/db/airtel.html\nairtel\n\n// akdn : Fondation Aga Khan (Aga Khan Foundation)\n// https://www.iana.org/domains/root/db/akdn.html\nakdn\n\n// alibaba : Alibaba Group Holding Limited\n// https://www.iana.org/domains/root/db/alibaba.html\nalibaba\n\n// alipay : Alibaba Group Holding Limited\n// https://www.iana.org/domains/root/db/alipay.html\nalipay\n\n// allfinanz : Allfinanz Deutsche Vermögensberatung Aktiengesellschaft\n// https://www.iana.org/domains/root/db/allfinanz.html\nallfinanz\n\n// allstate : Allstate Fire and Casualty Insurance Company\n// https://www.iana.org/domains/root/db/allstate.html\nallstate\n\n// ally : Ally Financial Inc.\n// https://www.iana.org/domains/root/db/ally.html\nally\n\n// alsace : Region Grand Est\n// https://www.iana.org/domains/root/db/alsace.html\nalsace\n\n// alstom : ALSTOM\n// https://www.iana.org/domains/root/db/alstom.html\nalstom\n\n// amazon : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/amazon.html\namazon\n\n// americanexpress : American Express Travel Related Services Company, Inc.\n// https://www.iana.org/domains/root/db/americanexpress.html\namericanexpress\n\n// americanfamily : AmFam, Inc.\n// https://www.iana.org/domains/root/db/americanfamily.html\namericanfamily\n\n// amex : American Express Travel Related Services Company, Inc.\n// https://www.iana.org/domains/root/db/amex.html\namex\n\n// amfam : AmFam, Inc.\n// https://www.iana.org/domains/root/db/amfam.html\namfam\n\n// amica : Amica Mutual Insurance Company\n// https://www.iana.org/domains/root/db/amica.html\namica\n\n// amsterdam : Gemeente Amsterdam\n// https://www.iana.org/domains/root/db/amsterdam.html\namsterdam\n\n// analytics : Campus IP LLC\n// https://www.iana.org/domains/root/db/analytics.html\nanalytics\n\n// android : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/android.html\nandroid\n\n// anquan : Beijing Qihu Keji Co., Ltd.\n// https://www.iana.org/domains/root/db/anquan.html\nanquan\n\n// anz : Australia and New Zealand Banking Group Limited\n// https://www.iana.org/domains/root/db/anz.html\nanz\n\n// aol : Oath Inc.\n// https://www.iana.org/domains/root/db/aol.html\naol\n\n// apartments : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/apartments.html\napartments\n\n// app : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/app.html\napp\n\n// apple : Apple Inc.\n// https://www.iana.org/domains/root/db/apple.html\napple\n\n// aquarelle : Aquarelle.com\n// https://www.iana.org/domains/root/db/aquarelle.html\naquarelle\n\n// arab : League of Arab States\n// https://www.iana.org/domains/root/db/arab.html\narab\n\n// aramco : Aramco Services Company\n// https://www.iana.org/domains/root/db/aramco.html\naramco\n\n// archi : Identity Digital Limited\n// https://www.iana.org/domains/root/db/archi.html\narchi\n\n// army : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/army.html\narmy\n\n// art : UK Creative Ideas Limited\n// https://www.iana.org/domains/root/db/art.html\nart\n\n// arte : Association Relative à la Télévision Européenne G.E.I.E.\n// https://www.iana.org/domains/root/db/arte.html\narte\n\n// asda : Wal-Mart Stores, Inc.\n// https://www.iana.org/domains/root/db/asda.html\nasda\n\n// associates : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/associates.html\nassociates\n\n// athleta : The Gap, Inc.\n// https://www.iana.org/domains/root/db/athleta.html\nathleta\n\n// attorney : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/attorney.html\nattorney\n\n// auction : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/auction.html\nauction\n\n// audi : AUDI Aktiengesellschaft\n// https://www.iana.org/domains/root/db/audi.html\naudi\n\n// audible : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/audible.html\naudible\n\n// audio : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/audio.html\naudio\n\n// auspost : Australian Postal Corporation\n// https://www.iana.org/domains/root/db/auspost.html\nauspost\n\n// author : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/author.html\nauthor\n\n// auto : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/auto.html\nauto\n\n// autos : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/autos.html\nautos\n\n// avianca : Avianca Inc.\n// https://www.iana.org/domains/root/db/avianca.html\navianca\n\n// aws : AWS Registry LLC\n// https://www.iana.org/domains/root/db/aws.html\naws\n\n// axa : AXA Group Operations SAS\n// https://www.iana.org/domains/root/db/axa.html\naxa\n\n// azure : Microsoft Corporation\n// https://www.iana.org/domains/root/db/azure.html\nazure\n\n// baby : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/baby.html\nbaby\n\n// baidu : Baidu, Inc.\n// https://www.iana.org/domains/root/db/baidu.html\nbaidu\n\n// banamex : Citigroup Inc.\n// https://www.iana.org/domains/root/db/banamex.html\nbanamex\n\n// bananarepublic : The Gap, Inc.\n// https://www.iana.org/domains/root/db/bananarepublic.html\nbananarepublic\n\n// band : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/band.html\nband\n\n// bank : fTLD Registry Services LLC\n// https://www.iana.org/domains/root/db/bank.html\nbank\n\n// bar : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable\n// https://www.iana.org/domains/root/db/bar.html\nbar\n\n// barcelona : Municipi de Barcelona\n// https://www.iana.org/domains/root/db/barcelona.html\nbarcelona\n\n// barclaycard : Barclays Bank PLC\n// https://www.iana.org/domains/root/db/barclaycard.html\nbarclaycard\n\n// barclays : Barclays Bank PLC\n// https://www.iana.org/domains/root/db/barclays.html\nbarclays\n\n// barefoot : Gallo Vineyards, Inc.\n// https://www.iana.org/domains/root/db/barefoot.html\nbarefoot\n\n// bargains : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/bargains.html\nbargains\n\n// baseball : MLB Advanced Media DH, LLC\n// https://www.iana.org/domains/root/db/baseball.html\nbaseball\n\n// basketball : Fédération Internationale de Basketball (FIBA)\n// https://www.iana.org/domains/root/db/basketball.html\nbasketball\n\n// bauhaus : Werkhaus GmbH\n// https://www.iana.org/domains/root/db/bauhaus.html\nbauhaus\n\n// bayern : Bayern Connect GmbH\n// https://www.iana.org/domains/root/db/bayern.html\nbayern\n\n// bbc : British Broadcasting Corporation\n// https://www.iana.org/domains/root/db/bbc.html\nbbc\n\n// bbt : BB&T Corporation\n// https://www.iana.org/domains/root/db/bbt.html\nbbt\n\n// bbva : BANCO BILBAO VIZCAYA ARGENTARIA, S.A.\n// https://www.iana.org/domains/root/db/bbva.html\nbbva\n\n// bcg : The Boston Consulting Group, Inc.\n// https://www.iana.org/domains/root/db/bcg.html\nbcg\n\n// bcn : Municipi de Barcelona\n// https://www.iana.org/domains/root/db/bcn.html\nbcn\n\n// beats : Beats Electronics, LLC\n// https://www.iana.org/domains/root/db/beats.html\nbeats\n\n// beauty : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/beauty.html\nbeauty\n\n// beer : Registry Services, LLC\n// https://www.iana.org/domains/root/db/beer.html\nbeer\n\n// bentley : Bentley Motors Limited\n// https://www.iana.org/domains/root/db/bentley.html\nbentley\n\n// berlin : dotBERLIN GmbH & Co. KG\n// https://www.iana.org/domains/root/db/berlin.html\nberlin\n\n// best : BestTLD Pty Ltd\n// https://www.iana.org/domains/root/db/best.html\nbest\n\n// bestbuy : BBY Solutions, Inc.\n// https://www.iana.org/domains/root/db/bestbuy.html\nbestbuy\n\n// bet : Identity Digital Limited\n// https://www.iana.org/domains/root/db/bet.html\nbet\n\n// bharti : Bharti Enterprises (Holding) Private Limited\n// https://www.iana.org/domains/root/db/bharti.html\nbharti\n\n// bible : American Bible Society\n// https://www.iana.org/domains/root/db/bible.html\nbible\n\n// bid : dot Bid Limited\n// https://www.iana.org/domains/root/db/bid.html\nbid\n\n// bike : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/bike.html\nbike\n\n// bing : Microsoft Corporation\n// https://www.iana.org/domains/root/db/bing.html\nbing\n\n// bingo : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/bingo.html\nbingo\n\n// bio : Identity Digital Limited\n// https://www.iana.org/domains/root/db/bio.html\nbio\n\n// black : Identity Digital Limited\n// https://www.iana.org/domains/root/db/black.html\nblack\n\n// blackfriday : Registry Services, LLC\n// https://www.iana.org/domains/root/db/blackfriday.html\nblackfriday\n\n// blockbuster : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/blockbuster.html\nblockbuster\n\n// blog : Knock Knock WHOIS There, LLC\n// https://www.iana.org/domains/root/db/blog.html\nblog\n\n// bloomberg : Bloomberg IP Holdings LLC\n// https://www.iana.org/domains/root/db/bloomberg.html\nbloomberg\n\n// blue : Identity Digital Limited\n// https://www.iana.org/domains/root/db/blue.html\nblue\n\n// bms : Bristol-Myers Squibb Company\n// https://www.iana.org/domains/root/db/bms.html\nbms\n\n// bmw : Bayerische Motoren Werke Aktiengesellschaft\n// https://www.iana.org/domains/root/db/bmw.html\nbmw\n\n// bnpparibas : BNP Paribas\n// https://www.iana.org/domains/root/db/bnpparibas.html\nbnpparibas\n\n// boats : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/boats.html\nboats\n\n// boehringer : Boehringer Ingelheim International GmbH\n// https://www.iana.org/domains/root/db/boehringer.html\nboehringer\n\n// bofa : Bank of America Corporation\n// https://www.iana.org/domains/root/db/bofa.html\nbofa\n\n// bom : Núcleo de Informação e Coordenação do Ponto BR - NIC.br\n// https://www.iana.org/domains/root/db/bom.html\nbom\n\n// bond : ShortDot SA\n// https://www.iana.org/domains/root/db/bond.html\nbond\n\n// boo : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/boo.html\nboo\n\n// book : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/book.html\nbook\n\n// booking : Booking.com B.V.\n// https://www.iana.org/domains/root/db/booking.html\nbooking\n\n// bosch : Robert Bosch GMBH\n// https://www.iana.org/domains/root/db/bosch.html\nbosch\n\n// bostik : Bostik SA\n// https://www.iana.org/domains/root/db/bostik.html\nbostik\n\n// boston : Registry Services, LLC\n// https://www.iana.org/domains/root/db/boston.html\nboston\n\n// bot : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/bot.html\nbot\n\n// boutique : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/boutique.html\nboutique\n\n// box : Intercap Registry Inc.\n// https://www.iana.org/domains/root/db/box.html\nbox\n\n// bradesco : Banco Bradesco S.A.\n// https://www.iana.org/domains/root/db/bradesco.html\nbradesco\n\n// bridgestone : Bridgestone Corporation\n// https://www.iana.org/domains/root/db/bridgestone.html\nbridgestone\n\n// broadway : Celebrate Broadway, Inc.\n// https://www.iana.org/domains/root/db/broadway.html\nbroadway\n\n// broker : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/broker.html\nbroker\n\n// brother : Brother Industries, Ltd.\n// https://www.iana.org/domains/root/db/brother.html\nbrother\n\n// brussels : DNS.be vzw\n// https://www.iana.org/domains/root/db/brussels.html\nbrussels\n\n// build : Plan Bee LLC\n// https://www.iana.org/domains/root/db/build.html\nbuild\n\n// builders : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/builders.html\nbuilders\n\n// business : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/business.html\nbusiness\n\n// buy : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/buy.html\nbuy\n\n// buzz : DOTSTRATEGY CO.\n// https://www.iana.org/domains/root/db/buzz.html\nbuzz\n\n// bzh : Association www.bzh\n// https://www.iana.org/domains/root/db/bzh.html\nbzh\n\n// cab : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cab.html\ncab\n\n// cafe : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cafe.html\ncafe\n\n// cal : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/cal.html\ncal\n\n// call : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/call.html\ncall\n\n// calvinklein : PVH gTLD Holdings LLC\n// https://www.iana.org/domains/root/db/calvinklein.html\ncalvinklein\n\n// cam : Cam Connecting SARL\n// https://www.iana.org/domains/root/db/cam.html\ncam\n\n// camera : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/camera.html\ncamera\n\n// camp : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/camp.html\ncamp\n\n// canon : Canon Inc.\n// https://www.iana.org/domains/root/db/canon.html\ncanon\n\n// capetown : ZA Central Registry NPC trading as ZA Central Registry\n// https://www.iana.org/domains/root/db/capetown.html\ncapetown\n\n// capital : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/capital.html\ncapital\n\n// capitalone : Capital One Financial Corporation\n// https://www.iana.org/domains/root/db/capitalone.html\ncapitalone\n\n// car : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/car.html\ncar\n\n// caravan : Caravan International, Inc.\n// https://www.iana.org/domains/root/db/caravan.html\ncaravan\n\n// cards : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cards.html\ncards\n\n// care : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/care.html\ncare\n\n// career : dotCareer LLC\n// https://www.iana.org/domains/root/db/career.html\ncareer\n\n// careers : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/careers.html\ncareers\n\n// cars : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/cars.html\ncars\n\n// casa : Registry Services, LLC\n// https://www.iana.org/domains/root/db/casa.html\ncasa\n\n// case : Digity, LLC\n// https://www.iana.org/domains/root/db/case.html\ncase\n\n// cash : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cash.html\ncash\n\n// casino : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/casino.html\ncasino\n\n// catering : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/catering.html\ncatering\n\n// catholic : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)\n// https://www.iana.org/domains/root/db/catholic.html\ncatholic\n\n// cba : COMMONWEALTH BANK OF AUSTRALIA\n// https://www.iana.org/domains/root/db/cba.html\ncba\n\n// cbn : The Christian Broadcasting Network, Inc.\n// https://www.iana.org/domains/root/db/cbn.html\ncbn\n\n// cbre : CBRE, Inc.\n// https://www.iana.org/domains/root/db/cbre.html\ncbre\n\n// cbs : CBS Domains Inc.\n// https://www.iana.org/domains/root/db/cbs.html\ncbs\n\n// center : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/center.html\ncenter\n\n// ceo : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/ceo.html\nceo\n\n// cern : European Organization for Nuclear Research ("CERN")\n// https://www.iana.org/domains/root/db/cern.html\ncern\n\n// cfa : CFA Institute\n// https://www.iana.org/domains/root/db/cfa.html\ncfa\n\n// cfd : ShortDot SA\n// https://www.iana.org/domains/root/db/cfd.html\ncfd\n\n// chanel : Chanel International B.V.\n// https://www.iana.org/domains/root/db/chanel.html\nchanel\n\n// channel : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/channel.html\nchannel\n\n// charity : Public Interest Registry\n// https://www.iana.org/domains/root/db/charity.html\ncharity\n\n// chase : JPMorgan Chase Bank, National Association\n// https://www.iana.org/domains/root/db/chase.html\nchase\n\n// chat : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/chat.html\nchat\n\n// cheap : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cheap.html\ncheap\n\n// chintai : CHINTAI Corporation\n// https://www.iana.org/domains/root/db/chintai.html\nchintai\n\n// christmas : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/christmas.html\nchristmas\n\n// chrome : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/chrome.html\nchrome\n\n// church : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/church.html\nchurch\n\n// cipriani : Hotel Cipriani Srl\n// https://www.iana.org/domains/root/db/cipriani.html\ncipriani\n\n// circle : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/circle.html\ncircle\n\n// cisco : Cisco Technology, Inc.\n// https://www.iana.org/domains/root/db/cisco.html\ncisco\n\n// citadel : Citadel Domain LLC\n// https://www.iana.org/domains/root/db/citadel.html\ncitadel\n\n// citi : Citigroup Inc.\n// https://www.iana.org/domains/root/db/citi.html\nciti\n\n// citic : CITIC Group Corporation\n// https://www.iana.org/domains/root/db/citic.html\ncitic\n\n// city : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/city.html\ncity\n\n// claims : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/claims.html\nclaims\n\n// cleaning : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cleaning.html\ncleaning\n\n// click : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/click.html\nclick\n\n// clinic : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/clinic.html\nclinic\n\n// clinique : The Estée Lauder Companies Inc.\n// https://www.iana.org/domains/root/db/clinique.html\nclinique\n\n// clothing : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/clothing.html\nclothing\n\n// cloud : Aruba PEC S.p.A.\n// https://www.iana.org/domains/root/db/cloud.html\ncloud\n\n// club : Registry Services, LLC\n// https://www.iana.org/domains/root/db/club.html\nclub\n\n// clubmed : Club Méditerranée S.A.\n// https://www.iana.org/domains/root/db/clubmed.html\nclubmed\n\n// coach : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/coach.html\ncoach\n\n// codes : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/codes.html\ncodes\n\n// coffee : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/coffee.html\ncoffee\n\n// college : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/college.html\ncollege\n\n// cologne : dotKoeln GmbH\n// https://www.iana.org/domains/root/db/cologne.html\ncologne\n\n// comcast : Comcast IP Holdings I, LLC\n// https://www.iana.org/domains/root/db/comcast.html\ncomcast\n\n// commbank : COMMONWEALTH BANK OF AUSTRALIA\n// https://www.iana.org/domains/root/db/commbank.html\ncommbank\n\n// community : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/community.html\ncommunity\n\n// company : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/company.html\ncompany\n\n// compare : Registry Services, LLC\n// https://www.iana.org/domains/root/db/compare.html\ncompare\n\n// computer : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/computer.html\ncomputer\n\n// comsec : VeriSign, Inc.\n// https://www.iana.org/domains/root/db/comsec.html\ncomsec\n\n// condos : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/condos.html\ncondos\n\n// construction : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/construction.html\nconstruction\n\n// consulting : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/consulting.html\nconsulting\n\n// contact : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/contact.html\ncontact\n\n// contractors : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/contractors.html\ncontractors\n\n// cooking : Registry Services, LLC\n// https://www.iana.org/domains/root/db/cooking.html\ncooking\n\n// cool : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cool.html\ncool\n\n// corsica : Collectivité de Corse\n// https://www.iana.org/domains/root/db/corsica.html\ncorsica\n\n// country : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/country.html\ncountry\n\n// coupon : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/coupon.html\ncoupon\n\n// coupons : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/coupons.html\ncoupons\n\n// courses : Registry Services, LLC\n// https://www.iana.org/domains/root/db/courses.html\ncourses\n\n// cpa : American Institute of Certified Public Accountants\n// https://www.iana.org/domains/root/db/cpa.html\ncpa\n\n// credit : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/credit.html\ncredit\n\n// creditcard : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/creditcard.html\ncreditcard\n\n// creditunion : DotCooperation LLC\n// https://www.iana.org/domains/root/db/creditunion.html\ncreditunion\n\n// cricket : dot Cricket Limited\n// https://www.iana.org/domains/root/db/cricket.html\ncricket\n\n// crown : Crown Equipment Corporation\n// https://www.iana.org/domains/root/db/crown.html\ncrown\n\n// crs : Federated Co-operatives Limited\n// https://www.iana.org/domains/root/db/crs.html\ncrs\n\n// cruise : Viking River Cruises (Bermuda) Ltd.\n// https://www.iana.org/domains/root/db/cruise.html\ncruise\n\n// cruises : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/cruises.html\ncruises\n\n// cuisinella : SCHMIDT GROUPE S.A.S.\n// https://www.iana.org/domains/root/db/cuisinella.html\ncuisinella\n\n// cymru : Nominet UK\n// https://www.iana.org/domains/root/db/cymru.html\ncymru\n\n// cyou : ShortDot SA\n// https://www.iana.org/domains/root/db/cyou.html\ncyou\n\n// dabur : Dabur India Limited\n// https://www.iana.org/domains/root/db/dabur.html\ndabur\n\n// dad : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/dad.html\ndad\n\n// dance : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/dance.html\ndance\n\n// data : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/data.html\ndata\n\n// date : dot Date Limited\n// https://www.iana.org/domains/root/db/date.html\ndate\n\n// dating : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/dating.html\ndating\n\n// datsun : NISSAN MOTOR CO., LTD.\n// https://www.iana.org/domains/root/db/datsun.html\ndatsun\n\n// day : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/day.html\nday\n\n// dclk : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/dclk.html\ndclk\n\n// dds : Registry Services, LLC\n// https://www.iana.org/domains/root/db/dds.html\ndds\n\n// deal : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/deal.html\ndeal\n\n// dealer : Intercap Registry Inc.\n// https://www.iana.org/domains/root/db/dealer.html\ndealer\n\n// deals : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/deals.html\ndeals\n\n// degree : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/degree.html\ndegree\n\n// delivery : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/delivery.html\ndelivery\n\n// dell : Dell Inc.\n// https://www.iana.org/domains/root/db/dell.html\ndell\n\n// deloitte : Deloitte Touche Tohmatsu\n// https://www.iana.org/domains/root/db/deloitte.html\ndeloitte\n\n// delta : Delta Air Lines, Inc.\n// https://www.iana.org/domains/root/db/delta.html\ndelta\n\n// democrat : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/democrat.html\ndemocrat\n\n// dental : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/dental.html\ndental\n\n// dentist : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/dentist.html\ndentist\n\n// desi : Desi Networks LLC\n// https://www.iana.org/domains/root/db/desi.html\ndesi\n\n// design : Registry Services, LLC\n// https://www.iana.org/domains/root/db/design.html\ndesign\n\n// dev : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/dev.html\ndev\n\n// dhl : Deutsche Post AG\n// https://www.iana.org/domains/root/db/dhl.html\ndhl\n\n// diamonds : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/diamonds.html\ndiamonds\n\n// diet : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/diet.html\ndiet\n\n// digital : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/digital.html\ndigital\n\n// direct : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/direct.html\ndirect\n\n// directory : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/directory.html\ndirectory\n\n// discount : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/discount.html\ndiscount\n\n// discover : Discover Financial Services\n// https://www.iana.org/domains/root/db/discover.html\ndiscover\n\n// dish : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/dish.html\ndish\n\n// diy : Lifestyle Domain Holdings, Inc.\n// https://www.iana.org/domains/root/db/diy.html\ndiy\n\n// dnp : Dai Nippon Printing Co., Ltd.\n// https://www.iana.org/domains/root/db/dnp.html\ndnp\n\n// docs : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/docs.html\ndocs\n\n// doctor : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/doctor.html\ndoctor\n\n// dog : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/dog.html\ndog\n\n// domains : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/domains.html\ndomains\n\n// dot : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/dot.html\ndot\n\n// download : dot Support Limited\n// https://www.iana.org/domains/root/db/download.html\ndownload\n\n// drive : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/drive.html\ndrive\n\n// dtv : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/dtv.html\ndtv\n\n// dubai : Dubai Smart Government Department\n// https://www.iana.org/domains/root/db/dubai.html\ndubai\n\n// dunlop : The Goodyear Tire & Rubber Company\n// https://www.iana.org/domains/root/db/dunlop.html\ndunlop\n\n// dupont : DuPont Specialty Products USA, LLC\n// https://www.iana.org/domains/root/db/dupont.html\ndupont\n\n// durban : ZA Central Registry NPC trading as ZA Central Registry\n// https://www.iana.org/domains/root/db/durban.html\ndurban\n\n// dvag : Deutsche Vermögensberatung Aktiengesellschaft DVAG\n// https://www.iana.org/domains/root/db/dvag.html\ndvag\n\n// dvr : DISH Technologies L.L.C.\n// https://www.iana.org/domains/root/db/dvr.html\ndvr\n\n// earth : Interlink Systems Innovation Institute K.K.\n// https://www.iana.org/domains/root/db/earth.html\nearth\n\n// eat : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/eat.html\neat\n\n// eco : Big Room Inc.\n// https://www.iana.org/domains/root/db/eco.html\neco\n\n// edeka : EDEKA Verband kaufmännischer Genossenschaften e.V.\n// https://www.iana.org/domains/root/db/edeka.html\nedeka\n\n// education : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/education.html\neducation\n\n// email : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/email.html\nemail\n\n// emerck : Merck KGaA\n// https://www.iana.org/domains/root/db/emerck.html\nemerck\n\n// energy : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/energy.html\nenergy\n\n// engineer : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/engineer.html\nengineer\n\n// engineering : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/engineering.html\nengineering\n\n// enterprises : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/enterprises.html\nenterprises\n\n// epson : Seiko Epson Corporation\n// https://www.iana.org/domains/root/db/epson.html\nepson\n\n// equipment : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/equipment.html\nequipment\n\n// ericsson : Telefonaktiebolaget L M Ericsson\n// https://www.iana.org/domains/root/db/ericsson.html\nericsson\n\n// erni : ERNI Group Holding AG\n// https://www.iana.org/domains/root/db/erni.html\nerni\n\n// esq : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/esq.html\nesq\n\n// estate : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/estate.html\nestate\n\n// etisalat : Emirates Telecommunications Corporation (trading as Etisalat)\n// https://www.iana.org/domains/root/db/etisalat.html\netisalat\n\n// eurovision : European Broadcasting Union (EBU)\n// https://www.iana.org/domains/root/db/eurovision.html\neurovision\n\n// eus : Puntueus Fundazioa\n// https://www.iana.org/domains/root/db/eus.html\neus\n\n// events : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/events.html\nevents\n\n// exchange : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/exchange.html\nexchange\n\n// expert : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/expert.html\nexpert\n\n// exposed : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/exposed.html\nexposed\n\n// express : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/express.html\nexpress\n\n// extraspace : Extra Space Storage LLC\n// https://www.iana.org/domains/root/db/extraspace.html\nextraspace\n\n// fage : Fage International S.A.\n// https://www.iana.org/domains/root/db/fage.html\nfage\n\n// fail : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/fail.html\nfail\n\n// fairwinds : FairWinds Partners, LLC\n// https://www.iana.org/domains/root/db/fairwinds.html\nfairwinds\n\n// faith : dot Faith Limited\n// https://www.iana.org/domains/root/db/faith.html\nfaith\n\n// family : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/family.html\nfamily\n\n// fan : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/fan.html\nfan\n\n// fans : ZDNS International Limited\n// https://www.iana.org/domains/root/db/fans.html\nfans\n\n// farm : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/farm.html\nfarm\n\n// farmers : Farmers Insurance Exchange\n// https://www.iana.org/domains/root/db/farmers.html\nfarmers\n\n// fashion : Registry Services, LLC\n// https://www.iana.org/domains/root/db/fashion.html\nfashion\n\n// fast : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/fast.html\nfast\n\n// fedex : Federal Express Corporation\n// https://www.iana.org/domains/root/db/fedex.html\nfedex\n\n// feedback : Top Level Spectrum, Inc.\n// https://www.iana.org/domains/root/db/feedback.html\nfeedback\n\n// ferrari : Fiat Chrysler Automobiles N.V.\n// https://www.iana.org/domains/root/db/ferrari.html\nferrari\n\n// ferrero : Ferrero Trading Lux S.A.\n// https://www.iana.org/domains/root/db/ferrero.html\nferrero\n\n// fidelity : Fidelity Brokerage Services LLC\n// https://www.iana.org/domains/root/db/fidelity.html\nfidelity\n\n// fido : Rogers Communications Canada Inc.\n// https://www.iana.org/domains/root/db/fido.html\nfido\n\n// film : Motion Picture Domain Registry Pty Ltd\n// https://www.iana.org/domains/root/db/film.html\nfilm\n\n// final : Núcleo de Informação e Coordenação do Ponto BR - NIC.br\n// https://www.iana.org/domains/root/db/final.html\nfinal\n\n// finance : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/finance.html\nfinance\n\n// financial : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/financial.html\nfinancial\n\n// fire : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/fire.html\nfire\n\n// firestone : Bridgestone Licensing Services, Inc\n// https://www.iana.org/domains/root/db/firestone.html\nfirestone\n\n// firmdale : Firmdale Holdings Limited\n// https://www.iana.org/domains/root/db/firmdale.html\nfirmdale\n\n// fish : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/fish.html\nfish\n\n// fishing : Registry Services, LLC\n// https://www.iana.org/domains/root/db/fishing.html\nfishing\n\n// fit : Registry Services, LLC\n// https://www.iana.org/domains/root/db/fit.html\nfit\n\n// fitness : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/fitness.html\nfitness\n\n// flickr : Flickr, Inc.\n// https://www.iana.org/domains/root/db/flickr.html\nflickr\n\n// flights : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/flights.html\nflights\n\n// flir : FLIR Systems, Inc.\n// https://www.iana.org/domains/root/db/flir.html\nflir\n\n// florist : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/florist.html\nflorist\n\n// flowers : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/flowers.html\nflowers\n\n// fly : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/fly.html\nfly\n\n// foo : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/foo.html\nfoo\n\n// food : Lifestyle Domain Holdings, Inc.\n// https://www.iana.org/domains/root/db/food.html\nfood\n\n// football : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/football.html\nfootball\n\n// ford : Ford Motor Company\n// https://www.iana.org/domains/root/db/ford.html\nford\n\n// forex : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/forex.html\nforex\n\n// forsale : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/forsale.html\nforsale\n\n// forum : Fegistry, LLC\n// https://www.iana.org/domains/root/db/forum.html\nforum\n\n// foundation : Public Interest Registry\n// https://www.iana.org/domains/root/db/foundation.html\nfoundation\n\n// fox : FOX Registry, LLC\n// https://www.iana.org/domains/root/db/fox.html\nfox\n\n// free : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/free.html\nfree\n\n// fresenius : Fresenius Immobilien-Verwaltungs-GmbH\n// https://www.iana.org/domains/root/db/fresenius.html\nfresenius\n\n// frl : FRLregistry B.V.\n// https://www.iana.org/domains/root/db/frl.html\nfrl\n\n// frogans : OP3FT\n// https://www.iana.org/domains/root/db/frogans.html\nfrogans\n\n// frontier : Frontier Communications Corporation\n// https://www.iana.org/domains/root/db/frontier.html\nfrontier\n\n// ftr : Frontier Communications Corporation\n// https://www.iana.org/domains/root/db/ftr.html\nftr\n\n// fujitsu : Fujitsu Limited\n// https://www.iana.org/domains/root/db/fujitsu.html\nfujitsu\n\n// fun : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/fun.html\nfun\n\n// fund : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/fund.html\nfund\n\n// furniture : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/furniture.html\nfurniture\n\n// futbol : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/futbol.html\nfutbol\n\n// fyi : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/fyi.html\nfyi\n\n// gal : Asociación puntoGAL\n// https://www.iana.org/domains/root/db/gal.html\ngal\n\n// gallery : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gallery.html\ngallery\n\n// gallo : Gallo Vineyards, Inc.\n// https://www.iana.org/domains/root/db/gallo.html\ngallo\n\n// gallup : Gallup, Inc.\n// https://www.iana.org/domains/root/db/gallup.html\ngallup\n\n// game : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/game.html\ngame\n\n// games : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/games.html\ngames\n\n// gap : The Gap, Inc.\n// https://www.iana.org/domains/root/db/gap.html\ngap\n\n// garden : Registry Services, LLC\n// https://www.iana.org/domains/root/db/garden.html\ngarden\n\n// gay : Registry Services, LLC\n// https://www.iana.org/domains/root/db/gay.html\ngay\n\n// gbiz : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/gbiz.html\ngbiz\n\n// gdn : Joint Stock Company "Navigation-information systems"\n// https://www.iana.org/domains/root/db/gdn.html\ngdn\n\n// gea : GEA Group Aktiengesellschaft\n// https://www.iana.org/domains/root/db/gea.html\ngea\n\n// gent : Easyhost BV\n// https://www.iana.org/domains/root/db/gent.html\ngent\n\n// genting : Resorts World Inc Pte. Ltd.\n// https://www.iana.org/domains/root/db/genting.html\ngenting\n\n// george : Wal-Mart Stores, Inc.\n// https://www.iana.org/domains/root/db/george.html\ngeorge\n\n// ggee : GMO Internet, Inc.\n// https://www.iana.org/domains/root/db/ggee.html\nggee\n\n// gift : DotGift, LLC\n// https://www.iana.org/domains/root/db/gift.html\ngift\n\n// gifts : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gifts.html\ngifts\n\n// gives : Public Interest Registry\n// https://www.iana.org/domains/root/db/gives.html\ngives\n\n// giving : Public Interest Registry\n// https://www.iana.org/domains/root/db/giving.html\ngiving\n\n// glass : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/glass.html\nglass\n\n// gle : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/gle.html\ngle\n\n// global : Identity Digital Limited\n// https://www.iana.org/domains/root/db/global.html\nglobal\n\n// globo : Globo Comunicação e Participações S.A\n// https://www.iana.org/domains/root/db/globo.html\nglobo\n\n// gmail : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/gmail.html\ngmail\n\n// gmbh : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gmbh.html\ngmbh\n\n// gmo : GMO Internet, Inc.\n// https://www.iana.org/domains/root/db/gmo.html\ngmo\n\n// gmx : 1&1 Mail & Media GmbH\n// https://www.iana.org/domains/root/db/gmx.html\ngmx\n\n// godaddy : Go Daddy East, LLC\n// https://www.iana.org/domains/root/db/godaddy.html\ngodaddy\n\n// gold : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gold.html\ngold\n\n// goldpoint : YODOBASHI CAMERA CO.,LTD.\n// https://www.iana.org/domains/root/db/goldpoint.html\ngoldpoint\n\n// golf : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/golf.html\ngolf\n\n// goo : NTT Resonant Inc.\n// https://www.iana.org/domains/root/db/goo.html\ngoo\n\n// goodyear : The Goodyear Tire & Rubber Company\n// https://www.iana.org/domains/root/db/goodyear.html\ngoodyear\n\n// goog : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/goog.html\ngoog\n\n// google : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/google.html\ngoogle\n\n// gop : Republican State Leadership Committee, Inc.\n// https://www.iana.org/domains/root/db/gop.html\ngop\n\n// got : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/got.html\ngot\n\n// grainger : Grainger Registry Services, LLC\n// https://www.iana.org/domains/root/db/grainger.html\ngrainger\n\n// graphics : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/graphics.html\ngraphics\n\n// gratis : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gratis.html\ngratis\n\n// green : Identity Digital Limited\n// https://www.iana.org/domains/root/db/green.html\ngreen\n\n// gripe : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/gripe.html\ngripe\n\n// grocery : Wal-Mart Stores, Inc.\n// https://www.iana.org/domains/root/db/grocery.html\ngrocery\n\n// group : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/group.html\ngroup\n\n// guardian : The Guardian Life Insurance Company of America\n// https://www.iana.org/domains/root/db/guardian.html\nguardian\n\n// gucci : Guccio Gucci S.p.a.\n// https://www.iana.org/domains/root/db/gucci.html\ngucci\n\n// guge : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/guge.html\nguge\n\n// guide : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/guide.html\nguide\n\n// guitars : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/guitars.html\nguitars\n\n// guru : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/guru.html\nguru\n\n// hair : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/hair.html\nhair\n\n// hamburg : Hamburg Top-Level-Domain GmbH\n// https://www.iana.org/domains/root/db/hamburg.html\nhamburg\n\n// hangout : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/hangout.html\nhangout\n\n// haus : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/haus.html\nhaus\n\n// hbo : HBO Registry Services, Inc.\n// https://www.iana.org/domains/root/db/hbo.html\nhbo\n\n// hdfc : HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED\n// https://www.iana.org/domains/root/db/hdfc.html\nhdfc\n\n// hdfcbank : HDFC Bank Limited\n// https://www.iana.org/domains/root/db/hdfcbank.html\nhdfcbank\n\n// health : Registry Services, LLC\n// https://www.iana.org/domains/root/db/health.html\nhealth\n\n// healthcare : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/healthcare.html\nhealthcare\n\n// help : Innovation service Limited\n// https://www.iana.org/domains/root/db/help.html\nhelp\n\n// helsinki : City of Helsinki\n// https://www.iana.org/domains/root/db/helsinki.html\nhelsinki\n\n// here : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/here.html\nhere\n\n// hermes : HERMES INTERNATIONAL\n// https://www.iana.org/domains/root/db/hermes.html\nhermes\n\n// hiphop : Dot Hip Hop, LLC\n// https://www.iana.org/domains/root/db/hiphop.html\nhiphop\n\n// hisamitsu : Hisamitsu Pharmaceutical Co.,Inc.\n// https://www.iana.org/domains/root/db/hisamitsu.html\nhisamitsu\n\n// hitachi : Hitachi, Ltd.\n// https://www.iana.org/domains/root/db/hitachi.html\nhitachi\n\n// hiv : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/hiv.html\nhiv\n\n// hkt : PCCW-HKT DataCom Services Limited\n// https://www.iana.org/domains/root/db/hkt.html\nhkt\n\n// hockey : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/hockey.html\nhockey\n\n// holdings : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/holdings.html\nholdings\n\n// holiday : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/holiday.html\nholiday\n\n// homedepot : Home Depot Product Authority, LLC\n// https://www.iana.org/domains/root/db/homedepot.html\nhomedepot\n\n// homegoods : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/homegoods.html\nhomegoods\n\n// homes : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/homes.html\nhomes\n\n// homesense : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/homesense.html\nhomesense\n\n// honda : Honda Motor Co., Ltd.\n// https://www.iana.org/domains/root/db/honda.html\nhonda\n\n// horse : Registry Services, LLC\n// https://www.iana.org/domains/root/db/horse.html\nhorse\n\n// hospital : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/hospital.html\nhospital\n\n// host : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/host.html\nhost\n\n// hosting : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/hosting.html\nhosting\n\n// hot : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/hot.html\nhot\n\n// hotels : Booking.com B.V.\n// https://www.iana.org/domains/root/db/hotels.html\nhotels\n\n// hotmail : Microsoft Corporation\n// https://www.iana.org/domains/root/db/hotmail.html\nhotmail\n\n// house : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/house.html\nhouse\n\n// how : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/how.html\nhow\n\n// hsbc : HSBC Global Services (UK) Limited\n// https://www.iana.org/domains/root/db/hsbc.html\nhsbc\n\n// hughes : Hughes Satellite Systems Corporation\n// https://www.iana.org/domains/root/db/hughes.html\nhughes\n\n// hyatt : Hyatt GTLD, L.L.C.\n// https://www.iana.org/domains/root/db/hyatt.html\nhyatt\n\n// hyundai : Hyundai Motor Company\n// https://www.iana.org/domains/root/db/hyundai.html\nhyundai\n\n// ibm : International Business Machines Corporation\n// https://www.iana.org/domains/root/db/ibm.html\nibm\n\n// icbc : Industrial and Commercial Bank of China Limited\n// https://www.iana.org/domains/root/db/icbc.html\nicbc\n\n// ice : IntercontinentalExchange, Inc.\n// https://www.iana.org/domains/root/db/ice.html\nice\n\n// icu : ShortDot SA\n// https://www.iana.org/domains/root/db/icu.html\nicu\n\n// ieee : IEEE Global LLC\n// https://www.iana.org/domains/root/db/ieee.html\nieee\n\n// ifm : ifm electronic gmbh\n// https://www.iana.org/domains/root/db/ifm.html\nifm\n\n// ikano : Ikano S.A.\n// https://www.iana.org/domains/root/db/ikano.html\nikano\n\n// imamat : Fondation Aga Khan (Aga Khan Foundation)\n// https://www.iana.org/domains/root/db/imamat.html\nimamat\n\n// imdb : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/imdb.html\nimdb\n\n// immo : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/immo.html\nimmo\n\n// immobilien : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/immobilien.html\nimmobilien\n\n// inc : Intercap Registry Inc.\n// https://www.iana.org/domains/root/db/inc.html\ninc\n\n// industries : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/industries.html\nindustries\n\n// infiniti : NISSAN MOTOR CO., LTD.\n// https://www.iana.org/domains/root/db/infiniti.html\ninfiniti\n\n// ing : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/ing.html\ning\n\n// ink : Registry Services, LLC\n// https://www.iana.org/domains/root/db/ink.html\nink\n\n// institute : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/institute.html\ninstitute\n\n// insurance : fTLD Registry Services LLC\n// https://www.iana.org/domains/root/db/insurance.html\ninsurance\n\n// insure : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/insure.html\ninsure\n\n// international : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/international.html\ninternational\n\n// intuit : Intuit Administrative Services, Inc.\n// https://www.iana.org/domains/root/db/intuit.html\nintuit\n\n// investments : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/investments.html\ninvestments\n\n// ipiranga : Ipiranga Produtos de Petroleo S.A.\n// https://www.iana.org/domains/root/db/ipiranga.html\nipiranga\n\n// irish : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/irish.html\nirish\n\n// ismaili : Fondation Aga Khan (Aga Khan Foundation)\n// https://www.iana.org/domains/root/db/ismaili.html\nismaili\n\n// ist : Istanbul Metropolitan Municipality\n// https://www.iana.org/domains/root/db/ist.html\nist\n\n// istanbul : Istanbul Metropolitan Municipality\n// https://www.iana.org/domains/root/db/istanbul.html\nistanbul\n\n// itau : Itau Unibanco Holding S.A.\n// https://www.iana.org/domains/root/db/itau.html\nitau\n\n// itv : ITV Services Limited\n// https://www.iana.org/domains/root/db/itv.html\nitv\n\n// jaguar : Jaguar Land Rover Ltd\n// https://www.iana.org/domains/root/db/jaguar.html\njaguar\n\n// java : Oracle Corporation\n// https://www.iana.org/domains/root/db/java.html\njava\n\n// jcb : JCB Co., Ltd.\n// https://www.iana.org/domains/root/db/jcb.html\njcb\n\n// jeep : FCA US LLC.\n// https://www.iana.org/domains/root/db/jeep.html\njeep\n\n// jetzt : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/jetzt.html\njetzt\n\n// jewelry : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/jewelry.html\njewelry\n\n// jio : Reliance Industries Limited\n// https://www.iana.org/domains/root/db/jio.html\njio\n\n// jll : Jones Lang LaSalle Incorporated\n// https://www.iana.org/domains/root/db/jll.html\njll\n\n// jmp : Matrix IP LLC\n// https://www.iana.org/domains/root/db/jmp.html\njmp\n\n// jnj : Johnson & Johnson Services, Inc.\n// https://www.iana.org/domains/root/db/jnj.html\njnj\n\n// joburg : ZA Central Registry NPC trading as ZA Central Registry\n// https://www.iana.org/domains/root/db/joburg.html\njoburg\n\n// jot : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/jot.html\njot\n\n// joy : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/joy.html\njoy\n\n// jpmorgan : JPMorgan Chase Bank, National Association\n// https://www.iana.org/domains/root/db/jpmorgan.html\njpmorgan\n\n// jprs : Japan Registry Services Co., Ltd.\n// https://www.iana.org/domains/root/db/jprs.html\njprs\n\n// juegos : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/juegos.html\njuegos\n\n// juniper : JUNIPER NETWORKS, INC.\n// https://www.iana.org/domains/root/db/juniper.html\njuniper\n\n// kaufen : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/kaufen.html\nkaufen\n\n// kddi : KDDI CORPORATION\n// https://www.iana.org/domains/root/db/kddi.html\nkddi\n\n// kerryhotels : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/kerryhotels.html\nkerryhotels\n\n// kerrylogistics : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/kerrylogistics.html\nkerrylogistics\n\n// kerryproperties : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/kerryproperties.html\nkerryproperties\n\n// kfh : Kuwait Finance House\n// https://www.iana.org/domains/root/db/kfh.html\nkfh\n\n// kia : KIA MOTORS CORPORATION\n// https://www.iana.org/domains/root/db/kia.html\nkia\n\n// kids : DotKids Foundation Limited\n// https://www.iana.org/domains/root/db/kids.html\nkids\n\n// kim : Identity Digital Limited\n// https://www.iana.org/domains/root/db/kim.html\nkim\n\n// kinder : Ferrero Trading Lux S.A.\n// https://www.iana.org/domains/root/db/kinder.html\nkinder\n\n// kindle : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/kindle.html\nkindle\n\n// kitchen : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/kitchen.html\nkitchen\n\n// kiwi : DOT KIWI LIMITED\n// https://www.iana.org/domains/root/db/kiwi.html\nkiwi\n\n// koeln : dotKoeln GmbH\n// https://www.iana.org/domains/root/db/koeln.html\nkoeln\n\n// komatsu : Komatsu Ltd.\n// https://www.iana.org/domains/root/db/komatsu.html\nkomatsu\n\n// kosher : Kosher Marketing Assets LLC\n// https://www.iana.org/domains/root/db/kosher.html\nkosher\n\n// kpmg : KPMG International Cooperative (KPMG International Genossenschaft)\n// https://www.iana.org/domains/root/db/kpmg.html\nkpmg\n\n// kpn : Koninklijke KPN N.V.\n// https://www.iana.org/domains/root/db/kpn.html\nkpn\n\n// krd : KRG Department of Information Technology\n// https://www.iana.org/domains/root/db/krd.html\nkrd\n\n// kred : KredTLD Pty Ltd\n// https://www.iana.org/domains/root/db/kred.html\nkred\n\n// kuokgroup : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/kuokgroup.html\nkuokgroup\n\n// kyoto : Academic Institution: Kyoto Jyoho Gakuen\n// https://www.iana.org/domains/root/db/kyoto.html\nkyoto\n\n// lacaixa : Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa”\n// https://www.iana.org/domains/root/db/lacaixa.html\nlacaixa\n\n// lamborghini : Automobili Lamborghini S.p.A.\n// https://www.iana.org/domains/root/db/lamborghini.html\nlamborghini\n\n// lamer : The Estée Lauder Companies Inc.\n// https://www.iana.org/domains/root/db/lamer.html\nlamer\n\n// lancaster : LANCASTER\n// https://www.iana.org/domains/root/db/lancaster.html\nlancaster\n\n// land : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/land.html\nland\n\n// landrover : Jaguar Land Rover Ltd\n// https://www.iana.org/domains/root/db/landrover.html\nlandrover\n\n// lanxess : LANXESS Corporation\n// https://www.iana.org/domains/root/db/lanxess.html\nlanxess\n\n// lasalle : Jones Lang LaSalle Incorporated\n// https://www.iana.org/domains/root/db/lasalle.html\nlasalle\n\n// lat : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/lat.html\nlat\n\n// latino : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/latino.html\nlatino\n\n// latrobe : La Trobe University\n// https://www.iana.org/domains/root/db/latrobe.html\nlatrobe\n\n// law : Registry Services, LLC\n// https://www.iana.org/domains/root/db/law.html\nlaw\n\n// lawyer : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/lawyer.html\nlawyer\n\n// lds : IRI Domain Management, LLC\n// https://www.iana.org/domains/root/db/lds.html\nlds\n\n// lease : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/lease.html\nlease\n\n// leclerc : A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc\n// https://www.iana.org/domains/root/db/leclerc.html\nleclerc\n\n// lefrak : LeFrak Organization, Inc.\n// https://www.iana.org/domains/root/db/lefrak.html\nlefrak\n\n// legal : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/legal.html\nlegal\n\n// lego : LEGO Juris A/S\n// https://www.iana.org/domains/root/db/lego.html\nlego\n\n// lexus : TOYOTA MOTOR CORPORATION\n// https://www.iana.org/domains/root/db/lexus.html\nlexus\n\n// lgbt : Identity Digital Limited\n// https://www.iana.org/domains/root/db/lgbt.html\nlgbt\n\n// lidl : Schwarz Domains und Services GmbH & Co. KG\n// https://www.iana.org/domains/root/db/lidl.html\nlidl\n\n// life : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/life.html\nlife\n\n// lifeinsurance : American Council of Life Insurers\n// https://www.iana.org/domains/root/db/lifeinsurance.html\nlifeinsurance\n\n// lifestyle : Lifestyle Domain Holdings, Inc.\n// https://www.iana.org/domains/root/db/lifestyle.html\nlifestyle\n\n// lighting : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/lighting.html\nlighting\n\n// like : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/like.html\nlike\n\n// lilly : Eli Lilly and Company\n// https://www.iana.org/domains/root/db/lilly.html\nlilly\n\n// limited : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/limited.html\nlimited\n\n// limo : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/limo.html\nlimo\n\n// lincoln : Ford Motor Company\n// https://www.iana.org/domains/root/db/lincoln.html\nlincoln\n\n// link : Nova Registry Ltd\n// https://www.iana.org/domains/root/db/link.html\nlink\n\n// lipsy : Lipsy Ltd\n// https://www.iana.org/domains/root/db/lipsy.html\nlipsy\n\n// live : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/live.html\nlive\n\n// living : Lifestyle Domain Holdings, Inc.\n// https://www.iana.org/domains/root/db/living.html\nliving\n\n// llc : Identity Digital Limited\n// https://www.iana.org/domains/root/db/llc.html\nllc\n\n// llp : Intercap Registry Inc.\n// https://www.iana.org/domains/root/db/llp.html\nllp\n\n// loan : dot Loan Limited\n// https://www.iana.org/domains/root/db/loan.html\nloan\n\n// loans : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/loans.html\nloans\n\n// locker : Orange Domains LLC\n// https://www.iana.org/domains/root/db/locker.html\nlocker\n\n// locus : Locus Analytics LLC\n// https://www.iana.org/domains/root/db/locus.html\nlocus\n\n// lol : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/lol.html\nlol\n\n// london : Dot London Domains Limited\n// https://www.iana.org/domains/root/db/london.html\nlondon\n\n// lotte : Lotte Holdings Co., Ltd.\n// https://www.iana.org/domains/root/db/lotte.html\nlotte\n\n// lotto : Identity Digital Limited\n// https://www.iana.org/domains/root/db/lotto.html\nlotto\n\n// love : Merchant Law Group LLP\n// https://www.iana.org/domains/root/db/love.html\nlove\n\n// lpl : LPL Holdings, Inc.\n// https://www.iana.org/domains/root/db/lpl.html\nlpl\n\n// lplfinancial : LPL Holdings, Inc.\n// https://www.iana.org/domains/root/db/lplfinancial.html\nlplfinancial\n\n// ltd : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/ltd.html\nltd\n\n// ltda : InterNetX, Corp\n// https://www.iana.org/domains/root/db/ltda.html\nltda\n\n// lundbeck : H. Lundbeck A/S\n// https://www.iana.org/domains/root/db/lundbeck.html\nlundbeck\n\n// luxe : Registry Services, LLC\n// https://www.iana.org/domains/root/db/luxe.html\nluxe\n\n// luxury : Luxury Partners, LLC\n// https://www.iana.org/domains/root/db/luxury.html\nluxury\n\n// madrid : Comunidad de Madrid\n// https://www.iana.org/domains/root/db/madrid.html\nmadrid\n\n// maif : Mutuelle Assurance Instituteur France (MAIF)\n// https://www.iana.org/domains/root/db/maif.html\nmaif\n\n// maison : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/maison.html\nmaison\n\n// makeup : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/makeup.html\nmakeup\n\n// man : MAN SE\n// https://www.iana.org/domains/root/db/man.html\nman\n\n// management : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/management.html\nmanagement\n\n// mango : PUNTO FA S.L.\n// https://www.iana.org/domains/root/db/mango.html\nmango\n\n// map : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/map.html\nmap\n\n// market : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/market.html\nmarket\n\n// marketing : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/marketing.html\nmarketing\n\n// markets : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/markets.html\nmarkets\n\n// marriott : Marriott Worldwide Corporation\n// https://www.iana.org/domains/root/db/marriott.html\nmarriott\n\n// marshalls : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/marshalls.html\nmarshalls\n\n// mattel : Mattel Sites, Inc.\n// https://www.iana.org/domains/root/db/mattel.html\nmattel\n\n// mba : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/mba.html\nmba\n\n// mckinsey : McKinsey Holdings, Inc.\n// https://www.iana.org/domains/root/db/mckinsey.html\nmckinsey\n\n// med : Medistry LLC\n// https://www.iana.org/domains/root/db/med.html\nmed\n\n// media : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/media.html\nmedia\n\n// meet : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/meet.html\nmeet\n\n// melbourne : The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation\n// https://www.iana.org/domains/root/db/melbourne.html\nmelbourne\n\n// meme : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/meme.html\nmeme\n\n// memorial : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/memorial.html\nmemorial\n\n// men : Exclusive Registry Limited\n// https://www.iana.org/domains/root/db/men.html\nmen\n\n// menu : Dot Menu Registry, LLC\n// https://www.iana.org/domains/root/db/menu.html\nmenu\n\n// merckmsd : MSD Registry Holdings, Inc.\n// https://www.iana.org/domains/root/db/merckmsd.html\nmerckmsd\n\n// miami : Registry Services, LLC\n// https://www.iana.org/domains/root/db/miami.html\nmiami\n\n// microsoft : Microsoft Corporation\n// https://www.iana.org/domains/root/db/microsoft.html\nmicrosoft\n\n// mini : Bayerische Motoren Werke Aktiengesellschaft\n// https://www.iana.org/domains/root/db/mini.html\nmini\n\n// mint : Intuit Administrative Services, Inc.\n// https://www.iana.org/domains/root/db/mint.html\nmint\n\n// mit : Massachusetts Institute of Technology\n// https://www.iana.org/domains/root/db/mit.html\nmit\n\n// mitsubishi : Mitsubishi Corporation\n// https://www.iana.org/domains/root/db/mitsubishi.html\nmitsubishi\n\n// mlb : MLB Advanced Media DH, LLC\n// https://www.iana.org/domains/root/db/mlb.html\nmlb\n\n// mls : The Canadian Real Estate Association\n// https://www.iana.org/domains/root/db/mls.html\nmls\n\n// mma : MMA IARD\n// https://www.iana.org/domains/root/db/mma.html\nmma\n\n// mobile : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/mobile.html\nmobile\n\n// moda : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/moda.html\nmoda\n\n// moe : Interlink Systems Innovation Institute K.K.\n// https://www.iana.org/domains/root/db/moe.html\nmoe\n\n// moi : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/moi.html\nmoi\n\n// mom : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/mom.html\nmom\n\n// monash : Monash University\n// https://www.iana.org/domains/root/db/monash.html\nmonash\n\n// money : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/money.html\nmoney\n\n// monster : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/monster.html\nmonster\n\n// mormon : IRI Domain Management, LLC\n// https://www.iana.org/domains/root/db/mormon.html\nmormon\n\n// mortgage : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/mortgage.html\nmortgage\n\n// moscow : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)\n// https://www.iana.org/domains/root/db/moscow.html\nmoscow\n\n// moto : Motorola Trademark Holdings, LLC\n// https://www.iana.org/domains/root/db/moto.html\nmoto\n\n// motorcycles : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/motorcycles.html\nmotorcycles\n\n// mov : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/mov.html\nmov\n\n// movie : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/movie.html\nmovie\n\n// msd : MSD Registry Holdings, Inc.\n// https://www.iana.org/domains/root/db/msd.html\nmsd\n\n// mtn : MTN Dubai Limited\n// https://www.iana.org/domains/root/db/mtn.html\nmtn\n\n// mtr : MTR Corporation Limited\n// https://www.iana.org/domains/root/db/mtr.html\nmtr\n\n// music : DotMusic Limited\n// https://www.iana.org/domains/root/db/music.html\nmusic\n\n// nab : National Australia Bank Limited\n// https://www.iana.org/domains/root/db/nab.html\nnab\n\n// nagoya : GMO Registry, Inc.\n// https://www.iana.org/domains/root/db/nagoya.html\nnagoya\n\n// natura : NATURA COSMÉTICOS S.A.\n// https://www.iana.org/domains/root/db/natura.html\nnatura\n\n// navy : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/navy.html\nnavy\n\n// nba : NBA REGISTRY, LLC\n// https://www.iana.org/domains/root/db/nba.html\nnba\n\n// nec : NEC Corporation\n// https://www.iana.org/domains/root/db/nec.html\nnec\n\n// netbank : COMMONWEALTH BANK OF AUSTRALIA\n// https://www.iana.org/domains/root/db/netbank.html\nnetbank\n\n// netflix : Netflix, Inc.\n// https://www.iana.org/domains/root/db/netflix.html\nnetflix\n\n// network : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/network.html\nnetwork\n\n// neustar : NeuStar, Inc.\n// https://www.iana.org/domains/root/db/neustar.html\nneustar\n\n// new : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/new.html\nnew\n\n// news : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/news.html\nnews\n\n// next : Next plc\n// https://www.iana.org/domains/root/db/next.html\nnext\n\n// nextdirect : Next plc\n// https://www.iana.org/domains/root/db/nextdirect.html\nnextdirect\n\n// nexus : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/nexus.html\nnexus\n\n// nfl : NFL Reg Ops LLC\n// https://www.iana.org/domains/root/db/nfl.html\nnfl\n\n// ngo : Public Interest Registry\n// https://www.iana.org/domains/root/db/ngo.html\nngo\n\n// nhk : Japan Broadcasting Corporation (NHK)\n// https://www.iana.org/domains/root/db/nhk.html\nnhk\n\n// nico : DWANGO Co., Ltd.\n// https://www.iana.org/domains/root/db/nico.html\nnico\n\n// nike : NIKE, Inc.\n// https://www.iana.org/domains/root/db/nike.html\nnike\n\n// nikon : NIKON CORPORATION\n// https://www.iana.org/domains/root/db/nikon.html\nnikon\n\n// ninja : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/ninja.html\nninja\n\n// nissan : NISSAN MOTOR CO., LTD.\n// https://www.iana.org/domains/root/db/nissan.html\nnissan\n\n// nissay : Nippon Life Insurance Company\n// https://www.iana.org/domains/root/db/nissay.html\nnissay\n\n// nokia : Nokia Corporation\n// https://www.iana.org/domains/root/db/nokia.html\nnokia\n\n// norton : NortonLifeLock Inc.\n// https://www.iana.org/domains/root/db/norton.html\nnorton\n\n// now : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/now.html\nnow\n\n// nowruz : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.\n// https://www.iana.org/domains/root/db/nowruz.html\nnowruz\n\n// nowtv : Starbucks (HK) Limited\n// https://www.iana.org/domains/root/db/nowtv.html\nnowtv\n\n// nra : NRA Holdings Company, INC.\n// https://www.iana.org/domains/root/db/nra.html\nnra\n\n// nrw : Minds + Machines GmbH\n// https://www.iana.org/domains/root/db/nrw.html\nnrw\n\n// ntt : NIPPON TELEGRAPH AND TELEPHONE CORPORATION\n// https://www.iana.org/domains/root/db/ntt.html\nntt\n\n// nyc : The City of New York by and through the New York City Department of Information Technology & Telecommunications\n// https://www.iana.org/domains/root/db/nyc.html\nnyc\n\n// obi : OBI Group Holding SE & Co. KGaA\n// https://www.iana.org/domains/root/db/obi.html\nobi\n\n// observer : Fegistry, LLC\n// https://www.iana.org/domains/root/db/observer.html\nobserver\n\n// office : Microsoft Corporation\n// https://www.iana.org/domains/root/db/office.html\noffice\n\n// okinawa : BRregistry, Inc.\n// https://www.iana.org/domains/root/db/okinawa.html\nokinawa\n\n// olayan : Competrol (Luxembourg) Sarl\n// https://www.iana.org/domains/root/db/olayan.html\nolayan\n\n// olayangroup : Competrol (Luxembourg) Sarl\n// https://www.iana.org/domains/root/db/olayangroup.html\nolayangroup\n\n// oldnavy : The Gap, Inc.\n// https://www.iana.org/domains/root/db/oldnavy.html\noldnavy\n\n// ollo : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/ollo.html\nollo\n\n// omega : The Swatch Group Ltd\n// https://www.iana.org/domains/root/db/omega.html\nomega\n\n// one : One.com A/S\n// https://www.iana.org/domains/root/db/one.html\none\n\n// ong : Public Interest Registry\n// https://www.iana.org/domains/root/db/ong.html\nong\n\n// onl : iRegistry GmbH\n// https://www.iana.org/domains/root/db/onl.html\nonl\n\n// online : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/online.html\nonline\n\n// ooo : INFIBEAM AVENUES LIMITED\n// https://www.iana.org/domains/root/db/ooo.html\nooo\n\n// open : American Express Travel Related Services Company, Inc.\n// https://www.iana.org/domains/root/db/open.html\nopen\n\n// oracle : Oracle Corporation\n// https://www.iana.org/domains/root/db/oracle.html\noracle\n\n// orange : Orange Brand Services Limited\n// https://www.iana.org/domains/root/db/orange.html\norange\n\n// organic : Identity Digital Limited\n// https://www.iana.org/domains/root/db/organic.html\norganic\n\n// origins : The Estée Lauder Companies Inc.\n// https://www.iana.org/domains/root/db/origins.html\norigins\n\n// osaka : Osaka Registry Co., Ltd.\n// https://www.iana.org/domains/root/db/osaka.html\nosaka\n\n// otsuka : Otsuka Holdings Co., Ltd.\n// https://www.iana.org/domains/root/db/otsuka.html\notsuka\n\n// ott : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/ott.html\nott\n\n// ovh : MédiaBC\n// https://www.iana.org/domains/root/db/ovh.html\novh\n\n// page : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/page.html\npage\n\n// panasonic : Panasonic Holdings Corporation\n// https://www.iana.org/domains/root/db/panasonic.html\npanasonic\n\n// paris : City of Paris\n// https://www.iana.org/domains/root/db/paris.html\nparis\n\n// pars : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.\n// https://www.iana.org/domains/root/db/pars.html\npars\n\n// partners : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/partners.html\npartners\n\n// parts : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/parts.html\nparts\n\n// party : Blue Sky Registry Limited\n// https://www.iana.org/domains/root/db/party.html\nparty\n\n// pay : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/pay.html\npay\n\n// pccw : PCCW Enterprises Limited\n// https://www.iana.org/domains/root/db/pccw.html\npccw\n\n// pet : Identity Digital Limited\n// https://www.iana.org/domains/root/db/pet.html\npet\n\n// pfizer : Pfizer Inc.\n// https://www.iana.org/domains/root/db/pfizer.html\npfizer\n\n// pharmacy : National Association of Boards of Pharmacy\n// https://www.iana.org/domains/root/db/pharmacy.html\npharmacy\n\n// phd : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/phd.html\nphd\n\n// philips : Koninklijke Philips N.V.\n// https://www.iana.org/domains/root/db/philips.html\nphilips\n\n// phone : Dish DBS Corporation\n// https://www.iana.org/domains/root/db/phone.html\nphone\n\n// photo : Registry Services, LLC\n// https://www.iana.org/domains/root/db/photo.html\nphoto\n\n// photography : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/photography.html\nphotography\n\n// photos : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/photos.html\nphotos\n\n// physio : PhysBiz Pty Ltd\n// https://www.iana.org/domains/root/db/physio.html\nphysio\n\n// pics : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/pics.html\npics\n\n// pictet : Pictet Europe S.A.\n// https://www.iana.org/domains/root/db/pictet.html\npictet\n\n// pictures : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/pictures.html\npictures\n\n// pid : Top Level Spectrum, Inc.\n// https://www.iana.org/domains/root/db/pid.html\npid\n\n// pin : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/pin.html\npin\n\n// ping : Ping Registry Provider, Inc.\n// https://www.iana.org/domains/root/db/ping.html\nping\n\n// pink : Identity Digital Limited\n// https://www.iana.org/domains/root/db/pink.html\npink\n\n// pioneer : Pioneer Corporation\n// https://www.iana.org/domains/root/db/pioneer.html\npioneer\n\n// pizza : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/pizza.html\npizza\n\n// place : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/place.html\nplace\n\n// play : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/play.html\nplay\n\n// playstation : Sony Interactive Entertainment Inc.\n// https://www.iana.org/domains/root/db/playstation.html\nplaystation\n\n// plumbing : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/plumbing.html\nplumbing\n\n// plus : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/plus.html\nplus\n\n// pnc : PNC Domain Co., LLC\n// https://www.iana.org/domains/root/db/pnc.html\npnc\n\n// pohl : Deutsche Vermögensberatung Aktiengesellschaft DVAG\n// https://www.iana.org/domains/root/db/pohl.html\npohl\n\n// poker : Identity Digital Limited\n// https://www.iana.org/domains/root/db/poker.html\npoker\n\n// politie : Politie Nederland\n// https://www.iana.org/domains/root/db/politie.html\npolitie\n\n// porn : ICM Registry PN LLC\n// https://www.iana.org/domains/root/db/porn.html\nporn\n\n// pramerica : Prudential Financial, Inc.\n// https://www.iana.org/domains/root/db/pramerica.html\npramerica\n\n// praxi : Praxi S.p.A.\n// https://www.iana.org/domains/root/db/praxi.html\npraxi\n\n// press : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/press.html\npress\n\n// prime : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/prime.html\nprime\n\n// prod : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/prod.html\nprod\n\n// productions : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/productions.html\nproductions\n\n// prof : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/prof.html\nprof\n\n// progressive : Progressive Casualty Insurance Company\n// https://www.iana.org/domains/root/db/progressive.html\nprogressive\n\n// promo : Identity Digital Limited\n// https://www.iana.org/domains/root/db/promo.html\npromo\n\n// properties : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/properties.html\nproperties\n\n// property : Digital Property Infrastructure Limited\n// https://www.iana.org/domains/root/db/property.html\nproperty\n\n// protection : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/protection.html\nprotection\n\n// pru : Prudential Financial, Inc.\n// https://www.iana.org/domains/root/db/pru.html\npru\n\n// prudential : Prudential Financial, Inc.\n// https://www.iana.org/domains/root/db/prudential.html\nprudential\n\n// pub : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/pub.html\npub\n\n// pwc : PricewaterhouseCoopers LLP\n// https://www.iana.org/domains/root/db/pwc.html\npwc\n\n// qpon : dotQPON LLC\n// https://www.iana.org/domains/root/db/qpon.html\nqpon\n\n// quebec : PointQuébec Inc\n// https://www.iana.org/domains/root/db/quebec.html\nquebec\n\n// quest : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/quest.html\nquest\n\n// racing : Premier Registry Limited\n// https://www.iana.org/domains/root/db/racing.html\nracing\n\n// radio : European Broadcasting Union (EBU)\n// https://www.iana.org/domains/root/db/radio.html\nradio\n\n// read : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/read.html\nread\n\n// realestate : dotRealEstate LLC\n// https://www.iana.org/domains/root/db/realestate.html\nrealestate\n\n// realtor : Real Estate Domains LLC\n// https://www.iana.org/domains/root/db/realtor.html\nrealtor\n\n// realty : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/realty.html\nrealty\n\n// recipes : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/recipes.html\nrecipes\n\n// red : Identity Digital Limited\n// https://www.iana.org/domains/root/db/red.html\nred\n\n// redstone : Redstone Haute Couture Co., Ltd.\n// https://www.iana.org/domains/root/db/redstone.html\nredstone\n\n// redumbrella : Travelers TLD, LLC\n// https://www.iana.org/domains/root/db/redumbrella.html\nredumbrella\n\n// rehab : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/rehab.html\nrehab\n\n// reise : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/reise.html\nreise\n\n// reisen : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/reisen.html\nreisen\n\n// reit : National Association of Real Estate Investment Trusts, Inc.\n// https://www.iana.org/domains/root/db/reit.html\nreit\n\n// reliance : Reliance Industries Limited\n// https://www.iana.org/domains/root/db/reliance.html\nreliance\n\n// ren : ZDNS International Limited\n// https://www.iana.org/domains/root/db/ren.html\nren\n\n// rent : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/rent.html\nrent\n\n// rentals : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/rentals.html\nrentals\n\n// repair : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/repair.html\nrepair\n\n// report : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/report.html\nreport\n\n// republican : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/republican.html\nrepublican\n\n// rest : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable\n// https://www.iana.org/domains/root/db/rest.html\nrest\n\n// restaurant : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/restaurant.html\nrestaurant\n\n// review : dot Review Limited\n// https://www.iana.org/domains/root/db/review.html\nreview\n\n// reviews : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/reviews.html\nreviews\n\n// rexroth : Robert Bosch GMBH\n// https://www.iana.org/domains/root/db/rexroth.html\nrexroth\n\n// rich : iRegistry GmbH\n// https://www.iana.org/domains/root/db/rich.html\nrich\n\n// richardli : Pacific Century Asset Management (HK) Limited\n// https://www.iana.org/domains/root/db/richardli.html\nrichardli\n\n// ricoh : Ricoh Company, Ltd.\n// https://www.iana.org/domains/root/db/ricoh.html\nricoh\n\n// ril : Reliance Industries Limited\n// https://www.iana.org/domains/root/db/ril.html\nril\n\n// rio : Empresa Municipal de Informática SA - IPLANRIO\n// https://www.iana.org/domains/root/db/rio.html\nrio\n\n// rip : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/rip.html\nrip\n\n// rocher : Ferrero Trading Lux S.A.\n// https://www.iana.org/domains/root/db/rocher.html\nrocher\n\n// rocks : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/rocks.html\nrocks\n\n// rodeo : Registry Services, LLC\n// https://www.iana.org/domains/root/db/rodeo.html\nrodeo\n\n// rogers : Rogers Communications Canada Inc.\n// https://www.iana.org/domains/root/db/rogers.html\nrogers\n\n// room : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/room.html\nroom\n\n// rsvp : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/rsvp.html\nrsvp\n\n// rugby : World Rugby Strategic Developments Limited\n// https://www.iana.org/domains/root/db/rugby.html\nrugby\n\n// ruhr : dotSaarland GmbH\n// https://www.iana.org/domains/root/db/ruhr.html\nruhr\n\n// run : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/run.html\nrun\n\n// rwe : RWE AG\n// https://www.iana.org/domains/root/db/rwe.html\nrwe\n\n// ryukyu : BRregistry, Inc.\n// https://www.iana.org/domains/root/db/ryukyu.html\nryukyu\n\n// saarland : dotSaarland GmbH\n// https://www.iana.org/domains/root/db/saarland.html\nsaarland\n\n// safe : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/safe.html\nsafe\n\n// safety : Safety Registry Services, LLC.\n// https://www.iana.org/domains/root/db/safety.html\nsafety\n\n// sakura : SAKURA Internet Inc.\n// https://www.iana.org/domains/root/db/sakura.html\nsakura\n\n// sale : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/sale.html\nsale\n\n// salon : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/salon.html\nsalon\n\n// samsclub : Wal-Mart Stores, Inc.\n// https://www.iana.org/domains/root/db/samsclub.html\nsamsclub\n\n// samsung : SAMSUNG SDS CO., LTD\n// https://www.iana.org/domains/root/db/samsung.html\nsamsung\n\n// sandvik : Sandvik AB\n// https://www.iana.org/domains/root/db/sandvik.html\nsandvik\n\n// sandvikcoromant : Sandvik AB\n// https://www.iana.org/domains/root/db/sandvikcoromant.html\nsandvikcoromant\n\n// sanofi : Sanofi\n// https://www.iana.org/domains/root/db/sanofi.html\nsanofi\n\n// sap : SAP AG\n// https://www.iana.org/domains/root/db/sap.html\nsap\n\n// sarl : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/sarl.html\nsarl\n\n// sas : Research IP LLC\n// https://www.iana.org/domains/root/db/sas.html\nsas\n\n// save : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/save.html\nsave\n\n// saxo : Saxo Bank A/S\n// https://www.iana.org/domains/root/db/saxo.html\nsaxo\n\n// sbi : STATE BANK OF INDIA\n// https://www.iana.org/domains/root/db/sbi.html\nsbi\n\n// sbs : ShortDot SA\n// https://www.iana.org/domains/root/db/sbs.html\nsbs\n\n// sca : SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)\n// https://www.iana.org/domains/root/db/sca.html\nsca\n\n// scb : The Siam Commercial Bank Public Company Limited ("SCB")\n// https://www.iana.org/domains/root/db/scb.html\nscb\n\n// schaeffler : Schaeffler Technologies AG & Co. KG\n// https://www.iana.org/domains/root/db/schaeffler.html\nschaeffler\n\n// schmidt : SCHMIDT GROUPE S.A.S.\n// https://www.iana.org/domains/root/db/schmidt.html\nschmidt\n\n// scholarships : Scholarships.com, LLC\n// https://www.iana.org/domains/root/db/scholarships.html\nscholarships\n\n// school : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/school.html\nschool\n\n// schule : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/schule.html\nschule\n\n// schwarz : Schwarz Domains und Services GmbH & Co. KG\n// https://www.iana.org/domains/root/db/schwarz.html\nschwarz\n\n// science : dot Science Limited\n// https://www.iana.org/domains/root/db/science.html\nscience\n\n// scot : Dot Scot Registry Limited\n// https://www.iana.org/domains/root/db/scot.html\nscot\n\n// search : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/search.html\nsearch\n\n// seat : SEAT, S.A. (Sociedad Unipersonal)\n// https://www.iana.org/domains/root/db/seat.html\nseat\n\n// secure : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/secure.html\nsecure\n\n// security : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/security.html\nsecurity\n\n// seek : Seek Limited\n// https://www.iana.org/domains/root/db/seek.html\nseek\n\n// select : Registry Services, LLC\n// https://www.iana.org/domains/root/db/select.html\nselect\n\n// sener : Sener Ingeniería y Sistemas, S.A.\n// https://www.iana.org/domains/root/db/sener.html\nsener\n\n// services : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/services.html\nservices\n\n// seven : Seven West Media Ltd\n// https://www.iana.org/domains/root/db/seven.html\nseven\n\n// sew : SEW-EURODRIVE GmbH & Co KG\n// https://www.iana.org/domains/root/db/sew.html\nsew\n\n// sex : ICM Registry SX LLC\n// https://www.iana.org/domains/root/db/sex.html\nsex\n\n// sexy : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/sexy.html\nsexy\n\n// sfr : Societe Francaise du Radiotelephone - SFR\n// https://www.iana.org/domains/root/db/sfr.html\nsfr\n\n// shangrila : Shangri‐La International Hotel Management Limited\n// https://www.iana.org/domains/root/db/shangrila.html\nshangrila\n\n// sharp : Sharp Corporation\n// https://www.iana.org/domains/root/db/sharp.html\nsharp\n\n// shaw : Shaw Cablesystems G.P.\n// https://www.iana.org/domains/root/db/shaw.html\nshaw\n\n// shell : Shell Information Technology International Inc\n// https://www.iana.org/domains/root/db/shell.html\nshell\n\n// shia : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.\n// https://www.iana.org/domains/root/db/shia.html\nshia\n\n// shiksha : Identity Digital Limited\n// https://www.iana.org/domains/root/db/shiksha.html\nshiksha\n\n// shoes : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/shoes.html\nshoes\n\n// shop : GMO Registry, Inc.\n// https://www.iana.org/domains/root/db/shop.html\nshop\n\n// shopping : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/shopping.html\nshopping\n\n// shouji : Beijing Qihu Keji Co., Ltd.\n// https://www.iana.org/domains/root/db/shouji.html\nshouji\n\n// show : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/show.html\nshow\n\n// showtime : CBS Domains Inc.\n// https://www.iana.org/domains/root/db/showtime.html\nshowtime\n\n// silk : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/silk.html\nsilk\n\n// sina : Sina Corporation\n// https://www.iana.org/domains/root/db/sina.html\nsina\n\n// singles : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/singles.html\nsingles\n\n// site : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/site.html\nsite\n\n// ski : Identity Digital Limited\n// https://www.iana.org/domains/root/db/ski.html\nski\n\n// skin : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/skin.html\nskin\n\n// sky : Sky International AG\n// https://www.iana.org/domains/root/db/sky.html\nsky\n\n// skype : Microsoft Corporation\n// https://www.iana.org/domains/root/db/skype.html\nskype\n\n// sling : DISH Technologies L.L.C.\n// https://www.iana.org/domains/root/db/sling.html\nsling\n\n// smart : Smart Communications, Inc. (SMART)\n// https://www.iana.org/domains/root/db/smart.html\nsmart\n\n// smile : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/smile.html\nsmile\n\n// sncf : Société Nationale SNCF\n// https://www.iana.org/domains/root/db/sncf.html\nsncf\n\n// soccer : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/soccer.html\nsoccer\n\n// social : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/social.html\nsocial\n\n// softbank : SoftBank Group Corp.\n// https://www.iana.org/domains/root/db/softbank.html\nsoftbank\n\n// software : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/software.html\nsoftware\n\n// sohu : Sohu.com Limited\n// https://www.iana.org/domains/root/db/sohu.html\nsohu\n\n// solar : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/solar.html\nsolar\n\n// solutions : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/solutions.html\nsolutions\n\n// song : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/song.html\nsong\n\n// sony : Sony Corporation\n// https://www.iana.org/domains/root/db/sony.html\nsony\n\n// soy : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/soy.html\nsoy\n\n// spa : Asia Spa and Wellness Promotion Council Limited\n// https://www.iana.org/domains/root/db/spa.html\nspa\n\n// space : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/space.html\nspace\n\n// sport : SportAccord\n// https://www.iana.org/domains/root/db/sport.html\nsport\n\n// spot : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/spot.html\nspot\n\n// srl : InterNetX, Corp\n// https://www.iana.org/domains/root/db/srl.html\nsrl\n\n// stada : STADA Arzneimittel AG\n// https://www.iana.org/domains/root/db/stada.html\nstada\n\n// staples : Staples, Inc.\n// https://www.iana.org/domains/root/db/staples.html\nstaples\n\n// star : Star India Private Limited\n// https://www.iana.org/domains/root/db/star.html\nstar\n\n// statebank : STATE BANK OF INDIA\n// https://www.iana.org/domains/root/db/statebank.html\nstatebank\n\n// statefarm : State Farm Mutual Automobile Insurance Company\n// https://www.iana.org/domains/root/db/statefarm.html\nstatefarm\n\n// stc : Saudi Telecom Company\n// https://www.iana.org/domains/root/db/stc.html\nstc\n\n// stcgroup : Saudi Telecom Company\n// https://www.iana.org/domains/root/db/stcgroup.html\nstcgroup\n\n// stockholm : Stockholms kommun\n// https://www.iana.org/domains/root/db/stockholm.html\nstockholm\n\n// storage : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/storage.html\nstorage\n\n// store : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/store.html\nstore\n\n// stream : dot Stream Limited\n// https://www.iana.org/domains/root/db/stream.html\nstream\n\n// studio : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/studio.html\nstudio\n\n// study : Registry Services, LLC\n// https://www.iana.org/domains/root/db/study.html\nstudy\n\n// style : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/style.html\nstyle\n\n// sucks : Vox Populi Registry Ltd.\n// https://www.iana.org/domains/root/db/sucks.html\nsucks\n\n// supplies : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/supplies.html\nsupplies\n\n// supply : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/supply.html\nsupply\n\n// support : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/support.html\nsupport\n\n// surf : Registry Services, LLC\n// https://www.iana.org/domains/root/db/surf.html\nsurf\n\n// surgery : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/surgery.html\nsurgery\n\n// suzuki : SUZUKI MOTOR CORPORATION\n// https://www.iana.org/domains/root/db/suzuki.html\nsuzuki\n\n// swatch : The Swatch Group Ltd\n// https://www.iana.org/domains/root/db/swatch.html\nswatch\n\n// swiss : Swiss Confederation\n// https://www.iana.org/domains/root/db/swiss.html\nswiss\n\n// sydney : State of New South Wales, Department of Premier and Cabinet\n// https://www.iana.org/domains/root/db/sydney.html\nsydney\n\n// systems : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/systems.html\nsystems\n\n// tab : Tabcorp Holdings Limited\n// https://www.iana.org/domains/root/db/tab.html\ntab\n\n// taipei : Taipei City Government\n// https://www.iana.org/domains/root/db/taipei.html\ntaipei\n\n// talk : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/talk.html\ntalk\n\n// taobao : Alibaba Group Holding Limited\n// https://www.iana.org/domains/root/db/taobao.html\ntaobao\n\n// target : Target Domain Holdings, LLC\n// https://www.iana.org/domains/root/db/target.html\ntarget\n\n// tatamotors : Tata Motors Ltd\n// https://www.iana.org/domains/root/db/tatamotors.html\ntatamotors\n\n// tatar : Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"\n// https://www.iana.org/domains/root/db/tatar.html\ntatar\n\n// tattoo : Registry Services, LLC\n// https://www.iana.org/domains/root/db/tattoo.html\ntattoo\n\n// tax : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tax.html\ntax\n\n// taxi : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/taxi.html\ntaxi\n\n// tci : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.\n// https://www.iana.org/domains/root/db/tci.html\ntci\n\n// tdk : TDK Corporation\n// https://www.iana.org/domains/root/db/tdk.html\ntdk\n\n// team : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/team.html\nteam\n\n// tech : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/tech.html\ntech\n\n// technology : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/technology.html\ntechnology\n\n// temasek : Temasek Holdings (Private) Limited\n// https://www.iana.org/domains/root/db/temasek.html\ntemasek\n\n// tennis : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tennis.html\ntennis\n\n// teva : Teva Pharmaceutical Industries Limited\n// https://www.iana.org/domains/root/db/teva.html\nteva\n\n// thd : Home Depot Product Authority, LLC\n// https://www.iana.org/domains/root/db/thd.html\nthd\n\n// theater : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/theater.html\ntheater\n\n// theatre : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/theatre.html\ntheatre\n\n// tiaa : Teachers Insurance and Annuity Association of America\n// https://www.iana.org/domains/root/db/tiaa.html\ntiaa\n\n// tickets : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/tickets.html\ntickets\n\n// tienda : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tienda.html\ntienda\n\n// tips : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tips.html\ntips\n\n// tires : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tires.html\ntires\n\n// tirol : punkt Tirol GmbH\n// https://www.iana.org/domains/root/db/tirol.html\ntirol\n\n// tjmaxx : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/tjmaxx.html\ntjmaxx\n\n// tjx : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/tjx.html\ntjx\n\n// tkmaxx : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/tkmaxx.html\ntkmaxx\n\n// tmall : Alibaba Group Holding Limited\n// https://www.iana.org/domains/root/db/tmall.html\ntmall\n\n// today : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/today.html\ntoday\n\n// tokyo : GMO Registry, Inc.\n// https://www.iana.org/domains/root/db/tokyo.html\ntokyo\n\n// tools : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tools.html\ntools\n\n// top : .TOP Registry\n// https://www.iana.org/domains/root/db/top.html\ntop\n\n// toray : Toray Industries, Inc.\n// https://www.iana.org/domains/root/db/toray.html\ntoray\n\n// toshiba : TOSHIBA Corporation\n// https://www.iana.org/domains/root/db/toshiba.html\ntoshiba\n\n// total : TotalEnergies SE\n// https://www.iana.org/domains/root/db/total.html\ntotal\n\n// tours : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/tours.html\ntours\n\n// town : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/town.html\ntown\n\n// toyota : TOYOTA MOTOR CORPORATION\n// https://www.iana.org/domains/root/db/toyota.html\ntoyota\n\n// toys : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/toys.html\ntoys\n\n// trade : Elite Registry Limited\n// https://www.iana.org/domains/root/db/trade.html\ntrade\n\n// trading : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/trading.html\ntrading\n\n// training : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/training.html\ntraining\n\n// travel : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/travel.html\ntravel\n\n// travelers : Travelers TLD, LLC\n// https://www.iana.org/domains/root/db/travelers.html\ntravelers\n\n// travelersinsurance : Travelers TLD, LLC\n// https://www.iana.org/domains/root/db/travelersinsurance.html\ntravelersinsurance\n\n// trust : Internet Naming Company LLC\n// https://www.iana.org/domains/root/db/trust.html\ntrust\n\n// trv : Travelers TLD, LLC\n// https://www.iana.org/domains/root/db/trv.html\ntrv\n\n// tube : Latin American Telecom LLC\n// https://www.iana.org/domains/root/db/tube.html\ntube\n\n// tui : TUI AG\n// https://www.iana.org/domains/root/db/tui.html\ntui\n\n// tunes : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/tunes.html\ntunes\n\n// tushu : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/tushu.html\ntushu\n\n// tvs : T V SUNDRAM IYENGAR & SONS LIMITED\n// https://www.iana.org/domains/root/db/tvs.html\ntvs\n\n// ubank : National Australia Bank Limited\n// https://www.iana.org/domains/root/db/ubank.html\nubank\n\n// ubs : UBS AG\n// https://www.iana.org/domains/root/db/ubs.html\nubs\n\n// unicom : China United Network Communications Corporation Limited\n// https://www.iana.org/domains/root/db/unicom.html\nunicom\n\n// university : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/university.html\nuniversity\n\n// uno : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/uno.html\nuno\n\n// uol : UBN INTERNET LTDA.\n// https://www.iana.org/domains/root/db/uol.html\nuol\n\n// ups : UPS Market Driver, Inc.\n// https://www.iana.org/domains/root/db/ups.html\nups\n\n// vacations : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/vacations.html\nvacations\n\n// vana : Lifestyle Domain Holdings, Inc.\n// https://www.iana.org/domains/root/db/vana.html\nvana\n\n// vanguard : The Vanguard Group, Inc.\n// https://www.iana.org/domains/root/db/vanguard.html\nvanguard\n\n// vegas : Dot Vegas, Inc.\n// https://www.iana.org/domains/root/db/vegas.html\nvegas\n\n// ventures : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/ventures.html\nventures\n\n// verisign : VeriSign, Inc.\n// https://www.iana.org/domains/root/db/verisign.html\nverisign\n\n// versicherung : tldbox GmbH\n// https://www.iana.org/domains/root/db/versicherung.html\nversicherung\n\n// vet : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/vet.html\nvet\n\n// viajes : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/viajes.html\nviajes\n\n// video : Dog Beach, LLC\n// https://www.iana.org/domains/root/db/video.html\nvideo\n\n// vig : VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe\n// https://www.iana.org/domains/root/db/vig.html\nvig\n\n// viking : Viking River Cruises (Bermuda) Ltd.\n// https://www.iana.org/domains/root/db/viking.html\nviking\n\n// villas : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/villas.html\nvillas\n\n// vin : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/vin.html\nvin\n\n// vip : Registry Services, LLC\n// https://www.iana.org/domains/root/db/vip.html\nvip\n\n// virgin : Virgin Enterprises Limited\n// https://www.iana.org/domains/root/db/virgin.html\nvirgin\n\n// visa : Visa Worldwide Pte. Limited\n// https://www.iana.org/domains/root/db/visa.html\nvisa\n\n// vision : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/vision.html\nvision\n\n// viva : Saudi Telecom Company\n// https://www.iana.org/domains/root/db/viva.html\nviva\n\n// vivo : Telefonica Brasil S.A.\n// https://www.iana.org/domains/root/db/vivo.html\nvivo\n\n// vlaanderen : DNS.be vzw\n// https://www.iana.org/domains/root/db/vlaanderen.html\nvlaanderen\n\n// vodka : Registry Services, LLC\n// https://www.iana.org/domains/root/db/vodka.html\nvodka\n\n// volkswagen : Volkswagen Group of America Inc.\n// https://www.iana.org/domains/root/db/volkswagen.html\nvolkswagen\n\n// volvo : Volvo Holding Sverige Aktiebolag\n// https://www.iana.org/domains/root/db/volvo.html\nvolvo\n\n// vote : Monolith Registry LLC\n// https://www.iana.org/domains/root/db/vote.html\nvote\n\n// voting : Valuetainment Corp.\n// https://www.iana.org/domains/root/db/voting.html\nvoting\n\n// voto : Monolith Registry LLC\n// https://www.iana.org/domains/root/db/voto.html\nvoto\n\n// voyage : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/voyage.html\nvoyage\n\n// wales : Nominet UK\n// https://www.iana.org/domains/root/db/wales.html\nwales\n\n// walmart : Wal-Mart Stores, Inc.\n// https://www.iana.org/domains/root/db/walmart.html\nwalmart\n\n// walter : Sandvik AB\n// https://www.iana.org/domains/root/db/walter.html\nwalter\n\n// wang : Zodiac Wang Limited\n// https://www.iana.org/domains/root/db/wang.html\nwang\n\n// wanggou : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/wanggou.html\nwanggou\n\n// watch : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/watch.html\nwatch\n\n// watches : Identity Digital Limited\n// https://www.iana.org/domains/root/db/watches.html\nwatches\n\n// weather : International Business Machines Corporation\n// https://www.iana.org/domains/root/db/weather.html\nweather\n\n// weatherchannel : International Business Machines Corporation\n// https://www.iana.org/domains/root/db/weatherchannel.html\nweatherchannel\n\n// webcam : dot Webcam Limited\n// https://www.iana.org/domains/root/db/webcam.html\nwebcam\n\n// weber : Saint-Gobain Weber SA\n// https://www.iana.org/domains/root/db/weber.html\nweber\n\n// website : Radix FZC DMCC\n// https://www.iana.org/domains/root/db/website.html\nwebsite\n\n// wedding : Registry Services, LLC\n// https://www.iana.org/domains/root/db/wedding.html\nwedding\n\n// weibo : Sina Corporation\n// https://www.iana.org/domains/root/db/weibo.html\nweibo\n\n// weir : Weir Group IP Limited\n// https://www.iana.org/domains/root/db/weir.html\nweir\n\n// whoswho : Who\'s Who Registry\n// https://www.iana.org/domains/root/db/whoswho.html\nwhoswho\n\n// wien : punkt.wien GmbH\n// https://www.iana.org/domains/root/db/wien.html\nwien\n\n// wiki : Registry Services, LLC\n// https://www.iana.org/domains/root/db/wiki.html\nwiki\n\n// williamhill : William Hill Organization Limited\n// https://www.iana.org/domains/root/db/williamhill.html\nwilliamhill\n\n// win : First Registry Limited\n// https://www.iana.org/domains/root/db/win.html\nwin\n\n// windows : Microsoft Corporation\n// https://www.iana.org/domains/root/db/windows.html\nwindows\n\n// wine : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/wine.html\nwine\n\n// winners : The TJX Companies, Inc.\n// https://www.iana.org/domains/root/db/winners.html\nwinners\n\n// wme : William Morris Endeavor Entertainment, LLC\n// https://www.iana.org/domains/root/db/wme.html\nwme\n\n// wolterskluwer : Wolters Kluwer N.V.\n// https://www.iana.org/domains/root/db/wolterskluwer.html\nwolterskluwer\n\n// woodside : Woodside Petroleum Limited\n// https://www.iana.org/domains/root/db/woodside.html\nwoodside\n\n// work : Registry Services, LLC\n// https://www.iana.org/domains/root/db/work.html\nwork\n\n// works : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/works.html\nworks\n\n// world : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/world.html\nworld\n\n// wow : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/wow.html\nwow\n\n// wtc : World Trade Centers Association, Inc.\n// https://www.iana.org/domains/root/db/wtc.html\nwtc\n\n// wtf : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/wtf.html\nwtf\n\n// xbox : Microsoft Corporation\n// https://www.iana.org/domains/root/db/xbox.html\nxbox\n\n// xerox : Xerox DNHC LLC\n// https://www.iana.org/domains/root/db/xerox.html\nxerox\n\n// xfinity : Comcast IP Holdings I, LLC\n// https://www.iana.org/domains/root/db/xfinity.html\nxfinity\n\n// xihuan : Beijing Qihu Keji Co., Ltd.\n// https://www.iana.org/domains/root/db/xihuan.html\nxihuan\n\n// xin : Elegant Leader Limited\n// https://www.iana.org/domains/root/db/xin.html\nxin\n\n// xn--11b4c3d : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--11b4c3d.html\nकॉम\n\n// xn--1ck2e1b : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--1ck2e1b.html\nセール\n\n// xn--1qqw23a : Guangzhou YU Wei Information Technology Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--1qqw23a.html\n佛山\n\n// xn--30rr7y : Excellent First Limited\n// https://www.iana.org/domains/root/db/xn--30rr7y.html\n慈善\n\n// xn--3bst00m : Eagle Horizon Limited\n// https://www.iana.org/domains/root/db/xn--3bst00m.html\n集团\n\n// xn--3ds443g : TLD REGISTRY LIMITED OY\n// https://www.iana.org/domains/root/db/xn--3ds443g.html\n在线\n\n// xn--3pxu8k : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--3pxu8k.html\n点看\n\n// xn--42c2d9a : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--42c2d9a.html\nคอม\n\n// xn--45q11c : Zodiac Gemini Ltd\n// https://www.iana.org/domains/root/db/xn--45q11c.html\n八卦\n\n// xn--4gbrim : Helium TLDs Ltd\n// https://www.iana.org/domains/root/db/xn--4gbrim.html\nموقع\n\n// xn--55qw42g : China Organizational Name Administration Center\n// https://www.iana.org/domains/root/db/xn--55qw42g.html\n公益\n\n// xn--55qx5d : China Internet Network Information Center (CNNIC)\n// https://www.iana.org/domains/root/db/xn--55qx5d.html\n公司\n\n// xn--5su34j936bgsg : Shangri‐La International Hotel Management Limited\n// https://www.iana.org/domains/root/db/xn--5su34j936bgsg.html\n香格里拉\n\n// xn--5tzm5g : Global Website TLD Asia Limited\n// https://www.iana.org/domains/root/db/xn--5tzm5g.html\n网站\n\n// xn--6frz82g : Identity Digital Limited\n// https://www.iana.org/domains/root/db/xn--6frz82g.html\n移动\n\n// xn--6qq986b3xl : Tycoon Treasure Limited\n// https://www.iana.org/domains/root/db/xn--6qq986b3xl.html\n我爱你\n\n// xn--80adxhks : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)\n// https://www.iana.org/domains/root/db/xn--80adxhks.html\nмосква\n\n// xn--80aqecdr1a : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)\n// https://www.iana.org/domains/root/db/xn--80aqecdr1a.html\nкатолик\n\n// xn--80asehdb : CORE Association\n// https://www.iana.org/domains/root/db/xn--80asehdb.html\nонлайн\n\n// xn--80aswg : CORE Association\n// https://www.iana.org/domains/root/db/xn--80aswg.html\nсайт\n\n// xn--8y0a063a : China United Network Communications Corporation Limited\n// https://www.iana.org/domains/root/db/xn--8y0a063a.html\n联通\n\n// xn--9dbq2a : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--9dbq2a.html\nקום\n\n// xn--9et52u : RISE VICTORY LIMITED\n// https://www.iana.org/domains/root/db/xn--9et52u.html\n时尚\n\n// xn--9krt00a : Sina Corporation\n// https://www.iana.org/domains/root/db/xn--9krt00a.html\n微博\n\n// xn--b4w605ferd : Temasek Holdings (Private) Limited\n// https://www.iana.org/domains/root/db/xn--b4w605ferd.html\n淡马锡\n\n// xn--bck1b9a5dre4c : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--bck1b9a5dre4c.html\nファッション\n\n// xn--c1avg : Public Interest Registry\n// https://www.iana.org/domains/root/db/xn--c1avg.html\nорг\n\n// xn--c2br7g : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--c2br7g.html\nनेट\n\n// xn--cck2b3b : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--cck2b3b.html\nストア\n\n// xn--cckwcxetd : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--cckwcxetd.html\nアマゾン\n\n// xn--cg4bki : SAMSUNG SDS CO., LTD\n// https://www.iana.org/domains/root/db/xn--cg4bki.html\n삼성\n\n// xn--czr694b : Internet DotTrademark Organisation Limited\n// https://www.iana.org/domains/root/db/xn--czr694b.html\n商标\n\n// xn--czrs0t : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/xn--czrs0t.html\n商店\n\n// xn--czru2d : Zodiac Aquarius Limited\n// https://www.iana.org/domains/root/db/xn--czru2d.html\n商城\n\n// xn--d1acj3b : The Foundation for Network Initiatives “The Smart Internet”\n// https://www.iana.org/domains/root/db/xn--d1acj3b.html\nдети\n\n// xn--eckvdtc9d : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--eckvdtc9d.html\nポイント\n\n// xn--efvy88h : Guangzhou YU Wei Information Technology Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--efvy88h.html\n新闻\n\n// xn--fct429k : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--fct429k.html\n家電\n\n// xn--fhbei : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--fhbei.html\nكوم\n\n// xn--fiq228c5hs : TLD REGISTRY LIMITED OY\n// https://www.iana.org/domains/root/db/xn--fiq228c5hs.html\n中文网\n\n// xn--fiq64b : CITIC Group Corporation\n// https://www.iana.org/domains/root/db/xn--fiq64b.html\n中信\n\n// xn--fjq720a : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/xn--fjq720a.html\n娱乐\n\n// xn--flw351e : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/xn--flw351e.html\n谷歌\n\n// xn--fzys8d69uvgm : PCCW Enterprises Limited\n// https://www.iana.org/domains/root/db/xn--fzys8d69uvgm.html\n電訊盈科\n\n// xn--g2xx48c : Nawang Heli(Xiamen) Network Service Co., LTD.\n// https://www.iana.org/domains/root/db/xn--g2xx48c.html\n购物\n\n// xn--gckr3f0f : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--gckr3f0f.html\nクラウド\n\n// xn--gk3at1e : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--gk3at1e.html\n通販\n\n// xn--hxt814e : Zodiac Taurus Limited\n// https://www.iana.org/domains/root/db/xn--hxt814e.html\n网店\n\n// xn--i1b6b1a6a2e : Public Interest Registry\n// https://www.iana.org/domains/root/db/xn--i1b6b1a6a2e.html\nसंगठन\n\n// xn--imr513n : Internet DotTrademark Organisation Limited\n// https://www.iana.org/domains/root/db/xn--imr513n.html\n餐厅\n\n// xn--io0a7i : China Internet Network Information Center (CNNIC)\n// https://www.iana.org/domains/root/db/xn--io0a7i.html\n网络\n\n// xn--j1aef : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--j1aef.html\nком\n\n// xn--jlq480n2rg : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--jlq480n2rg.html\n亚马逊\n\n// xn--jvr189m : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--jvr189m.html\n食品\n\n// xn--kcrx77d1x4a : Koninklijke Philips N.V.\n// https://www.iana.org/domains/root/db/xn--kcrx77d1x4a.html\n飞利浦\n\n// xn--kput3i : Beijing RITT-Net Technology Development Co., Ltd\n// https://www.iana.org/domains/root/db/xn--kput3i.html\n手机\n\n// xn--mgba3a3ejt : Aramco Services Company\n// https://www.iana.org/domains/root/db/xn--mgba3a3ejt.html\nارامكو\n\n// xn--mgba7c0bbn0a : Competrol (Luxembourg) Sarl\n// https://www.iana.org/domains/root/db/xn--mgba7c0bbn0a.html\nالعليان\n\n// xn--mgbaakc7dvf : Emirates Telecommunications Corporation (trading as Etisalat)\n// https://www.iana.org/domains/root/db/xn--mgbaakc7dvf.html\nاتصالات\n\n// xn--mgbab2bd : CORE Association\n// https://www.iana.org/domains/root/db/xn--mgbab2bd.html\nبازار\n\n// xn--mgbca7dzdo : Abu Dhabi Systems and Information Centre\n// https://www.iana.org/domains/root/db/xn--mgbca7dzdo.html\nابوظبي\n\n// xn--mgbi4ecexp : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)\n// https://www.iana.org/domains/root/db/xn--mgbi4ecexp.html\nكاثوليك\n\n// xn--mgbt3dhd : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.\n// https://www.iana.org/domains/root/db/xn--mgbt3dhd.html\nهمراه\n\n// xn--mk1bu44c : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--mk1bu44c.html\n닷컴\n\n// xn--mxtq1m : Net-Chinese Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--mxtq1m.html\n政府\n\n// xn--ngbc5azd : International Domain Registry Pty. Ltd.\n// https://www.iana.org/domains/root/db/xn--ngbc5azd.html\nشبكة\n\n// xn--ngbe9e0a : Kuwait Finance House\n// https://www.iana.org/domains/root/db/xn--ngbe9e0a.html\nبيتك\n\n// xn--ngbrx : League of Arab States\n// https://www.iana.org/domains/root/db/xn--ngbrx.html\nعرب\n\n// xn--nqv7f : Public Interest Registry\n// https://www.iana.org/domains/root/db/xn--nqv7f.html\n机构\n\n// xn--nqv7fs00ema : Public Interest Registry\n// https://www.iana.org/domains/root/db/xn--nqv7fs00ema.html\n组织机构\n\n// xn--nyqy26a : Stable Tone Limited\n// https://www.iana.org/domains/root/db/xn--nyqy26a.html\n健康\n\n// xn--otu796d : Jiang Yu Liang Cai Technology Company Limited\n// https://www.iana.org/domains/root/db/xn--otu796d.html\n招聘\n\n// xn--p1acf : Rusnames Limited\n// https://www.iana.org/domains/root/db/xn--p1acf.html\nрус\n\n// xn--pssy2u : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--pssy2u.html\n大拿\n\n// xn--q9jyb4c : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/xn--q9jyb4c.html\nみんな\n\n// xn--qcka1pmc : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/xn--qcka1pmc.html\nグーグル\n\n// xn--rhqv96g : Stable Tone Limited\n// https://www.iana.org/domains/root/db/xn--rhqv96g.html\n世界\n\n// xn--rovu88b : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/xn--rovu88b.html\n書籍\n\n// xn--ses554g : KNET Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--ses554g.html\n网址\n\n// xn--t60b56a : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--t60b56a.html\n닷넷\n\n// xn--tckwe : VeriSign Sarl\n// https://www.iana.org/domains/root/db/xn--tckwe.html\nコム\n\n// xn--tiq49xqyj : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)\n// https://www.iana.org/domains/root/db/xn--tiq49xqyj.html\n天主教\n\n// xn--unup4y : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/xn--unup4y.html\n游戏\n\n// xn--vermgensberater-ctb : Deutsche Vermögensberatung Aktiengesellschaft DVAG\n// https://www.iana.org/domains/root/db/xn--vermgensberater-ctb.html\nvermögensberater\n\n// xn--vermgensberatung-pwb : Deutsche Vermögensberatung Aktiengesellschaft DVAG\n// https://www.iana.org/domains/root/db/xn--vermgensberatung-pwb.html\nvermögensberatung\n\n// xn--vhquv : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/xn--vhquv.html\n企业\n\n// xn--vuq861b : Beijing Tele-info Technology Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--vuq861b.html\n信息\n\n// xn--w4r85el8fhu5dnra : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/xn--w4r85el8fhu5dnra.html\n嘉里大酒店\n\n// xn--w4rs40l : Kerry Trading Co. Limited\n// https://www.iana.org/domains/root/db/xn--w4rs40l.html\n嘉里\n\n// xn--xhq521b : Guangzhou YU Wei Information Technology Co., Ltd.\n// https://www.iana.org/domains/root/db/xn--xhq521b.html\n广东\n\n// xn--zfr164b : China Organizational Name Administration Center\n// https://www.iana.org/domains/root/db/xn--zfr164b.html\n政务\n\n// xyz : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/xyz.html\nxyz\n\n// yachts : XYZ.COM LLC\n// https://www.iana.org/domains/root/db/yachts.html\nyachts\n\n// yahoo : Oath Inc.\n// https://www.iana.org/domains/root/db/yahoo.html\nyahoo\n\n// yamaxun : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/yamaxun.html\nyamaxun\n\n// yandex : Yandex Europe B.V.\n// https://www.iana.org/domains/root/db/yandex.html\nyandex\n\n// yodobashi : YODOBASHI CAMERA CO.,LTD.\n// https://www.iana.org/domains/root/db/yodobashi.html\nyodobashi\n\n// yoga : Registry Services, LLC\n// https://www.iana.org/domains/root/db/yoga.html\nyoga\n\n// yokohama : GMO Registry, Inc.\n// https://www.iana.org/domains/root/db/yokohama.html\nyokohama\n\n// you : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/you.html\nyou\n\n// youtube : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/youtube.html\nyoutube\n\n// yun : Beijing Qihu Keji Co., Ltd.\n// https://www.iana.org/domains/root/db/yun.html\nyun\n\n// zappos : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/zappos.html\nzappos\n\n// zara : Industria de Diseño Textil, S.A. (INDITEX, S.A.)\n// https://www.iana.org/domains/root/db/zara.html\nzara\n\n// zero : Amazon Registry Services, Inc.\n// https://www.iana.org/domains/root/db/zero.html\nzero\n\n// zip : Charleston Road Registry Inc.\n// https://www.iana.org/domains/root/db/zip.html\nzip\n\n// zone : Binky Moon, LLC\n// https://www.iana.org/domains/root/db/zone.html\nzone\n\n// zuerich : Kanton Zürich (Canton of Zurich)\n// https://www.iana.org/domains/root/db/zuerich.html\nzuerich\n\n\n// ===END ICANN DOMAINS===\n// ===BEGIN PRIVATE DOMAINS===\n// (Note: these are in alphabetical order by company name)\n\n// 1GB LLC : https://www.1gb.ua/\n// Submitted by 1GB LLC \ncc.ua\ninf.ua\nltd.ua\n\n// 611coin : https://611project.org/\n611.to\n\n// Aaron Marais\' Gitlab pages: https://lab.aaronleem.co.za\n// Submitted by Aaron Marais \ngraphox.us\n\n// accesso Technology Group, plc. : https://accesso.com/\n// Submitted by accesso Team \n*.devcdnaccesso.com\n\n// Acorn Labs : https://acorn.io\n// Submitted by Craig Jellick \n*.on-acorn.io\n\n// ActiveTrail: https://www.activetrail.biz/\n// Submitted by Ofer Kalaora \nactivetrail.biz\n\n// Adobe : https://www.adobe.com/\n// Submitted by Ian Boston and Lars Trieloff \nadobeaemcloud.com\n*.dev.adobeaemcloud.com\nhlx.live\nadobeaemcloud.net\nhlx.page\nhlx3.page\n\n// Adobe Developer Platform : https://developer.adobe.com\n// Submitted by Jesse MacFadyen\nadobeio-static.net\nadobeioruntime.net\n\n// Agnat sp. z o.o. : https://domena.pl\n// Submitted by Przemyslaw Plewa \nbeep.pl\n\n// Airkit : https://www.airkit.com/\n// Submitted by Grant Cooksey \nairkitapps.com\nairkitapps-au.com\nairkitapps.eu\n\n// Aiven: https://aiven.io/\n// Submitted by Etienne Stalmans \naivencloud.com\n\n// Akamai : https://www.akamai.com/\n// Submitted by Akamai Team \nakadns.net\nakamai.net\nakamai-staging.net\nakamaiedge.net\nakamaiedge-staging.net\nakamaihd.net\nakamaihd-staging.net\nakamaiorigin.net\nakamaiorigin-staging.net\nakamaized.net\nakamaized-staging.net\nedgekey.net\nedgekey-staging.net\nedgesuite.net\nedgesuite-staging.net\n\n// alboto.ca : http://alboto.ca\n// Submitted by Anton Avramov \nbarsy.ca\n\n// Alces Software Ltd : http://alces-software.com\n// Submitted by Mark J. Titorenko \n*.compute.estate\n*.alces.network\n\n// all-inkl.com : https://all-inkl.com\n// Submitted by Werner Kaltofen \nkasserver.com\n\n// Altervista: https://www.altervista.org\n// Submitted by Carlo Cannas \naltervista.org\n\n// alwaysdata : https://www.alwaysdata.com\n// Submitted by Cyril \nalwaysdata.net\n\n// Amaze Software : https://amaze.co\n// Submitted by Domain Admin \nmyamaze.net\n\n// Amazon : https://www.amazon.com/\n// Submitted by AWS Security \n// Subsections of Amazon/subsidiaries will appear until "concludes" tag\n\n// Amazon CloudFront\n// Submitted by Donavan Miller \n// Reference: 54144616-fd49-4435-8535-19c6a601bdb3\ncloudfront.net\n\n// Amazon EC2\n// Submitted by Luke Wells \n// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537\n*.compute.amazonaws.com\n*.compute-1.amazonaws.com\n*.compute.amazonaws.com.cn\nus-east-1.amazonaws.com\n\n// Amazon S3\n// Submitted by Luke Wells \n// Reference: d068bd97-f0a9-4838-a6d8-954b622ef4ae\ns3.cn-north-1.amazonaws.com.cn\ns3.dualstack.ap-northeast-1.amazonaws.com\ns3.dualstack.ap-northeast-2.amazonaws.com\ns3.ap-northeast-2.amazonaws.com\ns3-website.ap-northeast-2.amazonaws.com\ns3.dualstack.ap-south-1.amazonaws.com\ns3.ap-south-1.amazonaws.com\ns3-website.ap-south-1.amazonaws.com\ns3.dualstack.ap-southeast-1.amazonaws.com\ns3.dualstack.ap-southeast-2.amazonaws.com\ns3.dualstack.ca-central-1.amazonaws.com\ns3.ca-central-1.amazonaws.com\ns3-website.ca-central-1.amazonaws.com\ns3.dualstack.eu-central-1.amazonaws.com\ns3.eu-central-1.amazonaws.com\ns3-website.eu-central-1.amazonaws.com\ns3.dualstack.eu-west-1.amazonaws.com\ns3.dualstack.eu-west-2.amazonaws.com\ns3.eu-west-2.amazonaws.com\ns3-website.eu-west-2.amazonaws.com\ns3.dualstack.eu-west-3.amazonaws.com\ns3.eu-west-3.amazonaws.com\ns3-website.eu-west-3.amazonaws.com\ns3.amazonaws.com\ns3-ap-northeast-1.amazonaws.com\ns3-ap-northeast-2.amazonaws.com\ns3-ap-south-1.amazonaws.com\ns3-ap-southeast-1.amazonaws.com\ns3-ap-southeast-2.amazonaws.com\ns3-ca-central-1.amazonaws.com\ns3-eu-central-1.amazonaws.com\ns3-eu-west-1.amazonaws.com\ns3-eu-west-2.amazonaws.com\ns3-eu-west-3.amazonaws.com\ns3-external-1.amazonaws.com\ns3-fips-us-gov-west-1.amazonaws.com\ns3-sa-east-1.amazonaws.com\ns3-us-east-2.amazonaws.com\ns3-us-gov-west-1.amazonaws.com\ns3-us-west-1.amazonaws.com\ns3-us-west-2.amazonaws.com\ns3-website-ap-northeast-1.amazonaws.com\ns3-website-ap-southeast-1.amazonaws.com\ns3-website-ap-southeast-2.amazonaws.com\ns3-website-eu-west-1.amazonaws.com\ns3-website-sa-east-1.amazonaws.com\ns3-website-us-east-1.amazonaws.com\ns3-website-us-west-1.amazonaws.com\ns3-website-us-west-2.amazonaws.com\ns3.dualstack.sa-east-1.amazonaws.com\ns3.dualstack.us-east-1.amazonaws.com\ns3.dualstack.us-east-2.amazonaws.com\ns3.us-east-2.amazonaws.com\ns3-website.us-east-2.amazonaws.com\n\n// Analytics on AWS\n// Submitted by AWS Security \n// Reference: c02c3a80-f8a0-4fd2-b719-48ea8b7c28de\nanalytics-gateway.ap-northeast-1.amazonaws.com\nanalytics-gateway.eu-west-1.amazonaws.com\nanalytics-gateway.us-east-1.amazonaws.com\nanalytics-gateway.us-east-2.amazonaws.com\nanalytics-gateway.us-west-2.amazonaws.com\n\n// AWS Cloud9\n// Submitted by: AWS Security \n// Reference: 05c44955-977c-4b57-938a-f2af92733f9f\nwebview-assets.aws-cloud9.af-south-1.amazonaws.com\nvfs.cloud9.af-south-1.amazonaws.com\nwebview-assets.cloud9.af-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-east-1.amazonaws.com\nvfs.cloud9.ap-east-1.amazonaws.com\nwebview-assets.cloud9.ap-east-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-1.amazonaws.com\nvfs.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-2.amazonaws.com\nvfs.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-3.amazonaws.com\nvfs.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.aws-cloud9.ap-south-1.amazonaws.com\nvfs.cloud9.ap-south-1.amazonaws.com\nwebview-assets.cloud9.ap-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-1.amazonaws.com\nvfs.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-2.amazonaws.com\nvfs.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ca-central-1.amazonaws.com\nvfs.cloud9.ca-central-1.amazonaws.com\nwebview-assets.cloud9.ca-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-central-1.amazonaws.com\nvfs.cloud9.eu-central-1.amazonaws.com\nwebview-assets.cloud9.eu-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-north-1.amazonaws.com\nvfs.cloud9.eu-north-1.amazonaws.com\nwebview-assets.cloud9.eu-north-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-south-1.amazonaws.com\nvfs.cloud9.eu-south-1.amazonaws.com\nwebview-assets.cloud9.eu-south-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-1.amazonaws.com\nvfs.cloud9.eu-west-1.amazonaws.com\nwebview-assets.cloud9.eu-west-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-2.amazonaws.com\nvfs.cloud9.eu-west-2.amazonaws.com\nwebview-assets.cloud9.eu-west-2.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-3.amazonaws.com\nvfs.cloud9.eu-west-3.amazonaws.com\nwebview-assets.cloud9.eu-west-3.amazonaws.com\nwebview-assets.aws-cloud9.me-south-1.amazonaws.com\nvfs.cloud9.me-south-1.amazonaws.com\nwebview-assets.cloud9.me-south-1.amazonaws.com\nwebview-assets.aws-cloud9.sa-east-1.amazonaws.com\nvfs.cloud9.sa-east-1.amazonaws.com\nwebview-assets.cloud9.sa-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-1.amazonaws.com\nvfs.cloud9.us-east-1.amazonaws.com\nwebview-assets.cloud9.us-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-2.amazonaws.com\nvfs.cloud9.us-east-2.amazonaws.com\nwebview-assets.cloud9.us-east-2.amazonaws.com\nwebview-assets.aws-cloud9.us-west-1.amazonaws.com\nvfs.cloud9.us-west-1.amazonaws.com\nwebview-assets.cloud9.us-west-1.amazonaws.com\nwebview-assets.aws-cloud9.us-west-2.amazonaws.com\nvfs.cloud9.us-west-2.amazonaws.com\nwebview-assets.cloud9.us-west-2.amazonaws.com\n\n// AWS Elastic Beanstalk\n// Submitted by Luke Wells \n// Reference: aa202394-43a0-4857-b245-8db04549137e\ncn-north-1.eb.amazonaws.com.cn\ncn-northwest-1.eb.amazonaws.com.cn\nelasticbeanstalk.com\nap-northeast-1.elasticbeanstalk.com\nap-northeast-2.elasticbeanstalk.com\nap-northeast-3.elasticbeanstalk.com\nap-south-1.elasticbeanstalk.com\nap-southeast-1.elasticbeanstalk.com\nap-southeast-2.elasticbeanstalk.com\nca-central-1.elasticbeanstalk.com\neu-central-1.elasticbeanstalk.com\neu-west-1.elasticbeanstalk.com\neu-west-2.elasticbeanstalk.com\neu-west-3.elasticbeanstalk.com\nsa-east-1.elasticbeanstalk.com\nus-east-1.elasticbeanstalk.com\nus-east-2.elasticbeanstalk.com\nus-gov-west-1.elasticbeanstalk.com\nus-west-1.elasticbeanstalk.com\nus-west-2.elasticbeanstalk.com\n\n// (AWS) Elastic Load Balancing\n// Submitted by Luke Wells \n// Reference: 12a3d528-1bac-4433-a359-a395867ffed2\n*.elb.amazonaws.com.cn\n*.elb.amazonaws.com\n\n// AWS Global Accelerator\n// Submitted by Daniel Massaguer \n// Reference: d916759d-a08b-4241-b536-4db887383a6a\nawsglobalaccelerator.com\n\n// eero\n// Submitted by Yue Kang \n// Reference: 264afe70-f62c-4c02-8ab9-b5281ed24461\neero.online\neero-stage.online\n\n// concludes Amazon\n\n// Amune : https://amune.org/\n// Submitted by Team Amune \nt3l3p0rt.net\ntele.amune.org\n\n// Apigee : https://apigee.com/\n// Submitted by Apigee Security Team \napigee.io\n\n// Apphud : https://apphud.com\n// Submitted by Alexander Selivanov \nsiiites.com\n\n// Appspace : https://www.appspace.com\n// Submitted by Appspace Security Team \nappspacehosted.com\nappspaceusercontent.com\n\n// Appudo UG (haftungsbeschränkt) : https://www.appudo.com\n// Submitted by Alexander Hochbaum \nappudo.net\n\n// Aptible : https://www.aptible.com/\n// Submitted by Thomas Orozco \non-aptible.com\n\n// ASEINet : https://www.aseinet.com/\n// Submitted by Asei SEKIGUCHI \nuser.aseinet.ne.jp\ngv.vc\nd.gv.vc\n\n// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/\n// Submitted by Hector Martin \nuser.party.eus\n\n// Association potager.org : https://potager.org/\n// Submitted by Lunar \npimienta.org\npoivron.org\npotager.org\nsweetpepper.org\n\n// ASUSTOR Inc. : http://www.asustor.com\n// Submitted by Vincent Tseng \nmyasustor.com\n\n// Atlassian : https://atlassian.com\n// Submitted by Sam Smyth \ncdn.prod.atlassian-dev.net\n\n// Authentick UG (haftungsbeschränkt) : https://authentick.net\n// Submitted by Lukas Reschke \ntranslated.page\n\n// Autocode : https://autocode.com\n// Submitted by Jacob Lee \nautocode.dev\n\n// AVM : https://avm.de\n// Submitted by Andreas Weise \nmyfritz.net\n\n// AVStack Pte. Ltd. : https://avstack.io\n// Submitted by Jasper Hugo \nonavstack.net\n\n// AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com\n// Submitted by James Kennedy \n*.awdev.ca\n*.advisor.ws\n\n// AZ.pl sp. z.o.o: https://az.pl\n// Submitted by Krzysztof Wolski \necommerce-shop.pl\n\n// b-data GmbH : https://www.b-data.io\n// Submitted by Olivier Benz \nb-data.io\n\n// backplane : https://www.backplane.io\n// Submitted by Anthony Voutas \nbackplaneapp.io\n\n// Balena : https://www.balena.io\n// Submitted by Petros Angelatos \nbalena-devices.com\n\n// University of Banja Luka : https://unibl.org\n// Domains for Republic of Srpska administrative entity.\n// Submitted by Marko Ivanovic \nrs.ba\n\n// Banzai Cloud\n// Submitted by Janos Matyas \n*.banzai.cloud\napp.banzaicloud.io\n*.backyards.banzaicloud.io\n\n// BASE, Inc. : https://binc.jp\n// Submitted by Yuya NAGASAWA \nbase.ec\nofficial.ec\nbuyshop.jp\nfashionstore.jp\nhandcrafted.jp\nkawaiishop.jp\nsupersale.jp\ntheshop.jp\nshopselect.net\nbase.shop\n\n// BeagleBoard.org Foundation : https://beagleboard.org\n// Submitted by Jason Kridner \nbeagleboard.io\n\n// Beget Ltd\n// Submitted by Lev Nekrasov \n*.beget.app\n\n// BetaInABox\n// Submitted by Adrian \nbetainabox.com\n\n// BinaryLane : http://www.binarylane.com\n// Submitted by Nathan O\'Sullivan \nbnr.la\n\n// Bitbucket : http://bitbucket.org\n// Submitted by Andy Ortlieb \nbitbucket.io\n\n// Blackbaud, Inc. : https://www.blackbaud.com\n// Submitted by Paul Crowder \nblackbaudcdn.net\n\n// Blatech : http://www.blatech.net\n// Submitted by Luke Bratch \nof.je\n\n// Blue Bite, LLC : https://bluebite.com\n// Submitted by Joshua Weiss \nbluebite.io\n\n// Boomla : https://boomla.com\n// Submitted by Tibor Halter \nboomla.net\n\n// Boutir : https://www.boutir.com\n// Submitted by Eric Ng Ka Ka \nboutir.com\n\n// Boxfuse : https://boxfuse.com\n// Submitted by Axel Fontaine \nboxfuse.io\n\n// bplaced : https://www.bplaced.net/\n// Submitted by Miroslav Bozic \nsquare7.ch\nbplaced.com\nbplaced.de\nsquare7.de\nbplaced.net\nsquare7.net\n\n// Brendly : https://brendly.rs\n// Submitted by Dusan Radovanovic \nshop.brendly.rs\n\n// BrowserSafetyMark\n// Submitted by Dave Tharp \nbrowsersafetymark.io\n\n// Bytemark Hosting : https://www.bytemark.co.uk\n// Submitted by Paul Cammish \nuk0.bigv.io\ndh.bytemark.co.uk\nvm.bytemark.co.uk\n\n// Caf.js Labs LLC : https://www.cafjs.com\n// Submitted by Antonio Lain \ncafjs.com\n\n// callidomus : https://www.callidomus.com/\n// Submitted by Marcus Popp \nmycd.eu\n\n// Canva Pty Ltd : https://canva.com/\n// Submitted by Joel Aquilina \ncanva-apps.cn\ncanva-apps.com\n\n// Carrd : https://carrd.co\n// Submitted by AJ \ndrr.ac\nuwu.ai\ncarrd.co\ncrd.co\nju.mp\n\n// CentralNic : http://www.centralnic.com/names/domains\n// Submitted by registry \nae.org\nbr.com\ncn.com\ncom.de\ncom.se\nde.com\neu.com\ngb.net\nhu.net\njp.net\njpn.com\nmex.com\nru.com\nsa.com\nse.net\nuk.com\nuk.net\nus.com\nza.bz\nza.com\n\n// No longer operated by CentralNic, these entries should be adopted and/or removed by current operators\n// Submitted by Gavin Brown \nar.com\nhu.com\nkr.com\nno.com\nqc.com\nuy.com\n\n// Africa.com Web Solutions Ltd : https://registry.africa.com\n// Submitted by Gavin Brown \nafrica.com\n\n// iDOT Services Limited : http://www.domain.gr.com\n// Submitted by Gavin Brown \ngr.com\n\n// Radix FZC : http://domains.in.net\n// Submitted by Gavin Brown \nin.net\nweb.in\n\n// US REGISTRY LLC : http://us.org\n// Submitted by Gavin Brown \nus.org\n\n// co.com Registry, LLC : https://registry.co.com\n// Submitted by Gavin Brown \nco.com\n\n// Roar Domains LLC : https://roar.basketball/\n// Submitted by Gavin Brown \naus.basketball\nnz.basketball\n\n// BRS Media : https://brsmedia.com/\n// Submitted by Gavin Brown \nradio.am\nradio.fm\n\n// c.la : http://www.c.la/\nc.la\n\n// certmgr.org : https://certmgr.org\n// Submitted by B. Blechschmidt \ncertmgr.org\n\n// Cityhost LLC : https://cityhost.ua\n// Submitted by Maksym Rivtin \ncx.ua\n\n// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/\n// Submitted by Rishabh Nambiar & Michael Brown \ndiscourse.group\ndiscourse.team\n\n// Clever Cloud : https://www.clever-cloud.com/\n// Submitted by Quentin Adam \ncleverapps.io\n\n// Clerk : https://www.clerk.dev\n// Submitted by Colin Sidoti \nclerk.app\nclerkstage.app\n*.lcl.dev\n*.lclstage.dev\n*.stg.dev\n*.stgstage.dev\n\n// ClickRising : https://clickrising.com/\n// Submitted by Umut Gumeli \nclickrising.net\n\n// Cloud66 : https://www.cloud66.com/\n// Submitted by Khash Sajadi \nc66.me\ncloud66.ws\ncloud66.zone\n\n// CloudAccess.net : https://www.cloudaccess.net/\n// Submitted by Pawel Panek \njdevcloud.com\nwpdevcloud.com\ncloudaccess.host\nfreesite.host\ncloudaccess.net\n\n// cloudControl : https://www.cloudcontrol.com/\n// Submitted by Tobias Wilken \ncloudcontrolled.com\ncloudcontrolapp.com\n\n// Cloudera, Inc. : https://www.cloudera.com/\n// Submitted by Kedarnath Waikar \n*.cloudera.site\n\n// Cloudflare, Inc. : https://www.cloudflare.com/\n// Submitted by Cloudflare Team \ncf-ipfs.com\ncloudflare-ipfs.com\ntrycloudflare.com\npages.dev\nr2.dev\nworkers.dev\n\n// Clovyr : https://clovyr.io\n// Submitted by Patrick Nielsen \nwnext.app\n\n// co.ca : http://registry.co.ca/\nco.ca\n\n// Co & Co : https://co-co.nl/\n// Submitted by Govert Versluis \n*.otap.co\n\n// i-registry s.r.o. : http://www.i-registry.cz/\n// Submitted by Martin Semrad \nco.cz\n\n// CDN77.com : http://www.cdn77.com\n// Submitted by Jan Krpes \nc.cdn77.org\ncdn77-ssl.net\nr.cdn77.net\nrsc.cdn77.org\nssl.origin.cdn77-secure.org\n\n// Cloud DNS Ltd : http://www.cloudns.net\n// Submitted by Aleksander Hristov \ncloudns.asia\ncloudns.biz\ncloudns.club\ncloudns.cc\ncloudns.eu\ncloudns.in\ncloudns.info\ncloudns.org\ncloudns.pro\ncloudns.pw\ncloudns.us\n\n// CNPY : https://cnpy.gdn\n// Submitted by Angelo Gladding \ncnpy.gdn\n\n// Codeberg e. V. : https://codeberg.org\n// Submitted by Moritz Marquardt \ncodeberg.page\n\n// CoDNS B.V.\nco.nl\nco.no\n\n// Combell.com : https://www.combell.com\n// Submitted by Thomas Wouters \nwebhosting.be\nhosting-cluster.nl\n\n// Coordination Center for TLD RU and XN--P1AI : https://cctld.ru/en/domains/domens_ru/reserved/\n// Submitted by George Georgievsky \nac.ru\nedu.ru\ngov.ru\nint.ru\nmil.ru\ntest.ru\n\n// COSIMO GmbH : http://www.cosimo.de\n// Submitted by Rene Marticke \ndyn.cosidns.de\ndynamisches-dns.de\ndnsupdater.de\ninternet-dns.de\nl-o-g-i-n.de\ndynamic-dns.info\nfeste-ip.net\nknx-server.net\nstatic-access.net\n\n// Craynic, s.r.o. : http://www.craynic.com/\n// Submitted by Ales Krajnik \nrealm.cz\n\n// Cryptonomic : https://cryptonomic.net/\n// Submitted by Andrew Cady \n*.cryptonomic.net\n\n// Cupcake : https://cupcake.io/\n// Submitted by Jonathan Rudenberg \ncupcake.is\n\n// Curv UG : https://curv-labs.de/\n// Submitted by Marvin Wiesner \ncurv.dev\n\n// Customer OCI - Oracle Dyn https://cloud.oracle.com/home https://dyn.com/dns/\n// Submitted by Gregory Drake \n// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label\n*.customer-oci.com\n*.oci.customer-oci.com\n*.ocp.customer-oci.com\n*.ocs.customer-oci.com\n\n// cyon GmbH : https://www.cyon.ch/\n// Submitted by Dominic Luechinger \ncyon.link\ncyon.site\n\n// Danger Science Group: https://dangerscience.com/\n// Submitted by Skylar MacDonald \nfnwk.site\nfolionetwork.site\nplatform0.app\n\n// Daplie, Inc : https://daplie.com\n// Submitted by AJ ONeal \ndaplie.me\nlocalhost.daplie.me\n\n// Datto, Inc. : https://www.datto.com/\n// Submitted by Philipp Heckel \ndattolocal.com\ndattorelay.com\ndattoweb.com\nmydatto.com\ndattolocal.net\nmydatto.net\n\n// Dansk.net : http://www.dansk.net/\n// Submitted by Anani Voule \nbiz.dk\nco.dk\nfirm.dk\nreg.dk\nstore.dk\n\n// dappnode.io : https://dappnode.io/\n// Submitted by Abel Boldu / DAppNode Team \ndyndns.dappnode.io\n\n// dapps.earth : https://dapps.earth/\n// Submitted by Daniil Burdakov \n*.dapps.earth\n*.bzz.dapps.earth\n\n// Dark, Inc. : https://darklang.com\n// Submitted by Paul Biggar \nbuiltwithdark.com\n\n// DataDetect, LLC. : https://datadetect.com\n// Submitted by Andrew Banchich \ndemo.datadetect.com\ninstance.datadetect.com\n\n// Datawire, Inc : https://www.datawire.io\n// Submitted by Richard Li \nedgestack.me\n\n// DDNS5 : https://ddns5.com\n// Submitted by Cameron Elliott \nddns5.com\n\n// Debian : https://www.debian.org/\n// Submitted by Peter Palfrader / Debian Sysadmin Team \ndebian.net\n\n// Deno Land Inc : https://deno.com/\n// Submitted by Luca Casonato \ndeno.dev\ndeno-staging.dev\n\n// deSEC : https://desec.io/\n// Submitted by Peter Thomassen \ndedyn.io\n\n// Deta: https://www.deta.sh/\n// Submitted by Aavash Shrestha \ndeta.app\ndeta.dev\n\n// Diher Solutions : https://diher.solutions\n// Submitted by Didi Hermawan \n*.rss.my.id\n*.diher.solutions\n\n// Discord Inc : https://discord.com\n// Submitted by Sahn Lam \ndiscordsays.com\ndiscordsez.com\n\n// DNS Africa Ltd https://dns.business\n// Submitted by Calvin Browne \njozi.biz\n\n// DNShome : https://www.dnshome.de/\n// Submitted by Norbert Auler \ndnshome.de\n\n// DotArai : https://www.dotarai.com/\n// Submitted by Atsadawat Netcharadsang \nonline.th\nshop.th\n\n// DrayTek Corp. : https://www.draytek.com/\n// Submitted by Paul Fang \ndrayddns.com\n\n// DreamCommerce : https://shoper.pl/\n// Submitted by Konrad Kotarba \nshoparena.pl\n\n// DreamHost : http://www.dreamhost.com/\n// Submitted by Andrew Farmer \ndreamhosters.com\n\n// Drobo : http://www.drobo.com/\n// Submitted by Ricardo Padilha \nmydrobo.com\n\n// Drud Holdings, LLC. : https://www.drud.com/\n// Submitted by Kevin Bridges \ndrud.io\ndrud.us\n\n// DuckDNS : http://www.duckdns.org/\n// Submitted by Richard Harper \nduckdns.org\n\n// Bip : https://bip.sh\n// Submitted by Joel Kennedy \nbip.sh\n\n// bitbridge.net : Submitted by Craig Welch, abeliidev@gmail.com\nbitbridge.net\n\n// dy.fi : http://dy.fi/\n// Submitted by Heikki Hannikainen \ndy.fi\ntunk.org\n\n// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/\ndyndns-at-home.com\ndyndns-at-work.com\ndyndns-blog.com\ndyndns-free.com\ndyndns-home.com\ndyndns-ip.com\ndyndns-mail.com\ndyndns-office.com\ndyndns-pics.com\ndyndns-remote.com\ndyndns-server.com\ndyndns-web.com\ndyndns-wiki.com\ndyndns-work.com\ndyndns.biz\ndyndns.info\ndyndns.org\ndyndns.tv\nat-band-camp.net\nath.cx\nbarrel-of-knowledge.info\nbarrell-of-knowledge.info\nbetter-than.tv\nblogdns.com\nblogdns.net\nblogdns.org\nblogsite.org\nboldlygoingnowhere.org\nbroke-it.net\nbuyshouses.net\ncechire.com\ndnsalias.com\ndnsalias.net\ndnsalias.org\ndnsdojo.com\ndnsdojo.net\ndnsdojo.org\ndoes-it.net\ndoesntexist.com\ndoesntexist.org\ndontexist.com\ndontexist.net\ndontexist.org\ndoomdns.com\ndoomdns.org\ndvrdns.org\ndyn-o-saur.com\ndynalias.com\ndynalias.net\ndynalias.org\ndynathome.net\ndyndns.ws\nendofinternet.net\nendofinternet.org\nendoftheinternet.org\nest-a-la-maison.com\nest-a-la-masion.com\nest-le-patron.com\nest-mon-blogueur.com\nfor-better.biz\nfor-more.biz\nfor-our.info\nfor-some.biz\nfor-the.biz\nforgot.her.name\nforgot.his.name\nfrom-ak.com\nfrom-al.com\nfrom-ar.com\nfrom-az.net\nfrom-ca.com\nfrom-co.net\nfrom-ct.com\nfrom-dc.com\nfrom-de.com\nfrom-fl.com\nfrom-ga.com\nfrom-hi.com\nfrom-ia.com\nfrom-id.com\nfrom-il.com\nfrom-in.com\nfrom-ks.com\nfrom-ky.com\nfrom-la.net\nfrom-ma.com\nfrom-md.com\nfrom-me.org\nfrom-mi.com\nfrom-mn.com\nfrom-mo.com\nfrom-ms.com\nfrom-mt.com\nfrom-nc.com\nfrom-nd.com\nfrom-ne.com\nfrom-nh.com\nfrom-nj.com\nfrom-nm.com\nfrom-nv.com\nfrom-ny.net\nfrom-oh.com\nfrom-ok.com\nfrom-or.com\nfrom-pa.com\nfrom-pr.com\nfrom-ri.com\nfrom-sc.com\nfrom-sd.com\nfrom-tn.com\nfrom-tx.com\nfrom-ut.com\nfrom-va.com\nfrom-vt.com\nfrom-wa.com\nfrom-wi.com\nfrom-wv.com\nfrom-wy.com\nftpaccess.cc\nfuettertdasnetz.de\ngame-host.org\ngame-server.cc\ngetmyip.com\ngets-it.net\ngo.dyndns.org\ngotdns.com\ngotdns.org\ngroks-the.info\ngroks-this.info\nham-radio-op.net\nhere-for-more.info\nhobby-site.com\nhobby-site.org\nhome.dyndns.org\nhomedns.org\nhomeftp.net\nhomeftp.org\nhomeip.net\nhomelinux.com\nhomelinux.net\nhomelinux.org\nhomeunix.com\nhomeunix.net\nhomeunix.org\niamallama.com\nin-the-band.net\nis-a-anarchist.com\nis-a-blogger.com\nis-a-bookkeeper.com\nis-a-bruinsfan.org\nis-a-bulls-fan.com\nis-a-candidate.org\nis-a-caterer.com\nis-a-celticsfan.org\nis-a-chef.com\nis-a-chef.net\nis-a-chef.org\nis-a-conservative.com\nis-a-cpa.com\nis-a-cubicle-slave.com\nis-a-democrat.com\nis-a-designer.com\nis-a-doctor.com\nis-a-financialadvisor.com\nis-a-geek.com\nis-a-geek.net\nis-a-geek.org\nis-a-green.com\nis-a-guru.com\nis-a-hard-worker.com\nis-a-hunter.com\nis-a-knight.org\nis-a-landscaper.com\nis-a-lawyer.com\nis-a-liberal.com\nis-a-libertarian.com\nis-a-linux-user.org\nis-a-llama.com\nis-a-musician.com\nis-a-nascarfan.com\nis-a-nurse.com\nis-a-painter.com\nis-a-patsfan.org\nis-a-personaltrainer.com\nis-a-photographer.com\nis-a-player.com\nis-a-republican.com\nis-a-rockstar.com\nis-a-socialist.com\nis-a-soxfan.org\nis-a-student.com\nis-a-teacher.com\nis-a-techie.com\nis-a-therapist.com\nis-an-accountant.com\nis-an-actor.com\nis-an-actress.com\nis-an-anarchist.com\nis-an-artist.com\nis-an-engineer.com\nis-an-entertainer.com\nis-by.us\nis-certified.com\nis-found.org\nis-gone.com\nis-into-anime.com\nis-into-cars.com\nis-into-cartoons.com\nis-into-games.com\nis-leet.com\nis-lost.org\nis-not-certified.com\nis-saved.org\nis-slick.com\nis-uberleet.com\nis-very-bad.org\nis-very-evil.org\nis-very-good.org\nis-very-nice.org\nis-very-sweet.org\nis-with-theband.com\nisa-geek.com\nisa-geek.net\nisa-geek.org\nisa-hockeynut.com\nissmarterthanyou.com\nisteingeek.de\nistmein.de\nkicks-ass.net\nkicks-ass.org\nknowsitall.info\nland-4-sale.us\nlebtimnetz.de\nleitungsen.de\nlikes-pie.com\nlikescandy.com\nmerseine.nu\nmine.nu\nmisconfused.org\nmypets.ws\nmyphotos.cc\nneat-url.com\noffice-on-the.net\non-the-web.tv\npodzone.net\npodzone.org\nreadmyblog.org\nsaves-the-whales.com\nscrapper-site.net\nscrapping.cc\nselfip.biz\nselfip.com\nselfip.info\nselfip.net\nselfip.org\nsells-for-less.com\nsells-for-u.com\nsells-it.net\nsellsyourhome.org\nservebbs.com\nservebbs.net\nservebbs.org\nserveftp.net\nserveftp.org\nservegame.org\nshacknet.nu\nsimple-url.com\nspace-to-rent.com\nstuff-4-sale.org\nstuff-4-sale.us\nteaches-yoga.com\nthruhere.net\ntraeumtgerade.de\nwebhop.biz\nwebhop.info\nwebhop.net\nwebhop.org\nworse-than.tv\nwritesthisblog.com\n\n// ddnss.de : https://www.ddnss.de/\n// Submitted by Robert Niedziela \nddnss.de\ndyn.ddnss.de\ndyndns.ddnss.de\ndyndns1.de\ndyn-ip24.de\nhome-webserver.de\ndyn.home-webserver.de\nmyhome-server.de\nddnss.org\n\n// Definima : http://www.definima.com/\n// Submitted by Maxence Bitterli \ndefinima.net\ndefinima.io\n\n// DigitalOcean App Platform : https://www.digitalocean.com/products/app-platform/\n// Submitted by Braxton Huggins \nondigitalocean.app\n\n// DigitalOcean Spaces : https://www.digitalocean.com/products/spaces/\n// Submitted by Robin H. Johnson \n*.digitaloceanspaces.com\n\n// dnstrace.pro : https://dnstrace.pro/\n// Submitted by Chris Partridge \nbci.dnstrace.pro\n\n// Dynu.com : https://www.dynu.com/\n// Submitted by Sue Ye \nddnsfree.com\nddnsgeek.com\ngiize.com\ngleeze.com\nkozow.com\nloseyourip.com\nooguy.com\ntheworkpc.com\ncasacam.net\ndynu.net\naccesscam.org\ncamdvr.org\nfreeddns.org\nmywire.org\nwebredirect.org\nmyddns.rocks\nblogsite.xyz\n\n// dynv6 : https://dynv6.com\n// Submitted by Dominik Menke \ndynv6.net\n\n// E4YOU spol. s.r.o. : https://e4you.cz/\n// Submitted by Vladimir Dudr \ne4.cz\n\n// Easypanel : https://easypanel.io\n// Submitted by Andrei Canta \neasypanel.app\neasypanel.host\n\n// Elementor : Elementor Ltd.\n// Submitted by Anton Barkan \nelementor.cloud\nelementor.cool\n\n// En root‽ : https://en-root.org\n// Submitted by Emmanuel Raviart \nen-root.fr\n\n// Enalean SAS: https://www.enalean.com\n// Submitted by Thomas Cottier \nmytuleap.com\ntuleap-partners.com\n\n// Encoretivity AB: https://encore.dev\n// Submitted by André Eriksson \nencr.app\nencoreapi.com\n\n// ECG Robotics, Inc: https://ecgrobotics.org\n// Submitted by \nonred.one\nstaging.onred.one\n\n// encoway GmbH : https://www.encoway.de\n// Submitted by Marcel Daus \neu.encoway.cloud\n\n// EU.org https://eu.org/\n// Submitted by Pierre Beyssac \neu.org\nal.eu.org\nasso.eu.org\nat.eu.org\nau.eu.org\nbe.eu.org\nbg.eu.org\nca.eu.org\ncd.eu.org\nch.eu.org\ncn.eu.org\ncy.eu.org\ncz.eu.org\nde.eu.org\ndk.eu.org\nedu.eu.org\nee.eu.org\nes.eu.org\nfi.eu.org\nfr.eu.org\ngr.eu.org\nhr.eu.org\nhu.eu.org\nie.eu.org\nil.eu.org\nin.eu.org\nint.eu.org\nis.eu.org\nit.eu.org\njp.eu.org\nkr.eu.org\nlt.eu.org\nlu.eu.org\nlv.eu.org\nmc.eu.org\nme.eu.org\nmk.eu.org\nmt.eu.org\nmy.eu.org\nnet.eu.org\nng.eu.org\nnl.eu.org\nno.eu.org\nnz.eu.org\nparis.eu.org\npl.eu.org\npt.eu.org\nq-a.eu.org\nro.eu.org\nru.eu.org\nse.eu.org\nsi.eu.org\nsk.eu.org\ntr.eu.org\nuk.eu.org\nus.eu.org\n\n// Eurobyte : https://eurobyte.ru\n// Submitted by Evgeniy Subbotin \neurodir.ru\n\n// Evennode : http://www.evennode.com/\n// Submitted by Michal Kralik \neu-1.evennode.com\neu-2.evennode.com\neu-3.evennode.com\neu-4.evennode.com\nus-1.evennode.com\nus-2.evennode.com\nus-3.evennode.com\nus-4.evennode.com\n\n// eDirect Corp. : https://hosting.url.com.tw/\n// Submitted by C.S. chang \ntwmail.cc\ntwmail.net\ntwmail.org\nmymailer.com.tw\nurl.tw\n\n// Fabrica Technologies, Inc. : https://www.fabrica.dev/\n// Submitted by Eric Jiang \nonfabrica.com\n\n// Facebook, Inc.\n// Submitted by Peter Ruibal \napps.fbsbx.com\n\n// FAITID : https://faitid.org/\n// Submitted by Maxim Alzoba \n// https://www.flexireg.net/stat_info\nru.net\nadygeya.ru\nbashkiria.ru\nbir.ru\ncbg.ru\ncom.ru\ndagestan.ru\ngrozny.ru\nkalmykia.ru\nkustanai.ru\nmarine.ru\nmordovia.ru\nmsk.ru\nmytis.ru\nnalchik.ru\nnov.ru\npyatigorsk.ru\nspb.ru\nvladikavkaz.ru\nvladimir.ru\nabkhazia.su\nadygeya.su\naktyubinsk.su\narkhangelsk.su\narmenia.su\nashgabad.su\nazerbaijan.su\nbalashov.su\nbashkiria.su\nbryansk.su\nbukhara.su\nchimkent.su\ndagestan.su\neast-kazakhstan.su\nexnet.su\ngeorgia.su\ngrozny.su\nivanovo.su\njambyl.su\nkalmykia.su\nkaluga.su\nkaracol.su\nkaraganda.su\nkarelia.su\nkhakassia.su\nkrasnodar.su\nkurgan.su\nkustanai.su\nlenug.su\nmangyshlak.su\nmordovia.su\nmsk.su\nmurmansk.su\nnalchik.su\nnavoi.su\nnorth-kazakhstan.su\nnov.su\nobninsk.su\npenza.su\npokrovsk.su\nsochi.su\nspb.su\ntashkent.su\ntermez.su\ntogliatti.su\ntroitsk.su\ntselinograd.su\ntula.su\ntuva.su\nvladikavkaz.su\nvladimir.su\nvologda.su\n\n// Fancy Bits, LLC : http://getchannels.com\n// Submitted by Aman Gupta \nchannelsdvr.net\nu.channelsdvr.net\n\n// Fastly Inc. : http://www.fastly.com/\n// Submitted by Fastly Security \nedgecompute.app\nfastly-edge.com\nfastly-terrarium.com\nfastlylb.net\nmap.fastlylb.net\nfreetls.fastly.net\nmap.fastly.net\na.prod.fastly.net\nglobal.prod.fastly.net\na.ssl.fastly.net\nb.ssl.fastly.net\nglobal.ssl.fastly.net\n\n// Fastmail : https://www.fastmail.com/\n// Submitted by Marc Bradshaw \n*.user.fm\n\n// FASTVPS EESTI OU : https://fastvps.ru/\n// Submitted by Likhachev Vasiliy \nfastvps-server.com\nfastvps.host\nmyfast.host\nfastvps.site\nmyfast.space\n\n// Fedora : https://fedoraproject.org/\n// submitted by Patrick Uiterwijk