diff --git a/.gitignore b/.gitignore
index dce9578..c03b477 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
.DS_Store
-FeedTheMonkey.pro.user*
-build
+target/
+data/gschemas.compiled
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..fcc6e8d
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,33 @@
+language: cpp
+compiler: gcc
+sudo: require
+dist: trusty
+before_install:
+- sudo add-apt-repository ppa:beineri/opt-qt58-trusty -y
+- sudo apt-get update -qq
+install:
+- sudo apt-get -y install qt58base qt58webengine qt58quickcontrols
+- source /opt/qt58/bin/qt58-env.sh
+script:
+- qmake PREFIX=/usr
+- make -j4
+- sudo make INSTALL_ROOT=appdir install ; sudo chown -R $USER appdir ; find appdir/
+- wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
+- chmod a+x linuxdeployqt*.AppImage
+- unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
+- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/
+ -bundle-non-qt-libs"
+- "./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -qmldir=./qml/
+ -appimage"
+- find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " "
+ -f 2-3 | sort | uniq
+- mv FeedTheMonkey*.AppImage FeedTheMonkey.AppImage
+deploy:
+ provider: releases
+ api_key:
+ secure: d+hHwOnmeLPVvuue6VDCs2LwLS+BFzJF/BB5iObtkCYBwQ8ybnVzUcgnjJKOt37SHI0T9kLegI+Lq/843ECYiGiDjQg4PvCF69V8ODgHv3v1qiN5oG/eroBXd83a0+xhi4BuJt0SwcV9mcv4uD9bCPhj944rmMLH+3qD4ysgImBmbYSbbLecE9+QAs7bfrCwQRfdCePBORX3FHa/p12NEtln7xv6ZRyku9LdJSzAcdgm4zc95ggTAVC1+aQB6J0q2QzWPlQcOkLx+ZYmOqClhbSMFpIyPXP8UpXjYyvUlTAd0+wH8BGf0O3lpOqACc7IKIbj9d5oPmghVZo55SyW+RR77G+az+IbGJ7iXZsMfQZsMvtB7hNYhNvUUxQrAau7Y/ve+6sMQmvA7aMHV8kDUvnNW/c2r2jAWwk+N8QzGcP/rclDCKeOWZqZABmrzTViXZVAeXh4hJ8r6mbq8iwagBUPCsVYhVuerQt/KIoWxyn6/1GmMfKGi3dA/v3u1qU61vzrz3yLlJBmUAVPxZdVmqfRweh4BXjImxFMFmf5PYm5FnDg1gmw8rWsgii7+IPYw7DjTAHpjYbtXvDwDgG1nRXiRp2TGtPPgKW1/Uk8r/j5vfB5WcEZ7exLUgsPPjny5MGvzjqOxeLvwK1Pg9jFBFXIx7l1tNMJQxQU0r3DmBg=
+ file: FeedTheMonkey.AppImage
+ on:
+ repo: jeena/FeedTheMonkey
+ skip_cleanup: true
+ draft: true
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ 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 General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ 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 GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..746b7a5
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,2161 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bitflags"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
+
+[[package]]
+name = "bumpalo"
+version = "3.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
+
+[[package]]
+name = "bytes"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
+
+[[package]]
+name = "cairo-rs"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cc8d9aa793480744cd9a0524fef1a2e197d9eaa0f739cde19d16aba530dcb95"
+dependencies = [
+ "bitflags",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8b4985713047f5faee02b8db6a6ef32bbb50269ff53c1aee716d1d195b76d54"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "cc"
+version = "1.2.57"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.20.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "feedthemonkey"
+version = "3.0.0"
+dependencies = [
+ "gio",
+ "glib",
+ "gtk4",
+ "libadwaita",
+ "libsecret",
+ "regex",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "tokio",
+ "webkit6",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-task"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
+
+[[package]]
+name = "futures-util"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-task",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25f420376dbee041b2db374ce4573892a36222bb3f6c0c43e24f0d67eae9b646"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48f31b37b1fc4b48b54f6b91b7ef04c18e00b4585d98359dd7b998774bbd91fb"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk4"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa528049fd8726974a7aa1a6e1421f891e7579bea6cc6d54056ab4d1a1b937e7"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dd48b1b03dce78ab52805ac35cfb69c48af71a03af5723231d8583718738377"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "r-efi",
+ "wasip2",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gio"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "816b6743c46b217aa8fba679095ac6f2162fd53259dc8f186fcdbff9c555db03"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "pin-project-lite",
+ "smallvec",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64729ba2772c080448f9f966dba8f4456beeb100d8c28a865ef8a0f2ef4987e1"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "glib"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "039f93465ac17e6cb02d16f16572cd3e43a77e736d5ecc461e71b9c9c5c0569c"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "memchr",
+ "smallvec",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda575994e3689b1bc12f89c3df621ead46ff292623b76b4710a3a5b79be54bb"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1eb23a616a3dbc7fc15bbd26f58756ff0b04c8a894df3f0680cd21011db6a642"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18eda93f09d3778f38255b231b17ef67195013a592c91624a4daf8bead875565"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7d1b7881f96869f49808b6adfe906a93a57a34204952253444d68c3208d71f1"
+dependencies = [
+ "glib",
+ "graphene-sys",
+ "libc",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "517f062f3fd6b7fd3e57a3f038a74b3c23ca32f51199ff028aa704609943f79c"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53c912dfcbd28acace5fc99c40bb9f25e1dcb73efb1f2608327f66a99acdcb62"
+dependencies = [
+ "cairo-rs",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7d54bbc7a9d8b6ffe4f0c95eede15ccfb365c8bf521275abe6bcfb57b18fb8a"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk4-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f671029e3f5288fd35e03a6e6b19e1ce643b10a3d261d33d183e453f6c52fe"
+dependencies = [
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gtk4-macros"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3581b242ba62fdff122ebb626ea641582ec326031622bd19d60f85029c804a87"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "gtk4-sys"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0786e7e8e0550d0ab2df4d0d90032f22033e07d5ed78b6a1b2e51b05340339e"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "http"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "hyper"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "pin-utils",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.27.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
+dependencies = [
+ "http",
+ "hyper",
+ "hyper-util",
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+ "webpki-roots",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
+dependencies = [
+ "base64",
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+
+[[package]]
+name = "icu_properties"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+
+[[package]]
+name = "icu_provider"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
+
+[[package]]
+name = "iri-string"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
+
+[[package]]
+name = "javascriptcore6"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d8d4f64d976c6dc6068723b6ef7838acf954d56b675f376c826f7e773362ddb"
+dependencies = [
+ "glib",
+ "javascriptcore6-sys",
+ "libc",
+]
+
+[[package]]
+name = "javascriptcore6-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b9787581c8949a7061c9b8593c4d1faf4b0fe5e5643c6c7793df20dbe39cf6"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.91"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libadwaita"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc0da4e27b20d3e71f830e5b0f0188d22c257986bf421c02cfde777fe07932a4"
+dependencies = [
+ "gdk4",
+ "gio",
+ "glib",
+ "gtk4",
+ "libadwaita-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "libadwaita-sys"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaee067051c5d3c058d050d167688b80b67de1950cfca77730549aa761fc5d7d"
+dependencies = [
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.183"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
+
+[[package]]
+name = "libsecret"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b531fb2284b303e0f6d214043e641e5da56053a886413c726e69384f9c8d2335"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "libsecret-sys",
+]
+
+[[package]]
+name = "libsecret-sys"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80477411ab81517171559cbb6d48fc024122df02787551ada766c709ffa2859a"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "litemap"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+
+[[package]]
+name = "lock_api"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+dependencies = [
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+
+[[package]]
+name = "lru-slab"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
+
+[[package]]
+name = "memchr"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mio"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+
+[[package]]
+name = "pango"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25d8f224eddef627b896d2f7b05725b3faedbd140e0e8343446f0d34f34238ee"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd111a20ca90fedf03e09c59783c679c00900f1d8491cca5399f5e33609d5d6"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-link",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
+dependencies = [
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quinn"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
+dependencies = [
+ "bytes",
+ "cfg_aliases",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls",
+ "socket2",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "web-time",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
+dependencies = [
+ "bytes",
+ "getrandom 0.3.4",
+ "lru-slab",
+ "rand",
+ "ring",
+ "rustc-hash",
+ "rustls",
+ "rustls-pki-types",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+ "web-time",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
+dependencies = [
+ "cfg_aliases",
+ "libc",
+ "once_cell",
+ "socket2",
+ "tracing",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
+
+[[package]]
+name = "reqwest"
+version = "0.12.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
+dependencies = [
+ "base64",
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-rustls",
+ "hyper-util",
+ "js-sys",
+ "log",
+ "percent-encoding",
+ "pin-project-lite",
+ "quinn",
+ "rustls",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tokio-rustls",
+ "tower",
+ "tower-http",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "webpki-roots",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom 0.2.17",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
+dependencies = [
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
+dependencies = [
+ "web-time",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
+
+[[package]]
+name = "serde"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.149"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+dependencies = [
+ "itoa",
+ "memchr",
+ "serde",
+ "serde_core",
+ "zmij",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+dependencies = [
+ "errno",
+ "libc",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socket2"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "soup3"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d38b59ff6d302538efd337e15d04d61c5b909ec223c60ae4061d74605a962a"
+dependencies = [
+ "futures-channel",
+ "gio",
+ "glib",
+ "libc",
+ "soup3-sys",
+]
+
+[[package]]
+name = "soup3-sys"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79d5d25225bb06f83b78ff8cc35973b56d45fcdd21af6ed6d2bbd67f5a6f9bea"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.117"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "system-deps"
+version = "7.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c8f33736f986f16d69b6cb8b03f55ddcad5c41acc4ccc39dd88e84aa805e7f"
+dependencies = [
+ "cfg-expr",
+ "heck",
+ "pkg-config",
+ "toml",
+ "version-compare",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
+
+[[package]]
+name = "thiserror"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
+dependencies = [
+ "bytes",
+ "libc",
+ "mio",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.9.12+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863"
+dependencies = [
+ "indexmap",
+ "serde_core",
+ "serde_spanned",
+ "toml_datetime 0.7.5+spec-1.1.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 0.7.15",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.7.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "1.0.1+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.25.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime 1.0.1+spec-1.1.0",
+ "toml_parser",
+ "winnow 1.0.0",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.10+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420"
+dependencies = [
+ "winnow 1.0.0",
+]
+
+[[package]]
+name = "toml_writer"
+version = "1.0.7+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17aaa1c6e3dc22b1da4b6bba97d066e354c7945cac2f7852d4e4e7ca7a6b56d"
+
+[[package]]
+name = "tower"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
+dependencies = [
+ "bitflags",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "iri-string",
+ "pin-project-lite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "version-compare"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasip2"
+version = "1.0.2+wasi-0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.91"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webkit6"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4959dd2a92813d4b2ae134e71345a03030bcff189b4f79cd131e9218aba22b70"
+dependencies = [
+ "gdk4",
+ "gio",
+ "glib",
+ "gtk4",
+ "javascriptcore6",
+ "libc",
+ "soup3",
+ "webkit6-sys",
+]
+
+[[package]]
+name = "webkit6-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "236078ce03ff041bf87904c8257e6a9b0e9e0f957267c15f9c1756aadcf02581"
+dependencies = [
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk4-sys",
+ "javascriptcore6-sys",
+ "libc",
+ "soup3-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
+[[package]]
+name = "winnow"
+version = "0.7.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
+
+[[package]]
+name = "winnow"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[package]]
+name = "yoke"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zmij"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..63a62de
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,23 @@
+[package]
+name = "feedthemonkey"
+version = "3.0.0"
+edition = "2021"
+
+[[bin]]
+name = "feedthemonkey"
+path = "src/main.rs"
+
+[dependencies]
+gtk4 = { version = "0.11", features = ["v4_14"] }
+libadwaita = { version = "0.9", features = ["v1_6"] }
+webkit6 = { version = "0.6" }
+gio = { version = "0.22" }
+glib = { version = "0.22" }
+reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
+regex = "1"
+serde = { version = "1", features = ["derive"] }
+serde_json = "1"
+tokio = { version = "1", features = ["full"] }
+libsecret = { version = "0.9", features = ["v0_19"] }
+
+[build-dependencies]
diff --git a/FeedTheMonkey.pro b/FeedTheMonkey.pro
deleted file mode 100644
index 19007fd..0000000
--- a/FeedTheMonkey.pro
+++ /dev/null
@@ -1,59 +0,0 @@
-TARGET = feedthemonkey
-
-TEMPLATE = app
-QT += qml quick webenginewidgets
-CONFIG += c++11
-
-SOURCES += \
- src/main.cpp \
- src/post.cpp \
- src/tinytinyrss.cpp \
- src/tinytinyrsslogin.cpp
-
-RESOURCES += \
- html/html.qrc \
- qml/qml.qrc \
-
-mac {
- RC_FILE = misc/Icon.icns
- TARGET = FeedTheMonkey
-}
-
-unix {
- isEmpty(PREFIX) {
- PREFIX = /usr/local
- }
-
- target.path = $$PREFIX/bin
-
- shortcutfiles.files = misc/feedthemonkey.desktop
- shortcutfiles.path = $$PREFIX/share/applications/
- data.files += misc/feedthemonkey.xpm
- data.path = $$PREFIX/share/pixmaps/
-
- INSTALLS += shortcutfiles
- INSTALLS += data
-}
-
-INSTALLS += target
-
-
-# Needed for bringing browser from background to foreground using QDesktopServices: http://bugreports.qt-project.org/browse/QTBUG-8336
-TARGET.CAPABILITY += SwEvent
-
-# Additional import path used to resolve QML modules in Qt Creator's code model
-QML_IMPORT_PATH =
-
-OTHER_FILES +=
-
-HEADERS += \
- src/post.h \
- src/tinytinyrss.h \
- src/tinytinyrsslogin.h
-
-DISTFILES += \
- misc/feedthemonkey.desktop \
- misc/feedthemonkey.xpm \
- misc/Icon.icns \
- README.md \
- LICENSE.txt
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 7ed6c1f..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
- BSD license
- ===========
-
-Copyright (c) 2015, Jeena Paradies
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-- Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-- Neither the name of Bungloo nor the names of its contributors may
- be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/README.md b/README.md
index 74b2c79..6d92bc9 100644
--- a/README.md
+++ b/README.md
@@ -1,44 +1,101 @@
# FeedTheMonkey
-
+
-Feed the Monkey is a desktop client for [TinyTinyRSS](http://tt-rss.org). That means that
-it doesn't work as a standalone feed reader but only as a client for the TinyTinyRSS API
-which it uses to get the normalized feeds and to synchronize the "article read" marks.
+FeedTheMonkey is a desktop client for any server that implements the
+[Greader API](https://github.com/theoldreader/api).
-It is written in C++ with Qt and QML, it also uses WebKit to show the contents.
+It doesn't work as a standalone feed reader — it connects to a server to fetch articles and sync read state.
-You need to have Qt 5.4 installed be able to compile and have a account on a TinyTinyRSS server.
-This version 2 is still in a early stage so there are no binaries available yet but will be
-as soon as I figure out how to package and distribute them.
+It follows the [river of news](http://scripting.com/2014/06/02/whatIsARiverOfNewsAggregator.html) philosophy: all unread articles appear in a single flat list and are automatically marked as read as you flip through them one by one.
-License: BSD
+## Features
-## Installation
+- **River of news**: all unread articles in one flat list, auto-marked as read as you flip through them one by one
+- **Offline reading**: article content and images are cached locally so you can read without a connection
+- **Image caching**: images are pre-fetched after each reload; can be disabled in preferences and is always skipped on metered connections
+- **Offline sync**: read/unread state changes made offline are queued and pushed to the server next time you're online
+- **Persistent state**: the article list, selected article, and scroll position are restored when you reopen the app
+- **Dark mode**: follows the system color scheme automatically
+- **Keyboard navigation**: vi-style shortcuts for hands-free reading
+- **Zoom**: adjustable content zoom, persisted across restarts
+- **Fullscreen** and toggleable sidebar
-Clone the repo, install the Qt 5.4 SDK on your computer and use QtCreator to compile and run it.
+When logging in, enter:
-## Keyboard shortcuts
+- **FreshRSS**: `https://example.com/api/greader.php`
+- **Miniflux**: `https://example.com`
+- Other compatible servers: consult your server's documentation for the Greader API endpoint
-The keyboard shortcuts are inspired by other feed readers which are inspired by the text editor vi.
+## Dependencies
-`j` or `→` show nex article
-`k` or `←` show previous article
-`n` or `Return` open current article in the default browser
-`r` reload articles
-`Ctrl Q` quit
-`Ctrl +` zoom in
-`Ctrl -` zoom out
-`Ctrl 0` reset zoom
+### Runtime
-On OS X use `Cmd` instead of `Ctrl`.
+- GTK 4 (`gtk4`)
+- libadwaita (`libadwaita`)
+- WebKitGTK 6 (`webkitgtk-6.0`)
+- GLib / GIO (`glib-2.0`, `gio-2.0`)
+
+On Arch Linux: `sudo pacman -S gtk4 libadwaita webkitgtk-6.0`
+
+### Build
+
+- Rust toolchain (`rustup` / `cargo`)
+- `blueprint-compiler` — compiles `.blp` UI files to `.ui`
+- `glib-compile-schemas` — compiles GSettings schemas (part of `glib2`)
+- `glib-compile-resources` — compiles GResource bundles (part of `glib2`)
+
+On Arch Linux: `sudo pacman -S blueprint-compiler glib2`
+
+## Building
+
+```sh
+cargo build --release
+```
+
+The binary is at `target/release/feedthemonkey`.
+
+## Installing
+
+```sh
+sudo ./install.sh
+```
+
+This installs the binary, icon, desktop entry, and GSettings schema to `/usr/local`.
+Set `PREFIX` to install elsewhere:
+
+```sh
+sudo PREFIX=/usr ./install.sh
+```
## Trivia
-This is version 2 of FeedTheMonkey, you can find version 1 which was written in PyQt in the v1 branch
-of this repo. My goal is to make this usable on many different targets, for now it is only for
-the use on a desktop computer but I'd like to see it on a mobile device too.
+This is version 3 of FeedTheMonkey, rewritten in Rust with GTK4 and libadwaita.
+Version 2 was written in C++ with Qt and QML, and version 1 in PyQt — you can find
+them in the `v2` and `v1` branches of this repo.
## Screenshot
-
+
+
+## Keyboard shortcuts
+
+| Key | Action |
+|-----|--------|
+| `j` or `→` | Next article |
+| `k` or `←` | Previous article |
+| `Return` | Open in browser |
+| `r` | Reload |
+| `F11` | Toggle fullscreen |
+| `Ctrl+W` | Quit |
+| `Ctrl++` | Zoom in |
+| `Ctrl+-` | Zoom out |
+| `Ctrl+0` | Reset zoom |
+
+## License
+
+Copyright 2015–2026 Jeena
+
+FeedTheMonkey is free software: you can redistribute it and/or modify it under the terms
+of the GNU General Public License as published by the Free Software Foundation, either
+version 3 of the License, or (at your option) any later version.
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..47065f3
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,66 @@
+use std::path::PathBuf;
+use std::process::Command;
+
+fn main() {
+ let manifest_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
+ let data_dir = manifest_dir.join("data");
+ let ui_dir = data_dir.join("ui");
+ let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
+
+ // Compile all .blp files to .ui files
+ let blp_files: Vec<_> = std::fs::read_dir(&ui_dir)
+ .expect("data/ui/ directory not found")
+ .filter_map(|e| e.ok())
+ .map(|e| e.path())
+ .filter(|p| p.extension().map_or(false, |ext| ext == "blp"))
+ .collect();
+
+ for blp in &blp_files {
+ println!("cargo:rerun-if-changed={}", blp.display());
+ }
+
+ if !blp_files.is_empty() {
+ let status = Command::new("blueprint-compiler")
+ .arg("batch-compile")
+ .arg(&ui_dir)
+ .arg(&ui_dir)
+ .args(&blp_files)
+ .status()
+ .expect("failed to run blueprint-compiler — is it installed?");
+ assert!(status.success(), "blueprint-compiler failed");
+ }
+
+ // Compile GSettings schema into data/ so dev builds can find it
+ let schema_file = data_dir.join("net.jeena.FeedTheMonkey.gschema.xml");
+ println!("cargo:rerun-if-changed={}", schema_file.display());
+ let status = Command::new("glib-compile-schemas")
+ .arg(&data_dir)
+ .status()
+ .expect("failed to run glib-compile-schemas — is it installed?");
+ assert!(status.success(), "glib-compile-schemas failed");
+ println!("cargo:rustc-env=GSETTINGS_SCHEMA_DIR={}", data_dir.display());
+
+ // Compile GResource
+ let gresource_xml = data_dir.join("resources.gresource.xml");
+ println!("cargo:rerun-if-changed={}", gresource_xml.display());
+
+ // Watch HTML/CSS so changes trigger a resource rebuild
+ let html_dir = manifest_dir.join("html");
+ if let Ok(entries) = std::fs::read_dir(&html_dir) {
+ for entry in entries.filter_map(|e| e.ok()) {
+ println!("cargo:rerun-if-changed={}", entry.path().display());
+ }
+ }
+
+ let gresource_out = out_dir.join("feedthemonkey.gresource");
+ let status = Command::new("glib-compile-resources")
+ .arg(format!("--sourcedir={}", data_dir.display()))
+ .arg(format!("--sourcedir={}", manifest_dir.display()))
+ .arg(format!("--target={}", gresource_out.display()))
+ .arg(&gresource_xml)
+ .status()
+ .expect("failed to run glib-compile-resources — is it installed?");
+ assert!(status.success(), "glib-compile-resources failed");
+
+ println!("cargo:rustc-env=GRESOURCE_FILE={}", gresource_out.display());
+}
diff --git a/data/icons/net.jeena.FeedTheMonkey.png b/data/icons/net.jeena.FeedTheMonkey.png
new file mode 100644
index 0000000..006f24a
Binary files /dev/null and b/data/icons/net.jeena.FeedTheMonkey.png differ
diff --git a/data/net.jeena.FeedTheMonkey.desktop b/data/net.jeena.FeedTheMonkey.desktop
new file mode 100644
index 0000000..5fec685
--- /dev/null
+++ b/data/net.jeena.FeedTheMonkey.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=FeedTheMonkey
+GenericName=Feed Reader
+Comment=A desktop client for the Tiny Tiny RSS feed reader
+Exec=feedthemonkey
+Icon=net.jeena.FeedTheMonkey
+Terminal=false
+Type=Application
+Categories=Network;News;GTK;
+StartupNotify=true
+StartupWMClass=feedthemonkey
diff --git a/data/net.jeena.FeedTheMonkey.gschema.xml b/data/net.jeena.FeedTheMonkey.gschema.xml
new file mode 100644
index 0000000..a69cb8a
--- /dev/null
+++ b/data/net.jeena.FeedTheMonkey.gschema.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ 900
+ Window width
+
+
+ 600
+ Window height
+
+
+ false
+ Window maximized state
+
+
+ 280
+ Sidebar width in pixels
+
+
+ 1.0
+ WebView zoom level
+
+
+ ''
+ Content rewrite rules, one per line: domain from to [from to …]
+
+
+ true
+ Download and cache article images for offline reading (skipped on metered connections)
+
+
+
diff --git a/data/resources.gresource.xml b/data/resources.gresource.xml
new file mode 100644
index 0000000..ef69e9b
--- /dev/null
+++ b/data/resources.gresource.xml
@@ -0,0 +1,12 @@
+
+
+
+ ui/window.ui
+ ui/login_dialog.ui
+ ui/article_row.ui
+ ui/shortcuts.ui
+ ui/preferences_dialog.ui
+ html/content.html
+ html/content.css
+
+
diff --git a/data/screenshot.png b/data/screenshot.png
new file mode 100644
index 0000000..bec8f97
Binary files /dev/null and b/data/screenshot.png differ
diff --git a/data/ui/article_row.blp b/data/ui/article_row.blp
new file mode 100644
index 0000000..07c4cbe
--- /dev/null
+++ b/data/ui/article_row.blp
@@ -0,0 +1,45 @@
+using Gtk 4.0;
+using Adw 1;
+
+template $ArticleRow : Gtk.Box {
+ orientation: vertical;
+ margin-top: 12;
+ margin-bottom: 12;
+ margin-start: 12;
+ margin-end: 12;
+ spacing: 4;
+
+ Box {
+ orientation: horizontal;
+ spacing: 4;
+
+ Label feed_title_label {
+ hexpand: true;
+ xalign: 0;
+ ellipsize: end;
+ styles ["dim-label", "caption"]
+ }
+
+ Label date_label {
+ xalign: 1;
+ styles ["dim-label", "caption"]
+ }
+ }
+
+ Label title_label {
+ hexpand: true;
+ xalign: 0;
+ wrap: true;
+ lines: 2;
+ ellipsize: end;
+ styles ["article-title"]
+ }
+
+ Label excerpt_label {
+ hexpand: true;
+ xalign: 0;
+ ellipsize: end;
+ lines: 1;
+ styles ["dim-label", "caption"]
+ }
+}
diff --git a/data/ui/article_row.ui b/data/ui/article_row.ui
new file mode 100644
index 0000000..d5eeab9
--- /dev/null
+++ b/data/ui/article_row.ui
@@ -0,0 +1,67 @@
+
+
+
+
+
+ 1
+ 12
+ 12
+ 12
+ 12
+ 4
+
+
+
+
+
+ true
+ 0
+ true
+ 2
+ 3
+
+
+
+
+
+ true
+ 0
+ 3
+ 1
+
+
+
+
+
\ No newline at end of file
diff --git a/data/ui/login_dialog.blp b/data/ui/login_dialog.blp
new file mode 100644
index 0000000..c009543
--- /dev/null
+++ b/data/ui/login_dialog.blp
@@ -0,0 +1,43 @@
+using Gtk 4.0;
+using Adw 1;
+
+template $LoginDialog : Adw.Dialog {
+ title: _("Log In");
+ content-width: 360;
+
+ Adw.ToolbarView {
+ [top]
+ Adw.HeaderBar {}
+
+ Adw.Clamp {
+ margin-top: 12;
+ margin-bottom: 24;
+ margin-start: 12;
+ margin-end: 12;
+
+ Adw.PreferencesGroup {
+ description: _("FreshRSS: https://example.com/api/greader.php\nMiniflux: https://example.com");
+
+ Adw.EntryRow server_url_row {
+ title: _("Server URL");
+ input-hints: no_spellcheck;
+ input-purpose: url;
+ }
+
+ Adw.EntryRow username_row {
+ title: _("Username");
+ input-hints: no_spellcheck;
+ }
+
+ Adw.PasswordEntryRow password_row {
+ title: _("Password");
+ }
+
+ Adw.ButtonRow login_button {
+ title: _("Log In");
+ styles ["suggested-action"]
+ }
+ }
+ }
+ }
+}
diff --git a/data/ui/login_dialog.ui b/data/ui/login_dialog.ui
new file mode 100644
index 0000000..e34ab42
--- /dev/null
+++ b/data/ui/login_dialog.ui
@@ -0,0 +1,60 @@
+
+
+
+
+
+ Log In
+ 360
+
+
+
+
+
+
+
+ 12
+ 24
+ 12
+ 12
+
+
+ FreshRSS: https://example.com/api/greader.php
+Miniflux: https://example.com
+
+
+ Server URL
+ 2
+ 5
+
+
+
+
+ Username
+ 2
+
+
+
+
+ Password
+
+
+
+
+ Log In
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/ui/preferences_dialog.blp b/data/ui/preferences_dialog.blp
new file mode 100644
index 0000000..de20a03
--- /dev/null
+++ b/data/ui/preferences_dialog.blp
@@ -0,0 +1,38 @@
+using Gtk 4.0;
+using Adw 1;
+
+template $PreferencesDialog : Adw.Dialog {
+ title: _("Preferences");
+ content-width: 500;
+ content-height: 400;
+
+ Adw.ToolbarView {
+ [top]
+ Adw.HeaderBar {}
+
+ Adw.PreferencesPage {
+ Adw.PreferencesGroup {
+ title: _("Images");
+
+ Adw.SwitchRow cache_images_row {
+ title: _("Cache Images");
+ subtitle: _("Download images for offline reading (skipped on metered connections)");
+ }
+ }
+
+ Adw.PreferencesGroup {
+ title: _("Content Filters");
+ description: _("One rule per line: domain find replace [find replace …]\n\nExample:\n www.imycomic.com -150x150.jpg .jpg");
+
+ TextView filters_text_view {
+ monospace: true;
+ wrap-mode: word;
+ top-margin: 8;
+ bottom-margin: 8;
+ left-margin: 8;
+ right-margin: 8;
+ }
+ }
+ }
+ }
+}
diff --git a/data/ui/preferences_dialog.ui b/data/ui/preferences_dialog.ui
new file mode 100644
index 0000000..0e78a1f
--- /dev/null
+++ b/data/ui/preferences_dialog.ui
@@ -0,0 +1,55 @@
+
+
+
+
+
+ Preferences
+ 500
+ 400
+
+
+
+
+
+
+
+
+
+ Images
+
+
+ Cache Images
+ Download images for offline reading (skipped on metered connections)
+
+
+
+
+
+
+ Content Filters
+ One rule per line: domain find replace [find replace …]
+
+Example:
+ www.imycomic.com -150x150.jpg .jpg
+
+
+ true
+ 2
+ 8
+ 8
+ 8
+ 8
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/ui/shortcuts.blp b/data/ui/shortcuts.blp
new file mode 100644
index 0000000..7d76ec3
--- /dev/null
+++ b/data/ui/shortcuts.blp
@@ -0,0 +1,112 @@
+using Gtk 4.0;
+using Adw 1;
+
+ShortcutsWindow help_overlay {
+ modal: true;
+
+ ShortcutsSection {
+ section-name: "shortcuts";
+ max-height: 10;
+
+ ShortcutsGroup {
+ title: _("Navigation");
+
+ ShortcutsShortcut {
+ title: _("Next article");
+ accelerator: "j Right";
+ }
+
+ ShortcutsShortcut {
+ title: _("Previous article");
+ accelerator: "k Left";
+ }
+ }
+
+ ShortcutsGroup {
+ title: _("Article");
+
+ ShortcutsShortcut {
+ title: _("Open in browser");
+ accelerator: "Return n";
+ }
+
+ ShortcutsShortcut {
+ title: _("Mark as unread");
+ accelerator: "u";
+ }
+
+ ShortcutsShortcut {
+ title: _("Reload articles");
+ accelerator: "r";
+ }
+ }
+
+ ShortcutsGroup {
+ title: _("View");
+
+ ShortcutsShortcut {
+ title: _("Scroll down");
+ accelerator: "space Page_Down";
+ }
+
+ ShortcutsShortcut {
+ title: _("Scroll up");
+ accelerator: "Page_Up";
+ }
+
+ ShortcutsShortcut {
+ title: _("Scroll to top");
+ accelerator: "Home";
+ }
+
+ ShortcutsShortcut {
+ title: _("Scroll to bottom");
+ accelerator: "End";
+ }
+
+ ShortcutsShortcut {
+ title: _("Zoom in");
+ accelerator: "plus";
+ }
+
+ ShortcutsShortcut {
+ title: _("Zoom out");
+ accelerator: "minus";
+ }
+
+ ShortcutsShortcut {
+ title: _("Reset zoom");
+ accelerator: "0";
+ }
+
+ ShortcutsShortcut {
+ title: _("Toggle sidebar");
+ accelerator: "F9";
+ }
+
+ ShortcutsShortcut {
+ title: _("Toggle fullscreen");
+ accelerator: "F11";
+ }
+ }
+
+ ShortcutsGroup {
+ title: _("Application");
+
+ ShortcutsShortcut {
+ title: _("Keyboard shortcuts");
+ accelerator: "F1";
+ }
+
+ ShortcutsShortcut {
+ title: _("Close window");
+ accelerator: "w";
+ }
+
+ ShortcutsShortcut {
+ title: _("Quit");
+ accelerator: "q";
+ }
+ }
+ }
+}
diff --git a/data/ui/shortcuts.ui b/data/ui/shortcuts.ui
new file mode 100644
index 0000000..e51f173
--- /dev/null
+++ b/data/ui/shortcuts.ui
@@ -0,0 +1,140 @@
+
+
+
+
+
+ true
+
+
+ shortcuts
+ 10
+
+
+ Navigation
+
+
+ Next article
+ j Right
+
+
+
+
+ Previous article
+ k Left
+
+
+
+
+
+
+ Article
+
+
+ Open in browser
+ Return n
+
+
+
+
+ Mark as unread
+ u
+
+
+
+
+ Reload articles
+ r
+
+
+
+
+
+
+ View
+
+
+ Scroll down
+ space Page_Down
+
+
+
+
+ Scroll up
+ Page_Up
+
+
+
+
+ Scroll to top
+ Home
+
+
+
+
+ Scroll to bottom
+ End
+
+
+
+
+ Zoom in
+ <Control>plus
+
+
+
+
+ Zoom out
+ <Control>minus
+
+
+
+
+ Reset zoom
+ <Control>0
+
+
+
+
+ Toggle sidebar
+ F9
+
+
+
+
+ Toggle fullscreen
+ F11
+
+
+
+
+
+
+ Application
+
+
+ Keyboard shortcuts
+ F1
+
+
+
+
+ Close window
+ <Control>w
+
+
+
+
+ Quit
+ <Control>q
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/ui/window.blp b/data/ui/window.blp
new file mode 100644
index 0000000..b56a277
--- /dev/null
+++ b/data/ui/window.blp
@@ -0,0 +1,221 @@
+using Gtk 4.0;
+using Adw 1;
+using WebKit 6.0;
+
+template $FeedTheMonkeyWindow : Adw.ApplicationWindow {
+ default-width: 900;
+ default-height: 600;
+
+ Adw.ToastOverlay toast_overlay {
+ Paned paned {
+ focusable: false;
+ resize-start-child: false;
+ shrink-end-child: false;
+
+ start-child: Adw.ToolbarView sidebar_toolbar {
+ top-bar-style: raised;
+
+ [top]
+ Adw.HeaderBar {
+ show-start-title-buttons: false;
+ show-end-title-buttons: false;
+
+ title-widget: Box {};
+
+ [start]
+ Stack refresh_stack {
+ StackPage {
+ name: "button";
+ child: Button refresh_button {
+ icon-name: "view-refresh-symbolic";
+ tooltip-text: _("Refresh");
+ action-name: "win.reload";
+ };
+ }
+ StackPage {
+ name: "spinner";
+ child: Spinner {
+ spinning: true;
+ width-request: 16;
+ height-request: 16;
+ };
+ }
+ }
+
+ [end]
+ MenuButton menu_button {
+ icon-name: "open-menu-symbolic";
+ primary: true;
+ menu-model: primary_menu;
+ }
+ }
+
+ Stack sidebar_content {
+ styles ["sidebar-content"]
+
+ StackPage {
+ name: "placeholder";
+ child: Adw.StatusPage {
+ icon-name: "rss-symbolic";
+ title: _("FeedTheMonkey");
+ description: _("Log in to load your articles");
+ };
+ }
+
+ StackPage {
+ name: "loading";
+ child: Adw.StatusPage {
+ title: _("Loading…");
+ };
+ }
+
+ StackPage {
+ name: "empty";
+ child: Adw.StatusPage {
+ icon-name: "rss-symbolic";
+ title: _("No Unread Articles");
+ };
+ }
+
+ StackPage {
+ name: "error";
+ child: Adw.StatusPage error_status {
+ icon-name: "network-error-symbolic";
+ title: _("Could Not Load Articles");
+
+ Button {
+ label: _("Try Again");
+ halign: center;
+ action-name: "win.reload";
+ styles ["pill", "suggested-action"]
+ }
+ };
+ }
+
+ StackPage {
+ name: "list";
+ child: ScrolledWindow {
+ hscrollbar-policy: never;
+ ListView article_list_view {
+ single-click-activate: false;
+ show-separators: true;
+ }
+ };
+ }
+ }
+ };
+
+ end-child: Adw.ToolbarView {
+ top-bar-style: raised;
+ width-request: 320;
+
+ [top]
+ Adw.HeaderBar {
+ [start]
+ Button toggle_sidebar_button {
+ icon-name: "sidebar-show-symbolic";
+ tooltip-text: _("Toggle Sidebar");
+ action-name: "win.toggle-sidebar";
+ }
+
+ [start]
+ Stack content_refresh_stack {
+ visible: false;
+ StackPage {
+ name: "button";
+ child: Button {
+ icon-name: "view-refresh-symbolic";
+ tooltip-text: _("Refresh");
+ action-name: "win.reload";
+ };
+ }
+ StackPage {
+ name: "spinner";
+ child: Spinner {
+ spinning: true;
+ width-request: 16;
+ height-request: 16;
+ };
+ }
+ }
+
+ title-widget: Adw.WindowTitle {
+ title: _("FeedTheMonkey");
+ };
+
+ [end]
+ MenuButton content_menu_button {
+ icon-name: "open-menu-symbolic";
+ primary: true;
+ menu-model: primary_menu;
+ visible: false;
+ }
+
+ [end]
+ MenuButton article_menu_button {
+ icon-name: "view-more-symbolic";
+ menu-model: article_menu;
+ visible: false;
+ }
+ }
+
+ Stack content_stack {
+ StackPage {
+ name: "empty";
+ child: Adw.StatusPage {
+ icon-name: "document-open-symbolic";
+ title: _("No Article Selected");
+ };
+ }
+
+ StackPage {
+ name: "webview";
+ child: WebKit.WebView web_view {};
+ }
+ }
+ };
+ }
+ }
+}
+
+menu primary_menu {
+ section {
+ item {
+ label: _("Log Out");
+ action: "win.logout";
+ }
+ }
+
+ section {
+ item {
+ label: _("Preferences");
+ action: "win.preferences";
+ }
+ }
+
+ section {
+ item {
+ label: _("Keyboard Shortcuts");
+ action: "win.show-help-overlay";
+ }
+
+ item {
+ label: _("About FeedTheMonkey");
+ action: "app.about";
+ }
+ }
+}
+
+menu article_menu {
+ section {
+ item {
+ label: _("Mark Unread");
+ action: "win.mark-unread";
+ }
+
+ item {
+ label: _("Open in Browser");
+ action: "win.open-in-browser";
+ }
+ }
+}
diff --git a/data/ui/window.ui b/data/ui/window.ui
new file mode 100644
index 0000000..8ecec84
--- /dev/null
+++ b/data/ui/window.ui
@@ -0,0 +1,276 @@
+
+
+
+
+
+ 900
+ 600
+
+
+
+
+ false
+ false
+ false
+
+
+ 1
+
+
+ false
+ false
+
+
+
+
+
+
+
+ button
+
+
+ view-refresh-symbolic
+ Refresh
+ win.reload
+
+
+
+
+
+
+ spinner
+
+
+ true
+ 16
+ 16
+
+
+
+
+
+
+
+
+ open-menu-symbolic
+ true
+ primary_menu
+
+
+
+
+
+
+
+
+
+ placeholder
+
+
+ rss-symbolic
+ FeedTheMonkey
+ Log in to load your articles
+
+
+
+
+
+
+ loading
+
+
+ Loading…
+
+
+
+
+
+
+ empty
+
+
+ rss-symbolic
+ No Unread Articles
+
+
+
+
+
+
+ error
+
+
+ network-error-symbolic
+ Could Not Load Articles
+
+
+ Try Again
+ 3
+ win.reload
+
+
+
+
+
+
+
+
+
+ list
+
+
+ 2
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ 320
+
+
+
+
+ sidebar-show-symbolic
+ Toggle Sidebar
+ win.toggle-sidebar
+
+
+
+
+ false
+
+
+ button
+
+
+ view-refresh-symbolic
+ Refresh
+ win.reload
+
+
+
+
+
+
+ spinner
+
+
+ true
+ 16
+ 16
+
+
+
+
+
+
+
+
+ FeedTheMonkey
+
+
+
+
+ open-menu-symbolic
+ true
+ primary_menu
+ false
+
+
+
+
+ view-more-symbolic
+ article_menu
+ false
+
+
+
+
+
+
+
+
+ empty
+
+
+ document-open-symbolic
+ No Article Selected
+
+
+
+
+
+
+ webview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/html/content.css b/html/content.css
index cad4e61..4fc396b 100644
--- a/html/content.css
+++ b/html/content.css
@@ -1,65 +1,131 @@
+/* CSS custom properties are set from Rust via AdwStyleManager.
+ The :root defaults below act as a light-mode fallback only. */
+
+:root {
+ --bg: #ffffff;
+ --fg: #1a1a1a;
+ --fg-dim: rgba(0,0,0,0.55);
+ --border: rgba(0,0,0,0.12);
+ --header-bg: #f6f5f4;
+ --link: #1c71d8;
+ --code-bg: rgba(0,0,0,0.06);
+ --blockquote-border: rgba(0,0,0,0.2);
+ --font: sans-serif;
+ --font-size: 15px;
+}
+
+:root[data-dark="1"] {
+ --bg: #1e1e1e;
+ --fg: rgba(255,255,255,0.87);
+ --fg-dim: rgba(255,255,255,0.5);
+ --border: rgba(255,255,255,0.12);
+ --header-bg: #242424;
+ --link: #78aeed;
+ --code-bg: rgba(255,255,255,0.06);
+ --blockquote-border: rgba(255,255,255,0.2);
+}
+
+* { box-sizing: border-box; }
+
html, body {
- margin: 0;
- padding: 0;
-}
-
-body {
- background: #eee;
- font-family: sans-serif;
- padding: 2em;
- font-weight: lighter;
-}
-
-h1 {
- font-weight: lighter;
- font-size: 1.4em;
- margin: 0;
- padding: 0;
-}
-
-#date:not(:empty) {
- border-bottom: 1px solid #aaa;
- margin-bottom: 1em;
- padding-bottom: 1em;
- display: block;
-}
-
-.starred:after {
- content: "*";
-}
-
-header p {
- color: #aaa;
- margin: 0;
- padding: 0;
- font-size: 0.8em;
+ margin: 0;
+ padding: 0;
+ background: var(--bg);
+ color: var(--fg);
+ font-family: var(--font);
+ font-size: var(--font-size);
+ word-wrap: break-word;
}
a {
- color: inherit;
- text-decoration: none;
-}
-
-article {
- line-height: 1.6;
+ color: var(--link);
+ text-decoration: none;
}
article a {
- text-decoration: underline;
+ text-decoration: underline;
}
-blockquote {
- font-style: italic;
+header {
+ padding: 1.5em 2em 1em;
+ background: var(--header-bg);
+ border-bottom: 1px solid var(--border);
+}
+
+header > .inner,
+article {
+ max-width: 720px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+header > .inner {
+ padding: 0 2em;
+}
+
+header h1 {
+ font-size: 1.3em;
+ margin: 0.2em 0 0.4em;
+ padding: 0;
+ line-height: 1.3;
+}
+
+header h1 a {
+ color: var(--fg);
+}
+
+header p {
+ color: var(--fg-dim);
+ margin: 0;
+ padding: 0;
+ font-size: 0.85em;
+}
+
+article {
+ line-height: 1.6;
+ padding: 1.5em 2em 2em;
}
img {
- max-width: 100%;
- height: auto;
+ max-width: 100%;
+ height: auto;
}
-div > a:only-child img, figure > a:only-child img, p > a:only-child img,
-figure > img:only-child, div > img:only-child, p > img:only-child {
- display: block;
- margin: 1em auto;
- float: none !important;
+div > a:only-child img,
+figure > a:only-child img,
+p > a:only-child img,
+figure > img:only-child,
+div > img:only-child,
+p > img:only-child {
+ display: block;
+ margin: 1em auto;
+ float: none !important;
+}
+
+pre {
+ overflow: auto;
+ background: var(--code-bg);
+ padding: 1em;
+ border-radius: 6px;
+ font-size: 0.9em;
+}
+
+code {
+ background: var(--code-bg);
+ padding: 0.15em 0.35em;
+ border-radius: 3px;
+ font-size: 0.9em;
+}
+
+pre code {
+ background: none;
+ padding: 0;
+}
+
+blockquote {
+ border-left: 3px solid var(--blockquote-border);
+ margin-left: 0;
+ padding-left: 1em;
+ color: var(--fg-dim);
+ font-style: italic;
}
diff --git a/html/content.html b/html/content.html
index bbcd5f5..82610c9 100644
--- a/html/content.html
+++ b/html/content.html
@@ -1,18 +1,61 @@
-
- TTRSS
-
-
-
+
+
+ FeedTheMonkey
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/html/content.js b/html/content.js
deleted file mode 100644
index 98cd8b1..0000000
--- a/html/content.js
+++ /dev/null
@@ -1,49 +0,0 @@
-function $(id) {
- return document.getElementById(id);
-}
-
-function setArticle(article) {
- window.scrollTo(0, 0);
-
- $("date").innerHTML = "";
- $("title").innerHTML = "";
- $("title").href = "";
- $("title").title = "";
- $("feed_title").innerHTML = "";
- $("author").innerHTML = "";
- $("article").innerHTML = "";
-
- if(article === "empty") {
-
- $("article").innerHTML = "No unread articles to display.";
-
- } else if(article === "loading") {
-
- $("article").innerHTML = "Loading ";
-
- } else if (article === "logout") {
-
- } else if(article) {
-
- $("date").innerHTML = (new Date(parseInt(article.updated, 10) * 1000));
- $("title").innerHTML = article.title;
- $("title").href = article.link;
- $("title").title = article.link;
- $("feed_title").innerHTML = article.feed_title;
- $("title").className = article.marked ? "starred" : "";
- $("author").innerHTML = "";
- if(article.author && article.author.length > 0)
- $("author").innerHTML = "– " + article.author
- $("article").innerHTML = article.content;
-
- var as = $("article").getElementsByTagName("a");
- for(var i = 0; i <= as.length; i++) {
- as[i].target = "";
- }
- }
-}
-
-function setFont(font, size) {
- document.body.style.fontFamily = font;
- document.body.style.fontSize = size + "pt";
-}
diff --git a/html/html.qrc b/html/html.qrc
deleted file mode 100644
index 90d8b19..0000000
--- a/html/html.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- content.css
- content.html
- content.js
-
-
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..13a9868
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+# Install FeedTheMonkey system-wide (requires root or sudo).
+# Run after: cargo build --release
+
+set -e
+
+PREFIX="${PREFIX:-/usr/local}"
+BINARY="target/release/feedthemonkey"
+
+if [ ! -f "$BINARY" ]; then
+ echo "Binary not found. Run 'cargo build --release' first."
+ exit 1
+fi
+
+install -Dm755 "$BINARY" "$PREFIX/bin/feedthemonkey"
+install -Dm644 data/net.jeena.FeedTheMonkey.desktop \
+ "$PREFIX/share/applications/net.jeena.FeedTheMonkey.desktop"
+install -Dm644 data/icons/net.jeena.FeedTheMonkey.png \
+ "$PREFIX/share/icons/hicolor/256x256/apps/net.jeena.FeedTheMonkey.png"
+
+# Install GSettings schema
+install -Dm644 data/net.jeena.FeedTheMonkey.gschema.xml \
+ "$PREFIX/share/glib-2.0/schemas/net.jeena.FeedTheMonkey.gschema.xml"
+glib-compile-schemas "$PREFIX/share/glib-2.0/schemas/"
+
+# Update icon cache if gtk-update-icon-cache is available
+if command -v gtk-update-icon-cache &>/dev/null; then
+ gtk-update-icon-cache -f -t "$PREFIX/share/icons/hicolor"
+fi
+
+echo "Installed to $PREFIX"
diff --git a/misc/Icon.icns b/misc/Icon.icns
deleted file mode 100644
index c365038..0000000
Binary files a/misc/Icon.icns and /dev/null differ
diff --git a/misc/feedthemonkey.desktop b/misc/feedthemonkey.desktop
deleted file mode 100644
index a9d950f..0000000
--- a/misc/feedthemonkey.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Version=2.0.0
-Comment=A desktop client for the TinyTinyRSS feed reader.
-Exec=feedthemonkey
-GenericName=Feed Reader
-Icon=feedthemonkey
-Name=FeedTheMonkey
-NoDisplay=false
-StartupNotify=true
-Terminal=false
-Type=Application
-Categories=Network;Qt
diff --git a/misc/feedthemonkey.xpm b/misc/feedthemonkey.xpm
deleted file mode 100644
index ae4a93b..0000000
--- a/misc/feedthemonkey.xpm
+++ /dev/null
@@ -1,9793 +0,0 @@
-/* XPM */
-static char * feedmonkey_xpm[] = {
-"512 512 9278 3",
-" c None",
-". c #6F3F1B",
-"+ c #6E3E1C",
-"@ c #6F3F1C",
-"# c #6F3F1E",
-"$ c #6F3E1C",
-"% c #70411E",
-"& c #70411C",
-"* c #70421E",
-"= c #70411F",
-"- c #71411C",
-"; c #713F1C",
-"> c #6E3F1B",
-", c #6E401B",
-"' c #6F421E",
-") c #6F421F",
-"! c #6F401C",
-"~ c #71421F",
-"{ c #72421F",
-"] c #724321",
-"^ c #72431F",
-"/ c #70421F",
-"( c #71421E",
-"_ c #71431C",
-": c #714219",
-"< c #71411E",
-"[ c #71431E",
-"} c #6F421B",
-"| c #703F1B",
-"1 c #6F4018",
-"2 c #6E3F18",
-"3 c #6E401E",
-"4 c #70421C",
-"5 c #734321",
-"6 c #734219",
-"7 c #71411F",
-"8 c #72411E",
-"9 c #71431F",
-"0 c #713F19",
-"a c #6E3F1C",
-"b c #6F411E",
-"c c #72411C",
-"d c #72431E",
-"e c #73431F",
-"f c #703F19",
-"g c #6E3F19",
-"h c #6F3F19",
-"i c #6D401B",
-"j c #6E3E1B",
-"k c #70411B",
-"l c #6F3E19",
-"m c #714119",
-"n c #6F3F18",
-"o c #714218",
-"p c #72421B",
-"q c #6F421C",
-"r c #724219",
-"s c #71421C",
-"t c #744421",
-"u c #734421",
-"v c #72421E",
-"w c #724421",
-"x c #703F1E",
-"y c #71411B",
-"z c #713F1B",
-"A c #703E1B",
-"B c #704019",
-"C c #723F19",
-"D c #6F4319",
-"E c #72411B",
-"F c #723F18",
-"G c #704219",
-"H c #73431C",
-"I c #71441F",
-"J c #73441B",
-"K c #714118",
-"L c #70431C",
-"M c #73421C",
-"N c #73441C",
-"O c #744321",
-"P c #72421C",
-"Q c #73431B",
-"R c #74431F",
-"S c #73441F",
-"T c #73431E",
-"U c #72431B",
-"V c #754421",
-"W c #73421F",
-"X c #73441E",
-"Y c #74441F",
-"Z c #74421C",
-"` c #754521",
-" . c #734419",
-".. c #74421E",
-"+. c #74421B",
-"@. c #75431F",
-"#. c #764521",
-"$. c #764522",
-"%. c #74441E",
-"&. c #723E1E",
-"*. c #73411C",
-"=. c #73451B",
-"-. c #74451B",
-";. c #73421E",
-">. c #71421B",
-",. c #70431E",
-"'. c #72441E",
-"). c #754522",
-"!. c #754422",
-"~. c #764523",
-"{. c #734319",
-"]. c #73421B",
-"^. c #74431C",
-"/. c #74441B",
-"(. c #723F1C",
-"_. c #744522",
-":. c #754622",
-"<. c #764623",
-"[. c #754623",
-"}. c #754523",
-"|. c #764622",
-"1. c #734218",
-"2. c #6F4219",
-"3. c #75431E",
-"4. c #72431C",
-"5. c #774623",
-"6. c #774622",
-"7. c #774522",
-"8. c #774822",
-"9. c #774823",
-"0. c #744521",
-"a. c #774625",
-"b. c #764723",
-"c. c #784823",
-"d. c #784825",
-"e. c #774825",
-"f. c #784625",
-"g. c #6F3E18",
-"h. c #784623",
-"i. c #6F3D19",
-"j. c #744422",
-"k. c #6E401F",
-"l. c #72441F",
-"m. c #6D3F1C",
-"n. c #794825",
-"o. c #794823",
-"p. c #794923",
-"q. c #784925",
-"r. c #6F4019",
-"s. c #6C401B",
-"t. c #703E16",
-"u. c #75441E",
-"v. c #794925",
-"w. c #77451E",
-"x. c #75451F",
-"y. c #784622",
-"z. c #7A4925",
-"A. c #724221",
-"B. c #764421",
-"C. c #774521",
-"D. c #7A4823",
-"E. c #73451F",
-"F. c #734422",
-"G. c #74431E",
-"H. c #7A4923",
-"I. c #714321",
-"J. c #70431F",
-"K. c #7A4825",
-"L. c #7B4923",
-"M. c #76451E",
-"N. c #6C3E1C",
-"O. c #7B4925",
-"P. c #6D3F19",
-"Q. c #6E401C",
-"R. c #6F411F",
-"S. c #7A4A25",
-"T. c #7B4A25",
-"U. c #7C4A25",
-"V. c #6E3E19",
-"W. c #6D3F1B",
-"X. c #6F401B",
-"Y. c #7A4822",
-"Z. c #7D4A25",
-"`. c #7B4A26",
-" + c #7D4A26",
-".+ c #7E4B25",
-"++ c #74451F",
-"@+ c #7C4923",
-"#+ c #7A4926",
-"$+ c #6F3F16",
-"%+ c #7B4922",
-"&+ c #7C4A26",
-"*+ c #7E4B26",
-"=+ c #7D4B25",
-"-+ c #7F4B26",
-";+ c #6D3F16",
-">+ c #7F4B25",
-",+ c #7D4B26",
-"'+ c #6D3D18",
-")+ c #6E3D1C",
-"!+ c #7B4822",
-"~+ c #7C4A23",
-"{+ c #7F4C26",
-"]+ c #7E4A25",
-"^+ c #6D401C",
-"/+ c #6D3F1E",
-"(+ c #764621",
-"_+ c #794822",
-":+ c #7D4A23",
-"<+ c #7B4A23",
-"[+ c #7C4B26",
-"}+ c #7E4C26",
-"|+ c #804C26",
-"1+ c #754621",
-"2+ c #703E19",
-"3+ c #6D3E1C",
-"4+ c #794622",
-"5+ c #7C4925",
-"6+ c #804B26",
-"7+ c #76441E",
-"8+ c #78451E",
-"9+ c #784822",
-"0+ c #7B4823",
-"a+ c #7D4923",
-"b+ c #804C28",
-"c+ c #7B4926",
-"d+ c #774322",
-"e+ c #6A3E1B",
-"f+ c #774621",
-"g+ c #7C4B25",
-"h+ c #6C3E1B",
-"i+ c #6C3F1B",
-"j+ c #6C3F1C",
-"k+ c #804D28",
-"l+ c #804D26",
-"m+ c #6B3F1C",
-"n+ c #6C3E16",
-"o+ c #814D26",
-"p+ c #814D28",
-"q+ c #814C26",
-"r+ c #713E18",
-"s+ c #6A3F18",
-"t+ c #7E4A23",
-"u+ c #824D27",
-"v+ c #814C28",
-"w+ c #6B3D19",
-"x+ c #824D26",
-"y+ c #824C26",
-"z+ c #834E27",
-"A+ c #6C3E18",
-"B+ c #6D401E",
-"C+ c #824E27",
-"D+ c #844E26",
-"E+ c #7F4C28",
-"F+ c #76451F",
-"G+ c #6B3E1B",
-"H+ c #834D26",
-"I+ c #865027",
-"J+ c #7E4A26",
-"K+ c #744621",
-"L+ c #6E3F1E",
-"M+ c #6D3E18",
-"N+ c #6B3D1B",
-"O+ c #855027",
-"P+ c #834D27",
-"Q+ c #875027",
-"R+ c #844F27",
-"S+ c #814C25",
-"T+ c #7F4C25",
-"U+ c #6E3E18",
-"V+ c #6C3D1C",
-"W+ c #854F27",
-"X+ c #864F27",
-"Y+ c #855029",
-"Z+ c #824C27",
-"`+ c #804C25",
-" @ c #834E26",
-".@ c #854F26",
-"+@ c #864F26",
-"@@ c #865029",
-"#@ c #885129",
-"$@ c #814B25",
-"%@ c #804B25",
-"&@ c #845027",
-"*@ c #895129",
-"=@ c #865127",
-"-@ c #774523",
-";@ c #6C3E19",
-">@ c #7E4C28",
-",@ c #844D26",
-"'@ c #895127",
-")@ c #7A4922",
-"!@ c #784923",
-"~@ c #6D401F",
-"{@ c #865129",
-"]@ c #895229",
-"^@ c #824C25",
-"/@ c #6C3F19",
-"(@ c #6D3E19",
-"_@ c #885127",
-":@ c #8A5229",
-"<@ c #6D3D16",
-"[@ c #8B5229",
-"}@ c #6A3D18",
-"|@ c #885027",
-"1@ c #875127",
-"2@ c #875129",
-"3@ c #724322",
-"4@ c #6D3E1B",
-"5@ c #6B3E19",
-"6@ c #8B532A",
-"7@ c #8B5329",
-"8@ c #885229",
-"9@ c #6D3F18",
-"0@ c #6B3C1B",
-"a@ c #875029",
-"b@ c #8C532A",
-"c@ c #89522A",
-"d@ c #8C5329",
-"e@ c #87512A",
-"f@ c #845029",
-"g@ c #6C3F18",
-"h@ c #6B3B19",
-"i@ c #6A3E1C",
-"j@ c #6A3C16",
-"k@ c #6A3D1B",
-"l@ c #8A532A",
-"m@ c #8D532A",
-"n@ c #8A5129",
-"o@ c #834F29",
-"p@ c #6B3E18",
-"q@ c #8A522A",
-"r@ c #854F29",
-"s@ c #8D542A",
-"t@ c #8C542A",
-"u@ c #8D5329",
-"v@ c #8B522A",
-"w@ c #8E542A",
-"x@ c #855127",
-"y@ c #6B3B16",
-"z@ c #844F29",
-"A@ c #75441F",
-"B@ c #6B3E1E",
-"C@ c #6B3E1C",
-"D@ c #693E1C",
-"E@ c #8A5329",
-"F@ c #8E552A",
-"G@ c #8F552A",
-"H@ c #8F542A",
-"I@ c #6A3D19",
-"J@ c #6C3D1B",
-"K@ c #88522A",
-"L@ c #6B3F1E",
-"M@ c #6B3D1C",
-"N@ c #8E552B",
-"O@ c #875227",
-"P@ c #8C522A",
-"Q@ c #8F552B",
-"R@ c #6C3D16",
-"S@ c #693D1B",
-"T@ c #8C5229",
-"U@ c #8D542B",
-"V@ c #8E542B",
-"W@ c #90562B",
-"X@ c #6A3C18",
-"Y@ c #8F562B",
-"Z@ c #90552B",
-"`@ c #90552A",
-" # c #683818",
-".# c #6B3C18",
-"+# c #8E532A",
-"@# c #91562B",
-"## c #89512A",
-"$# c #794723",
-"%# c #7E4B23",
-" c #875229",
-"*# c #8A5227",
-"=# c #895227",
-"-# c #6C3F1E",
-";# c #6C3E1E",
-"># c #824E26",
-",# c #814D25",
-"'# c #91572D",
-")# c #92572D",
-"!# c #91572B",
-"~# c #865026",
-"{# c #7E4C25",
-"]# c #794922",
-"^# c #794821",
-"/# c #90542A",
-"(# c #92572B",
-"_# c #7F4A23",
-":# c #6A3C1B",
-"<# c #693915",
-"[# c #91552B",
-"}# c #92562B",
-"|# c #8F542B",
-"1# c #693D18",
-"2# c #784621",
-"3# c #855026",
-"4# c #92562D",
-"5# c #92552B",
-"6# c #93572D",
-"7# c #91562D",
-"8# c #693D19",
-"9# c #93562D",
-"0# c #794621",
-"a# c #7F4A25",
-"b# c #93562B",
-"c# c #93592D",
-"d# c #693E1B",
-"e# c #693A13",
-"f# c #784821",
-"g# c #7F4B23",
-"h# c #94582D",
-"i# c #7A4921",
-"j# c #693A16",
-"k# c #6A3D15",
-"l# c #6A3E19",
-"m# c #693C18",
-"n# c #885227",
-"o# c #93592E",
-"p# c #6A3B18",
-"q# c #6B3C15",
-"r# c #94592E",
-"s# c #77461F",
-"t# c #784522",
-"u# c #8A5127",
-"v# c #693B19",
-"w# c #683919",
-"x# c #683C16",
-"y# c #683A19",
-"z# c #673915",
-"A# c #6A3F1B",
-"B# c #683D1B",
-"C# c #76441F",
-"D# c #683D19",
-"E# c #683C1B",
-"F# c #693C1B",
-"G# c #693C19",
-"H# c #663A1B",
-"I# c #673D18",
-"J# c #834C25",
-"K# c #683918",
-"L# c #683C19",
-"M# c #673A19",
-"N# c #673C19",
-"O# c #673C1B",
-"P# c #663916",
-"Q# c #91552A",
-"R# c #834D25",
-"S# c #673D1B",
-"T# c #663C19",
-"U# c #663A19",
-"V# c #663915",
-"W# c #693E18",
-"X# c #653919",
-"Y# c #643813",
-"Z# c #93572B",
-"`# c #8F572E",
-" $ c #945C33",
-".$ c #9A6136",
-"+$ c #9F6338",
-"@$ c #A1653B",
-"#$ c #A4673C",
-"$$ c #A66A3D",
-"%$ c #A76A3D",
-"&$ c #A86B3E",
-"*$ c #A76A3E",
-"=$ c #A5683D",
-"-$ c #A5683C",
-";$ c #A4683C",
-">$ c #A3673C",
-",$ c #A3663B",
-"'$ c #A2663B",
-")$ c #A16539",
-"!$ c #A16439",
-"~$ c #A06439",
-"{$ c #A06438",
-"]$ c #9F6337",
-"^$ c #9E6237",
-"/$ c #9D6237",
-"($ c #9D6136",
-"_$ c #9C6136",
-":$ c #9C6036",
-"<$ c #9B6034",
-"[$ c #9C6034",
-"}$ c #9B5F34",
-"|$ c #9A5F34",
-"1$ c #9B5F33",
-"2$ c #995E33",
-"3$ c #94592F",
-"4$ c #89532B",
-"5$ c #935B32",
-"6$ c #9C6137",
-"7$ c #A2663C",
-"8$ c #AC6F41",
-"9$ c #B17243",
-"0$ c #B17244",
-"a$ c #B27244",
-"b$ c #AE7042",
-"c$ c #AA6C3E",
-"d$ c #A5673C",
-"e$ c #A06337",
-"f$ c #9A5F33",
-"g$ c #955B2F",
-"h$ c #663C1B",
-"i$ c #6A3D1C",
-"j$ c #85512A",
-"k$ c #925A31",
-"l$ c #9B6137",
-"m$ c #AB6D40",
-"n$ c #B17143",
-"o$ c #B27344",
-"p$ c #A86B3D",
-"q$ c #A26539",
-"r$ c #975C32",
-"s$ c #92572E",
-"t$ c #94582B",
-"u$ c #966037",
-"v$ c #9B653C",
-"w$ c #A06940",
-"x$ c #A36E44",
-"y$ c #A67047",
-"z$ c #A46E44",
-"A$ c #A16B42",
-"B$ c #9F6940",
-"C$ c #9B653D",
-"D$ c #98623A",
-"E$ c #905A32",
-"F$ c #653C18",
-"G$ c #653A19",
-"H$ c #6A3E18",
-"I$ c #835029",
-"J$ c #925A32",
-"K$ c #9C6238",
-"L$ c #AE7245",
-"M$ c #AB7044",
-"N$ c #A76E43",
-"O$ c #A16A41",
-"P$ c #9C653D",
-"Q$ c #956038",
-"R$ c #925C33",
-"S$ c #90572D",
-"T$ c #94592D",
-"U$ c #99623A",
-"V$ c #A56F46",
-"W$ c #B0794F",
-"X$ c #B98356",
-"Y$ c #BC8659",
-"Z$ c #BD8659",
-"`$ c #BB8558",
-" % c #B57F53",
-".% c #AE794E",
-"+% c #A77148",
-"@% c #8B562E",
-"#% c #663919",
-"$% c #643811",
-"%% c #6C3D19",
-"&% c #8D562E",
-"*% c #996036",
-"=% c #B17345",
-"-% c #B07448",
-";% c #AE7549",
-">% c #AC754B",
-",% c #AA764C",
-"'% c #A8754F",
-")% c #A6764F",
-"!% c #A6754F",
-"~% c #A5754F",
-"{% c #A4744F",
-"]% c #A3744E",
-"^% c #A2734E",
-"/% c #A0714B",
-"(% c #9E6E48",
-"_% c #9C6A44",
-":% c #996640",
-"<% c #96623B",
-"[% c #935D35",
-"}% c #976037",
-"|% c #AA7449",
-"1% c #BA8356",
-"2% c #BD8759",
-"3% c #BD875A",
-"4% c #AA754B",
-"5% c #9B663D",
-"6% c #88532A",
-"7% c #663A16",
-"8% c #653A18",
-"9% c #643918",
-"0% c #915A32",
-"a% c #9E6339",
-"b% c #AA6C40",
-"c% c #AE754A",
-"d% c #AD764C",
-"e% c #AB774E",
-"f% c #A97750",
-"g% c #A97751",
-"h% c #A87750",
-"i% c #A77750",
-"j% c #A77650",
-"k% c #A67650",
-"l% c #A4754F",
-"m% c #A3744F",
-"n% c #A1724D",
-"o% c #A0724D",
-"p% c #A0714D",
-"q% c #9E6E49",
-"r% c #99663E",
-"s% c #966138",
-"t% c #935B31",
-"u% c #95592D",
-"v% c #B47E52",
-"w% c #B88255",
-"x% c #B68054",
-"y% c #B47F53",
-"z% c #B37E52",
-"A% c #B37D52",
-"B% c #B27D51",
-"C% c #B27C51",
-"D% c #AB764B",
-"E% c #A26E44",
-"F% c #97633B",
-"G% c #945F37",
-"H% c #925E36",
-"I% c #905C33",
-"J% c #8C5731",
-"K% c #87522D",
-"L% c #643916",
-"M% c #925B32",
-"N% c #AB6E41",
-"O% c #AF7143",
-"P% c #AF7043",
-"Q% c #B17447",
-"R% c #B07549",
-"S% c #AF764B",
-"T% c #AE784E",
-"U% c #AD784F",
-"V% c #AB7951",
-"W% c #AA7951",
-"X% c #A97851",
-"Y% c #A87751",
-"Z% c #A3734E",
-"`% c #A1734E",
-" & c #9F714D",
-".& c #9F714B",
-"+& c #9E704B",
-"@& c #9D6E49",
-"#& c #9A6944",
-"$& c #97643D",
-"%& c #955F37",
-"&& c #93592F",
-"*& c #955A2E",
-"=& c #A0683E",
-"-& c #B67F53",
-";& c #B17B50",
-">& c #AD784E",
-",& c #A87349",
-"'& c #A87249",
-")& c #A87248",
-"!& c #A77147",
-"~& c #A77047",
-"{& c #99643C",
-"]& c #925D36",
-"^& c #87532D",
-"/& c #653813",
-"(& c #8F5831",
-"_& c #9F6439",
-":& c #AC6E41",
-"<& c #A96C40",
-"[& c #A66A3E",
-"}& c #955D35",
-"|& c #955D33",
-"1& c #A1663B",
-"2& c #A76B3E",
-"3& c #AD6F42",
-"4& c #B0774B",
-"5& c #AF794E",
-"6& c #AE7950",
-"7& c #AD7A52",
-"8& c #AC7A52",
-"9& c #AB7A52",
-"0& c #AA7952",
-"a& c #A97951",
-"b& c #9F6E49",
-"c& c #9E6C47",
-"d& c #9D6B46",
-"e& c #9D6C47",
-"f& c #9E6D48",
-"g& c #9E6F4A",
-"h& c #9D6F4B",
-"i& c #9D6F4A",
-"j& c #9C6E4A",
-"k& c #9A6A46",
-"l& c #986540",
-"m& c #966038",
-"n& c #955A2F",
-"o& c #955A2D",
-"p& c #965A2E",
-"q& c #985F36",
-"r& c #B37C51",
-"s& c #AE794F",
-"t& c #B07A4F",
-"u& c #B07A50",
-"v& c #B27B51",
-"w& c #B17B51",
-"x& c #AF794F",
-"y& c #A77248",
-"z& c #A67046",
-"A& c #A26C43",
-"B& c #89532D",
-"C& c #905831",
-"D& c #9D6238",
-"E& c #B07143",
-"F& c #AE7A52",
-"G& c #AE7B53",
-"H& c #AD7B53",
-"I& c #AC7B53",
-"J& c #A1704A",
-"K& c #9D6A44",
-"L& c #99653E",
-"M& c #935C33",
-"N& c #935A2F",
-"O& c #97623B",
-"P& c #98643D",
-"Q& c #996641",
-"R& c #9A6843",
-"S& c #9B6C48",
-"T& c #9B6D49",
-"U& c #996944",
-"V& c #97633D",
-"W& c #965E35",
-"X& c #93582E",
-"Y& c #A66F44",
-"Z& c #BB8458",
-"`& c #BA8458",
-" * c #AA744A",
-".* c #A9734A",
-"+* c #AB784F",
-"@* c #A97349",
-"#* c #A77046",
-"$* c #A66F46",
-"%* c #A56E44",
-"&* c #99653C",
-"** c #8D5932",
-"=* c #814D29",
-"-* c #89542D",
-";* c #B27445",
-">* c #B37649",
-",* c #B3784B",
-"'* c #B37A4F",
-")* c #B27C52",
-"!* c #B37B50",
-"~* c #B2774B",
-"{* c #B27345",
-"]* c #AE7B52",
-"^* c #AB7952",
-"/* c #A4734C",
-"(* c #9F6C46",
-"_* c #9A6640",
-":* c #90562D",
-"<* c #90552D",
-"[* c #945A2E",
-"}* c #965D33",
-"|* c #965F37",
-"1* c #97633C",
-"2* c #975F36",
-"3* c #965C31",
-"4* c #965A2D",
-"5* c #975B2E",
-"6* c #975A2E",
-"7* c #945B2F",
-"8* c #B17A4F",
-"9* c #B78154",
-"0* c #AF7D53",
-"a* c #B4835A",
-"b* c #B8885E",
-"c* c #B7875D",
-"d* c #B5855B",
-"e* c #B28158",
-"f* c #B07D54",
-"g* c #AC7950",
-"h* c #A56F44",
-"i* c #9C663D",
-"j* c #8E5B33",
-"k* c #814E29",
-"l* c #653916",
-"m* c #83502A",
-"n* c #9C6237",
-"o* c #B3774A",
-"p* c #B37A4E",
-"q* c #B47C51",
-"r* c #B47D53",
-"s* c #B48055",
-"t* c #B48057",
-"u* c #B38057",
-"v* c #B37C52",
-"w* c #B3794C",
-"x* c #B27447",
-"y* c #AE7C53",
-"z* c #AC7B52",
-"A* c #A4734E",
-"B* c #A3724C",
-"C* c #A2714B",
-"D* c #9F6F49",
-"E* c #9F6D47",
-"F* c #9D6B44",
-"G* c #9B6842",
-"H* c #99653D",
-"I* c #945A31",
-"J* c #965A2F",
-"K* c #995F35",
-"L* c #BA8456",
-"M* c #B27B50",
-"N* c #AD774C",
-"O* c #AB754A",
-"P* c #A97248",
-"Q* c #A87147",
-"R* c #AA754A",
-"S* c #AA744B",
-"T* c #AF7C52",
-"U* c #B17F55",
-"V* c #9E6840",
-"W* c #8F5B33",
-"X* c #8B552E",
-"Y* c #A4683D",
-"Z* c #B47B4F",
-"`* c #B57D52",
-" = c #B68055",
-".= c #B68258",
-"+= c #B68158",
-"@= c #B58158",
-"#= c #B58157",
-"$= c #B1774B",
-"%= c #9E6F49",
-"&= c #9C6943",
-"*= c #98623B",
-"== c #985B2E",
-"-= c #975A2D",
-";= c #975D32",
-">= c #AF784C",
-",= c #AE784C",
-"'= c #A97247",
-")= c #A36B41",
-"!= c #9E653C",
-"~= c #985F35",
-"{= c #935A2E",
-"]= c #9F6840",
-"^= c #A46F46",
-"/= c #A77249",
-"(= c #A9744A",
-"_= c #B38359",
-":= c #B7865C",
-"<= c #B27F55",
-"[= c #9A653C",
-"}= c #86542E",
-"|= c #653918",
-"1= c #8D562F",
-"2= c #B37548",
-"3= c #B57B4F",
-"4= c #B67F54",
-"5= c #B88258",
-"6= c #B88359",
-"7= c #B78359",
-"8= c #B78258",
-"9= c #B57E54",
-"0= c #AF7B52",
-"a= c #9F704B",
-"b= c #97613A",
-"c= c #A06B42",
-"d= c #AE7B51",
-"e= c #B38259",
-"f= c #AD7950",
-"g= c #8A5631",
-"h= c #88542D",
-"i= c #AE7347",
-"j= c #B67D51",
-"k= c #B98258",
-"l= c #B98459",
-"m= c #B98359",
-"n= c #B68157",
-"o= c #B47C50",
-"p= c #B07A51",
-"q= c #AF7C53",
-"r= c #9F6F4A",
-"s= c #9E6D47",
-"t= c #9D6C46",
-"u= c #9C6B46",
-"v= c #9B6943",
-"w= c #965C32",
-"x= c #995C2E",
-"y= c #9A633A",
-"z= c #A9754B",
-"A= c #AB774F",
-"B= c #B28057",
-"C= c #B5845B",
-"D= c #B6855C",
-"E= c #B6865C",
-"F= c #633A19",
-"G= c #623818",
-"H= c #A2673C",
-"I= c #A4693E",
-"J= c #AA7349",
-"K= c #B98358",
-"L= c #BA845A",
-"M= c #B78157",
-"N= c #B47A4E",
-"O= c #B1764A",
-"P= c #B07B52",
-"Q= c #AF7C54",
-"R= c #A5744E",
-"S= c #A2714A",
-"T= c #9F6E48",
-"U= c #9B6942",
-"V= c #96633C",
-"W= c #94613A",
-"X= c #935F37",
-"Y= c #925C35",
-"Z= c #915A31",
-"`= c #8F562E",
-" - c #965B2E",
-".- c #995C31",
-"+- c #995B2E",
-"@- c #996137",
-"#- c #9C673D",
-"$- c #83512C",
-"%- c #996037",
-"&- c #A4714A",
-"*- c #BA8459",
-"=- c #BA855A",
-"-- c #B9855A",
-";- c #B9845A",
-">- c #B27548",
-",- c #B1784C",
-"'- c #B17B52",
-")- c #A7754F",
-"!- c #A3714A",
-"~- c #9A6842",
-"{- c #93603A",
-"]- c #915C35",
-"^- c #8E572F",
-"/- c #93592B",
-"(- c #9A5C31",
-"_- c #95592E",
-":- c #955E33",
-"<- c #945D33",
-"[- c #935D33",
-"}- c #945E35",
-"|- c #955F36",
-"1- c #976138",
-"2- c #9A643B",
-"3- c #9E683E",
-"4- c #9F6A41",
-"5- c #A16B43",
-"6- c #A36D44",
-"7- c #AE7A51",
-"8- c #905E38",
-"9- c #643718",
-"0- c #8C552E",
-"a- c #996842",
-"b- c #BB865B",
-"c- c #B88358",
-"d- c #B2794E",
-"e- c #B17E54",
-"f- c #B17D54",
-"g- c #AF7D54",
-"h- c #A7754E",
-"i- c #A16F48",
-"j- c #9D6A43",
-"k- c #97643E",
-"l- c #935F38",
-"m- c #8D5832",
-"n- c #91562A",
-"o- c #945A2D",
-"p- c #985C2F",
-"q- c #975C2E",
-"r- c #8E5429",
-"s- c #8D552D",
-"t- c #90582F",
-"u- c #9A643C",
-"v- c #A16C43",
-"w- c #B48359",
-"x- c #AC784F",
-"y- c #A76F44",
-"z- c #B27C50",
-"A- c #AC784E",
-"B- c #9C6A42",
-"C- c #885632",
-"D- c #673C18",
-"E- c #693A15",
-"F- c #A86C40",
-"G- c #9B6138",
-"H- c #8B5A36",
-"I- c #B27D54",
-"J- c #BB865A",
-"K- c #B37447",
-"L- c #B3774B",
-"M- c #B37E53",
-"N- c #B37F55",
-"O- c #B27E55",
-"P- c #B17E55",
-"Q- c #A9764F",
-"R- c #A27049",
-"S- c #93613B",
-"T- c #8D5732",
-"U- c #855129",
-"V- c #995C2F",
-"W- c #9A5C2F",
-"X- c #985C2E",
-"Y- c #985B2F",
-"Z- c #975B2F",
-"`- c #8D5229",
-" ; c #8B542D",
-".; c #915B33",
-"+; c #97623A",
-"@; c #B07E54",
-"#; c #AC764B",
-"$; c #A26E46",
-"%; c #9F6A42",
-"&; c #A46D44",
-"*; c #A66E43",
-"=; c #A06D44",
-"-; c #9F6D44",
-";; c #986740",
-">; c #84542E",
-",; c #623615",
-"'; c #B88055",
-"); c #B3784C",
-"!; c #B58055",
-"~; c #B48157",
-"{; c #A06D47",
-"]; c #95633D",
-"^; c #8C5832",
-"/; c #824D25",
-"(; c #9A5C2E",
-"_; c #9B5D2F",
-":; c #9A5D2F",
-"<; c #915C33",
-"[; c #AD7A51",
-"}; c #8E5C36",
-"|; c #86532D",
-"1; c #905D36",
-"2; c #9C663E",
-"3; c #A56D43",
-"4; c #683C13",
-"5; c #875733",
-"6; c #B27E54",
-"7; c #BA8358",
-"8; c #B47A4C",
-"9; c #B57E53",
-"0; c #A06E48",
-"a; c #915F3A",
-"b; c #804B23",
-"c; c #946849",
-"d; c #AD8D71",
-"e; c #BEA487",
-"f; c #CBB394",
-"g; c #D4BC9C",
-"h; c #DCC4A2",
-"i; c #E2CCA7",
-"j; c #E9D2AB",
-"k; c #EFD7AE",
-"l; c #F0D8AE",
-"m; c #F0D8AF",
-"n; c #F0D7AE",
-"o; c #F0D6AD",
-"p; c #F0D6AC",
-"q; c #F0D6AB",
-"r; c #F0D6AA",
-"s; c #EFD6AA",
-"t; c #EED6A9",
-"u; c #ECD4A8",
-"v; c #E2C9A3",
-"w; c #CFB492",
-"x; c #B39073",
-"y; c #9B5D31",
-"z; c #9A5D31",
-"A; c #995D2F",
-"B; c #995B2F",
-"C; c #9D673E",
-"D; c #95623B",
-"E; c #88552F",
-"F; c #85532E",
-"G; c #643919",
-"H; c #9A6943",
-"I; c #B07C52",
-"J; c #A9764E",
-"K; c #AB7348",
-"L; c #B4784B",
-"M; c #B57C50",
-"N; c #B77F53",
-"O; c #9F6D46",
-"P; c #8A5733",
-"Q; c #A6866A",
-"R; c #BDA387",
-"S; c #CEB597",
-"T; c #D9C1A1",
-"U; c #E2CCA8",
-"V; c #EBD4AE",
-"W; c #F0DAB0",
-"X; c #F1D9AF",
-"Y; c #F0D9AF",
-"Z; c #F0D9B0",
-"`; c #F1D9B0",
-" > c #F1DAAF",
-".> c #F0DAAF",
-"+> c #F0D9AE",
-"@> c #F0D8AD",
-"#> c #F0D9AD",
-"$> c #F0D8AC",
-"%> c #F0D7AC",
-"&> c #F0D7AB",
-"*> c #F0D6A9",
-"=> c #EBD1A6",
-"-> c #D8BD9A",
-";> c #AE8869",
-">> c #945E37",
-",> c #AB8364",
-"'> c #BD9B7B",
-")> c #C9AB88",
-"!> c #CEB18D",
-"~> c #D3B590",
-"{> c #D6BA92",
-"]> c #D8BB93",
-"^> c #D9BC94",
-"/> c #D8BC93",
-"(> c #D7BA92",
-"_> c #D5B992",
-":> c #D4B790",
-"<> c #D2B58E",
-"[> c #CFB28C",
-"}> c #CBAE89",
-"|> c #C8AA86",
-"1> c #C4A583",
-"2> c #C0A27F",
-"3> c #BD9C7B",
-"4> c #B89876",
-"5> c #B49171",
-"6> c #AF8C6B",
-"7> c #A88565",
-"8> c #A37D5D",
-"9> c #9F7757",
-"0> c #986C4D",
-"a> c #946644",
-"b> c #90613E",
-"c> c #8D5A36",
-"d> c #88522C",
-"e> c #87522C",
-"f> c #946038",
-"g> c #895631",
-"h> c #623816",
-"i> c #683C1C",
-"j> c #784926",
-"k> c #A8754C",
-"l> c #A9754E",
-"m> c #976641",
-"n> c #84532F",
-"o> c #A66D42",
-"p> c #B98256",
-"q> c #A7744C",
-"r> c #92613B",
-"s> c #A07E63",
-"t> c #BAA085",
-"u> c #CBB496",
-"v> c #D9C2A2",
-"w> c #E6CFAB",
-"x> c #EFD9B1",
-"y> c #F1DBB1",
-"z> c #F1DAB0",
-"A> c #F1DAB1",
-"B> c #F1DBB0",
-"C> c #F1D9AE",
-"D> c #F0D7AA",
-"E> c #F0D6A8",
-"F> c #DFC59F",
-"G> c #BB997A",
-"H> c #AB8464",
-"I> c #CBAE8B",
-"J> c #DEC39A",
-"K> c #ECD09E",
-"L> c #EED19F",
-"M> c #EED19E",
-"N> c #EDD09D",
-"O> c #EED09D",
-"P> c #EED09C",
-"Q> c #EDD09B",
-"R> c #EDCF9A",
-"S> c #ECCF9A",
-"T> c #EDCE99",
-"U> c #ECCE98",
-"V> c #ECCD98",
-"W> c #ECCD97",
-"X> c #ECCD96",
-"Y> c #EBCC96",
-"Z> c #E8CA96",
-"`> c #E6C795",
-" , c #DFC192",
-"., c #D8BA8F",
-"+, c #CDB089",
-"@, c #BD9F7C",
-"#, c #A98767",
-"$, c #8C5C3A",
-"%, c #B4845A",
-"&, c #81502A",
-"*, c #95613A",
-"=, c #7F4E29",
-"-, c #623918",
-";, c #693B1B",
-">, c #80512D",
-",, c #B27D53",
-"', c #B58057",
-"), c #7B4B28",
-"!, c #87532C",
-"~, c #8A5833",
-"{, c #AD7951",
-"], c #86542F",
-"^, c #9D7C61",
-"/, c #BCA387",
-"(, c #CFB99B",
-"_, c #DEC9A6",
-":, c #EBD5AF",
-"<, c #F0DBB2",
-"[, c #F1DBB2",
-"}, c #F1DAB2",
-"|, c #F0DAB1",
-"1, c #DEC49E",
-"2, c #AD8566",
-"3, c #975C2F",
-"4, c #9C6947",
-"5, c #C9AA87",
-"6, c #E2C69B",
-"7, c #EED2A0",
-"8, c #EFD29F",
-"9, c #EFD29E",
-"0, c #EFD19E",
-"a, c #EED19D",
-"b, c #EFD19D",
-"c, c #EED19C",
-"d, c #EFD19C",
-"e, c #EFD09C",
-"f, c #EED09B",
-"g, c #EED09A",
-"h, c #EDD09A",
-"i, c #EDCF99",
-"j, c #EECF99",
-"k, c #EDCE98",
-"l, c #EDCE97",
-"m, c #EDCE96",
-"n, c #EDCD96",
-"o, c #ECCC96",
-"p, c #ECCC95",
-"q, c #EACB94",
-"r, c #E0C192",
-"s, c #CFB38B",
-"t, c #BC9D7A",
-"u, c #976F50",
-"v, c #915E36",
-"w, c #7D4C28",
-"x, c #A46C42",
-"y, c #8D5933",
-"z, c #683C15",
-"A, c #855532",
-"B, c #794A26",
-"C, c #7B4B26",
-"D, c #7C4922",
-"E, c #90684D",
-"F, c #B59A7F",
-"G, c #CDB598",
-"H, c #DEC7A6",
-"I, c #F2DBB3",
-"J, c #F1DBB3",
-"K, c #F2DBB2",
-"L, c #F0D7A9",
-"M, c #F0D6A7",
-"N, c #EED4A7",
-"O, c #D2B694",
-"P, c #9B6640",
-"Q, c #AA8160",
-"R, c #D3B792",
-"S, c #EBCFA0",
-"T, c #EED2A1",
-"U, c #EFD2A1",
-"V, c #F0D2A1",
-"W, c #EFD2A0",
-"X, c #EECF9A",
-"Y, c #EECF98",
-"Z, c #ECCD95",
-"`, c #EDCD95",
-" ' c #ECCC94",
-".' c #ECCC93",
-"+' c #ECCB93",
-"@' c #E0C292",
-"#' c #CDB088",
-"$' c #B0906F",
-"%' c #85522E",
-"&' c #B37D51",
-"*' c #925E37",
-"=' c #7D4C26",
-"-' c #7D4D29",
-";' c #98633B",
-">' c #A56D42",
-",' c #633A18",
-"'' c #613416",
-")' c #895A36",
-"!' c #865532",
-"~' c #8C5C37",
-"{' c #957157",
-"]' c #BCA388",
-"^' c #D4BD9D",
-"/' c #E5CEAA",
-"(' c #F0D9B1",
-"_' c #F2DCB3",
-":' c #E7CCA3",
-"<' c #B79476",
-"[' c #96592D",
-"}' c #B99676",
-"|' c #DCC099",
-"1' c #EFD3A2",
-"2' c #EED29E",
-"3' c #EDCF98",
-"4' c #EDCD94",
-"5' c #ECCC92",
-"6' c #E7C892",
-"7' c #D2B58B",
-"8' c #B39372",
-"9' c #855431",
-"0' c #8C5831",
-"a' c #B5845A",
-"b' c #AA7348",
-"c' c #A46D43",
-"d' c #9D663D",
-"e' c #A26B41",
-"f' c #82512C",
-"g' c #643816",
-"h' c #895936",
-"i' c #85542F",
-"j' c #7D4922",
-"k' c #885C3F",
-"l' c #B59B80",
-"m' c #D2BB9C",
-"n' c #E6CFAA",
-"o' c #F2DAB0",
-"p' c #F2DBB1",
-"q' c #F3DCB2",
-"r' c #F4DDB4",
-"s' c #F4DDB3",
-"t' c #F3DBB2",
-"u' c #F2DBB0",
-"v' c #F2DBAF",
-"w' c #F0D6A6",
-"x' c #EED4A6",
-"y' c #D6BB97",
-"z' c #A17150",
-"A' c #9E6946",
-"B' c #C8A887",
-"C' c #E5C99E",
-"D' c #EFD2A2",
-"E' c #EDCC94",
-"F' c #EDCC93",
-"G' c #ECCB92",
-"H' c #E7C791",
-"I' c #CFB189",
-"J' c #A58362",
-"K' c #9A653D",
-"L' c #AC774E",
-"M' c #B78054",
-"N' c #AB7549",
-"O' c #905D35",
-"P' c #A56C42",
-"Q' c #693D1C",
-"R' c #623919",
-"S' c #865733",
-"T' c #986842",
-"U' c #81522D",
-"V' c #8E5D37",
-"W' c #875C3F",
-"X' c #BBA286",
-"Y' c #DAC3A2",
-"Z' c #EDD6AF",
-"`' c #F2DBB4",
-" ) c #F2DCB4",
-".) c #F3DDB4",
-"+) c #F4DEB5",
-"@) c #F4DFB6",
-"#) c #F4E0B7",
-"$) c #F4DCB3",
-"%) c #F3DBB1",
-"&) c #E9CFA4",
-"*) c #CDB08D",
-"=) c #A1704E",
-"-) c #9F6D49",
-";) c #BE9D7D",
-">) c #D9BE98",
-",) c #ECD1A3",
-"') c #EFD3A3",
-")) c #EED3A2",
-"!) c #F0D3A2",
-"~) c #EED29F",
-"{) c #ECCB91",
-"]) c #EBCA91",
-"^) c #DFC08F",
-"/) c #C0A37E",
-"() c #8A5E3D",
-"_) c #AB764C",
-":) c #B6855B",
-"<) c #8A5732",
-"[) c #8F5B35",
-"}) c #99633B",
-"|) c #643713",
-"1) c #623916",
-"2) c #663C18",
-"3) c #7E512D",
-"4) c #8E5E3A",
-"5) c #8D5C37",
-"6) c #9E6C46",
-"7) c #B3997E",
-"8) c #D9C2A1",
-"9) c #F1DBB4",
-"0) c #F5E0B7",
-"a) c #F4DFB7",
-"b) c #F3DCB3",
-"c) c #F0D5A6",
-"d) c #EFD5A6",
-"e) c #ECD1A5",
-"f) c #E1C69E",
-"g) c #D7BB97",
-"h) c #D4B995",
-"i) c #DAC099",
-"j) c #E3C79F",
-"k) c #EED2A4",
-"l) c #EFD4A4",
-"m) c #F0D4A3",
-"n) c #F0D3A3",
-"o) c #EBCA90",
-"p) c #E7C690",
-"q) c #CBAE86",
-"r) c #967151",
-"s) c #85522C",
-"t) c #BC8559",
-"u) c #7C4B28",
-"v) c #7C4C28",
-"w) c #6A3E1E",
-"x) c #623819",
-"y) c #613413",
-"z) c #613918",
-"A) c #663A18",
-"B) c #774926",
-"C) c #94643E",
-"D) c #885732",
-"E) c #84593C",
-"F) c #C0A88C",
-"G) c #E6CEA9",
-"H) c #F2DCB5",
-"I) c #F3DCB5",
-"J) c #F4DEB6",
-"K) c #F3DFB6",
-"L) c #F3DCB4",
-"M) c #EFD4A6",
-"N) c #EFD4A5",
-"O) c #F0D4A5",
-"P) c #F0D4A4",
-"Q) c #F0D2A2",
-"R) c #ECCB90",
-"S) c #ECCA90",
-"T) c #EACA90",
-"U) c #D3B58A",
-"V) c #A17F5F",
-"W) c #B78053",
-"X) c #A36B42",
-"Y) c #83522C",
-"Z) c #734521",
-"`) c #83522D",
-" ! c #85542E",
-".! c #623815",
-"+! c #A6744C",
-"@! c #815330",
-"#! c #804F2A",
-"$! c #A06F48",
-"%! c #8D684E",
-"&! c #CCB596",
-"*! c #EBD3AC",
-"=! c #F4DDB6",
-"-! c #F0D5A7",
-";! c #F0D5A5",
-">! c #F0D2A0",
-",! c #EECF97",
-"'! c #ECCA8F",
-")! c #EAC98F",
-"!! c #D4B58A",
-"~! c #9C7859",
-"{! c #A56E43",
-"]! c #905C35",
-"^! c #7F572E",
-"/! c #EEBA73",
-"(! c #B28750",
-"_! c #F4C076",
-":! c #F9C479",
-"~ c #754723",
-",~ c #764F28",
-"'~ c #F4C074",
-")~ c #FBC678",
-"!~ c #F9C377",
-"~~ c #F9C277",
-"{~ c #FAC278",
-"]~ c #FAC88D",
-"^~ c #E9CF91",
-"/~ c #E6C877",
-"(~ c #E4C671",
-"_~ c #E4C46D",
-":~ c #C0A157",
-"<~ c #E3C26D",
-"[~ c #E3C36D",
-"}~ c #B29350",
-"|~ c #794B29",
-"1~ c #7D4E2A",
-"2~ c #AC7850",
-"3~ c #7E4D29",
-"4~ c #9B7B61",
-"5~ c #DEC7A3",
-"6~ c #F3DDB6",
-"7~ c #ECCA8E",
-"8~ c #EBC98D",
-"9~ c #E2C28D",
-"0~ c #B39472",
-"a~ c #8F5C35",
-"b~ c #84532D",
-"c~ c #C6985A",
-"d~ c #FAC678",
-"e~ c #F9C47E",
-"f~ c #F9CC99",
-"g~ c #EACD8E",
-"h~ c #E6C872",
-"i~ c #E5C871",
-"j~ c #E6C871",
-"k~ c #E2C16C",
-"l~ c #E0C06B",
-"m~ c #785328",
-"n~ c #895937",
-"o~ c #794C29",
-"p~ c #A9774F",
-"q~ c #A6734C",
-"r~ c #986741",
-"s~ c #BFA78B",
-"t~ c #ECD4AA",
-"u~ c #F4DEB7",
-"v~ c #F3DFB7",
-"w~ c #F1D9AC",
-"x~ c #F0D7A8",
-"y~ c #F0D5A4",
-"z~ c #F0D5A3",
-"A~ c #F0D5A2",
-"B~ c #F0D4A1",
-"C~ c #EFD4A0",
-"D~ c #EFD3A0",
-"E~ c #F0D4A0",
-"F~ c #EFD39F",
-"G~ c #EFD39E",
-"H~ c #EFD29D",
-"I~ c #F0D4A2",
-"J~ c #ECCA8D",
-"K~ c #D8B98B",
-"L~ c #977353",
-"M~ c #B98255",
-"N~ c #A37048",
-"O~ c #A26A41",
-"P~ c #754B19",
-"Q~ c #F2B300",
-"R~ c #F9B900",
-"S~ c #FABA00",
-"T~ c #FAB900",
-"U~ c #FABA21",
-"V~ c #F9BC48",
-"W~ c #FABF60",
-"X~ c #FAC272",
-"Y~ c #FAC277",
-"Z~ c #F9C37D",
-"`~ c #FACC99",
-" { c #E8CF92",
-".{ c #E5C875",
-"+{ c #E5C66D",
-"@{ c #E4C562",
-"#{ c #E3C257",
-"${ c #E3C04A",
-"%{ c #E2BF3F",
-"&{ c #E2BF3C",
-"*{ c #E3BF3C",
-"={ c #E2BE3B",
-"-{ c #E2BE3A",
-";{ c #E2BE39",
-">{ c #E1BE37",
-",{ c #E1BD37",
-"'{ c #E2BE37",
-"){ c #E2BD37",
-"!{ c #E1BD36",
-"~{ c #E1BD35",
-"{{ c #E2BD35",
-"]{ c #BE9B2C",
-"^{ c #6B401C",
-"/{ c #A06F49",
-"({ c #7E4E2A",
-"_{ c #8E6B51",
-":{ c #D9C29F",
-"<{ c #F1D8AC",
-"[{ c #F0D6A5",
-"}{ c #EFD4A1",
-"|{ c #EFD39D",
-"1{ c #EFD29C",
-"2{ c #EED29C",
-"3{ c #EED19B",
-"4{ c #EDCF96",
-"5{ c #EDCE95",
-"6{ c #EDCE94",
-"7{ c #EDCD92",
-"8{ c #ECCD92",
-"9{ c #EDCD91",
-"0{ c #EDCD90",
-"a{ c #ECCC91",
-"b{ c #ECCC90",
-"c{ c #EDCC91",
-"d{ c #EDCC92",
-"e{ c #ECCD93",
-"f{ c #EDCD93",
-"g{ c #ECCD94",
-"h{ c #ECCA8C",
-"i{ c #EBCA8D",
-"j{ c #E7C58C",
-"k{ c #BB9C78",
-"l{ c #8A5731",
-"m{ c #7A4A26",
-"n{ c #99643B",
-"o{ c #613818",
-"p{ c #C28D07",
-"q{ c #FABB00",
-"r{ c #F9BA00",
-"s{ c #F9B800",
-"t{ c #FABB36",
-"u{ c #FABE58",
-"v{ c #FAC370",
-"w{ c #F9C37C",
-"x{ c #FACE9C",
-"y{ c #E7CB7E",
-"z{ c #E5C872",
-"A{ c #E4C461",
-"B{ c #E3C14F",
-"C{ c #E3C03F",
-"D{ c #E3C03E",
-"E{ c #E3BF3B",
-"F{ c #E2BE36",
-"G{ c #E2BE35",
-"H{ c #E1BD33",
-"I{ c #E2BE33",
-"J{ c #E1BD32",
-"K{ c #E1BC32",
-"L{ c #E0BC32",
-"M{ c #896520",
-"N{ c #764925",
-"O{ c #7A4D2A",
-"P{ c #9F6E47",
-"Q{ c #A5724B",
-"R{ c #885733",
-"S{ c #B2997D",
-"T{ c #EAD1A8",
-"U{ c #F3DEB6",
-"V{ c #F1D9AD",
-"W{ c #F0D8AB",
-"X{ c #F0D7A7",
-"Y{ c #EED29D",
-"Z{ c #EFD29B",
-"`{ c #EFD19B",
-" ] c #F0D29D",
-".] c #EECE94",
-"+] c #ECCC8F",
-"@] c #ECCC8E",
-"#] c #ECCC8D",
-"$] c #ECCB8D",
-"%] c #ECCB8C",
-"&] c #ECCB8B",
-"*] c #ECCA8A",
-"=] c #ECCA89",
-"-] c #EBC987",
-";] c #ECC987",
-">] c #ECC986",
-",] c #ECC985",
-"'] c #ECC885",
-")] c #EBC884",
-"!] c #EBC784",
-"~] c #EBC986",
-"{] c #ECC989",
-"]] c #EBCA8C",
-"^] c #D6B88A",
-"/] c #906A4B",
-"(] c #85532D",
-"_] c #A36C42",
-":] c #744B16",
-"<] c #F3B500",
-"[] c #FABB40",
-"}] c #FAC062",
-"|] c #FAC476",
-"1] c #F9C688",
-"2] c #E8CF8C",
-"3] c #E6C974",
-"4] c #E4C35A",
-"5] c #E3C044",
-"6] c #E2BF3B",
-"7] c #E3BF3A",
-"8] c #E3BE3A",
-"9] c #E3BE39",
-"0] c #E2BD33",
-"a] c #C9A52C",
-"b] c #6A3F19",
-"c] c #90613C",
-"d] c #84542F",
-"e] c #C4AC8D",
-"f] c #F1D8AB",
-"g] c #F0D8AA",
-"h] c #EFD4A2",
-"i] c #EED19A",
-"j] c #F0D3A1",
-"k] c #EDD099",
-"l] c #ECCE94",
-"m] c #ECCD90",
-"n] c #EDCD8F",
-"o] c #EDCC8F",
-"p] c #ECCA8B",
-"q] c #ECCA88",
-"r] c #ECC988",
-"s] c #EBC885",
-"t] c #ECC884",
-"u] c #EBC883",
-"v] c #EBC783",
-"w] c #EBC782",
-"x] c #EAC682",
-"y] c #EAC785",
-"z] c #EBC98C",
-"A] c #ECC98C",
-"B] c #E6C48C",
-"C] c #B29370",
-"D] c #814E2A",
-"E] c #A67249",
-"F] c #7F4D2A",
-"G] c #A16940",
-"H] c #673D1C",
-"I] c #C69103",
-"J] c #FBBB00",
-"K] c #F9B919",
-"L] c #FABE57",
-"M] c #FAC474",
-"N] c #F8C178",
-"O] c #FACB96",
-"P] c #E5CA7E",
-"Q] c #E5C873",
-"R] c #E6C873",
-"S] c #E5C66E",
-"T] c #E3C357",
-"U] c #E3C040",
-"V] c #E2BF3A",
-"W] c #9A7723",
-"X] c #683D1C",
-"Y] c #AA7850",
-"Z] c #AC7951",
-"`] c #784A25",
-" ^ c #81522E",
-".^ c #794B2A",
-"+^ c #D0B998",
-"@^ c #F1D8AA",
-"#^ c #F0D8A9",
-"$^ c #EFD5A3",
-"%^ c #F0D39F",
-"&^ c #EFD19A",
-"*^ c #EED098",
-"=^ c #EDCE93",
-"-^ c #ECCD91",
-";^ c #EBC886",
-">^ c #EAC782",
-",^ c #EBC781",
-"'^ c #EBC681",
-")^ c #EBC680",
-"!^ c #EBC888",
-"~^ c #ECC98B",
-"{^ c #EBC98B",
-"]^ c #EBC88C",
-"^^ c #C8AA81",
-"/^ c #8F5E38",
-"(^ c #784F16",
-"_^ c #F5B700",
-":^ c #FAB914",
-"<^ c #FBBE56",
-"[^ c #FAC473",
-"}^ c #F9C787",
-"|^ c #E5C876",
-"1^ c #E6C770",
-"2^ c #E5C55D",
-"3^ c #E3C144",
-"4^ c #E3C140",
-"5^ c #E3C03C",
-"6^ c #D3B030",
-"7^ c #6B401B",
-"8^ c #825330",
-"9^ c #7E4F2A",
-"0^ c #9B6A44",
-"a^ c #835C41",
-"b^ c #DAC39F",
-"c^ c #F1DAAE",
-"d^ c #EFD3A1",
-"e^ c #EDCE92",
-"f^ c #EDCE91",
-"g^ c #ECCD8F",
-"h^ c #EAC681",
-"i^ c #EAC680",
-"j^ c #EAC57F",
-"k^ c #EBC67F",
-"l^ c #EBC785",
-"m^ c #EBC989",
-"n^ c #D8B98A",
-"o^ c #8C6344",
-"p^ c #A56C41",
-"q^ c #603818",
-"r^ c #CC9603",
-"s^ c #FBBC00",
-"t^ c #F9B910",
-"u^ c #FABF5B",
-"v^ c #F9C27C",
-"w^ c #E6C973",
-"x^ c #E5C667",
-"y^ c #E3C24B",
-"z^ c #AB8925",
-"A^ c #693F1B",
-"B^ c #875633",
-"C^ c #7F512D",
-"D^ c #80522E",
-"E^ c #8F6E54",
-"F^ c #E2CAA3",
-"G^ c #F3DBB0",
-"H^ c #EED099",
-"I^ c #EDD096",
-"J^ c #EDCF94",
-"K^ c #EAC67F",
-"L^ c #EAC57E",
-"M^ c #EBC88B",
-"N^ c #EBC88A",
-"O^ c #E2C08B",
-"P^ c #A57047",
-"Q^ c #A57249",
-"R^ c #A0693E",
-"S^ c #603816",
-"T^ c #825812",
-"U^ c #F8BB00",
-"V^ c #FBBD00",
-"W^ c #FABC00",
-"X^ c #F9B933",
-"Y^ c #FAC16A",
-"Z^ c #F8CB97",
-"`^ c #E7CD89",
-" / c #E7CA74",
-"./ c #E7C974",
-"+/ c #E3C457",
-"@/ c #E3C142",
-"#/ c #E3C141",
-"$/ c #DAB732",
-"%/ c #71491B",
-"&/ c #92633D",
-"*/ c #8E6E53",
-"=/ c #E5CCA6",
-"-/ c #F2DAAF",
-";/ c #F5E0B6",
-">/ c #EDCF95",
-",/ c #ECCE92",
-"'/ c #EBC988",
-")/ c #EAC57D",
-"!/ c #EAC580",
-"~/ c #EAC887",
-"{/ c #E7C58B",
-"]/ c #AD8D6B",
-"^/ c #A16E46",
-"// c #8C5C36",
-"(/ c #D7A000",
-"_/ c #FABD4F",
-":/ c #FAC375",
-" c #FBC892",
-"[/ c #E7CD82",
-"}/ c #E6C76A",
-"|/ c #E3C34C",
-"1/ c #E3C242",
-"2/ c #E3BF3E",
-"3/ c #B89629",
-"4/ c #845532",
-"5/ c #8D5D38",
-"6/ c #876348",
-"7/ c #F3DCB1",
-"8/ c #F0D9AC",
-"9/ c #EFD49F",
-"0/ c #EDD098",
-"a/ c #EECF95",
-"b/ c #EDCF93",
-"c/ c #EAC47C",
-"d/ c #EAC47E",
-"e/ c #EBC98A",
-"f/ c #EBC889",
-"g/ c #E8C68A",
-"h/ c #B69773",
-"i/ c #A16A40",
-"j/ c #9D6B43",
-"k/ c #86532E",
-"l/ c #734522",
-"m/ c #603716",
-"n/ c #9D7012",
-"o/ c #FBBE00",
-"p/ c #F9BA33",
-"q/ c #FBC36F",
-"r/ c #F9C177",
-"s/ c #FBC88B",
-"t/ c #E7CB7F",
-"u/ c #E5C563",
-"v/ c #E3C246",
-"w/ c #E3BE3B",
-"x/ c #DFBB33",
-"y/ c #7E5B1D",
-"z/ c #9A6A43",
-"A/ c #764625",
-"B/ c #80593D",
-"C/ c #E0C8A2",
-"D/ c #F4DEB3",
-"E/ c #F1D9AB",
-"F/ c #EDD097",
-"G/ c #EED097",
-"H/ c #EED096",
-"I/ c #ECCE93",
-"J/ c #ECCB8E",
-"K/ c #E9C47D",
-"L/ c #E9C47C",
-"M/ c #EAC47B",
-"N/ c #EAC581",
-"O/ c #EAC789",
-"P/ c #E9C78A",
-"Q/ c #BD9F79",
-"R/ c #8B5731",
-"S/ c #98633A",
-"T/ c #9A6841",
-"U/ c #A06D46",
-"V/ c #693F18",
-"W/ c #966A12",
-"X/ c #EBB100",
-"Y/ c #FABD00",
-"Z/ c #F9B90E",
-"`/ c #FABF62",
-" ( c #F9C687",
-".( c #E7CC7F",
-"+( c #E6C975",
-"@( c #E6C874",
-"#( c #E4C55A",
-"$( c #C4A12C",
-"%( c #683E19",
-"&( c #B17D53",
-"*( c #7C4D29",
-"=( c #7A5133",
-"-( c #DBC39E",
-";( c #EFD5A2",
-">( c #F0D5A1",
-",( c #E9C47B",
-"'( c #E9C37A",
-")( c #ECC98A",
-"!( c #C5A77F",
-"~( c #87542E",
-"{( c #97653E",
-"]( c #855531",
-"^( c #AB7C0F",
-"/( c #C08E09",
-"(( c #C79405",
-"_( c #FBBF00",
-":( c #FAB800",
-"<( c #FABE54",
-"[( c #F9C586",
-"}( c #E8CB7F",
-"|( c #E4C455",
-"1( c #E3C244",
-"2( c #E3C041",
-"3( c #927022",
-"4( c #875833",
-"5( c #764929",
-"6( c #D8C19C",
-"7( c #F4DDB2",
-"8( c #EECF96",
-"9( c #EAC47D",
-"0( c #EAC47A",
-"a( c #E9C379",
-"b( c #EBC789",
-"c( c #C4A57E",
-"d( c #7C4C29",
-"e( c #84522C",
-"f( c #A46B41",
-"g( c #865631",
-"h( c #DDA700",
-"i( c #E1AA00",
-"j( c #8A5F14",
-"k( c #A37710",
-"l( c #FABC49",
-"m( c #FAC376",
-"n( c #FAC584",
-"o( c #E7CC80",
-"p( c #E6C870",
-"q( c #E4C350",
-"r( c #CEAB2E",
-"s( c #885935",
-"t( c #966640",
-"u( c #CEB695",
-"v( c #F2DBAE",
-"w( c #EECF94",
-"x( c #EBC57E",
-"y( c #EAC379",
-"z( c #EAC582",
-"A( c #BEA07A",
-"B( c #875D16",
-"C( c #F8BD00",
-"D( c #FABE00",
-"E( c #E0A900",
-"F( c #DCA500",
-"G( c #FBC000",
-"H( c #F9BB3C",
-"I( c #FAC374",
-"J( c #FBC687",
-"K( c #E7CD84",
-"L( c #E6C86F",
-"M( c #E4C34D",
-"N( c #A28024",
-"O( c #673D19",
-"P( c #966742",
-"Q( c #BAA284",
-"R( c #F1D7A9",
-"S( c #F1D8A9",
-"T( c #E9C378",
-"U( c #EBC585",
-"V( c #E9C689",
-"W( c #B69974",
-"X( c #C79507",
-"Y( c #FAC373",
-"Z( c #F9C78A",
-"`( c #E7CD87",
-" _ c #E6CA74",
-"._ c #E6C76F",
-"+_ c #E3C34E",
-"@_ c #E3C245",
-"#_ c #E2BF3E",
-"$_ c #D7B331",
-"%_ c #6B431B",
-"&_ c #996843",
-"*_ c #A2876C",
-"=_ c #ECD2A6",
-"-_ c #E9C377",
-";_ c #EBC788",
-">_ c #A26A40",
-",_ c #7F4E2A",
-"'_ c #663C1C",
-")_ c #6F4718",
-"!_ c #F0B800",
-"~_ c #FBC100",
-"{_ c #F9B931",
-"]_ c #FAC271",
-"^_ c #FAC88E",
-"/_ c #E8CE8C",
-"(_ c #E7C86F",
-"__ c #E3C34D",
-":_ c #E4C345",
-"<_ c #B19028",
-"[_ c #774925",
-"}_ c #835F43",
-"|_ c #E6CCA4",
-"1_ c #F4DFB5",
-"2_ c #F1D9AA",
-"3_ c #E9C277",
-"4_ c #E9C583",
-"5_ c #E7C489",
-"6_ c #A0805F",
-"7_ c #B1840E",
-"8_ c #F9BA2C",
-"9_ c #F8CA98",
-"0_ c #EAD293",
-"a_ c #E4C34F",
-"b_ c #DEB933",
-"c_ c #78531C",
-"d_ c #D4BC99",
-"e_ c #E9C276",
-"f_ c #E2C08A",
-"g_ c #8B6546",
-"h_ c #A1693E",
-"i_ c #613916",
-"j_ c #E9B300",
-"k_ c #FCC200",
-"l_ c #FABA32",
-"m_ c #E7C972",
-"n_ c #E4C352",
-"o_ c #E3C345",
-"p_ c #E3BF3F",
-"q_ c #E1BE3B",
-"r_ c #DEBB35",
-"s_ c #DCB92E",
-"t_ c #DAB72A",
-"u_ c #D8B726",
-"v_ c #D8B622",
-"w_ c #D8B623",
-"x_ c #D9B724",
-"y_ c #D9B726",
-"z_ c #DBB82D",
-"A_ c #E1BE36",
-"B_ c #BD9C2B",
-"C_ c #673E1B",
-"D_ c #B9A183",
-"E_ c #EFD6A6",
-"F_ c #F3DBAF",
-"G_ c #EAC57C",
-"H_ c #EAC584",
-"I_ c #EAC688",
-"J_ c #D8B988",
-"K_ c #794A28",
-"L_ c #794A25",
-"M_ c #A56B41",
-"N_ c #A6790E",
-"O_ c #FBC200",
-"P_ c #F9BA3A",
-"Q_ c #E7C877",
-"R_ c #E4C454",
-"S_ c #DCBA32",
-"T_ c #D8B624",
-"U_ c #D7B517",
-"V_ c #D9B600",
-"W_ c #DBB700",
-"X_ c #DBB800",
-"Y_ c #DAB700",
-"Z_ c #D7B411",
-"`_ c #DEBA31",
-" : c #E0BC35",
-".: c #87641F",
-"+: c #8E7056",
-"@: c #F2DAAC",
-"#: c #E9C376",
-"$: c #E9C275",
-"%: c #EAC480",
-"&: c #C9AB81",
-"*: c #A0673D",
-"=: c #613816",
-"-: c #CFA32F",
-";: c #DFB134",
-">: c #DFB032",
-",: c #DFB034",
-"': c #DFAF32",
-"): c #DFB031",
-"!: c #E2B024",
-"~: c #EEB810",
-"{: c #F9BB43",
-"]: c #F9C789",
-"^: c #E7CB7D",
-"/: c #E4C559",
-"(: c #E1BE3C",
-"_: c #DAB72D",
-":: c #D7B518",
-"<: c #DAB600",
-"[: c #D7B415",
-"}: c #C4A226",
-"|: c #D9C19C",
-"1: c #F2DAAE",
-"2: c #EDCC8E",
-"3: c #E9C174",
-"4: c #E9C274",
-"5: c #E9C37B",
-"6: c #EAC686",
-"7: c #B49571",
-"8: c #A0683D",
-"9: c #5F3716",
-"0: c #5F3718",
-"a: c #A37A24",
-"b: c #E0B135",
-"c: c #E0B034",
-"d: c #E0B134",
-"e: c #E0B030",
-"f: c #E8B31B",
-"g: c #F9BF00",
-"h: c #FABD55",
-"i: c #FACE9B",
-"j: c #E5C560",
-"k: c #DCBA33",
-"l: c #D7B51B",
-"m: c #DCB900",
-"n: c #DEBA00",
-"o: c #DFBB00",
-"p: c #E0BC00",
-"q: c #E1BD00",
-"r: c #E2BD00",
-"s: c #E1BC00",
-"t: c #DDBA00",
-"u: c #BD9C00",
-"v: c #8D6C14",
-"w: c #694018",
-"x: c #B69E81",
-"y: c #F4DFB4",
-"z: c #E6C388",
-"A: c #8E6A4B",
-"B: c #673F19",
-"C: c #6A4418",
-"D: c #DEAF34",
-"E: c #E9B41B",
-"F: c #F9B700",
-"G: c #FABF63",
-"H: c #E9D093",
-"I: c #E6C772",
-"J: c #E5C666",
-"K: c #DAB82D",
-"L: c #D9B605",
-"M: c #E4C000",
-"N: c #E7C200",
-"O: c #E8C300",
-"P: c #D8B500",
-"Q: c #C09F00",
-"R: c #846147",
-"S: c #E8CFA3",
-"T: c #E9C173",
-"U: c #EAC583",
-"V: c #D5B586",
-"W: c #A57D26",
-"X: c #A47C26",
-"Y: c #79521C",
-"Z: c #E5B436",
-"`: c #EFBD3A",
-" < c #EFBE3A",
-".< c #EEBD3A",
-"+< c #E9BA37",
-"@< c #E4B435",
-"#< c #E0B02A",
-"$< c #F6BC00",
-"%< c #F9B80E",
-"&< c #FAC270",
-"*< c #F8CA92",
-"=< c #E6C875",
-"-< c #E5C66C",
-";< c #E3C247",
-">< c #DAB830",
-",< c #D9B603",
-"'< c #E8C200",
-")< c #E3BF00",
-"!< c #B49304",
-"~< c #673E19",
-"{< c #CEB694",
-"]< c #F4DEB4",
-"^< c #F4DCB1",
-"/< c #E9C482",
-"(< c #B79974",
-"_< c #9F673D",
-":< c #6A4218",
-"<< c #E4B436",
-"[< c #EEBD38",
-"}< c #EFBD38",
-"|< c #EDBB37",
-"1< c #E5B535",
-"2< c #E0B031",
-"3< c #ECB516",
-"4< c #F9BA3B",
-"5< c #E7CA7B",
-"6< c #DDBB37",
-"7< c #D8B607",
-"8< c #E5C100",
-"9< c #7B5817",
-"0< c #997F65",
-"a< c #EDD2A5",
-"b< c #F0D4A6",
-"c< c #E9C172",
-"d< c #E4BF81",
-"e< c #8C694A",
-"f< c #5F3818",
-"g< c #AA8126",
-"h< c #EFBE38",
-"i< c #E6B536",
-"j< c #E3B026",
-"k< c #FABE5A",
-"l< c #FAC78B",
-"m< c #E8CE8E",
-"n< c #E2BF40",
-"o< c #D7B622",
-"p< c #E6C200",
-"q< c #C4A100",
-"r< c #DAC29C",
-"s< c #F3DBAE",
-"t< c #D3B280",
-"u< c #9C653B",
-"v< c #DBAC31",
-"w< c #EFBD37",
-"x< c #EEBC37",
-"y< c #EEBD37",
-"z< c #EBBA36",
-"A< c #E1B232",
-"B< c #E0AF2C",
-"C< c #F7BC00",
-"D< c #F9B702",
-"E< c #F9C178",
-"F< c #DDBB35",
-"G< c #886516",
-"H< c #663D19",
-"I< c #AD9578",
-"J< c #E9C072",
-"K< c #AE8E6A",
-"L< c #9B7422",
-"M< c #EEBC36",
-"N< c #EDBC37",
-"O< c #E5B433",
-"P< c #E0B032",
-"Q< c #FAC890",
-"R< c #E7CA83",
-"S< c #E5C668",
-"T< c #D9B72A",
-"U< c #E9C508",
-"V< c #EBC824",
-"W< c #ECC92C",
-"X< c #ECC92E",
-"Y< c #ECCA27",
-"Z< c #ECC921",
-"`< c #EBC81B",
-" [ c #EAC704",
-".[ c #EAC600",
-"+[ c #E9C500",
-"@[ c #E9C400",
-"#[ c #E8C400",
-"$[ c #CBA800",
-"%[ c #663D18",
-"&[ c #704423",
-"*[ c #E1C89F",
-"=[ c #F2D9AB",
-"-[ c #F0D49F",
-";[ c #DDB877",
-">[ c #794926",
-",[ c #5E3716",
-"'[ c #D5A62E",
-")[ c #EFBD36",
-"![ c #EAB836",
-"~[ c #E0B131",
-"{[ c #E0AF2B",
-"][ c #F9BE00",
-"^[ c #FAC069",
-"/[ c #E3C248",
-"([ c #E2C03F",
-"_[ c #D8B61B",
-":[ c #DCB800",
-"<[ c #E3BE00",
-"[[ c #EAC621",
-"}[ c #ECCB40",
-"|[ c #EECE4C",
-"1[ c #EFCF4D",
-"2[ c #EECE47",
-"3[ c #EDCD3B",
-"4[ c #EDCC36",
-"5[ c #ECCB2F",
-"6[ c #ECCA28",
-"7[ c #EBC819",
-"8[ c #EAC70E",
-"9[ c #927112",
-"0[ c #F2D9AA",
-"a[ c #E9C071",
-"b[ c #B9996F",
-"c[ c #946E22",
-"d[ c #EEBD3D",
-"e[ c #EEBF42",
-"f[ c #EEC047",
-"g[ c #EDC04C",
-"h[ c #EDC150",
-"i[ c #EDC355",
-"j[ c #EDC459",
-"k[ c #EEC55E",
-"l[ c #EEC45E",
-"m[ c #EDC154",
-"n[ c #EEBE42",
-"o[ c #ECBA36",
-"p[ c #E0AF29",
-"q[ c #F9BA3D",
-"r[ c #FACD9B",
-"s[ c #E6CD85",
-"t[ c #E3C458",
-"u[ c #E1BF3F",
-"v[ c #D8B611",
-"w[ c #ECC940",
-"x[ c #EFD058",
-"y[ c #F0D25D",
-"z[ c #F0D157",
-"A[ c #F0D053",
-"B[ c #EDCD42",
-"C[ c #EDCD3D",
-"D[ c #ECCA2A",
-"E[ c #EAC604",
-"F[ c #D3B000",
-"G[ c #673F18",
-"H[ c #6E3F1F",
-"I[ c #754C2E",
-"J[ c #E5CBA1",
-"K[ c #EAC378",
-"L[ c #E2BC75",
-"M[ c #825A3A",
-"N[ c #5E3516",
-"O[ c #D5A936",
-"P[ c #EEBF44",
-"Q[ c #EDC254",
-"R[ c #EDC358",
-"S[ c #EDC45D",
-"T[ c #EDC661",
-"U[ c #EDC765",
-"V[ c #EDC768",
-"W[ c #EDC86D",
-"X[ c #EEC155",
-"Y[ c #EEBC38",
-"Z[ c #E0B132",
-"`[ c #E1B026",
-" } c #D8B60B",
-".} c #E9C404",
-"+} c #EDCC53",
-"@} c #F0D46A",
-"#} c #F1D46B",
-"$} c #F1D466",
-"%} c #F0D361",
-"&} c #F0D25B",
-"*} c #EFD051",
-"=} c #EECF4C",
-"-} c #EECE42",
-";} c #EDCD3C",
-">} c #ECCC34",
-",} c #ECC81B",
-"'} c #EBC710",
-")} c #E9C600",
-"!} c #9F7E0E",
-"~} c #BEA788",
-"{} c #C4A374",
-"]} c #9F7826",
-"^} c #EDBE42",
-"/} c #EDBF47",
-"(} c #EDC04B",
-"_} c #EDC55D",
-":} c #EEC662",
-"<} c #EEC765",
-"[} c #EEC869",
-"}} c #EEC96F",
-"|} c #EDC971",
-"1} c #EDCB75",
-"2} c #EEC973",
-"3} c #EEC258",
-"4} c #EEBC35",
-"5} c #EEBC33",
-"6} c #EBBA35",
-"7} c #E9B316",
-"8} c #F9BB47",
-"9} c #EACF95",
-"0} c #E3C14D",
-"a} c #ECCB54",
-"b} c #F2D573",
-"c} c #F2D674",
-"d} c #F1D570",
-"e} c #F1D46A",
-"f} c #F0D462",
-"g} c #F0D35D",
-"h} c #EECE48",
-"i} c #ECCA2E",
-"j} c #ECC928",
-"k} c #663E18",
-"l} c #7B563C",
-"m} c #E7CDA1",
-"n} c #EED3A5",
-"o} c #ECD2A5",
-"p} c #EAD1A6",
-"q} c #E9D1A6",
-"r} c #E9D1A7",
-"s} c #E8D1A7",
-"t} c #EBD2A6",
-"u} c #EAC889",
-"v} c #E8C78A",
-"w} c #E7C68B",
-"x} c #E6C68B",
-"y} c #E4C58C",
-"z} c #E3C58C",
-"A} c #E4C58D",
-"B} c #E4C58B",
-"C} c #E5C58A",
-"D} c #E6C589",
-"E} c #E8C587",
-"F} c #E9C684",
-"G} c #E5BE72",
-"H} c #8D6A4A",
-"I} c #E1B43E",
-"J} c #EDC769",
-"K} c #EDC86E",
-"L} c #EDC972",
-"M} c #EECB77",
-"N} c #EECC7B",
-"O} c #EDCC79",
-"P} c #EDCD7D",
-"Q} c #EDCA77",
-"R} c #EFC154",
-"S} c #EFBC36",
-"T} c #EFBC35",
-"U} c #EAB933",
-"V} c #E0B130",
-"W} c #DFAF2E",
-"X} c #F4BA00",
-"Y} c #F9C272",
-"Z} c #E4C667",
-"`} c #D7B515",
-" | c #EBC83F",
-".| c #F2D67A",
-"+| c #F3D982",
-"@| c #F3D87E",
-"#| c #F3D87A",
-"$| c #F2D670",
-"%| c #F0D466",
-"&| c #EFD157",
-"*| c #ECCB34",
-"=| c #AA890C",
-"-| c #EFD4A3",
-";| c #E8D1A6",
-">| c #E8D0A6",
-",| c #E7D1A6",
-"'| c #E7D0A6",
-")| c #EAD2A6",
-"!| c #E8C88B",
-"~| c #E5C68C",
-"{| c #E3C58E",
-"]| c #E3C58F",
-"^| c #E3C48E",
-"/| c #E3C48D",
-"(| c #E3C48C",
-"_| c #E3C48B",
-":| c #E3C48A",
-"<| c #E4C489",
-"[| c #E7C486",
-"}| c #E9C581",
-"|| c #E9C175",
-"1| c #E8C070",
-"2| c #C9A776",
-"3| c #5E3718",
-"4| c #5D3516",
-"5| c #C29934",
-"6| c #EDC14F",
-"7| c #EDC255",
-"8| c #EDC86F",
-"9| c #EECC7A",
-"0| c #EECD7F",
-"a| c #EECE83",
-"b| c #EECF86",
-"c| c #EECF88",
-"d| c #EEC76D",
-"e| c #EEBB36",
-"f| c #EAB833",
-"g| c #DFAF30",
-"h| c #E0AF27",
-"i| c #E3C250",
-"j| c #E6C100",
-"k| c #EECE62",
-"l| c #F4DA88",
-"m| c #F4DA86",
-"n| c #F4DA83",
-"o| c #F3D97F",
-"p| c #F2D77A",
-"q| c #F2D675",
-"r| c #EBC81F",
-"s| c #846349",
-"t| c #EAD0A2",
-"u| c #F2DAAD",
-"v| c #ECD3A4",
-"w| c #E6C68E",
-"x| c #E3C590",
-"y| c #E3C38A",
-"z| c #E5C488",
-"A| c #E8C484",
-"B| c #E9C070",
-"C| c #E5BD72",
-"D| c #896343",
-"E| c #845E1C",
-"F| c #8D661F",
-"G| c #5D3515",
-"H| c #AB852F",
-"I| c #EDC250",
-"J| c #EDC55E",
-"K| c #EECA73",
-"L| c #EDCB76",
-"M| c #EDCC7A",
-"N| c #EDCD7E",
-"O| c #EDCD82",
-"P| c #EECE86",
-"Q| c #EED089",
-"R| c #EED18C",
-"S| c #EECC80",
-"T| c #EFBD3B",
-"U| c #EFBC33",
-"V| c #E5B432",
-"W| c #E9B318",
-"X| c #F9BA36",
-"Y| c #E9C519",
-"Z| c #F1D57F",
-"`| c #F5DC8F",
-" 1 c #F4DB8B",
-".1 c #F4DA87",
-"+1 c #F4D983",
-"@1 c #F3D87F",
-"#1 c #F1D56B",
-"$1 c #EFD053",
-"%1 c #EDCD41",
-"&1 c #B49405",
-"*1 c #C7AF8D",
-"=1 c #EED3A3",
-"-1 c #F4DCB0",
-";1 c #ECD2A3",
-">1 c #E9D1A5",
-",1 c #E7CFA6",
-"'1 c #E8D0A5",
-")1 c #E4C68F",
-"!1 c #E2C38A",
-"~1 c #E3C388",
-"{1 c #E7C484",
-"]1 c #E8C071",
-"^1 c #E8BF70",
-"/1 c #E8BF6F",
-"(1 c #613A16",
-"_1 c #E5B437",
-":1 c #E1B33A",
-"<1 c #E3B644",
-"[1 c #EEC769",
-"}1 c #EECD7E",
-"|1 c #EECE82",
-"11 c #EED18D",
-"21 c #EED391",
-"31 c #EECB7F",
-"41 c #EEBC32",
-"51 c #EEBB32",
-"61 c #EEBB33",
-"71 c #E0B12E",
-"81 c #E0AF2E",
-"91 c #F7BD00",
-"01 c #E7CE91",
-"a1 c #E4C35F",
-"b1 c #E0BE3A",
-"c1 c #E9C520",
-"d1 c #F2D682",
-"e1 c #F4DC90",
-"f1 c #F4DB8C",
-"g1 c #F4DB87",
-"h1 c #F4DA84",
-"i1 c #F1D56F",
-"j1 c #E4BF00",
-"k1 c #735016",
-"l1 c #7D5A40",
-"m1 c #EACFA1",
-"n1 c #EDD3A3",
-"o1 c #E8D0A4",
-"p1 c #E7CFA5",
-"q1 c #E8D1A9",
-"r1 c #EBD7B9",
-"s1 c #EDDCC2",
-"t1 c #EFDDC7",
-"u1 c #EFDFCA",
-"v1 c #F0E0CC",
-"w1 c #F0E0CD",
-"x1 c #F0E1CD",
-"y1 c #F0E1CE",
-"z1 c #EFE0CD",
-"A1 c #EFE0CC",
-"B1 c #EFE0CA",
-"C1 c #EFDEC7",
-"D1 c #E8D1A8",
-"E1 c #ECD2A2",
-"F1 c #EAC98D",
-"G1 c #E5C791",
-"H1 c #E3C591",
-"I1 c #E2C48B",
-"J1 c #E8C482",
-"K1 c #E3BC72",
-"L1 c #825B3B",
-"M1 c #653C19",
-"N1 c #CB9D2C",
-"O1 c #EDBD3D",
-"P1 c #EDD08C",
-"Q1 c #EEC975",
-"R1 c #EAB932",
-"S1 c #E0AF30",
-"T1 c #E6B219",
-"U1 c #E3C24D",
-"V1 c #E9C521",
-"W1 c #F2D680",
-"X1 c #F3D77A",
-"Y1 c #BD9B03",
-"Z1 c #633B18",
-"`1 c #C2AB8A",
-" 2 c #EED3A1",
-".2 c #E9D1A4",
-"+2 c #EAD3AF",
-"@2 c #EFE0CB",
-"#2 c #EFE1CC",
-"$2 c #F0E1CC",
-"%2 c #EDDCC3",
-"&2 c #E9D3AF",
-"*2 c #E8CFA5",
-"=2 c #EBCA8B",
-"-2 c #E6C78F",
-";2 c #E3C691",
-">2 c #E4C693",
-",2 c #E7D0AD",
-"'2 c #EAD6BA",
-")2 c #EBDBC2",
-"!2 c #ECDDC8",
-"~2 c #EDDFCB",
-"{2 c #EEE1CD",
-"]2 c #EEE1CE",
-"^2 c #EEE2CF",
-"/2 c #EEE2CE",
-"(2 c #EEE0CC",
-"_2 c #EDE0CB",
-":2 c #EBDAC2",
-"<2 c #EAD7BA",
-"[2 c #E7CFAB",
-"}2 c #E2C28A",
-"|2 c #E3C289",
-"12 c #E4C386",
-"22 c #E9C47F",
-"32 c #C09F72",
-"42 c #A17820",
-"52 c #EEBE3F",
-"62 c #EEC363",
-"72 c #EEBB31",
-"82 c #EFBC32",
-"92 c #E5B42F",
-"02 c #DFAF2D",
-"a2 c #E0AE2C",
-"b2 c #E6C878",
-"c2 c #DCB931",
-"d2 c #F1D574",
-"e2 c #F4D97F",
-"f2 c #7C5B16",
-"g2 c #754F33",
-"h2 c #E7CD9F",
-"i2 c #EDD2A2",
-"j2 c #E7CFA4",
-"k2 c #ECDABE",
-"l2 c #EFDFCB",
-"m2 c #EFE1CD",
-"n2 c #F0E0CB",
-"o2 c #EDDBBF",
-"p2 c #ECD1A1",
-"q2 c #E4C691",
-"r2 c #E5CBA0",
-"s2 c #EAD8BC",
-"t2 c #EDDDC8",
-"u2 c #EFE2CF",
-"v2 c #EEE2D0",
-"w2 c #EFE2D0",
-"x2 c #EFE1D0",
-"y2 c #ECDDC9",
-"z2 c #EAD7BC",
-"A2 c #E5CA9C",
-"B2 c #E2C289",
-"C2 c #E3C187",
-"D2 c #E8C481",
-"E2 c #E9BF70",
-"F2 c #E2BC73",
-"G2 c #7A5030",
-"H2 c #674018",
-"I2 c #E9B835",
-"J2 c #EDCE86",
-"K2 c #EEBD44",
-"L2 c #E0B02D",
-"M2 c #EBB412",
-"N2 c #F9B821",
-"O2 c #E4C464",
-"P2 c #D7B50D",
-"Q2 c #DDB900",
-"R2 c #EECF62",
-"S2 c #F3D87D",
-"T2 c #F3D983",
-"U2 c #F0D465",
-"V2 c #ECCC3C",
-"W2 c #ECCC36",
-"X2 c #C5A300",
-"Y2 c #633A16",
-"Z2 c #BDA586",
-"`2 c #EED2A2",
-" 3 c #EBD1A2",
-".3 c #E7CEA4",
-"+3 c #EDDBC0",
-"@3 c #F0E2CD",
-"#3 c #F1E2CE",
-"$3 c #EDDCC1",
-"%3 c #E7C88F",
-"&3 c #E3C692",
-"*3 c #E4C692",
-"=3 c #E9D5B7",
-"-3 c #EDDDC9",
-";3 c #EDDECA",
-">3 c #E9D3B6",
-",3 c #E3C38B",
-"'3 c #E2C288",
-")3 c #E5C383",
-"!3 c #E9BF6F",
-"~3 c #E8BF6E",
-"{3 c #B3936B",
-"]3 c #CEA026",
-"^3 c #EDCA73",
-"/3 c #EECB76",
-"(3 c #EEC669",
-"_3 c #E6B52F",
-":3 c #DFAE2D",
-"<3 c #E0AE23",
-"[3 c #E4C259",
-"}3 c #DCB930",
-"|3 c #ECC945",
-"13 c #F3D779",
-"23 c #F3D87B",
-"33 c #F2D776",
-"43 c #F2D676",
-"53 c #F2D570",
-"63 c #EAC706",
-"73 c #886712",
-"83 c #9F7F0E",
-"93 c #A5840C",
-"03 c #70472A",
-"a3 c #E6CB9E",
-"b3 c #EAD1A3",
-"c3 c #E8CFA4",
-"d3 c #EBD8BC",
-"e3 c #F0E2CE",
-"f3 c #ECD9BC",
-"g3 c #E9D0A2",
-"h3 c #E4C794",
-"i3 c #EEE0CD",
-"j3 c #E9D6B9",
-"k3 c #E4C385",
-"l3 c #D7B276",
-"m3 c #A97F20",
-"n3 c #EEBA2F",
-"o3 c #EEC046",
-"p3 c #EDCB79",
-"q3 c #EEBD3F",
-"r3 c #EEBC31",
-"s3 c #DFB02D",
-"t3 c #E3C14E",
-"u3 c #F0D369",
-"v3 c #CDAB00",
-"w3 c #623A16",
-"x3 c #623A18",
-"y3 c #A4830C",
-"z3 c #D8B400",
-"A3 c #B79604",
-"B3 c #693C1C",
-"C3 c #B8A182",
-"D3 c #F5DFB6",
-"E3 c #E7CEA3",
-"F3 c #E9D2AF",
-"G3 c #EFDEC9",
-"H3 c #EFDECA",
-"I3 c #F1E2CD",
-"J3 c #EFDDC4",
-"K3 c #EEDCC2",
-"L3 c #EDDABE",
-"M3 c #EDD9BE",
-"N3 c #ECDABD",
-"O3 c #EDDABD",
-"P3 c #EEDABE",
-"Q3 c #EEDBC1",
-"R3 c #EEDDC4",
-"S3 c #EFDEC6",
-"T3 c #EBD4AF",
-"U3 c #E6C891",
-"V3 c #E4C792",
-"W3 c #E3C690",
-"X3 c #E9D3B4",
-"Y3 c #EEE0CE",
-"Z3 c #E7D2B1",
-"`3 c #E2C187",
-" 4 c #E4C285",
-".4 c #E8C47C",
-"+4 c #997856",
-"@4 c #6F4818",
-"#4 c #ECB92D",
-"$4 c #EEBB2F",
-"%4 c #E5B32D",
-"&4 c #DFAE2C",
-"*4 c #E0AF2D",
-"=4 c #E1BE39",
-"-4 c #ECCC4B",
-";4 c #977710",
-">4 c #A8880A",
-",4 c #BA9801",
-"'4 c #633B16",
-")4 c #6C4021",
-"!4 c #E3C89D",
-"~4 c #EBD8BB",
-"{4 c #ECD9BD",
-"]4 c #EEDDC5",
-"^4 c #EFE1CB",
-"/4 c #EDDABC",
-"(4 c #E6CCA2",
-"_4 c #EEE0CA",
-":4 c #EDDDC6",
-"<4 c #EDDDC4",
-"[4 c #ECDCC2",
-"}4 c #ECDBC2",
-"|4 c #ECDDC3",
-"14 c #ECDDC4",
-"24 c #EEDDC6",
-"34 c #EEDFCA",
-"44 c #E5C99B",
-"54 c #E4C284",
-"64 c #E9BF6E",
-"74 c #C9A875",
-"84 c #5C3515",
-"94 c #5C3415",
-"04 c #D6A628",
-"a4 c #EEBA2B",
-"b4 c #EEBC3C",
-"c4 c #EDCA76",
-"d4 c #EDC76B",
-"e4 c #EAB92F",
-"f4 c #E8CF93",
-"g4 c #DAB729",
-"h4 c #E9C402",
-"i4 c #F0D25F",
-"j4 c #EBC921",
-"k4 c #E4C100",
-"l4 c #C8A600",
-"m4 c #E9CFA1",
-"n4 c #E7CEA2",
-"o4 c #EFDFCC",
-"p4 c #EDDBC1",
-"q4 c #EDD9BD",
-"r4 c #EDDBBE",
-"s4 c #ECD8BC",
-"t4 c #ECD8BB",
-"u4 c #EFDFC7",
-"v4 c #E6C790",
-"w4 c #EFE1CF",
-"x4 c #EEDECA",
-"y4 c #ECDCC3",
-"z4 c #ECDBC3",
-"A4 c #EFE1CE",
-"B4 c #E8D2B1",
-"C4 c #E4C183",
-"D4 c #E4BD71",
-"E4 c #7D5536",
-"F4 c #5C3516",
-"G4 c #B68B21",
-"H4 c #EEBA2A",
-"I4 c #EEBE40",
-"J4 c #EEBF48",
-"K4 c #EEBA2E",
-"L4 c #EEBB2E",
-"M4 c #DFAE2A",
-"N4 c #E7CD91",
-"O4 c #E4C467",
-"P4 c #ECCA3F",
-"Q4 c #EECF4D",
-"R4 c #6F4A16",
-"S4 c #D7BE97",
-"T4 c #F1D7A8",
-"U4 c #F0D39E",
-"V4 c #EAD0A0",
-"W4 c #EFDEC8",
-"X4 c #EEDCBE",
-"Y4 c #EEDCBF",
-"Z4 c #EDDCBE",
-"`4 c #F0E0CA",
-" 5 c #E8C990",
-".5 c #E4C793",
-"+5 c #EBDBC3",
-"@5 c #EDDDC5",
-"#5 c #E6C486",
-"$5 c #E8BE6E",
-"%5 c #E8BE6D",
-"&5 c #B7976D",
-"*5 c #835D17",
-"=5 c #EEBA28",
-"-5 c #EEBA2D",
-";5 c #EEBF46",
-">5 c #EDC662",
-",5 c #E4C363",
-"'5 c #EECF51",
-")5 c #F0D362",
-"!5 c #ECCA2F",
-"~5 c #EAC710",
-"{5 c #97760E",
-"]5 c #8A6C52",
-"^5 c #EDD1A0",
-"/5 c #EEDCC0",
-"(5 c #EFDCC0",
-"_5 c #EDDCBF",
-":5 c #ECD8BD",
-"<5 c #F1E2CA",
-"[5 c #EFD5A5",
-"}5 c #E9CA8D",
-"|5 c #E4C897",
-"15 c #ECDDC7",
-"25 c #EDDCC4",
-"35 c #EEDEC6",
-"45 c #EEDEC7",
-"55 c #EFDFC8",
-"65 c #EFDFC9",
-"75 c #EFE0C9",
-"85 c #ECDBC1",
-"95 c #ECDCC4",
-"05 c #E8C588",
-"a5 c #D6B276",
-"b5 c #5C3416",
-"c5 c #E0AD26",
-"d5 c #DEAD29",
-"e5 c #DFAD29",
-"f5 c #E8CE90",
-"g5 c #E4C460",
-"h5 c #E0BD37",
-"i5 c #EAC619",
-"j5 c #C9A700",
-"k5 c #623B18",
-"l5 c #C4AC8B",
-"m5 c #E7CEA1",
-"n5 c #EFDECB",
-"o5 c #F0E1CB",
-"p5 c #EEDDC1",
-"q5 c #EFDDC1",
-"r5 c #EFDDC2",
-"s5 c #EFDEC2",
-"t5 c #EEDBBE",
-"u5 c #E5C793",
-"v5 c #E5CA9B",
-"w5 c #EEDFCB",
-"x5 c #EFE1CA",
-"y5 c #E7BD6D",
-"z5 c #8C6949",
-"A5 c #5B3415",
-"B5 c #C39521",
-"C5 c #EEBA27",
-"D5 c #EEBB2D",
-"E5 c #E9CF92",
-"F5 c #E3C25C",
-"G5 c #DDBA31",
-"H5 c #ECC931",
-"I5 c #8E6E0E",
-"J5 c #6A3F21",
-"K5 c #E5CA9D",
-"L5 c #F2D9AC",
-"M5 c #F1D7A6",
-"N5 c #E9CF9F",
-"O5 c #EFDFC3",
-"P5 c #EFDEC3",
-"Q5 c #F0DEC5",
-"R5 c #EFE2CC",
-"S5 c #EFE2CD",
-"T5 c #EAC684",
-"U5 c #BD9D70",
-"V5 c #9D751B",
-"W5 c #EEB928",
-"X5 c #DFAD27",
-"Y5 c #DFAE29",
-"Z5 c #E4C258",
-"`5 c #DAB82B",
-" 6 c #ECCA38",
-".6 c #D6B300",
-"+6 c #633D16",
-"@6 c #AB9375",
-"#6 c #EFDFC4",
-"$6 c #EFE0C4",
-"%6 c #ECD8BA",
-"&6 c #F0DDC0",
-"*6 c #EACA8E",
-"=6 c #EEDFC9",
-"-6 c #F0E2CF",
-";6 c #F0E3D0",
-">6 c #F1E3D0",
-",6 c #EFE2CE",
-"'6 c #EEDDC8",
-")6 c #E9C480",
-"!6 c #E9BF6D",
-"~6 c #DAB475",
-"{6 c #674015",
-"]6 c #EBB727",
-"^6 c #EEBA35",
-"/6 c #EDC04D",
-"(6 c #DEAD27",
-"_6 c #E8CE91",
-":6 c #E3C158",
-"<6 c #DAB727",
-"[6 c #EDCC3B",
-"}6 c #EBC821",
-"|6 c #7C5B14",
-"16 c #D6BD96",
-"26 c #F1D6A7",
-"36 c #E7CDA0",
-"46 c #EBD8BA",
-"56 c #EEDCC1",
-"66 c #EFDAB7",
-"76 c #E5C792",
-"86 c #F1E4D0",
-"96 c #F1E4D1",
-"06 c #EEDEC8",
-"a6 c #E8BE6C",
-"b6 c #937151",
-"c6 c #683B1B",
-"d6 c #5D3716",
-"e6 c #D6A422",
-"f6 c #EEB926",
-"g6 c #EEB924",
-"h6 c #EEBA26",
-"i6 c #EEBD40",
-"j6 c #DEAD26",
-"k6 c #EACF92",
-"l6 c #E3C258",
-"m6 c #DAB726",
-"n6 c #9A7B0C",
-"o6 c #603916",
-"p6 c #664018",
-"q6 c #AA8908",
-"r6 c #673A1B",
-"s6 c #86684F",
-"t6 c #ECD09F",
-"u6 c #ECD09D",
-"v6 c #E7CEA0",
-"w6 c #E8D2AD",
-"x6 c #EFE1C8",
-"y6 c #F0E5D3",
-"z6 c #F0E4D0",
-"A6 c #EFE1C6",
-"B6 c #F0E1C5",
-"C6 c #EFE1C5",
-"D6 c #F0E1C6",
-"E6 c #EDD8BC",
-"F6 c #EFD5A8",
-"G6 c #E8C98E",
-"H6 c #E9D4B4",
-"I6 c #F1E5D2",
-"J6 c #F1E4D2",
-"K6 c #F2E6D4",
-"L6 c #F2E5D3",
-"M6 c #ECD3AF",
-"N6 c #E9C06F",
-"O6 c #C2A172",
-"P6 c #B88B1D",
-"Q6 c #DFAD26",
-"R6 c #E3C56F",
-"S6 c #DFBC00",
-"T6 c #EAC60A",
-"U6 c #E9C604",
-"V6 c #846212",
-"W6 c #BC9A01",
-"X6 c #816014",
-"Y6 c #C3AB8A",
-"Z6 c #ECDABF",
-"`6 c #F0E7D8",
-" 7 c #F1EDE8",
-".7 c #F1F0EF",
-"+7 c #F1F1F0",
-"@7 c #F1EDE9",
-"#7 c #F0E2C8",
-"$7 c #F0E2C7",
-"%7 c #F1E2C7",
-"&7 c #EFE1C4",
-"*7 c #EDD9BC",
-"=7 c #EFDABD",
-"-7 c #E5C892",
-";7 c #E6CCA3",
-">7 c #EEE1CF",
-",7 c #F2E7D5",
-"'7 c #F3E7D5",
-")7 c #F2E6D5",
-"!7 c #F2E5D2",
-"~7 c #EBCB94",
-"{7 c #DAB574",
-"]7 c #8F6819",
-"^7 c #EDB924",
-"/7 c #EEBC3D",
-"(7 c #EEC049",
-"_7 c #E3C259",
-":7 c #EAC60C",
-"<7 c #876710",
-"[7 c #9D7E0C",
-"}7 c #C4A200",
-"|7 c #E1C79B",
-"17 c #ECD09C",
-"27 c #F0E4D2",
-"37 c #F1EFEC",
-"47 c #F1EFED",
-"57 c #F0E7D6",
-"67 c #F1E2C8",
-"77 c #F1E3C8",
-"87 c #F0D9B5",
-"97 c #E9CA8F",
-"07 c #F3E7D6",
-"a7 c #F2E7D6",
-"b7 c #F2E8D8",
-"c7 c #F3E8D8",
-"d7 c #F3E7D7",
-"e7 c #E7BE6C",
-"f7 c #5F3916",
-"g7 c #E9B423",
-"h7 c #EEBA32",
-"i7 c #EDBC3C",
-"j7 c #EDBE45",
-"k7 c #EEC048",
-"l7 c #DEAC24",
-"m7 c #DDB92E",
-"n7 c #EAC500",
-"o7 c #AF8F04",
-"p7 c #7D5C12",
-"q7 c #846312",
-"r7 c #8D7258",
-"s7 c #F1D8A8",
-"t7 c #E8CE9E",
-"u7 c #E7CC9E",
-"v7 c #EEDCC3",
-"w7 c #F0E9DF",
-"x7 c #F1ECE3",
-"y7 c #F2E5CA",
-"z7 c #F2E4CA",
-"A7 c #F1E3C9",
-"B7 c #F0E1C7",
-"C7 c #E9D4B5",
-"D7 c #F4E9DA",
-"E7 c #F3E9DA",
-"F7 c #F3E8D9",
-"G7 c #F2E7D7",
-"H7 c #B8986D",
-"I7 c #D6A41F",
-"J7 c #EEB923",
-"K7 c #EEB823",
-"L7 c #EDBC3A",
-"M7 c #EDBD3F",
-"N7 c #DFAC24",
-"O7 c #DFAD24",
-"P7 c #DEAD24",
-"Q7 c #E3C159",
-"R7 c #E0BC33",
-"S7 c #EAC602",
-"T7 c #CAA700",
-"U7 c #633D18",
-"V7 c #BEA686",
-"W7 c #E7CD9E",
-"X7 c #ECD9BE",
-"Y7 c #F0EBE3",
-"Z7 c #F1EEE9",
-"`7 c #F1EBDF",
-" 8 c #F1E8D7",
-".8 c #F2E6D3",
-"+8 c #F2E6D0",
-"@8 c #F2E7D4",
-"#8 c #F1E6D1",
-"$8 c #F1E4CA",
-"%8 c #F0D9B7",
-"&8 c #E4C896",
-"*8 c #EEDFC8",
-"=8 c #F3E9D9",
-"-8 c #F3EADA",
-";8 c #F4EADA",
-">8 c #F4EADC",
-",8 c #F4EBDC",
-"'8 c #F4EADB",
-")8 c #F2E7D8",
-"!8 c #F2E5D4",
-"~8 c #F0E3CF",
-"{8 c #EAC47F",
-"]8 c #E8BD6C",
-"^8 c #E8BD6A",
-"/8 c #D3AF75",
-"(8 c #BF911C",
-"_8 c #EDB821",
-":8 c #EDB823",
-"<8 c #EEB927",
-"[8 c #8D6C10",
-"}8 c #D9C097",
-"|8 c #F1D6A8",
-"18 c #F3DAAC",
-"28 c #EBCE9B",
-"38 c #F0EBE2",
-"48 c #F1EADE",
-"58 c #F1E5CF",
-"68 c #F3E5CB",
-"78 c #F1E4C9",
-"88 c #E8CA8F",
-"98 c #EEE0CB",
-"08 c #F4EBDD",
-"a8 c #F5EBDE",
-"b8 c #F5EBDD",
-"c8 c #ECD6B3",
-"d8 c #E9BE6D",
-"e8 c #E5BC6D",
-"f8 c #795032",
-"g8 c #694115",
-"h8 c #A67B1A",
-"i8 c #EEB821",
-"j8 c #DEAC22",
-"k8 c #DEAC23",
-"l8 c #E3C15A",
-"m8 c #D0AE00",
-"n8 c #623D16",
-"o8 c #79583D",
-"p8 c #ECCF9D",
-"q8 c #F0D29C",
-"r8 c #E8CD9C",
-"s8 c #EDDABF",
-"t8 c #F0E8DE",
-"u8 c #F1E8DA",
-"v8 c #F1E3CA",
-"w8 c #F2E5CB",
-"x8 c #F3E6CB",
-"y8 c #F0D9B6",
-"z8 c #E6C791",
-"A8 c #F6ECDF",
-"B8 c #F5ECDF",
-"C8 c #F6EDE0",
-"D8 c #ECDAC0",
-"E8 c #E9C47E",
-"F8 c #E8BE6A",
-"G8 c #AB8B65",
-"H8 c #6E4221",
-"I8 c #754E16",
-"J8 c #8D6519",
-"K8 c #8B6317",
-"L8 c #EEB820",
-"M8 c #EDB81E",
-"N8 c #E4C571",
-"O8 c #E3C15F",
-"P8 c #D8B51D",
-"Q8 c #A0800A",
-"R8 c #603918",
-"S8 c #663918",
-"T8 c #B1997B",
-"U8 c #F3DBAD",
-"V8 c #E7CC9D",
-"W8 c #EFE3D2",
-"X8 c #F1EADF",
-"Y8 c #F0E3CA",
-"Z8 c #F0E3C9",
-"`8 c #DBD0B7",
-" 9 c #B9AF99",
-".9 c #938A79",
-"+9 c #797364",
-"@9 c #504B40",
-"#9 c #534E42",
-"$9 c #787264",
-"%9 c #928A79",
-"&9 c #B8AF9B",
-"*9 c #DBD1B8",
-"=9 c #F2E6CC",
-"-9 c #F2E7CD",
-";9 c #F3E6CC",
-">9 c #EEDABD",
-",9 c #F3E6D4",
-"'9 c #F6ECE0",
-")9 c #F6EEE1",
-"!9 c #F6EDE1",
-"~9 c #F6EEE2",
-"{9 c #F5EBDC",
-"]9 c #ECD3AD",
-"^9 c #C9A774",
-"/9 c #6F4423",
-"(9 c #653A1B",
-"_9 c #C7981A",
-":9 c #795216",
-"<9 c #734D16",
-"[9 c #EDB820",
-"}9 c #EEB921",
-"|9 c #DEAC20",
-"19 c #DFAC23",
-"29 c #E5C579",
-"39 c #DCB82A",
-"49 c #633F16",
-"59 c #D2B992",
-"69 c #ECD099",
-"79 c #E8D1AB",
-"89 c #EFE0C5",
-"99 c #F1F0EE",
-"09 c #F1E7D6",
-"a9 c #EEE1C6",
-"b9 c #C6BBA4",
-"c9 c #696255",
-"d9 c #201B13",
-"e9 c #151109",
-"f9 c #050401",
-"g9 c #000000",
-"h9 c #201D13",
-"i9 c #655F52",
-"j9 c #C5BBA5",
-"k9 c #F0E4CA",
-"l9 c #F3E7CD",
-"m9 c #EACA8D",
-"n9 c #F6EFE3",
-"o9 c #F6EEE3",
-"p9 c #F7F0E4",
-"q9 c #F6EFE4",
-"r9 c #DBB573",
-"s9 c #714626",
-"t9 c #643818",
-"u9 c #B48719",
-"v9 c #E0AC1D",
-"w9 c #9B7218",
-"x9 c #906817",
-"y9 c #FAC57D",
-"z9 c #E6C881",
-"A9 c #E3C46E",
-"B9 c #E4C466",
-"C9 c #B99801",
-"D9 c #683E1E",
-"E9 c #E7CB9B",
-"F9 c #EBCF9A",
-"G9 c #EFDCC4",
-"H9 c #F0E5D0",
-"I9 c #F0E3C8",
-"J9 c #D7CCB3",
-"K9 c #6C6657",
-"L9 c #15120B",
-"M9 c #686255",
-"N9 c #D9CEB7",
-"O9 c #F2E7CC",
-"P9 c #EFDAB8",
-"Q9 c #E9C98E",
-"R9 c #E6CCA1",
-"S9 c #E0D9CF",
-"T9 c #BBB6AD",
-"U9 c #8E8982",
-"V9 c #6D6A65",
-"W9 c #45413E",
-"X9 c #8E8983",
-"Y9 c #BBB5AD",
-"Z9 c #E0D9D0",
-"`9 c #E7BD6A",
-" 0 c #E7BD69",
-".0 c #876445",
-"+0 c #7A5417",
-"@0 c #EDB71D",
-"#0 c #EDB71E",
-"$0 c #EDB81D",
-"%0 c #DFAC22",
-"&0 c #FAC789",
-"*0 c #E5C988",
-"=0 c #E3C36A",
-"-0 c #83630F",
-";0 c #A1896C",
-">0 c #EACD9B",
-",0 c #E6CB9D",
-"'0 c #EEDEC5",
-")0 c #F0E5CF",
-"!0 c #BFB49D",
-"~0 c #363228",
-"{0 c #2D2921",
-"]0 c #BFB5A0",
-"^0 c #F3E7CE",
-"/0 c #E8C98F",
-"(0 c #EBD8BD",
-"_0 c #DED7CD",
-":0 c #8B867F",
-"<0 c #292724",
-"[0 c #181713",
-"}0 c #080805",
-"|0 c #23201D",
-"10 c #8B8680",
-"20 c #DED7CE",
-"30 c #ECD4B0",
-"40 c #E8BF6D",
-"50 c #E8BD69",
-"60 c #B09169",
-"70 c #6D4021",
-"80 c #DAA71A",
-"90 c #EEB81B",
-"00 c #EDB71B",
-"a0 c #EEB81D",
-"b0 c #FACB92",
-"c0 c #E7CE90",
-"d0 c #DBB729",
-"e0 c #623B16",
-"f0 c #643F16",
-"g0 c #C8AF8C",
-"h0 c #EDD09C",
-"i0 c #F4DCAF",
-"j0 c #E8CD9B",
-"k0 c #E7CB9D",
-"l0 c #EFDDC6",
-"m0 c #EFE7DA",
-"n0 c #BCB19C",
-"o0 c #27221A",
-"p0 c #BBB39E",
-"q0 c #E7C790",
-"r0 c #EDDEC9",
-"s0 c #B9B3AB",
-"t0 c #B9B4AB",
-"u0 c #F6F0E4",
-"v0 c #E8C377",
-"w0 c #CAA873",
-"x0 c #6E4422",
-"y0 c #B88B19",
-"z0 c #EDB719",
-"A0 c #DEAC1E",
-"B0 c #F9CD9A",
-"C0 c #E4C36D",
-"D0 c #E2BE40",
-"E0 c #D8B600",
-"F0 c #9B7C0C",
-"G0 c #DDC297",
-"H0 c #E7CC9B",
-"I0 c #EBD5B4",
-"J0 c #ECD8BE",
-"K0 c #F0ECE6",
-"L0 c #F0ECE4",
-"M0 c #CBC0A8",
-"N0 c #17130B",
-"O0 c #CCC1AB",
-"P0 c #EFD6AE",
-"Q0 c #E5C790",
-"R0 c #E5C896",
-"S0 c #A39E97",
-"T0 c #A29E96",
-"U0 c #ECDCC1",
-"V0 c #DCB672",
-"W0 c #704626",
-"X0 c #875F16",
-"Y0 c #EDB619",
-"Z0 c #EEB71B",
-"`0 c #E2BE47",
-" a c #D1AF00",
-".a c #A58506",
-"+a c #A18108",
-"@a c #5F3815",
-"#a c #6C462A",
-"$a c #ECCD9B",
-"%a c #E6CB9C",
-"&a c #E7CB9C",
-"*a c #EBD7B8",
-"=a c #EFDEC4",
-"-a c #F0E3CD",
-";a c #E7DAC0",
-">a c #554F42",
-",a c #4C473C",
-"'a c #EADEC5",
-")a c #EFD9B7",
-"!a c #E7D1AE",
-"~a c #B9B4AC",
-"{a c #F7F0E6",
-"]a c #ECCEA0",
-"^a c #E6BD68",
-"/a c #866445",
-"(a c #E1AC1A",
-"_a c #EDB618",
-":a c #EDB720",
-"b c #DEAB1B",
-",b c #DEAB1D",
-"'b c #DEAC1B",
-")b c #FAC066",
-"!b c #E3C265",
-"~b c #D7B405",
-"{b c #AC8B04",
-"]b c #E3C698",
-"^b c #F0D39D",
-"/b c #EBD6B8",
-"(b c #9C927F",
-"_b c #9B9382",
-":b c #BBB7AF",
-"c c #E9B41D",
-",c c #DEAB1A",
-"'c c #DEAB18",
-")c c #E2BF57",
-"!c c #E0BB2F",
-"~c c #B69502",
-"{c c #5F3816",
-"]c c #C6AC89",
-"^c c #EACD98",
-"/c c #EBD7BA",
-"(c c #F0EAE1",
-"_c c #7D7565",
-":c c #7A7465",
-"d c #E1DBD3",
-",d c #E8BD66",
-"'d c #9D7E5B",
-")d c #693E1F",
-"!d c #B07508",
-"~d c #D79100",
-"{d c #D69100",
-"]d c #EBB410",
-"^d c #E7B219",
-"/d c #DEAC18",
-"(d c #E8B100",
-"_d c #F9C47A",
-":d c #E6C986",
-"e c #EBCDA0",
-",e c #D0AC72",
-"'e c #6B4221",
-")e c #C88C03",
-"!e c #E89A00",
-"~e c #E99A00",
-"{e c #E59900",
-"]e c #D79200",
-"^e c #ECB40E",
-"/e c #EDB510",
-"(e c #E4AE15",
-"_e c #F3B800",
-":e c #FABF61",
-"f c #D79000",
-",f c #E1A502",
-"'f c #EDB50D",
-")f c #E0AC11",
-"!f c #E5AE00",
-"~f c #FABF64",
-"{f c #E3C26A",
-"]f c #E3C062",
-"^f c #E1BB2B",
-"/f c #DFB827",
-"(f c #E0B400",
-"_f c #936E10",
-":f c #BFA683",
-"g c #876212",
-",g c #C9AF8A",
-"'g c #E8CB96",
-")g c #EBD6BB",
-"!g c #EFE2C8",
-"~g c #E5C58B",
-"{g c #E9D4B7",
-"]g c #ECD1AB",
-"^g c #BC9B6D",
-"/g c #A66A0C",
-"(g c #DD9300",
-"_g c #D99B00",
-":g c #ECB408",
-"h c #ECCE97",
-",h c #E8CA95",
-"'h c #ECDAC2",
-")h c #EED9BB",
-"!h c #ECD0A6",
-"~h c #DBB46E",
-"{h c #6B3E16",
-"]h c #CB8500",
-"^h c #D89500",
-"/h c #ECB403",
-"(h c #E1AB09",
-"_h c #E1AB00",
-":h c #F9BB00",
-"i c #E3C067",
-",i c #E0B92E",
-"'i c #DBB61E",
-")i c #EABC00",
-"!i c #9D7710",
-"~i c #BAA17F",
-"{i c #EED9BA",
-"]i c #EBC985",
-"^i c #E9C278",
-"/i c #B27208",
-"(i c #DCA702",
-"_i c #EFB400",
-":i c #F9C06E",
-"j c #E9D2B4",
-",j c #EDD19F",
-"'j c #ECD2AA",
-")j c #ECD1A7",
-"!j c #E6BB63",
-"~j c #5C3316",
-"{j c #A16809",
-"]j c #D58F00",
-"^j c #EAB100",
-"/j c #F8B800",
-"(j c #F9B94B",
-"_j c #E7C990",
-":j c #E3C069",
-"k c #F0B200",
-",k c #F8B400",
-"'k c #F9BC5F",
-")k c #E2C173",
-"!k c #E1BC53",
-"~k c #DDB51D",
-"{k c #C3A100",
-"]k c #96760B",
-"^k c #5D3715",
-"/k c #BEA582",
-"(k c #EDD2A7",
-"_k c #EDD7B6",
-":k c #EBD4B6",
-"l c #F1D59F",
-",l c #F3D9A5",
-"'l c #F4DCAC",
-")l c #C17F00",
-"!l c #DEA000",
-"~l c #E8AE00",
-"{l c #D29C01",
-"]l c #C18F07",
-"^l c #F9B94D",
-"/l c #F8C177",
-"(l c #E3C178",
-"_l c #E1BB4E",
-":l c #DFB71D",
-"m c #CFA055",
-",m c #D3A961",
-"'m c #E8C27C",
-")m c #E8BD67",
-"!m c #E7BC66",
-"~m c #E6BB64",
-"{m c #E7BB60",
-"]m c #E6B95F",
-"^m c #9B6F10",
-"/m c #E2A700",
-"(m c #F9B954",
-"_m c #F8C27E",
-":m c #E3C482",
-"n c #D49528",
-",n c #D59628",
-"'n c #D19228",
-")n c #CD9742",
-"!n c #D1A55C",
-"~n c #E4BE76",
-"{n c #E7BC62",
-"]n c #D9B16C",
-"^n c #E5A800",
-"/n c #F8B519",
-"(n c #F9C073",
-"_n c #E3C37D",
-":n c #DFB942",
-"o c #D29531",
-",o c #D8972A",
-"'o c #D8982A",
-")o c #DA9929",
-"!o c #DB992A",
-"~o c #DC9B2C",
-"{o c #DD9B2C",
-"]o c #DD9C2C",
-"^o c #DE9D2C",
-"/o c #DF9D2C",
-"(o c #DF9C2C",
-"_o c #DF9D2D",
-":o c #DE9C2C",
-"p c #DFB513",
-",p c #DAB400",
-"'p c #583011",
-")p c #D9BC8D",
-"!p c #E8C582",
-"~p c #D1A65F",
-"{p c #D29633",
-"]p c #DE9C2A",
-"^p c #E2A12D",
-"/p c #E4A12D",
-"(p c #E4A12E",
-"_p c #E4A02D",
-":p c #E3A02E",
-"