././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5392618 kiwi-10.1.18/.bumpversion.cfg0000644000000000000000000000025714711142327012671 0ustar00[bumpversion] current_version = 10.1.18 commit = True tag = True [bumpversion:file:pyproject.toml] [bumpversion:file:kiwi/version.py] [bumpversion:file:doc/source/conf.py] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.543262 kiwi-10.1.18/.virtualenv.dev-requirements.txt0000644000000000000000000000165314711142327016076 0ustar00# # Requirement files for Python Virtual Environments # -r .virtualenv.requirements.txt # poetry for building/installing/upload poetry # virtualenv-based automation of test activities tox # python unit testing framework pytest pytest-cov pytest-xdist # Rolling backport of unittest.mock for all Pythons mock # Version-bump your software with a single command! bumpversion # A built-package format for Python wheel # Python style guide checker flake8 mypy types-requests types-PyYAML types-mock types-simplejson # Generate Data Structures from XML Schema # http://pythonhosted.org/generateDS generateDS==2.29.24 # for building documentation sphinx>=5.0.0 git+https://github.com/openSUSE/rstxml2docbook.git@feature/kiwi sphinx_rtd_theme sphinxcontrib-spelling pyenchant # for github pages deployment tasks travis-sphinx ghp-import # for helper tools python-dateutil # for release twine # for scripts testing pytest-container ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.543262 kiwi-10.1.18/.virtualenv.requirements.txt0000644000000000000000000000076614711142327015326 0ustar00# # Requirement files for Python Virtual Environments # # Shell interface for docopt, the command-line interface description language docopt-ng # Powerful and Pythonic XML processing library lxml # YAML file parsing PyYAML # TOML file parsing toml # Network request/response library requests # markup support anymarkup-core xmltodict # provides pkg_resources setuptools # json support that also knows about tuples simplejson # TOML file parsing toml # markup support anymarkup-core xmltodict ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.543262 kiwi-10.1.18/LICENSE0000644000000000000000000010451314711142327010566 0ustar00 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 . ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.543262 kiwi-10.1.18/Makefile0000644000000000000000000001025514711142327011220 0ustar00buildroot = / docdir = /usr/share/doc/packages python_version = 3 python_lookup_name = python$(python_version) python = $(shell which $(python_lookup_name)) LC = LC_MESSAGES version := $(shell \ $(python) -c \ 'from kiwi.version import __version__; print(__version__)'\ ) install_dracut: for dracut in dracut/modules.d/*; do \ ${MAKE} -C $$dracut install ;\ done install_package_docs: install -d -m 755 ${buildroot}${docdir}/python-kiwi install -m 644 LICENSE \ ${buildroot}${docdir}/python-kiwi/LICENSE install -m 644 README.rst \ ${buildroot}${docdir}/python-kiwi/README install: # apart from python sources there are also # the manual pages and the completion # Note: These information will be missing when installed from pip # manual pages install -d -m 755 ${buildroot}usr/share/man/man8 for man in doc/build/man/*.8; do \ install -m 644 $$man ${buildroot}usr/share/man/man8 ;\ done # completion install -d -m 755 ${buildroot}usr/share/bash-completion/completions $(python) helper/completion_generator.py \ > ${buildroot}usr/share/bash-completion/completions/kiwi-ng # kiwi default configuration install -d -m 755 ${buildroot}etc install -m 644 kiwi.yml ${buildroot}etc/kiwi.yml # kiwi old XSL stylesheets for upgrade install -d -m 755 ${buildroot}usr/share/kiwi cp -a helper/xsl_to_v74 ${buildroot}usr/share/kiwi/ tox: tox -- "-n 5" kiwi/schema/kiwi.rng: kiwi/schema/kiwi.rnc # whenever the schema is changed this target will convert # the short form of the RelaxNG schema to the format used # in code and auto generates the python data structures @type -p trang &>/dev/null || \ (echo "ERROR: trang not found in path: $(PATH)"; exit 1) trang -I rnc -O rng kiwi/schema/kiwi.rnc kiwi/schema/kiwi.rng # XML parser code is auto generated from schema using generateDS # http://pythonhosted.org/generateDS # --- # a) modify arch-name xsd:token pattern to be generic because # generateDS translates the regular expression into another # expression which is different and wrong compared to the # expression in the schema cat kiwi/schema/kiwi.rnc | sed -e \ s'@arch-name = xsd:token.*@arch-name = xsd:token {pattern = ".*"}@' >\ kiwi/schema/kiwi_modified_for_generateDS.rnc # convert schema rnc format into xsd format and call generateDS trang -I rnc -O xsd kiwi/schema/kiwi_modified_for_generateDS.rnc \ kiwi/schema/kiwi_for_generateDS.xsd generateDS.py -f --external-encoding='utf-8' --no-dates --no-warnings \ -o kiwi/xml_parse.py kiwi/schema/kiwi_for_generateDS.xsd rm kiwi/schema/kiwi_for_generateDS.xsd rm kiwi/schema/kiwi_modified_for_generateDS.rnc obs_test_status: ./.obs_test_status valid: for i in `find build-tests test kiwi -name *.xml -o -name *.kiwi`; do \ if [ ! -L $$i ];then \ xsltproc -o $$i.converted kiwi/xsl/master.xsl $$i && \ mv $$i.converted $$i ;\ fi \ done git_attributes: # the following is required to update the $Format:%H$ git attribute # for details on when this target is called see setup.py git archive HEAD kiwi/version.py | tar -x clean_git_attributes: # cleanup version.py to origin state # for details on when this target is called see setup.py git checkout kiwi/version.py build: clean tox # build the sdist source tarball poetry build --format=sdist # provide rpm source tarball mv dist/kiwi-${version}.tar.gz dist/python-kiwi.tar.gz # update rpm changelog using reference file helper/update_changelog.py --since package/python-kiwi.changes --fix > \ dist/python-kiwi.changes helper/update_changelog.py --file package/python-kiwi.changes >> \ dist/python-kiwi.changes # update package version in spec file cat package/python-kiwi-spec-template | sed -e s'@%%VERSION@${version}@' \ > dist/python-kiwi.spec # update package version in PKGBUILD file md5sums=$$(md5sum dist/python-kiwi.tar.gz | cut -d" " -f1); \ cat package/python-kiwi-pkgbuild-template | sed \ -e s'@%%VERSION@${version}@' \ -e s"@%%MD5SUM@$${md5sums}@" > dist/PKGBUILD # provide rpm rpmlintrc cp package/python-kiwi-rpmlintrc dist # provide patches cp package/*.patch dist pypi: clean tox poetry build --format=sdist poetry publish --repository=pypi clean: clean_git_attributes rm -rf dist rm -rf doc/build rm -rf doc/dist ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.543262 kiwi-10.1.18/README.rst0000644000000000000000000000407714711142327011254 0ustar00KIWI - Next Generation ====================== .. |GitHub Action Code Style| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-code-style.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |GitHub Action Config Functions| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-config-functions.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |GitHub Action Documentation| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-documentation.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |GitHub Action Publish Pages| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-publish-pages.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |GitHub Action Publish PyPi| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-publish-to-pypi.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |GitHub Action Unit Types| image:: https://github.com/OSInside/kiwi/actions/workflows/ci-units-types.yml/badge.svg :target: https://github.com/OSInside/kiwi/actions .. |Health| image:: https://app.codacy.com/project/badge/Grade/228f7e8cd15d448688a590c272ec3789 :target: https://www.codacy.com/gh/OSInside/kiwi/dashboard?utm_source=github.com&utm_medium=referral&utm_content=OSInside/kiwi&utm_campaign=Badge_Grade .. |Doc| replace:: `Documentation `__ .. |Installation| replace:: `Installation `__ .. |Contributing| replace:: `Contributing `__ .. |Donate| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif :target: https://www.paypal.me/SchaeferMarcus |GitHub Action Code Style| |GitHub Action Config Functions| |GitHub Action Documentation| |GitHub Action Publish Pages| |GitHub Action Publish PyPi| |GitHub Action Unit Types| |Health| **KIWI, the OS image and appliance builder.** * |Installation| * |Contributing| * |Doc| We'll donate it for good luck so's you're sure to come back :) |Donate| ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/Makefile0000644000000000000000000001727614711142327011777 0ustar00# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -W -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" @echo " coverage to run coverage check of the documentation (if enabled)" @echo " spell to run spell-checking" .PHONY: clean clean: rm -rf $(BUILDDIR)/ .PHONY: html html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." .PHONY: dirhtml dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." .PHONY: singlehtml singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." .PHONY: pickle pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." .PHONY: json json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." .PHONY: htmlhelp htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." .PHONY: qthelp qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/kiwi.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/kiwi.qhc" .PHONY: applehelp applehelp: $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp @echo @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." @echo "N.B. You won't be able to view it unless you put it in" \ "~/Library/Documentation/Help or install it in your application" \ "bundle." .PHONY: devhelp devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/kiwi" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/kiwi" @echo "# devhelp" .PHONY: epub epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." .PHONY: latex latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." .PHONY: latexpdf latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." .PHONY: latexpdfja latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." .PHONY: text text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." .PHONY: man man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." .PHONY: texinfo texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." .PHONY: info info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." .PHONY: gettext gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." .PHONY: changes changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." .PHONY: linkcheck linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." .PHONY: doctest doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." .PHONY: coverage coverage: $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage @echo "Testing of coverage in the sources finished, look at the " \ "results in $(BUILDDIR)/coverage/python.txt." .PHONY: xml xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." .PHONY: pseudoxml pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." .PHONY: spell spell: $(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling @echo @echo "Spell-checking complete. Find results in $(BUILDDIR)/spelling." ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/.images/intro.png0000644000000000000000000004454114711142327015016 0ustar00‰PNG  IHDR ¤R/“™sBITUìF pHYsTTàš(tEXtSoftwarewww.inkscape.org›î<HàIDATxÚìÝg€TåÁGñCGEQQ,`רkì¢Fco±ÄD4šhÆÄ^°w{ÁEÅX°#ÒDQ“¨ivca±½1Æ;ÿ÷Ã^Æ–e¶²»sø}Ù½;3;ûÌ}îaæÞ¹C¤ÖÂ|,Ì,Ãr ¤?}é阴ãGÓ!Ô‚›˜~ìÀaœÏíŒe<㸇۸‘k¸ŠaÜÂf<ãÍeìÃÒŽ—‘Tí–.¬Í¡ g,·r»².‹Ð¹žËwc%à:Æs;3—#h@$Uß&åÁHÆr!»²H#®¿ G2šÛÙα4 ’ªec²'1‘aìÂM¾­%8›Ñlâ¨Iý«]y;ØîÍx«Kp÷²„ãk@$uÌMHog'°p‹Üú:<Åj޲‘ÔÑ6Ës)ãØ·9ŸwÔñ<ä ¶t¬ ˆ¤Ž³éX–aÜÍÆ­ð›æg :âDRÇØ]~=w³N«ý¾¾<Á@ÇÝ€Hjß›Œ%¸ŒûX·Õ_,›@/G߀Hj¿û<®å!߽͑?GúIíqS±·q̱ßß•'éíã`@$µ¯ÍÄšüŽ;X}ß‹9ÈÇ€Hj/ˆÎìÀ gÕ6p_–æ&"©=lzñ3&q ‹µ™{ô¸Š‘ÔÖ7 s*Oðã¶õiŒõ‘1 ’ÚòFaq.b,;Õwúõ9tÏÆøèImuƒ°Wó([·Ñ{7Š®>FDRÛÛ¬ÇÜæmøŽ÷Q2 ’ÚÚ†à[<Ìõ¬ÜÆïå)"©íl:±q!‹·ù{º$·ùxImcúwåûŒãú¶‹{»??ö1kàæ¡?+²60ˆ­ùßá;lņ¬Ê@úI›ú½8„§8®96#­tGxFÞÙŽQqg2œ1Œg,÷ñ[.ç|Îà$ŽáhŽæhŽå .ázîaãË-Ë,C'"iöÓ~>Žçi~Ê\íè>/ÆH¹:Gf^6ä'\Âh&r;§²/Ó¿Òƒ°éľˑÜÈ“<ÄÉlÃ<DRÝS~Na?¤K;»ß§°­^ÙxôỜÂÝ<ÉCœÇ¾¬Ùô7}2?ßádÆqÑ߀Hšþÿª§ó${¶½·Îöžwæ‰öw¯[`º±?áj&ò'²U }ý"ÀÝ<³{ÓI%UǦ§;‡1‘ÝóJw¸÷ß⬪~ô–ä{œÏ(å"öe•ÖxþÈü„QÜÌ DªæÍO'öáIn¿ïãævVªÊ]âÛr#à ÌZt›÷a-îáz–2 RuæccÆqs·ã¿`9—©Öängž¬=‰]Õ½\2¹*ºä8×’VzL†²–‘ÚÓ¤=’ïWé_¾+7W²ç‡<ŸU+="èb@¤ö3eçáéê=¾ˆ_ò[ºÎöRǰkJ+<}x0©ýLÚSØ»ªÿþ1»Ã—Ù€s]SZá±ø ?6 Rû™²ý[õc°+O°q½—èË®+­ðHŒ­=´Ú¡ÚÇ”½€ï: ,Ì- e±z~~¯£ÔâÂê\_|å`Hí`Ê.ÄG¡‹­¸›»Ø®®ãÑ8ªö¥µè#pû´Ãª ©=LÙcøž£P6K0„ Œä06£ +}Ùšk¸Æ(¶øØ¯Í¥¯©ÍOÙ.<9û#ªò­=9•áŒáQîâäê8?ñõûX΀HígÊîÂqŽ‚Ú帗”}ç€Hm~Ò>ÄÂŽ‚ÚÀš87O—$°C"µõI» 78 jëâ%ì5Ý÷‰ÔÆ'íP6tÔÖÄosË K©ï@ºáê*5ûš¸0“èc@¤ö4m·âlGAs|=ìÅØ™?(Ø‘ÚöĽª¡Ÿ .µÀóà»Ø¾ŽåÔ†'n'žp4Ç׫ê~‡¿ƒ#µå©ûM.t4‡×ÂK9b?qp¤6Æá’ÚîT~Ü1P+¯s ñûW|iLj£SypÔªëÜZ<>»çDj“y®uÔŠkÜÞËžá1.c_:»f4ãØvá|.©ì=DjO“û0vjÑÛÿþL‹^d™ÞƳ„[øå•N·ài–sÝh¦±‘Ô¤[p¥ªÈ›Œe,¯ Gµ­€0“ SÏ©ÜÂû„0Ñu£YÆv9&±EoÃa”ª: §ß­É„0ñ}W°,½fºÖb,A§ºBwzÒsÚϘ‹åXbÆاö}ô¤gù ',4í÷Îpù áÖâ»^¼KË.±¾¾?Ž(F¥3=éIç@§¯#‹•]v9æéw.Á\U±ãü)Vhò­8M%£aýÀ‚\ÇçÅâGX©øy7Îæ#Bø˜ãjÓðu@ØŒÏ Ñ#°&×þ”k™§¸~?Fñ%á÷ „sŠå?¦†ð%ùUy м! )}¿ WpËy8œÉÅý¹EŠK¼Dø[ñõ΄ðÃÀ@B¸yƒC`YÆÉ|žÍJÑ<› Ÿð {vèuk7F³`3ÜŽÓT2 !ðBX:ðH±èKBx¥öS¹‡¾*~vay@X–žcÞÀ‚¼Svíp]ÌÍë¥_ýÒ×áÔ"4µÁ:j†û¸)!|Äi¬3S\n›î^~Èâ³ È=ü‹ð``þ]vÝÏX3FRüd*ÛtØ5ëÜAÏf¹%§©ÔF§ùÏZø(¬Ú€œGú°2'Â?èÌ2„0‚™‡ë aÕÀwaó±O¦ÒZ@˜Ÿ ¯×> àB8’^ôã/„ÿ £Šç3kq O Kò)ánb ¿#|ÉÆÓÝÇNŒ.}ó/Æp8½‹Ÿ|—ž`Izq!Ü<Û€„.aïÀ„ÏØ‘îlÇW„û[ãÑ‹uxšð¯_ìê@kU'ÎchsËæ4•ÚêTß—Á­éý<°ƒÌ€À¼Åÿò·\G+†À·xŽçزÈkŒ&üsÚÑQ¬Ë`ö¥G`q^#„n ŸÔžžž#Kù!lBñÂÖ…3ÜËÎìÈ£e >â,ºn!„Í‹KM!|A·Ùäãâ÷wã+2í\Ç å9Æn&|V»/†a߸V å„f¼5§©ÔF§úŽ-{*“™ò9GMûŸ)«q%Ï•^®Ú:0–ðïÿçʳe×^±ì¹ÛrGÙKVÝèR»‡¤øùꥀ\EÏŠçuÜ×¥Ù›‹™R|{pà„ÿ”v—#„ågá¥ãBøÍ ¿ãiÂ'Å=ù!œÑáÖ© 9©YoÏi*µÑɾvË~"z;؉؉ ¿>âŠ;Šÿë?ȈR@þDxu¦Ûx¶øŸ}ËáÏ„ð6·òT¾„L;»0s3µÈ=ÅoúÚ“õÜãΜHw^#¼RúIí‹XÌn'z±|=B8z†[“ðåt÷åê¶FÓܧçtšJmuº/É­¹½´| B8…¥›¶ÜKHí‘;ÌÏNìÄ’E@>aCn'„Šÿ!µ» y°ôÖÿ/¿a»Ò3 aYÞÇ“y—wko7b*ááÀý„°d±|!ô-òZ±ôG³H?B¸«ô÷îÄ1„·:ðútÆ´ãÞ ˆÔñÒ‹‡çH@Ž%„õBàñR@Î ¤öôŽœIkLwÖç„×èQüOºzóI) ÏÂÆ¹ù]) ûÂö!°·0œý¦»/;ÂóÓ>Ÿ»x¦qZé«#B`e¾˜– &Ââ.ŽŸ) ÷ °` 5„ß.ø:IlÀp†OÛÃÒ!Ö¦S[â”3NS©íNú‰s$ [ œÏ Å¢íýŠÃ[ïç>%ü‘NÓ½äB8¶t`îh.åƒâúóv#„©ÜÅ{ÅÒsÝy•ðŽçH^ |ÎjÓÝ—üž¾ä)Fû@>d©À|¼Oø’aü¶ØW³G\NpkiI]ùEñÒÛÐâöXœÿ^âpNá=Âû3¿É°Ý®I'·ÌËœ¤RÛöÔ5ÔÊéR;þŹ„p{±GáÃÒ…Þ*ÞÌ÷u@âcÂXŒoÏ;ÂKÜTÚé݉+K×¾iZ@ëóViùÿ±óL÷f@ñ‡ïƒƒÔ6&qs§2˜-Ä 6gÎåQîb¯æ8F‡^<íËXmê1?‘Cçø}ða:Ì&e6áœÀYœÅIìÅZôhÆ[߉¡Žq›y¬×åÁ9ÿ¢¢„¤J7µîÉÂUÏóÁI,Ö¤ 7»s´£Ð&‰+ø^›¸>’*Ü\tg’ÇbµÇa;nh#÷ÄCRÅŒ‹gu_µÚcЗ‰må3[|8$U¾ÁØŠ³…9üŒh;§–ñáÔ±žpæè#p §·¡{ã"©›Œû™ÏQ˜c£¿8’°É¸‚•…VñÎŒaY"©ýoÎÆ4çgŒ¨‚ÿ%G´ÙûæÃ#©â F/uZuÄ—æ1ºIís¶5C…VïN<Ü–_2ô!’Tùã÷€´êxÞ¶?¡HR¥›‹nŒwZq¼WbLÛ}ùÊ€HjÈæbo~í(´âËWcÚÖ© ˆ¤Æo.&x*÷VírB›¿>L’*ÚXlÇyŽB«ö<<É\DRÇØ¤¥Ÿ£Ðj£}*{µƒ{é%©‚MÅö~z+ŽöâŒn÷Ó‡JÒl7]˜ÀüŽC«÷M¬o@$uŒ Ú`¿jÅÑ^š;ÚÉ=õÁ’4Ûçéå8´ÚxŸÌVDRÇØ íÃ1ŽB+Ž÷t6 ’:ÆóÇÛÞ‡©vàñ^•«ÛÍ}õá’TïFb?ŽrZq¼wá"©#lÎ:µ‡7´u¨ß­m~|­‘ÔÐMÄ–œë(´êˆ÷ãI0 ’Úÿælx[ý8Õ<æ3žU ˆ¤ö½)[ˆ…90îËð;IíyCvD{8#S‡ùyc@$µçÍØ#ôtæÈȯÆp"©ýnÄ:µ‡ÿwÈ‘_š§h@$µßÍØ†ÍÑ|-ÈÊlΩ\ÅÜÇhÆVä1îâzÎãpvã›ôoÛ ;Ó_¾O²’;Ñ%µç€lÄé­˜‹þlÊþœÆµÜÏ8Æ1† å$fW6fybžJC@gæg)Öa'áne ãϜʬܖs ãJz·“5ÄI"i›‡=øi ÿ†.¬ÎAÜÈDçvNg?6eYæi¡ß¶0[p(W3qœÏætks#¾O²e;ZCœ$’f±y8€ï·Øm¯ÂáÜÏD®d0Ë·ú_Öƒ 9 ÜÁ,ÖFö7íÄXÎj_ïúw’HšÕæah åæ c"W²Ûœÿˆ*úóCFò;¶¤Ó¼]Ù›‰œÁBín q’HšÅæamÖÛëÍ1Lâ|Vicç ü†I:'>ó„>É$Žd¾v¹†8I$Íbó°C›í¶æâH&²wÛÛïPzQëÇ<ÁQ­ùër³o["©)»¸›é} ìÂDöoëÓÒ•xšCZþÍ“ôã<ÎU¬×Î×'‰¤Yn F5ý€Rzr+g·Ô‘U-ðLäg<Åm¡Û_†_ñ(÷2˜¹;Àúá‘4Ë Ä/Ø·‰·07£Ø½ýÕÙ‰¹•èÑl·9ïs㹉ÝÚKL ˆ¤¦l â&nŠÇ6íôo_‘!L`8{7þÙØ‘!üŽñÜÌOY³}½#Þ€HjÚ&âVoµOçíüïÀO¹qü–cØžÕYdÖ  ³*[q §ó[F1šaΖ,Øa×'ˆ¤z_zÕØ÷H°#:Ì8,·ø%sÍâü[ãxŒÛ¹”ãÙ‡ YtN¾³Ä€Hj‰cÙ¿Q×ëÊ,ìøIÕ»‘èÎhÖnÄõoÞ·!Ê€Hj›‰~<Å€¿ô5®£í2–‘Ôð Ū<Í ¸|mk',‘‘Ôœ€A_r9ž¬ü€\ÎçG×€Hê¸ÓÿÇ„k*þ¦y¹“ é[Á%Ê•Ž®‘Ôq'ÿ|E'6à:ßaGÓ§žKô殥³ãk@$uÔ©ÿ>'„gv¶+:ó}ä³äL?[–Sy’]"©ãNüø/!ü­qï’faâVçnâ*.æîg¿eWŸ{IyÚ¯Î? á oâ-ÍÅ,Ϫ ì8'”‘4«I¿,ïÂ{,çhÈ€HªtÊ/Æ„ðk82 ’*ð}ù!ü I•N÷ÞÉ-¾á<É€Hª|Šÿ€©„ðÝ I•Nðø‚ždnGCDR¥Ó{ŸŸ™ßÑ‘Téä^‡ á5u4d@$U:µWâB˜ÂÒŽ† ˆ¤J'ö&‡¬âhÈ€HªtZ÷ãeBøë;2 ’*Ô}xŽ>c+GCDR¥Sº—ìêhÈ€HªtBwãÁâË92 ’*Î^|ù+GCDRåÓùŠâ‹3 I•Oæ3‹/.w,d@$U>•]|q+ I•NäŠ/ ›£!"©Òi¼;_Âær4d@$U:‰·æ3Bx–ù I•Ná ø/!¼ÌÂŽ† ˆ¤J'ðjü“Þf€£!"©Òé» ï¬ähÈ€HªtòöçuBø˜u I•NÝø !|ÂæŽ† ˆ¤J'î<+ûö–tLd@$U2!GøÜCDRçã&>÷‘ÔðÉØ‰gá_èhÈ€Hª|2þö¹‡ ˆ¤†LÅ^Lö¹‡ ˆ¤†OÅ“|î!"©á±7{; 2 ’$"I’‘$I’‘$I’‘$É€H’ ˆ$É€H’ ˆ$É€H’d@$ID’d@$ID’d@$I2 ’$"I2 ’$"I2 $É€H’ ˆª~Õ\‚ú]ÒÿK¼²Ä«ÒŒyñQ}ŽaSz;W ˆ4]<úMÚ|Êñÿ¹3/¥FªÓ3¹nêAÿXá…Σ›sÆ€H„0ÿÏ–~÷!7ªÐ©ÿë÷«9o ˆÄ"#÷û×ßÝ,ªžÈ*Ìû=çŽQ•›oðàÝ ª¡^ËÀÉôsþUóê¸èRS^ws¨F¸ç«~cADÕüòÕ¸û¦º)Tã þgŸ}CDÕº2ö\yŠ›A5ÖsY|‚³È€¨ZWÆoþà7ƒj¼%ßpU©yú•A5ÞzSèë<2 ªJ‹|Ü šàÐØÊyd@Tyê7‚j‚3¾`Oç‘‘‘ ˆ‘ ˆZÇé_2Øyd@d@¤;-|ÄÜEg“‘‘¦RÃ~Î'""54 !|ÈcÌãœ2 2 RC>çv甑‘ðßuV©á oÓÇye@d@¤†äKŽr^©á 8¯ ˆ ˆÔ˜€¼î¼2 2 Rc2…ÞÎ,""5< ﳚ3ˀȀH ȬáÌ2 2 ’1 ’‘1 ’‘1 ’‘‘‘‘1 DDj;a6goNà~Åîl\Ýï3q³%"RÉÆrNçEÞå#¾(}ʇLá÷ü‚~D2 2 um(—fï1u?þ‚÷¸ªÏüëfKD¤¾dOnâýÙ^ìK¦p´‘ ˆ È´MdþÂç^ø#FÒÓ€HDÖâ­Y¾pU—Où É€¨Ê¼Ýà+}Åèn@$¢*½x¡QWüwÉ€¨šrŸ5òªr¨‘ ˆª4 ¬ÍMX™'WÇ ÝlɀȀ̼i|¶I+óç\h@$¢* ›óaWçw˜ß€HDÕÛš¼:Ê`òõc0ƒYÜÅo1¸ðC¶`I:·ØoÌ`6­øÒßf0{¸Ù7 ꀙ\ß;§g*8Rw‚ùú‚ÛÂesà.Þ?—ùf Æ­õ^bvbëâëÇï¹Ù7 êha-þ¯¾ œ•äÅÙßÌz¶ðeåÏš9  o¢ƒë{÷ù¦ùOeyŸU H[ ÈÒάÈ„ðÄ®²€¨íä×Ù'¬cÙŸZ|“uyöÉÓ¼îÙ'÷Ï´tLöÉIÆ`Îäüº÷Ì9=£óYRY@>žöj…) ݘÄ$ŽbÆð&÷°9§y‹{Y­¸t/Ž`"oóø ]K·r(x™Ë˜›G˜Ä‰ÅÒeÆóü…sÙ¬¾€ß?H[ß}Ÿ‘¼ÁCü‚%J—XƒÛx)<Ã9_Ÿ§Ÿ¸™ç˜Ì8ö£SÀ$&±{3Ž]“˜Ä)!0’I\˲ çï<Â!07¿a áßü†µ—2‰J·¾wð/1‚]Êîé$®d)nåUþÆÅÌg$f±vumZ@Vy¬ŽeO´ø&k¿yÝSC.ié-!ëƒ9;ëZ¼zÊÿU¯:þnôƤ!¼Î—ÅþÅC¥‹}È"N<0Ý•Ï/nãÚÒ’Ñ|L¸!¶à_e—Ýg¶ÙŽ˦{ëÎB!°ÁtçÎ|›…‹]Þÿ)[z] !„_3•°GùKXL!¼ÆßK—¿<°PÙõ÷žþ%,.Ÿî.ß\,ý€ð*o––ßg*fxl`nàÈÚsÒF2¡®Å«ä£|”òßJŽ3 ³ H¸‡ŸðdñõmÄ aÿÀ¦„ðßeg^'ü‡ÎA„ðÇ”ú~C +/^gvâyÂYe6Yn,Ýâí¬ÏÉ|Lx”ÎQ„ÿ±r&!œèÁë„0˜Š•cóR@>çSưÅL _pçó)!¬GÖà9»¬Áüåa{Bø;³#ÏÂ÷J /p$gò!_?Kªòptg—ñ ÿâ lúKXDÍ»êûñ•d*?2 ³ ÈÛ!°!ü%”²qR`k†1ŒeBànBX,p/!µyà¸R@v$„ƒB`qB¸f6YŒÆ·ø ó†À „°aàï„Ù2Љ“8‹Á¥g-¿ ™Zd¥6 ×ÞBÙ»ì/¿nÖ;ÑyœVeáéR@¾bɸ”¾UõéX™cùïòá ^gõæØR@ÆçþÔäÜ•r{Þ*~þzFæ÷©Éã97'ç¾ÒòZä‚‘Óò»nõÑœ“3"¯ÕW32#óFñÝk‘siþ<Ã-<–ssRîΛäþŒOM&伜”{S“šü-׿˜Ü“Ée×x3·çŒ‘³3nº[z%·ä˜\¿¤&”ýlrÎ995 ȬÖÒ ›% ó2«€ü6úÂÐbCCŠËÏÇ\Éߦm¯jŠŸ~£c a¿á7ü†ÿÆÏ& «LÛÐó*¡¦¸fíÿ†|‰ Ùš.!p ! *na^úЫïÏ|S_Õ¾“”¹øŒðL=ùGù®u^%|\ È3ÅÒÂöUŽEØ—™Â|UzésÜôÚRÙ*såÏY®ø5}345©É„Ãsxé×oœ¿×üS¶*»[æï¥@ì\ZºL±Aþ: ¯fƒÃŠË>œ¥÷ lRÊÍùAé6ÉQ³ H¯|+g¦SqC3:ý‹¯ûgtq™QY±t›r`évÆf@±t¾ÜŸy3¨Xþ×|ý¿˜¥[1 Ó­­?o–€4ãç±w¼€ + Èo¦]8»Ø¯ñ¯ÕnèÄ—„{K·÷Q«gúUïÌ& ÛÂÉt*}´ý×N ôãò²½ Ï;¼CXd†[® Èê³ÈË¥åÏN»Wu„¹ùúÎü–æ/2±ÚBã5þW¼øõ!ŽgÒ©¹ŽÂš]@ºg•|/£3&†ôÊE@MçžsCÖ Y«¸æ/C6ÎÐ<’ó³|ÈbùwC¾•á¹-{…,’Éey5†ü²¸äÓé™î9*åöl²sÙó•%rYFå¬ôN· 2_ÊÑy"§¦{HÏl™¹;›„l_\f³½rcîÏô™šÔä¥,NùiîÏðlšÞéVdrVÙ5#ò@M× Èß ÈÌëìõȤâ€L¡—iL@¶¬ÝñÌ7èÄÅ¥g ïÞ(nm™Ò3SỬQ2»} à a§@ áé²k®Á¢Åeú2˜»ù©}FÃñ„°eÏ@VŸå3>!ГOOÕó ä½éž¼Dø˜N¤4"Ù˜y‹”ÕÔõä¾åBV/-_6dtrb±ôïY5ä–Ô¤&Ë¥Gé àá!;/j‘õJ/tmr) ¯e£_•~ÇîeÙ©Éš!—§&“Ò-óæÙbéïB!¿)¾Þ2dÉ⥫BVLMjòçtÍry»tè29-5©ÉQe÷çͬŠ€ -}U“𲇩kÜ yª æv‹ä*—ÌUÚœÖd"!¬¿,d¯i9tf?bÛY„¹9š©„?Ó9ð(á¥Câ –a †0¤ö”+ ämÂgtfϯ_^ce¦Nžm@R{¢’âÏ5¥€¼=S@F—íY–ž,½„e@jÿþEù ï3•ð ©Ý/Ôš9²´üÀbÓ?!¤w^--¿*dŸÔ¤&Ï–^̪É]!Û”®weiùý9 wù]6Ù·ô³·Ò==ÊþgVÈÏS“3C)»‡ß¬ ½òJñõ±eÏpjÒ#‹8<›—JK 9!5©Éò鑯GóìR6¶ ¹¶´ü‰tÊ*¤®õõÞ&äs~j@Úg³·—íÙ—þÁ¯^¼Ïó†@/j/²k‡ùþ¨Î€Læ Þ*½~¾]ìR<ÓY…ïò2á_ôa~¦^a_Öe?þ]»¢ø-Ÿsßca*kVϸóø„ðUí;\Eø‚5è5]@¶)ŽÂÚ£‹ÿeïj@fˆÇ8¶åmV'xhÉ€Œ*-?¸, ë–]þéKßý=æÜìž¾¥€lYçQ]û…b_Ãòy³´Y&K嘒ŸÏb VvÝWKËO¹ªô]¯" µ^Ì’o§gÉé‘åÊ~~) Ó%G•Ý·2Ÿ©kݶ8n²ñy·ö ¤áY¥tµ/Š}÷tá±Òò×ø¤ô>ù¤ì ›ñd‰3Êäv(ý쎲åŸÖ¾,ÂÉÓ]úËÚ7'²sñ‚V­3*Øò÷²ÏC>£¸Ä/fñ>˦û×–½¤Ê¢\Ä8¾X‰ò?i‰w¢Ï> ª3 Û•]þeR“šLÊúéÒ=kg¯R@V eÏWÊÒ%e³£Še#êøãÖNMv y°ìºÇ7K@Fd™t éM³uçC6˜!޵©ë€/™×ÛN¼Ø¤€|ÉõU1¿+¾à² aÛº0„!Å‹Ns3„!ņ»/CR{¤;ð8oò;6dCž!ÐSy†W¹‘ùç´VæFþÂ9…õfܱØ›!…ÙŸM§?r‡ñopNÛÿ؆ßñgÞåÏÜÂZ¥¥ËsÏò&SLà †0¤ì½êCRýͽBΙnÉ_Ó) _Ï: óäåÒò+CöJM®Ù¥ìÌTÓ²OÈõ¥å·g™5Ýa¼G…lRì—èšÞeï+y"gedjrnÈA Ü2»€rFié¹¥} Ò=--?§ÍCî*{ÖuvÙ~2Ã:<¶ô’yCòñ´·3æûU×ÂE,ÏŽ7 0ñíÆ\·)§sÿvHlžSr}NÈò!ýKÇRÍ: ]C~”ÛrqV ùfjR“‘!}sQžÊ=Ù=ÝB–+®½qȹ)7d»yu†w¢ß•NY0MMO×tÉÏ3"C³UÈZÅöŸ…,œ3sg†dîôo†€ Y-Ãòt~›o¦kÈŽy55ù[ú„ü(wæ†l!ß.Ž[>d›\›[ó£tͼ­pº—öÀJÅá4 óóTÍ|oÕ_Ö‰í9™ë¸C¿ÞóÐ&‡år†sš9hT<} ë¦ä嚯ߵÕ);å©ÒÏf]spé:[”¼=$Óþû¸rMí§—½‘š¼˜¯X1Öq.¬½‹—Ájrwé=ãd“<_z6ò³²ßwK3äÍl^ºÅmòdz‡¬–šÔä‘,U,_%w”Q®É³Ù¨t3ªÅ€Ì°NoÕÀ„|Á«u¤n@¤Y¯H‹q £Ùª)·ÑÔ”ú[îÈÙ’3©‚KOÙ-5—ßä¬<2ÝÙ¥ÆæÜœ–‘y35y>çäÜÒOÇå795wÌp欺¼’99çMwÜUMjòd†æô<\z1¬éîÊ)¹ 8)ÉøœœJgãž!‘7röt/˽‡r^NÉ­¥ H=kö ¼V:óøì|ÌÄÙíé3 R³Ç£9Ò0ÓÒ1•Aeï}Ù+äjÏÆÛØõ»gÖ®ÏTÞáâÚsï©Òx\Ê£Ís–aÒ|ÎY7#óvÞÊUéÍøŒ§Úëòl}çÇâ}—® ˆš'£¦aÌ€´%“³ké“!K'ƒ7 MZß7åfÞâÿ¦;‰ë§¼Ë+\ÀŠUº p3¨F­8‹s)£Ø¢9o³uòlv({EGtOÏ9$—½ÛÅ€4yÍ_½8Žë¸‡Ë8‚ݪñy‡QÓâ1”Gš7­͉xlÞ·m@d@ ˆ:r<žö¹ŽDÄ€H•¬(KpÕžÙØ€È€È€¨ÍÄÀȀu¼x\΃lڿˀȀu¤x<À&­õû ˆ H» s³¢4ƒ5Z7D¤}ä\!Í`(·öÊh@d@| K2 2 D2 2 2 2 2 2 2 ’1 ’‘1 ’‘1 ’‘‘‘‘‘‘‘ ˆ‘ ˆ ˆ‘ ˆ ˆ‘ ˆ ˆ ˆ ˆ ˆsˀȀHÄ€HDÄ€HÍ Ï»Tg@ ˆªÕÂw#¨&ø–1 ªÚ•qû#þíFP·¤1 ªÚ•±ÿïºTc½š… ˆQõêÿÖ«nÕHÃ2Ÿ1 ª^½wÛýC7„jŒ—²X]«”1 ª‹ÜÿÛ/ݪá¶IWb@Tå+äü‹Õ<áæP tnúÔ½B¢ªZ%WYäÅÓþç&Q•z!›×µ÷ÀUåJÙuás×{÷®¸C]³ól.΢é<ë•É€UኹZÿëýë’_n™¤:웵²hJ¯úW$b@Tµ«ç«‚šÄ€É€©!«ç+‚šä}Vw ˆªsõ|ÆAP“¼Ã‚‚Qu®ž8j’·¢j]=·ç߃šàq‡À€¨ZWÏEyÇaPœîUï :ž©ƒ½dIÁ€¨zWÐ~>Q#ý‹C¢ê^E÷å#‡A0É!0 r%½™ÿsÔ Ÿð ‹; D‚y›/Uè}®¢§Ã`@¤Úu~îa2ïò©ƒ¡YšÊ?x—ÙØ¡0 Òô+k'Vàû ã¡ëÏŒéÀ]K»›_³!½œ)DªÆéx+: 2 ’ ˆ ˆ$"É€HD2 ’‘d@d@$ID2 ’‘ ˆd@$"ɀȀH2 2 ’ ˆd@$"É€HD’‘‘d@d@$É€HD2 ’‘ ˆ$""ɀȀH2 ’‘ ˆd@$"IDD’‘É€HD2 ’‘ ˆd@$ID2 ’‘ ˆd@$"É€H2 2 ’ ˆd@$"É€HDr:IDD’‘ ˆd@$"É€H2 2 ’ ˆ ˆ$"É€HD2 ’‘4m"ÎSævDd@$U6òÓÂ9,íˆÈ€Hªl"žÎ¿Xž+X‘«ø¯ã!"©Ò‰¸%ÿåm†só¼ã!"©Ò‰Ø‡wŸðoÂ5އ ˆ¤Ê§âÅŸ°—£!"©ò©8¶øâ–w4d@$U>O,¾˜L'GCDRåSq3>"„¿82 ’2{ó!ÜèXÈ€HjønôÏØ×‘‘Ô°Éøá]¾áHÈ€HjØd<Š©ÔÐÅ‘‘԰ɸò‚ã "©¡“qnþÇpÇADRçãtd@¤æX={òMö`Ϫ1‘£ªè¯mš]XÖ·\©Ý7]|äâ/¯R³Ï'üï„OªÅñŸWÏßÚTGÿg›w–}k±çû]ÎBÎ"•öô»qÐS#ÍÆ¹eê€)óýÀYc@$B÷M}ë²ÏÜ4ªR¯fïöË΢j_!û |çy7Šj ¦.ò˜³Ç€¨Ê-2þž©nÕpûü³Ï`çQësà~¹)Tc¼–SXÄ9d@TµúOþ»›B5ÒíSæ2 ªÖ•qÉAï¸Tc½™Å<ŒQÕ®Œ;û_7ƒj¼å<¥QµZôÒ;ݪ v~UœGDUiñÇÿìFPMpò§ìæ<2 ªÎ€<õ‚A5Á_°§óȀȀHÄ€HD­ã´©<Æ p.©a áÞårz8Ÿ ˆ ˆÔ°€ÔFäÖvF©¡ á=¶vN©á o2¯³Ê€È€H ÈÜé¬2 2 RÃþÁÎ+""5< ájç•‘‘?9¯ ˆ ˆÔ˜€L¦“3ˀȀH È;,íÌ2 2 RÃòk8³ ˆ ˆd@ ˆd@d@ ˆd@d@ ˆd@d@d@d@d@ ˆ‘‘ ˆ‘ ˆ ˆ‘ ˆ ˆ‘ ˆ ˆ ˆ ˆ ˆ1 2 R› «°+¿æîæ~Îö,a@$"RÿÆrnàMÞãÓ²…ÿå^æ\V4 ’‘©kC¹.äƒYþx*ïr/KɀȀ”o${óP=ñ(Èt6 ’‘©ÝD.Í«|Yá…ÿÍ8zɀȀÀ ¦4è _ð ‹É€¨ÊÂò¼Óˆ«½@/"µ»€ŒÍ>eιy¢Q·óBöÉÙ¾?Ê‘u,=*ûäI7òí( ÌÏëºâçe;ÿÿš¹³HjR“¿¥w΋Åò‹B73°ì¹ÈßÒ=ÝŠçL¤QÙ îè½36åÿF•žõÕ©¦ã¿ÄÍ–:ôa¼}sUñ³—òlÞ(]rÝÇS“çCV+»…Ãsh) W§kæÉK?;´,5y3 ¤kÞJMz§w^.{A¬’€[zIªsæÍëÅw¿ Åýýkž-]óåôÎü¥dQv¦=¹+d­²ßµ}È-¤ñùYÝ?¸ Ç”¼W|5´¾›yŸÕ ˆÔ®²\Î*œ“ÛKÿ[ÿúøªa9M’l5ë›ùŠý ˆÔ!rhÈŠ9¹Ø7°[[C~Xg@VÌ+Ååö+–~7dôL—}q†—þÜ,Ï@6Ù¬t¸ñÀ" ?¹®ì67*rNÈ ¾¤ù2¾®Å{û=¦}ÿ÷$É.õÝÐqDêY*]Kïó¨É·Š€L Y»ìR[f¹¼ZvÖŸÒ'‹Ýð‡„œVvÙ¡9;o§&ógî²—Ênj†€ü)²diwý[Y°ȹÓ=_z3 ò­²ßuWÎ*0 Èu-î–>éSÚm¾J’ä«,Pß3ÁDꙜ™·ô¦»'Ò¥Èä¬ro±üŽågxÈy!+ç­ÔäÁtÊZ¥Û¸6䛩IM‡ü¼´Q_¿ò`È¥¥——ö<“雿ËÏ/…õzúgžL(–?›yÓ=/ÆäüÙ]¤S®J’fk"uˆg „ì™ûóxÎO¿t ¹0o‡îöÎé¹7¿Î¢3½¤&“óÍS“šì²f.Î]9, ¤Kq¤Ó3WÈž¹)×f“ôÈMÈkérlÆeTŽLÏtM×<–·‹gAËehFæ˜ôÈ’!ãR“š\Ò7§äÞœšo„*}+a³ä`¦Öw¹sg’佬^ÿQX«©CdL+½qt®!¿.ÞÑ1íèÝ‹ƒd§?•ÉØtK¯<•š¼–½Jwwþ\TºÄCY¼XÚ+·efØru饒¾¹:‡†áÓ½¾K.Éæ¡ô|äìbç.éšýó¶iJ@Ö©ï#l—ÊŸ’$og…úof2= ˆÔnR¿×rmNÈ5y65™œÛsRi—ø‹¹5'把Þ|7>—æÄ\?ïfD†dØ g³jŠçriNÌ­y)5y-Wå”<_üdBÎËEù}jÒ'ݦ»Æ 9!CËöôF¿ý­Yýpí|$y!fw3wü9ëfKUöob•žûxÈŽJËœ 뎺°A>J’ Ïl?úüÓŽ¯‘iGÞÊÂé”só—ÔäÙ"ä G¥e²ÿœyñfùw’äØJnâæ7 ’iCîJïÎY(¤SÌ[ŽIK}Ès3/|.Iòrv*³XÝWÿœKªaκْiW^ÌéÙ?ûdHr4Z2 ëòÓ/Z S3ó¿½ê¾úæ5 ’QU$ð_”/Ø1©4 ñ«ê˜³n¶d@d@êÚ8ÎÃËÓïR‡UêÚ}~oµÌY7[2 2 uoPÓà+Må9zÉ€¨ªX›É ºÂ§ü……ªgκْ‘™õ&²?åó /ü÷uüwŸJ7’=¹•÷f{±/x§ãŸ¾Ý€È€È€4tC¹"cyw–§Xüœw¸«oκْ‘©dc¹çñ2ïð_•Âñ!SxŽ#Y¼:笛-Ê7™‹³%ûr×p<{²I5œ°Ä€È€È€È€È€HÄ€HDÄ€HDÄ€HDDDDDDD2 D2 2 D2 2 D2 2 2 2 2 ĀȀHÄ€HDÄ€HDÄ€HDDDDĀɀɀȀɀȀȀȀȀȀ¨½ä®1nÕû¢j5×O/üÒ ob@Tµ+ãÚ»àFP·ˆ1 ªÚ•±ûrï¸TcMʂz-rß_ÄR#í.Ä€¨ŠWÇ–œü’›B5ÂMéS×*e@ ˆªÇ<»ìø¡C5Ô uíÿ0 DU÷2ÖÍ»~øŠ›D5Àè,]×ËWÄ€¨ Ÿ…ì9 æî¯Ü,ªoçðôõÊd@ ˆªnµ\p‘GV}çG^gÜDªNofTÎÊw²XæªoU2 DU¹jÎË žÿX0 IuX8 ¤óìW#b@Tµ«ç«‚šÄ€É€©!«çK‚šä]Vt ˆªsõ¼ËAP“L¡«ƒ`@T«çÏùÒaP¼èUëê¹6ï; j‚[¢j]=»3ÅaP£}Ì÷¢ê]Aó‘àFšäU÷*:–©ƒá]–p ˆª{]˜w5ØGüÌA0 r%]?óB›Êt ˆD  §òž¡ Ÿ{<Ébƒ‘ÊŸ‡Ïcü)¼ÛA½Ï|À{öïkiïPÃó\ζÎ"Õ½ÊÎËÀj!ìÛaÿ¾–ÖßÙa@¤jŒÂw IDD’‘ ˆd@$"É€HNF""ɀȀH2 ’‘ ˆd@$"IDD’‘‘d@$"É€HD2 ’ ˆ ˆ$""É€HD2 ’‘ ˆd@$IDD’‘ ˆd@$"É€H2 2 ’ ˆ ˆ$"É€HD2 ’‘d@d@$É€HD2 ’‘ ˆd@$"ɀȀH2 ’‘ ˆd@$"É€IDD’‘ ˆd@$"É€H2 2 ’2—dýºB/öt|d@$Íjvá}öž9 ôçüÌñ‘‘Tÿ W§Ð©< ¬ÁdÂjŽŽ ˆ¤YOÁãázM ÛóÂ?éìèÈ€HšõܤøâŒ%„+øŠîwld@$Õ7{ðIñågÓýàhÇFDRý“pl‹7rdd@$Õ? O©cá'twdd@$Õ? ·¬cáXÇEDÒì&a/>Ÿiᩎ‹ ˆ¤ÙOÃ'fZ´µ£""iöÓð¬|IoGEDÒì§á63,ø½c""©’i8/_N·àÇDDReñ÷Ó}»³#""©²‰xÁtß.äˆÈ€Hªl"îXöÍ Ž‡ ˆ¤J'âL-}s•ã!"©ò©ø§Ò—û82 ’*ŸŠ—–¾àhÈ€Hª|*î^|ñ–c!"©!S±_ñÅo I ›Œ/ÂAŽ„ ˆ¤†Mƫᎄ ˆ¤†MÆ> “#!"©a“qá.ÇAD’d@$I2 ’$"I2 ’$"I2 ’$I’‘$I’‘$I’ ˆ$É€H’ ˆ$É€H’ ˆ$ID’d@$ID’d@¤jŸ>‹³ Û³Ý[áwÍÍ@2—£."µ÷©³Jß|É•ÿßÎ݆ú=Æq†ƒ³í4s¶4r·œ5)œ'›ñÄi%·“mÅLrr3«=[Ér7YhžH E"ø3Ô)š›‰å&736»aÎßÏg‘šÎ9}{?øÿ¯ïïºþ׃oßß»ëý®Ÿî}<ß•"ÎÐ¥Û¤ÊAQ)бX8³üÜÈcèóó}{KßC ëÄ•…¢Rc±pq‡£êëE¬Ø§3NÓ§Ï”HQ)б]8‹oMh·ÎñL»u°Eîsy:Û‘Ù :Åt7ºÔbƒîøc7Ãõ­²_„“,÷˜õŽ0ã© :Áú½/¾ÓoFe¢(ÅX+œDÌiÚ=¦·W3½×tûÑìóE,µIÜf™ˆ "b»x©­’ÍȧuŒü–Ư¨L%¢k…sûË&w»ÄÑî¼!~r¯ìšØä+±Ë*GÙ-VG8_Ä¢pºˆw-ó–ˆ[÷"N>› Œ´R)ŠHQŒî™lmMs·çõE˜#âæçŠXÙä{;TG{ã³w‹ºÃsâ—¡xO‰_M«Mô¢Rã³x¦¸Åk¶4Õa…ˆëôë7ßvñt#Gš‘KEœ6Šg#|-Þѯ_¿E†”T)J E1^K¨Ã9Ö´×!=Öþ­ÃÆF W5c·K,7CÄeaò?}u ¤(Åx+›I–Xâ¼a‘Eœeµˆå7Y0¬ÿ b…b›®pßĆaãœV)J E1ÞÊf‚-b럻^q„DœÙޝב# døÕKâÉv䱡ý}¢^½ºþ@¨sèqatê´_èЩÓ•©¢R£¯pžñºkÍ6Ï=">ÇÙ)žpý-ZŒ(‰Íüüvä.±Ó¼p˜7ÅVS÷*WÅÖ¡S(ÞqHX)â¢æ\ÊÚÊSQ)ŠÑW8S}ö—ÐV'G¸SÄ/6‹X¯k$„'ElivûRÄ7~qÍ_f.U"¾ua ¤(ÅXTÈíí[~üàaÇ6W–úBìòŠ›Úåž­¥eîãçhiY9,2Ý3¶‰¯=:|¥}u®––3"Ì´ÞnqyxHKKgX¨¥¥/ÌÒÒ²¼²T”@ŠbôP—Fz¯žÿöv^û;fèµ&ÿسgÏs"Eñÿó;?‘–U˜³BIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/.images/kiwi-logo.png0000644000000000000000000004165214711142327015564 0ustar00‰PNG  IHDRaaÆÏ£bKGDÿÿÿ ½§“ pHYs.#.#x¥?vtIMEà ƒ§Œ IDATxÚܽy”\×}ßù¹ËÛªª«÷h @‚àjq%“E²IÛ²lɱ=>>™“±dìIÚ‰sΜ±23ÉØ“ˆr<öÌØ“±Û‰=É8–lŠM-ÔB-÷±/½wWu­o»÷ίºÑ B‹mãäá¼S@u½ê÷îïþ¶ïïûûAðŸèxò±iùøÌÆ¿gOkÀ<À!'Ø l° ˜"@ôN,ó›^OG6Ùôã3æòïy˜éÇŸâoÒ!þSþò'~iZ+Ã58ö㸠ç®Gp½ÕbÜhr«…u!­’ -S¢¸kãÖ!,‹ÆI2+Eî”ÈœÁºsÀq„8 ¼œEäç§ÿ¼áoØñ×&„™>Ìô'ŠøÔcÓ“Îñ8¾OX·ÇI±Óö)múµ1‘4™vÎHG®Ài©$žVH!·~±sà@¹Cd‘;db¥l¥¹”ÓÅqÑIqÁ래þøÌ¹õ¯øÌcðèÇŸü/WOžæáÇgÖ±!>Šã~áœo*ZçcfÈsΓ ÁXGfr2c°Öâ!@ ‰VO{HñÝݶ³€µ¸Ä¢ë™ðVs¼†1NˆÁk ~wúñ'¿ö_¤&<ùKÓ¨Žâ¡ßz‚§OK`ƒ_~Ài‘›mÒ©€<¸Ü‚³Xg±Ö‘ÛŒÜäkqÎB@"…D)…§5¾öQR"„@ Xœ»B@n Ö… “Jà%‚ðRŠªeRça¹|x¦Ÿ¸¼a64÷?;!üm[’ý¦_Çé˜&+K\n°&Ç:‹sç,ÎYŒ5Xë°8Œu8Wøa!Zj<íú>žÖH©ÐÊ'7 n“ç†ÌæXëpÎ!… µÄó=T j%C¯fJ­å¹{ É_›~|fà‰_~”øÕÏüç%„ÿ±ðcûëÑÎOãø1$×%Ûý4V.ÀXÖ"¤(Ïf8\o‹EÏ XƯY˜#­ñ=Ðó<%5_"ÍbŒÍ6\„±†$ÏÉó¤YÜ&“¦ñµF+U<½ÕÌÑ ©ò3ápG‘âO§Ÿù7½ç`úñ™ÿ<„°r~æõ¤µ¿Šå!W’²¹×wY`±Î`­rŽÀ°.#IÚ Cb¬ÀX0¹#w…6 @J…§AO¡çá{¥°JšÅ$Ykiž‘d9™É±ÆaC_kOã{þÖ‡w c‹¦+t-·NrRÀ/=üøÌÛ~ø!~ðñÏþÍÂæòäcÓSÂñ ÄþtÜKš“csœÍq.Çapäà aP&ô«tã6iž!…¡ȭ#7—sÞ‹~¤H))‡A¡ ¾GɨDƒä&£“4pÎ’C’å¤YF–rkp¶Ð2-5Z üÞõZz\éã5Ÿ /t™ó„¿ƒs¿ýƒ¶ð™_z„GÿÅ“35aæðôƒ8~ -JÝ)/oLžâœ)t^ØÂVà@H|]¢¿2Žu–v·8¬…V’b{¾!Í A€C s‚JR }BϧDôWFqšŒÉH²Þ™çdyFn /()Ð=òµ‡§uáö…@H Α[C†…¶Á›OÖlèçâ9-ÔãÓϼx¥ßû^ò¯ª½×áøç(t÷…y£š‘¥Ý^”SD:Æ!C´,!ð(*¥!ª•A Ä÷=º‰¡ÑNȇq'¹±Äi†sÑ”³!ð¼­4‡Åb(ÌŸ±ã Æïõ¶ÎßiLŽ1™ÉHÒ„vÒ¥Ýé´cÚ"£±]Óœòâ$·;ç~}æðô/<òø“Ïþ½8ô_ÅL|fCΗ.¾¡ìš¢ÉóžcuXWì0×ÛqZ)”¯ÑÚC¨Â7h=D³m°Äø¾¢Þʉ ”üÂsZ犗’nšÑï ÃöÂÖ­}lÚ*ÂZWø‹í…º ¥Äáz‰Ÿ@0X$k ÈsKnmÏ„~ˆÈGìSï¼ôkægfO›~|¦õŸLf>ú0||†'›~ðëÎ6¾¾ä:2.l\Ͼ[+É Î!ÉkqÎJ3&1–G–ÇXgýQ؇”‚Jä€v;£ÑÎ0αþ­nF’Å{RxxÚÇó‚ž&¸^~ÑDO?AàJËï@u9Î9´çcmŠ1Ögž§¤6§} Ý(ï~kæð#Ÿÿ‡óÙÇüëÂz3sxúnáø‚V:’†„DKO(éP ³–nžalN­ÕáâbNÓM»ÄI )5¥°ßñ<…R’ÜÚqN§k6bÿV'£ÓÍhvÒžGsÈž&ø:DˆâºuZQäO+ sÔMrúÊe´ö@h°°ä&Cˆ% JÖÆ¤qLkBй6L'Þƒs¿3sxú–üúS¬v'ÿJ‚PI_pøX7M†¤“>PR£¤B+…C`ÃXKn{‘ŽÍÉ­ce-¡gH Q¨¨DU βX[a~µE’Œ-BT¥ZIZíœ,·$©a /$ úK#DA¹ÉXk×XkµQž ·c‹è@éÂ!{Z“¤Ok*Q€sàù%´ ©·ê$YŠÀN\R)ŠàÀC8lUç~Ó‰œ÷þÔ=û.~è7þÃé?|öÔ_&Ìžfæðt<†c§ô\º;D ðµ‡V )%RJ|O÷br¯HŽ´*0hYØÞÅZ‹#g–yñØ9.-Ï#…¤b­_à=òÜ’¦†¸kq_!„ gœ™­;\‚Ï/¡”¦¤k‹ˆ§z !PBଣÕMYYëP 4àJÓWÂ4%É-©ãd/[! Ðź¹éÐò»¬¹ ä0ŽÍž¾ ೇüÿWöd=ø ð0 “ì/vBâyRjà)Eø„¾G”|(ð <'Ö&áÒb“¯¾ú§fgñu‰±¡ ¢0Ö9òÜÑM y.|k+õçæÖ¡„"PZ,­tX\él8aO+<-É­cv©Í¹¹5@ày ! Z¢TH²‹‡Â9‰uœÂ9ÕˆÁ‘àl—D´X>`0¡>ñäᇯèñÏáþö¯ðóÿãÞ~|lšúµÿÈÌáéƒÀÿ€£•îqúrša­A ‰‚2½ì´ú”ŸrRŽBBÏÇת÷;Œ5¬6Z|ó×™]YaÛÐ6Ƈñ´ÄYÈ%M-Ý8§RòÐZ"$$™áÂBv·‹P­œÑ´º)Ý$+BW­ð´B)E«‘æc,A QJz¹J’uð´"ô=<ÏCi­}¤ôøX§±¶ÈU ““ÒayOj:‘Îpÿú?>öÀ­â“ÿ”[ºé{/„G>>ÃoþÖ´~ ¶¬\>ê_ë;²< Šª„a)%žÒDAH) (!ÕRH_ÉGiÂ9'œ3ÖºÅú*/{‹vœ±grå0B*‰uŽ,7ÄINh¢H#{‰U³“2»¼ÚCX5ÝD’åcA©uè[‘fŽ8±d¹%7­¾ç3Ø7IàGÄi °„¾G)(6Mú„AHDø:DÉ_h…•+1•RÛ‘g]?þå~`ï{ÿ·?å3=ü½ÂzR²÷?L!°ù¨‡ ÆXòuÜß9œ3¤Y”£AÊÑJ»NÉÂöWÜöѪªF.R£¥d­: ²þ²Šó ³îع³”Ã*ãCÃøžB 0º‰Á:A_)@+B¥†ù•U$œD 43à@IµQJCšÒ̇’’ÁÊ8åhk IÖÄÓŠÀ÷‰‚€( ŠŒ< (E%‚0$ð#þ{2çñïfO ààgú=rLlHMŽ1„pZ „§ÜâjKÖ–ƒòþ[;“£´:çÈ2C’䬬uÙ³c€¾’O«“’å‚nœÐívú"¢ ÄZ‡”…ãEB’Æ=-°dÖR <Ƈ·UŒÍéfu´t_czZ¢Dáa‹¸CJRЫ ’šBι"0 !$iYMzypÑü7Ö¹£<Ο}7P¸þöxpðÀÎåÙd€tÎ) Ú ‡À<¹z»8ºZÞáiUÖµÕ9]¯·e–¥ä¹¥R)£µ"IòÞnÈzU*•èt:ÌÍ.é?ÿ“W&vL?týuùÂêómš'›Ì× öàƒÕˆz3&Í ižÑŽ» ö <ÏC+çIlæ8úõYºÊá†4Y^‹«U¦Æw#¥¦“¬§kxž¦Ýˆ©–à TÓ¹ž±v—K®¹- EI^€„Öº¼®ð¤D)|Üw¦“åj5ûØÌáéW¦Ÿ¹ðäáiù6‚ÐßÞ=ÉÌáéÝÀ=Ú¶ßsôiæ/Õƒ#§*ç›Ñ±c+cÌbCÜÉ„•]®Ù¹“´$hÚ…¸ \ǹ"ñ¹YÙ-¿÷Ì©…ð•×NEÛ· 5o¼ö&.¾úyÚ³ÚsŽï亻·³¸Ú"N Æ:iŒpÑXR®ø}fŽ7¿>‹¬hÆïƘI½uÿªåAr“ÓìÎa]ÊÅÅÃÕ2R p…®„€ÜõM““ä…â4Ã×>ˆ¢Ìª¤ÄSå)’k´Zy(R÷›Àù«h.¦ÉÏZåÔµúȲq¥óOµ+•á€hÔ£2VáŽ[ú <¼­z:àЮkè6SVÖ˜?·Âì©eV´ÖDY‡sÉ–Å7Æ µ&Ïs¬Í9}j¹|òÜ™æû©ý“\|e•ÖrÌÛÏ/p˽;©ö…´»9if‰“.ð=Ÿ¾R i`ál“Úb›0 HÚ9Ö‡£Cܺï&pŠv²ÈR}ŽÓ³5–kmûJµ!ÀZEÆnLN»›²Üèây µÇ@PA8Gž§(U Ji¤¸@ì-¹ðh{ïÌáé0ýøÌ¿ú¶B«q#[ÿw°ëºï¿fp²|@Hwï§åât]ä~ÿþ­ãôõÊÅ–±vk…Ýæ1³KçØ9º¿¤ÙUæÀ»Çh5[ÌŸ¯1z•…suÎÖX™ol\—$ Õj•F£x/‰3yqq–F³ÃÍï:È¥·ç9ûÂRabÃð@‰úZLýlùsËܰÇàiRà‰WÒžÄ/kD ñ<|ϻѺDšwyþ…—øÆWÞ–»®Fé¢ÞÐMrÖš1If(I–³\oa¬at°OE¡httã6¡¯ txª·§­#öÈ·Ò»ÿè“Mî‘Ïý–Bè `tß=£ÿËÎn)ÃB‰Q©E9(Ùï(þFf¼¾Sø6´“…Æú†©FƒŠi,a±ýÁÈT‰k:#4V[Ì®qìë³,Ÿ{'*ì)M’¥œ¹tž{¿ï&Þ{’¾íeœp$Î2Øaê9s/,ñõó/rûÍ·UB|-©úLÝ4B‚¥4U"÷ààî)&Gv‗^|•Ïüþs4æ[ OUÙûÀµxJqêâ ‹«j͘$Í ãIöïalh_—Éa¹¾@nºD¾·Í„ž‡’…qä´tGàd#ŸPMó‘/<öè?¯›,ÿð¯îªæ(ÚyãÀï¼ÛG}Þ·®µýjpÇñK¯rhêJA±è±æ8 A *ûnde¶É ÿñ,ùÚåïð=OTËkKhÝÏ}{9ÿúqnXmv)!:–îZÊÉå ¬.­±«¿Dà{ø¾fÛ.œ«“4s¢÷^Ë«K<óå©Ï7IZ9Õˆ°äóò±9j6Ý8'Í-ÖZ´’¼÷Öë܆’!Ý´C­9Kšw=¯Gt€‚4Ï6¨;‡DmSyÔÉþ«®±ÿîÿþ¹“÷oæÿü—¯mMÖöÞ1ºãÀ½ã?\ò²Øàß‹áxãÜ7©µð=ŸÐŠÓ‹ü_ûxžGøŒOUùà?¹‘¾Ñ`ãÆZ+ãÑî6™[œã¶C°z"æí¯\by¶E»›24¡<‰hr—"„" Lè/\àÌs ¬­1^dÛÈvrcùúë/2¿ºLXòÙ¶k€©wðê‘9–¬5:qFšåäÆrÏ9°ë}ѹM©µæÉòQP$u¡_Â9K7MiÇ1­n—vÓIRºiB+4®SEXmþéÔc£êJ¨ëÞ3ö÷wÝ<ô>gè‘©¾ËSöj³ßá3+­y2“ø%"¿¼ Ùdƒ]W€mpáµ5ê‹…iê“~ì·ºÍÁUbÓbjr/&u\8wš‡ÈÈÙ¾£J»ž2º{˜ƒ·]ÏÐàs«çIÓǾ6ÇÒ…cy÷ý·sͶ=¼|ü5¾òêó W¸áÐ6Æ °&3Vë]ºI±ð¦Ç̸qï~¼óÝXcivV¨µæÈó­4ZêÿB`œ-¢¥$#ÉÓ‚dç=ßá8OXoÍî}Ÿ=ò'Ïž}æ­÷Þ5²Í™"ù^SŠõV¬´æiÄ5ÊAý¥B¿„V!%2—2ª2´w¹¼1|S_9²žò;^Þì4Å[GÞâ|C·\‹*9j­%:fžû~òZju~Á´ªÒˆ;ì½{œê¾ “û'¸nêZÎÌžç™W¿ÉÈ@™;nÚÁÜr“Ók´[)Y~¹ êk®¹–,Ohtçé¤ËHa (I–[í%ŠZwœf¤YÖƒEzЈ„À‘–}²>Ù‰êü}à¼Ý©å×”½-Ž÷{O¬ä6e­»ÂZw)¡WF ‰q†Ü¦HaÙÌõ ÇBïÚŸžÚû>®³Z–XZYdj÷œ³Œí&ËÛtòN{G°.ØŒ¡þ>Ðe†÷$蟃»¯¡SyæÕoFŠ÷¾kŠ“çkysN'C„E&,„` ¯÷Þr·ìßGš¯±Ò¼H³Sgn©ÅJ½Cf bÁ@%`°/$39i–“æÝ4£'´Ú9Q (G~QÕë=O¾#pºžì|꣼çáO<ùÕ§>ú¢‡ö#Hq5ü%Ø0â»wÜݼÙã™j!Q› qgÆ·ú}dσƒœËº"Ÿ4ÑDa %3|]"4U*S4ã:R ª•€åf¡T‚¯ÿÑ뜟ýûÞÆîÙÃÉó5^yök³„/ÆB†«Ütíu¼÷–Û©”<–ç˜_½ÀùÙ%.-5é&9ÖÀ@_Àþ©QŒ5Ì­4iuºiáC’,G)è+÷~R"¥BI‰ù0LÀRö#ÀW× ½HûذFâÛ-Þæõ.*WBŠ µ‹]¼å¬+Î-ß°5ìUZnÊ¢¨›µà¹î ïëø’´e'¤BJç<¨„Pxøå2¹í¥>J;¢’æØ3‹¼öͳ\÷À6î|×$§/ÔxõyÚ+1ÆJ}%®Ù½“GÞ}?S4ãY^?{’Ó/qq¾A»[È|­˜«29VåÒÒËõv¡™%Ë JÂð@Hµì‘d%¾ö µ‡¯{a¬Tä;Cá­ä7Ï|túÀô'fŽ_B¨Ê&µßÕ.–‹®¼ÂñÖçc·6ߥÛHé62òÄl¥*IÔïQôÅÐÎ2ÕÑ›;Lnß¡zB¤·Iyà\z¾úV÷Íî½Ã-AˆöØ6C_°›©a§N0ôþ)öß¾›¾m9§/­qòì*V8ÂɈo];&ù¡{ Ò—srá9^=qš‹skE²–„Œ•¬–@À±sË…Ns’¬ÎÄp™áþc-«„J@äûh¥záë:oVb#œÒ;Ôrv°I,™ÄûL‚ù“Mwú›KÌ]sY\`÷ŽË;\\¡NEŠ œuŽ ¢Å¾wŠkï#ð{ôÄÞçd…¯yf·èÌËñ7ÇÎüY,_~îttìÄIoh ß>pß=ýàƒõJ©” <áœAÚ˜áò^J;èŽ-1[ïò手\Zhl<c£ìݹ‡{oº™N~šWß8Í‘“K4Ú ¾VŒUè+˜~µF—z³K’šùÀ22XbçD?ÒÁÊZ‡‹‹-Ò̲jˆ²_ÚT÷=ïòj0Cz9ïÌ?œ~rú×gb­}U’ÂlÕ„M¦IA¼–qᵚ{óó³¶µœ =‰”—?'z¦Åm­ÞÞc@KAÖÎÝ«Ÿ¾ÄOÍŠëîŸÞ;Ne((L–/¼™Ô½Ã»=~rôßÿák„AHœÄÌ|î‹Ñ?ýÕßÿ•_þó?ñ‘Gjžr¹i€ËFPÖ۰ɵµSäÆÒW*sËÞ=ìß¹L“—|Ž3‹ V åÈãý÷\ÃøP™Åå'/¬pqan’“¤9yn(qç;ivÞz{Z3§˜Ú6ÈXµ‚Cl@á²ÇmÚ|˜ŠÊmI¾Wtm(„ < É–ÈĹž­wpî…{üK nù|ÛI_ˆ ¤‹•nã³[$èØ _­÷ 8×óRRêSp'¾8ïfߪËCn×Ü1‚”?Ú$„l+²jrËÁ{'¹ñK¼ñùY‚ ÀZK£Ñàÿû6ÑMùwÿë,Yk"ùé»F2¿}$¯sÃÞdÝ._zâi^üâ ’Ô±ó®1½{;7^;ÆZ3áËO½Íìù&r@!*Šn’šS£LmäÈéEÎÎÖ°Ö¡µ¤/ ؽ}£ýi™¢¶àœg :ç&Ûk#ål$GTbïžÐR‰‚#¾ÉI)0¹å…ß?cf߬»<±Ä)éÖÍÏ&5À9ÛCFÙdbÄÆ$”ØXn,Î abåB‡¯ÿÛÓtÖRnžžÄô&!¼³¿Ïd–;l7o|~–$Ièëë#Ë2œµüÏ¿öc?üèc£•ÔZ‰s}8×¥8î:x7FÔ9véÞ>r‘¾p‚úbÌ®[GxÏ{ع³Ÿ³—ÖøæŸžäâ[5òÌз«ÌÎ{ƸùÀÃ}äÆò•ϲÚè „À÷»· °gû0}¥Zùá!œÀZK–Ť¦¨9H!zŒ%0:Qüaà‰/}ì>´”B )¶$kYlxþ÷Nç Ç®ˆcåzãØ–4Œ¢›F”C1q]UTG#Qò‘º0OÝzæO6Ýù×WI3+-N)@9¤'ñƒ¢`ÿÊg.Qòñ£ò&ŸpõÄe`[ÄžÛ†9óò ­V‹(Šèv»Äq̧>ótÿ÷³?¹Ø‰ÛBkk5ÎB/BÈ_Uè yèÞÂà@Äöñ>pŽçka‹o®ÐX‰‘ZpóM{xøþ+õ_zþ ínFè{ìœææ½S ô÷£„_4¦˜œ$Khw´“f¯pU,¾²¨ØIR ѯ3OˆwÜÿ±/£Åºzë›§Ö¾øÇçš o5íI¹™·ïz²8¡ËRî¸yPî»wLŒì*as‡³li[B±ÿ¾qâfÆŸå«´VÓ èbÃs;xîÿ9ËmìÝÔôwu!”}®¹c„3/¯ôÚ .ož×Þ8Zò|ßÉ48áS3r®Ÿ¼éµ)EOªÓÍ8y¶F½ã„¥4 ø¸w;ïŸÞG–Y.Ì79zz•‰¡q&ÇÆÙ96J)ŒˆÓg “wé&-ÖZ5ÝqœbŒ# ||-Áõ|„REÑÇXl¤]¨èŸ9<½gúñ™3Z¨AQò$/þé…¥£_›ïŽV£ qEÈä¤ uFNÜЯnžžC;ËØÜ‘Åöê9†s˜Üá—wþ­Ýxϯv–3/­ å&IHÙ—V·ä ß껦 ¬IÚù–÷›Í–’B!P8aAxxzˆÜÔ1¦ƒ'#¦†oáÜê‹Ô×b–k:qAqÙ[eçþ†‡ªì˜Áåͦc 4ÎGî#Í2jK¼|üsËKÄiŒs¦ý¥@š¾’On3LÚkxENá4`IUæáRþ^àŒF !¥@ŠÓÏ/Õ_yâÂb UI)i…bݧHp­<÷&néW÷þÔµh_bs·áC6GVBˆ‚¿iMj©Ž†Üù‘Ýø¡âäsKl¹Ld¯-í¯Wm‹uŒí©0:Uáâ‘ú–ŸåÆl˜JBHC!]©ð[¶C¤&°ÉÍÎ9¤”KšrPe×Äå`-ʘ\ã%öŒ–©5ë¼tôMNÏ^`i­Ö«ü™°¼“€’’Û"‚P¡zPŒ5%, R!­+¨øVàŒ#ïWÆ-æwÿFKRtrû•Ož:_”#\"Á¨Âœ!€Ž3ªº3R÷ÿý…©èuD^Ñmå´–c¢~Ÿò€ÿÎbM(¹ñÁí¬\lÓXŒ·$‚›…iÍÕ5Á9è yàç¯ãìË+¼ö©E:žò|kŽìÅBd‘¡%ì9@œ5h7,¯ÎœaîíS¼çÑ;¹ïÑ[°Î”4‹µEž|ö‹?†<7fVôK@Ê➪•²WDÖ[¥B IDAT•nûZÔž¥,>·(¸ÞCØ~Ï)—\  …RjÉñ§çæâf÷6›RdZÄ› +eUéü·×_"¶îü<±œ{e…£_^`m¡‹T‚<³ l¹ýCSŒ][Ý(¢ôGLÝ:Ä‘/Î_ö!”'¾£O(Ö-5;²z:¥öŵ !ˆõØy“3“RcŒFHkJܶï>þío|šÓoÍSˆœà­sGhwj¼uü4§Î,€x‡ð{ÚÝ«M )P<­(Eší£eJ‘Æ™^Üè.;d!%ʰ¿EM"TÎiÙ÷éŸÒH!²nnν¶ºl‹{ö8“ëÞÎì8+~`‡ðKj«ÝwÅŽ}å‰ œ{y!QÕ‚¤exæ“§¸õ'9ðîñË©œ±l?ÐÏñg7ÛBmÅŽ6GÂWfïÚóPÒ"7]“¹T(¡¯À»,Ö¦H©((RÎehWå=?r€Êõ‚ZÚåÙÓ/$ +ç[tRò$Çdްä±íÆ!Jƒ~VYP+K¡& =úÊ>Z òÜn&E ^ é5¼ÛÙÃè "Á”¥ F¼íZ Dk5i­^êÔ´¨S;'…H´’ëþˆ¯·íïßjû)¼ó¯Õ¸ðzªw¬˜g-^«1uó0QÕÛØI~¤ÐždpáœíÕh/£¨ßn\‚ÑWoýÒ°©Ÿ^þ“±;ƒ‡—ËâémÁž ÁØ5Œíà\ÆÐÐ$]ù"ív‚3†þJÄÐTÈùù%ÚÃä5ƒºg;¯Â"pÖ⬥ÙIY©wHRC·ÛÁ¾’„¾¦x„_¬•+ ¢1k –¼GŽ0H#1‘Pb»Bˆµ…x­µœ¬mj±¹µMOÉþTX]óEiÀGáG*ÁÅ7jhOææ*GŽ 4è”ôF8)•`m!.zÇäúΩ¿;sd2C7ijS6êŒx¡ñå1áyöÖê½5ëL8/ò!Ê•±Â€3Tü &ö2»ð:ý%J‘†~Áõ?õ¨.ŽóI‹S/4Šv\ã 6`f6P^z“¤,thJ¾ÇpµL%DËBx#…EiQôÉYEIéœíÓÆX³t¶µ $›Â6Îì²–r{,­(÷ùø=æÅ•šP_ˆÑÜâ&\oƒŠfxg™[™Ä Õå…u°x²q¹~ Il¨Œß9D%½¶X)PꊄËÅ×3eÑ—•›£q½ÑTYž‰N·­”6ˆB71Z·†üÜæ–[¯½•f¼@³ÝÂ:ð€Räã‡)ŠF•$µÄIN£Þ%u’ÈÓH-{ ŠëŒ=×sØ*°¼Ö¦›¦l®¢zá¸=ÀÓ œ°8-BøÚYLs)®õÀ¤u!¸F7÷”8$•^¤ð‚Ë!éfø9ˆY² …Î3yh€ýw1¼³BžÙB¢èœ\<Ýdu¶‹Ðb£Î $ì¿w„Wž>ù5!íæ…ëà¹Q÷d\&¾ÜøóíO}ìtúò³'Kiž‘çyÑQä)nºñ@÷oýèûë?ñ‘{WûËCâæ½7siõ4v—o|ê8Ës-vTº®Šq©$ÙBJó\›¬áEšÉ £ú‰J¥Ð# <¢§!E—jµb­%IÒ‚†é,ÓËcVœÀ×ÖÚ¬>×]½RInšBˆv¤ThŒÃæWI«ã!µÙ¢QQ,^Tö8xß}Ã&7œ­Š¢ÍÊù6ŸÿÍc®µœô@>+ZÜúC“ ï¬\¢¾Ó3ÛÜ·ò[z« [k’X´õŸõ3_hnlíy8à¹^‹^yíhxôÄÙèýŸ~úbföJç@K*Žð™×¨-­qÍýÃ,7Û¬6:4³”•…Ù6ybÊ>oW{÷¡R TBƇ+ôWÂ"ÿqÐM“Kr—A<É ®¥Y»–¬Ý+ž8o%ù¹Á(lå“[¼@½#f¿éáI¾ñïN_[¤ŒÕ *Cáe8$1œ|v‰/þö —´óË´ÉP±çöa®ÿþm¨\~Çd-K q+ß6WãÌ&Z¥30qm?ïùé½|õ÷Oáœ#MS‚ Àó<Ò4ÿ÷'?5pÛ-×v?øÈ­«fQŠÕNêÄ(?þ ¢ 3²¼ÍÊZK‹‹œÛ¿ÌìéjZ˜Øn‹ÈSCËYÚqÆr½M_9`t¨D_䣄ê!«ëŒ+ÕóPá.—#µÃe :W‚»TkÙ9R¹±YÏL·‘)o\½£"V ¹á}Û9ñln®Ãßøã3¼ôé T†šË‰»øfþí5r;:Pì½{DÜúÈʃ>É’ûÖÉZ/yùÓØv Šiœs[„à®rÍmÜÉ›OÏQ»ÔYÏ%PJm‘ÿð>7ðÃÞ±:92EØÔ$Y“¥µYêíˆåó-O­0<Þϵ×_Ç­BjßWcnu™…•Ëõ5Ú.Y–÷ºEõfL³•àŠjɧúD¾Æ×_’BH„‡“V44‚LºW+­ä<Î-F ç7–ã¨"ºjn×-ƒè@pú…Öæ»nùl›æbâ¬)bgE·Ž*z¾°ŽÒ'=´MÜøÀvÆKï`f_邲æ™ß;Î3Ÿ<É5ïæÎì¦4ào¨Œ{GðÐ?qóÓ|åwßîÑg݆yrÎ1;·¨.^ªå i»›1Pct@ÐÍ×8ûú)žùìó4j1#ー÷ƒwrèî}ì`ß6KœÅ¬6ê,®®°ÒXc­Õ¤'a©”$C’§k´ÄúŠÀÓxEÃ*qV8×ÔR!EèlÂú ØåFüÒäxebîåšÙyhP]Ÿ$€7 24YáÅ?9Ëég—­5©ÄFèj{˜Iiлo7>8)Æöôá…ªˆ„®îæèÈ/ú"/ýÙyÂ>KG×xúwNðàÏ_‡ò·:æ«ÝÛþwñüÿ{ŽÎZеÙ›VPô­ˆ“Xôõ{œ¸ô‘dtp‚]ãã¼çþ»ñU‰?ù¿žæâÙžøw_àÄÊF'‡dl`€¡j?cÃ$YÂZ»A­Y§ÑY£ÙiÒ‰»8kQ²˜ÙdäÆ!„+²þÜYM µ)FX¾c…O/6^»iÇÐýËóM=b-ÚqÃà·™=îû™}âÎߣN?¿ìæŽ5\§ž"„ 2â‹íûÙv}¿è ÞA0r«¥særíùø×ùòïžÀY‡T€4–º|î7qÛC{¶ø„+ÀZÇŽCì»g”ןšÝЂËq/y’šþ¾ÙÅY.-Ïqfv€ë¦öpÏûoãà­×òÂW^ãì¹Y²Ðpvî"çç/ú>}eFúûÙ62ÄPµŠ§†é+UhuZÔZk´ºMLnÈ1(!H„phë ±K]ó~¤s uE#¡\+Í“vš¿~cyàæ×Ÿ^T•±Ðš(}K€  ÔïqÓô¤¸åvl<«ëAÖ¸^¸úÎHëjš°6ßå™ß;IÒÊ·ð’”4—bN|uñò çW¿§<1<ôó7°÷öŽ|yù#Ò4Ý@^;Ý­ú¸~Ç-HwŒ3s³\X¸Äù…Y¶Œrã¾k¹ï‡ï@JG½¾Ê©K—¸¸¸D'ÎÈmÂÂê"v]øž‡1Å$ƒÈ÷Q¢JœÄ[ ]±›fnäÝ,3¯Ô/h¥ÅiyOäô"×MóöB£óÜä@iÿ­®??1³0Ìôx0¼½\,è·à­/øÕˆKâ*ŽElô(]¾¾µZPiÞ?ÁKŸ:_Ô-6]êIh-§ß1Ásà`u°Ì?º‹ãC+¼øçí Gýæ™#bhìzFvphO™Ð¯pôì)–Vê;užoœc÷ä8‡nÜͶ‰îÞõ;&hwštÓ.Yž'†<7¤iVL¦1¶€¼]ÁKRR£=Æéâ÷™bjÀÅ…Y÷ç_?ÏÃwÞÏ®±)rP嵓oòöÑ‹\|~…³ñ/î·¼o7·Þµ‡PGhQ–š<‰|S`D¶ˆº²Ü1•“+Û×ërÕ Ý²Ò9{@ÿîÏ~ó ÀM½.w5ÂÝl½³ÒÉòoW‚í¾ÃcÚ^q´wÇR‘Pý“•huq1ùý™Oñž›o玃ßÇÞÉý”Ã>Bù ­³fß\¡±ØamµÍ\}ý7Œ11ØïùEÔ× Ï‹ÚBzï(0¦G86Š.µ$ìdÊC¾²>åÅQÌ”zøQÜCS“MgÖJ²3w^3v¿ªÒêNª^¿/O=±½þ© ¦±a7¨*Bꢠ!½×MÎÐ-OÝFJ}®Ë©ç–yöÎpâé5ÖjE»”–·~h{O÷®«Œœ~nÏ—½bI1ª³S/²ïr¥Ä?¹“Ú«˜;A«–¦)õÙ.çß\ÅKiÀ7|d¢¯Éê¥F|ìÔi±¸²ÌøÈ(ÃŒPÙÐÉÚ¤I†5`#IÓe¬4Û䦘 ³Q?ØL|ë½§•*ú¢uïÕÓ”.d*ŒÅ?ùƒçNÆëàû*}øÃÞgŒÑ_þò——kµZ²Ù­/7ºé¿ÞÖ_ù• ,é4Zç;¹‹-g>·dN}y¿O‹Ò '¢!_ˆ’ônšžë4Ùã¬Zc©Ïv9þµE 1µÙ&µÃc[8¬Bn­¶ í(!Ô:TÑû¾Ô ”Âæ“ÛoÛh”ç)Æå½ªÊ¦šˆ³è}zÇH< N~æ\íùK¯Ësgf¹ÿûïæ¶‡¸ãúwQíëã•£G¸x~çKâ4Ǭ9’4§ÙNª0PŽð´‡êÙVwÅ& »V«Ø¾õ࿚©}ê}p£{Ów½ë]G’$Ñ÷ÜsÏT’$cÍf3ŠãX¾ùæ›'Ÿ~úéÖ¯|ê¥ßÿä?¸ÿ¨*~ôÒñºñ…²ž/L¨0¹¡³”RŸí*ªÊ;øþm—cÍõòžqœyi•‹¯×‹‰½¡Æ ‹zÂf0îroÜfÛáù²GÁ)Þ‹S4~Y–#¾•ãŘOÙýÄ&a»^{SéºhÛàÛéâË…‹Ëâ3O‰ÙåyÞ÷®wspçAÊA…—£×977W˜S >Y±mrkqÆÑ_‰´WÔ…¯æ.…@­dž³|`GýâÖÚ_þå_îöþúæú{¿ýÛ¿-'''o|à¤Yæ-ù+_½S?Ÿ¿”JÛ ˆ`Ä'#¬˜*‰¨ê÷`\¶pšºk)^te BbìeöD©ZLòZ„Ò’Ó/,Ó®¥8í üÈÛ^–~k!Xã°™EjRlÁºÖq*¡…œ¸d{s®u6me&nƼ~êqšòè=÷15¾‹@û„Þœºtž4+œq7uÐèU3)è‹çwr¥¬C5r)3ûy€wýÎKßy¬ÂÏýÜÏYàµÞÉ?zó®ª<6ö‹U96ª§­³–4Ӷ¦¬ÉÉÉ›-Q Pš«Ìu˜Ì¡}µõg‚-ƒ7Ü¿Þh‰bšpjøú¿=ãš+Ééx`2#SešóÙeÖž»zøÛmffHj¹Y[¸RÁìxßÄÐÅ/-, Oe9ÇΞ"3)ÓwÞ˶á1ôõ·!'Ο¦þ0Érê͸àI‰„¢ÙüÊúxËhÙµ_űðÙNóÐ'fþâÓ ÃÆ€×zmébµ}©›#aT–•JE %yY ƒCåTs©V§¸¨[̬Óà÷IäšØ°÷ÖZ|YæÌ…"ñÚ65ÂÁ‡F.û!øÚœ¦±ØÝ(ø%EÿDÈnçÔ³µ†tgÄUrÚ1½JÞeZæ:Fµ9ŸqÎÑ¿¯o¨}©»ÖZí¦ëcN_¼Èù¹ïûngbpœ÷$ Ž;E'n÷†­[­„Èñ¤BÊ¢Yds¨j9²m>£´Œ?Л­úD¨´tibV–É›§] µsYlâÆj×–óly%ï&u³º¶Œ+·q¥.Â)Ôêbvœ 1ÎÄð$ž¯¨@P*•Y9×&Žcö\·“øÇ‡(+”_„zÏýû³î­ÏÏY¥¤J8å WñÄ?²›RÕߨկœ[üˆ‚å mžþíãÅD)zƒ«Äd¾%©t <ÔØMÃcÒ‰u´c—øâKßäÜâB_r`×îºáûv±m´D_ÉÃ:G£ÓMŠé÷W˜"¡’óNðÒÒ}×S^Þ‘oIé°t/4Ú'ü< û‚ÝÎm2V!òæjÇ¢s‰àå¸¾ÎÆÚ\SîÇsé®êó]æÎ-¢œÇõ·íá vÔg;¼ýì’;þÌ«:Nª^#‰€¾Ñ@ÜñáÝL ~1ÞÒ†u%œí¬ãÈççìɯ/¹ù·›êÑ_¼n2Gëšp™Û³àMèêĶa=?·lloœPž[æ–k<ÿæëÜ~pÕò0#Õa”€KËý6iêÈ2K'É©” xBöè2Þbæd×¾öðo<õö_hÔÎUΩ¯•yþí¥Ï¾ÿ†É•}=æŠÿ߀A+²åù¦í63Ù7¼ƒ£ïgŒÜóæç/qnqÕ­Ìu¬‚•e8ö÷Îlø2Õ«MxžDGR(O‰Ò€æÐCÛÅþ{Æ/3ߺX<ÙtǾ0o´’®½»/üïÇô­ïÙÄwWÅÁœu ÞÐ?Ò®µçši,-=K-—VÖ(Ÿ=ÇõSž.ú!レ¶VH’.Ö:å­;œ¢˜:üóÝŽSò“3}„éOü%Í8'„H¥]ë\ëÕsËî`9ô´´²V¶‚2ã:èžz~ ôªK›NŒ`p¢Ì­N±íš§¤rÎà”.(iFÚE%í¼@¡%G÷õɉë«òÀ}£â½çZqÓƒ;н„펋}‡gÿàtÞ]ˬÔÂI)L}¶kŽuaãs…9²WÍâ퀘ڵM†žB©^œ/ij¸0_§ÖX#It’:žÖŒô Sª”üßó6ú¼‚ðt×#çóÓŸxòM`CI!€¤J‰è,5ãÙókOyR´"OÛÈSÖ÷”Ý£Êíåãk¶¾ÐAx¢ÈÍ7Ö9Jƒ>ßÿ³ûä‡íVuÃÂyÇ`K¡KJí½gX\sǸëÇvsçGö°óÆ!„º uÞÑp¨ÅÿììÂkuDªGK—(!ÌÚ\×e‰Ý”'\½éÑJ'Çw …#CUÇigÛŽSj­¢[À$dÙÿ×ÞÕGuççœsϽw¿%$!É| °I ޏ®™º©Y»Ó8;žéLû«i 6 PÏ´?ˆ!CÛqfâü¨ãiÚÒv3. áñئ©=`SlŒâà !!#iW»Úû}ÎÛû!i‘° 6tš¾3wv´£Ý{÷<çóyŸ÷}‹EHÄHÆåH†&8ÄPÀD> ¹ÁûÏ⚦#­ˆøBr¯Â¼âDî½Y ±Ìü–ô½(3þ`Sz¤ûÀÅæ2ŠßÈ*1¼m·¤ÙM_ʶ(\òPÊ`‚!ž6h´ËÂ^š†(¬WŽW}¿òUÙóK>IÙç•e¼&c2m6„’“!11®Ü¦º8ŠË$6QÇ/Á4,!7 ´ÌH`É‚6,šÕ Çà¸a]«2#!¬á'Ù§¯ÒÍ2Ý¢ü=Ûß?8Q?€Bý*ÿùü§‘’ÿ¯1)¸””BgZlJ5Åð«ŸœŽŽîí#¯ŽˆO™¿gbla´ß¥÷^<Nì…~©œ½ú1n0H‹“,OE$$'.&0ÎTâU¯{ BUtGÁ™€åˆQ]‰ÏhmLaÎÌFD¤Ç¿ƒ¼¤`r¿ÈîìÜýÒ¾uÅ6½Ú" ¯â3êœ@žz娳goïëhJþ™$ÞK|4ÐÅwK~÷ §÷ ò ¢yaЧZmo”LØœ§šíí=ÓFprö‹!¹¹ýÇóQÿûy5:àia‚ &Q錆YNã\íë:Ôðó‘† QNéÏ”`¼Š•…ÛÓ7PHç•G—Ð,,ð*Ó`Â2'Ü—4ìÓŽÉBú÷ìÎÎ-½-¹ž/T¦¡žµk×.PJÅÇ1ƒ 0÷îÝÛ322â`ßyô…d—vßÖ2ãñx’ÏvOúʶ¹æ’3*15zÂU¹n‡ˆÚÔFh#vßwo_m+¬$ãÀ»ûüK§ Qè*€—Eš,øÁäŽÌx-ÌÅOù¹PÉŠ4&Ôš[iƒsÉÊÓ}ºÎó¹€y SZL\ V‚øXë”+YIí£¿-“Š Ëöß_Ý}÷Ýg …d¹\6l¸-‚”çy2 Cyâä©£sþíÍ?¥ï,í¢Qµ8aš¢ó PŒ1' õ˜ãÂJ™}Uî§•*$‡edÛRÛ¶Q«âE‘䦋ÂÑ % †°¦‹íyí’cHA„òÞÕ µœ·´õŸÉÁ Ê·˜f$p öeIšQÔª\±ºEØ ar8 ©‹8þfõŽ.·\µð“‹å]+xðÁk«ÒÓO?5kÖL‚}Ë–-ËÇn¿'m¸ïñ$GÁo†ôÇ µ“$Eò,.U.tAJò'§#à’#Ýn³±^§v¬bœQnÌO§l›UýMdæqø~y#ß½«¿H¾V–%p„J ³Qš_iÆ;¿Œ,Û` "?RbŒ©äòì0úÎùœûëåÍw5§ÂÛ”F”ájìÜÙÞ ~/fW‚í\ h‚ò,‹ÄM·§Sá;ðá(÷hw¼±1%KÚÆ¹ ûÄXqY‹_-y†ß€ôŠûˆt‹ ­tY|Ŧ>1Ò®1šôŒ±Iéƒ*§}ããò‚ϸ«â ¼J‚6f·w]€}^9'öÐ\°*ÕÁˆ€‚Œ½v¢ÿ¥›[ÓïÜ>§éÞ—MÉ‚ö.œ±g/®h^¥dÜÚƒÆ ‘p­d{kFÏ^pG!n^„Dº\Z¬æ*ešûn"óÕD|é²Ék¹¯©îÁ&¹7#îÏ*Å/൰RF€1@ž÷Á<p6à‡Ùû ó±UÈnïÂê_]¡Ôë!Ü«SÎ Nœ,üzyGË’™-ñÇó_n[˜2 SÔ‰+‘T˜ýU Œ[\…”öú+Ž]Ò: 4”¡ ²!íavÌkƒi ¨°¬¦¨àô*¤¶Kã€T<èÈÅû÷)RŒ; "Aä"Á-ÀÙGàì€g³;: Õ´üÙí×V·ùú “…Ó¨¿ Ÿ»tÐèåGæG ¿Ÿn}gñ=톚"L‹T¹ágˆÍ±¬ø<Ûš¬i­ ½J&x5¶òõ£ 8!•‡;¯›÷§ŠG‘f,ÐྖĘàö"€·²•ª´ûÖÙ)ȸÿÕ ¶è%MA…Þ˜®¾EZ{§ßyq³âÆ·}­Q𠌟žB»9ð¸–Û‰Æ?:ã¤Î/vÙ ()¦8+qrâì»ÀðV(yéí%Ø·.‹ÕŸ×„ü@éåSo^jšÀW]QF|úÍá§uD=ëY£éIDATýÕ¢¯µÚâ®Åª‰'ꑌí˜3ᨲ:}Àn¦õK«žÚ_*7ú7`ã$èêŸo‘ìëÂ_þã]ØùGo0À¬)Ψõrjb ìÃC#ÿ2Ôãü*Ñùó›W̼#9Þk'$ ³z˜£©UnÓû|@9aNªPÏ 8c8—+½nÆs¥ <‘ÝÑ9Týß®µ÷aÕSû±zç["žáúšà–Ê«¾Â¨ ºÉ†Ú%çߺ²í–æyÉ¥é{¡’†É;¬¸œ”À°ÎUJ9”Ô‘Â%ïˆsÁë9ÈR¯¿~ls†RJÄ“éGGsÃÏÖBöÞëa×ضm<ôÐC‹J¥Rl÷î݃õ³õÏFÁ0cB6Ίˆö˜L4š2Ùd5eÚìöxÆœ!¤ˆ&·¤%œÀ‰>8Y8_ ¯†CçJîùc9@´dÉÒ/Ÿ8qüŸ£(j–R"“ɬz 7ÈŒë}CÏó¢^xáø®]»šV¯^=/ŸÏÛ…B!‘Ïç‹{÷îýH©²À7ÝÛÛÖ>pÏ1x¦Xè£ÊëÄ´‹l Pk.۶܉£í½wÿ×@€çŸ?üð0€áê{Ï=÷\¢££ãæ*ûª”RQ *¥8EQ¸mÛ¶Þz¢“s^ ¿ý´ñBAåc:ço$7¶ Tlûöíxì±Ç&½·uëVIDíJ)Q©FesΛµÖJ©`óæÍ®æ~ëûúú~EK&“=+W®\¹gÏžs¿Ñ ÔÛæÍ›ñÄOԓ̲,‹ˆ˜Öš¤”ñ ¾Î‹‘¥µö“Éäî7Nlذ[·n­ýýÈ#dºººvŒŒüË–-û‹·ß~ûg¿ñ#áó‰ˆØ¦M›âœg¢(²PÎPðõ*¥Ä… ØÁƒm˲֞={ö Ã0œ;ï¼óÑüÃòåËqøðáÿáZlÛ¶mX¿~ýeï¯[·î)e£Rʈuww÷âÅ‹c¦iþç<ðÓgžyf`ÅŠìСCt#Ÿÿ]ì$Žæ@ÜÉIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.archive.rst0000644000000000000000000000103314711142327015505 0ustar00kiwi.archive Package ==================== .. _db_kiwi_archive_submodules: Submodules ---------- `kiwi.archive.cpio` Module -------------------------- .. automodule:: kiwi.archive.cpio :members: :undoc-members: :show-inheritance: `kiwi.archive.tar` Module ------------------------- .. automodule:: kiwi.archive.tar :members: :undoc-members: :show-inheritance: .. _db_kiwi_archive_content: Module Contents --------------- .. automodule:: kiwi.archive :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.boot.image.rst0000644000000000000000000000137114711142327016115 0ustar00kiwi.boot.image Package ======================= .. _db_kiwi_boot_image_submodules: Submodules ---------- `kiwi.boot.image.base` Module ----------------------------- .. automodule:: kiwi.boot.image.base :members: :undoc-members: :show-inheritance: `kiwi.boot.image.dracut` Module ------------------------------- .. automodule:: kiwi.boot.image.dracut :members: :undoc-members: :show-inheritance: `kiwi.boot.image.builtin_kiwi` Module ------------------------------------- .. automodule:: kiwi.boot.image.builtin_kiwi :members: :undoc-members: :show-inheritance: .. _db_kiwi_boot_image_content: Module Contents --------------- .. automodule:: kiwi.boot.image :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.boot.rst0000644000000000000000000000026414711142327015034 0ustar00kiwi.boot Package ================= .. _db_kiwi_boot_content: Module Contents --------------- .. automodule:: kiwi.boot :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.bootloader.config.rst0000644000000000000000000000201214711142327017460 0ustar00kiwi.bootloader.config Package ============================== .. _db_kiwi_bootloader_config_submodules: Submodules ---------- `kiwi.bootloader.config.base` Module ------------------------------------ .. automodule:: kiwi.bootloader.config.base :members: :undoc-members: :show-inheritance: `kiwi.bootloader.config.grub2` Module ------------------------------------- .. automodule:: kiwi.bootloader.config.grub2 :members: :undoc-members: :show-inheritance: `kiwi.bootloader.config.systemd_boot` Module -------------------------------------------- .. automodule:: kiwi.bootloader.config.systemd_boot :members: :undoc-members: :show-inheritance: `kiwi.bootloader.config.zipl` Module ------------------------------------ .. automodule:: kiwi.bootloader.config.zipl :members: :undoc-members: :show-inheritance: .. _db_kiwi_bootloader_config_contents: Module Contents --------------- .. automodule:: kiwi.bootloader.config :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.bootloader.install.rst0000644000000000000000000000203314711142327017664 0ustar00kiwi.bootloader.install Package =============================== .. _db_kiwi_bootloader_install_submodules: Submodules ---------- `kiwi.bootloader.install.base` Module ------------------------------------- .. automodule:: kiwi.bootloader.install.base :members: :undoc-members: :show-inheritance: `kiwi.bootloader.install.grub2` Module -------------------------------------- .. automodule:: kiwi.bootloader.install.grub2 :members: :undoc-members: :show-inheritance: `kiwi.bootloader.install.systemd_boot` Module --------------------------------------------- .. automodule:: kiwi.bootloader.install.systemd_boot :members: :undoc-members: :show-inheritance: `kiwi.bootloader.install.zipl` Module ------------------------------------- .. automodule:: kiwi.bootloader.install.zipl :members: :undoc-members: :show-inheritance: .. _db_kiwi_bootloader_install_contents: Module Contents --------------- .. automodule:: kiwi.bootloader.install :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.bootloader.rst0000644000000000000000000000031414711142327016217 0ustar00kiwi.bootloader Package ======================= .. _db_kiwi_bootloader_content: Module Contents --------------- .. automodule:: kiwi.bootloader :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.bootloader.template.rst0000644000000000000000000000075614711142327020043 0ustar00kiwi.bootloader.template Package ================================ .. _db_kiwi_bootloader_template_submodules: Submodules ---------- `kiwi.bootloader.template.grub2` Module --------------------------------------- .. automodule:: kiwi.bootloader.template.grub2 :members: :undoc-members: :show-inheritance: .. _db_kiwi_bootloader_template_content: Module Contents --------------- .. automodule:: kiwi.bootloader.template :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.builder.rst0000644000000000000000000000245514711142327015523 0ustar00kiwi.builder Package ==================== .. _db_kiwi_builder_submodules: Submodules ---------- `kiwi.builder.archive` Module ----------------------------- .. automodule:: kiwi.builder.archive :members: :undoc-members: :show-inheritance: `kiwi.builder.container` Module ------------------------------- .. automodule:: kiwi.builder.container :members: :undoc-members: :show-inheritance: `kiwi.builder.disk` Module -------------------------- .. automodule:: kiwi.builder.disk :members: :undoc-members: :show-inheritance: `kiwi.builder.filesystem` Module -------------------------------- .. automodule:: kiwi.builder.filesystem :members: :undoc-members: :show-inheritance: `kiwi.builder.install` Module ----------------------------- .. automodule:: kiwi.builder.install :members: :undoc-members: :show-inheritance: `kiwi.builder.live` Module -------------------------- .. automodule:: kiwi.builder.live :members: :undoc-members: :show-inheritance: `kiwi.builder.kis` Module ------------------------- .. automodule:: kiwi.builder.kis :members: :undoc-members: :show-inheritance: .. _db_kiwi_builder_content: Module Contents --------------- .. automodule:: kiwi.builder :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.container.rst0000644000000000000000000000063014711142327016050 0ustar00kiwi.container Package ====================== .. _db_kiwi_container_submodules: Submodules ---------- `kiwi.container.oci` Module --------------------------- .. automodule:: kiwi.container.oci :members: :undoc-members: :show-inheritance: .. _db_kiwi_container_content: Module Contents --------------- .. automodule:: kiwi.container :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.container.setup.rst0000644000000000000000000000117414711142327017213 0ustar00kiwi.container.setup Package ============================ .. _db_kiwi_container_setup_submodules: Submodules ---------- `kiwi.container.setup.base` Module ---------------------------------- .. automodule:: kiwi.container.setup.base :members: :undoc-members: :show-inheritance: `kiwi.container.setup.docker` Module ------------------------------------ .. automodule:: kiwi.container.setup.docker :members: :undoc-members: :show-inheritance: .. _db_kiwi_container_setup_content: Module Contents --------------- .. automodule:: kiwi.container.setup :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.filesystem.rst0000644000000000000000000000372414711142327016261 0ustar00kiwi.filesystem Package ======================= .. _db_kiwi_filesystem_submodules: Submodules ---------- `kiwi.filesystem.base` Module ----------------------------- .. automodule:: kiwi.filesystem.base :members: :undoc-members: :show-inheritance: `kiwi.filesystem.btrfs` Module ------------------------------ .. automodule:: kiwi.filesystem.btrfs :members: :undoc-members: :show-inheritance: `kiwi.filesystem.ext2` Module ----------------------------- .. automodule:: kiwi.filesystem.ext2 :members: :undoc-members: :show-inheritance: `kiwi.filesystem.ext3` Module ----------------------------- .. automodule:: kiwi.filesystem.ext3 :members: :undoc-members: :show-inheritance: `kiwi.filesystem.ext4` Module ----------------------------- .. automodule:: kiwi.filesystem.ext4 :members: :undoc-members: :show-inheritance: `kiwi.filesystem.fat16` Module ------------------------------ .. automodule:: kiwi.filesystem.fat16 :members: :undoc-members: :show-inheritance: `kiwi.filesystem.fat32` Module ------------------------------ .. automodule:: kiwi.filesystem.fat32 :members: :undoc-members: :show-inheritance: `kiwi.filesystem.isofs` Module ------------------------------ .. automodule:: kiwi.filesystem.isofs :members: :undoc-members: :show-inheritance: `kiwi.filesystem.setup` Module ------------------------------ .. automodule:: kiwi.filesystem.setup :members: :undoc-members: :show-inheritance: `kiwi.filesystem.squashfs` Module --------------------------------- .. automodule:: kiwi.filesystem.squashfs :members: :undoc-members: :show-inheritance: `kiwi.filesystem.xfs` Module ---------------------------- .. automodule:: kiwi.filesystem.xfs :members: :undoc-members: :show-inheritance: .. _db_kiwi_filesystem_content: Module Contents --------------- .. automodule:: kiwi.filesystem :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.iso_tools.rst0000644000000000000000000000132214711142327016077 0ustar00kiwi.iso_tools Package ====================== .. _db_kiwi_iso_tools_submodules: Submodules ---------- `kiwi.iso_tools.base` Module ---------------------------- .. automodule:: kiwi.iso_tools.base :members: :undoc-members: :show-inheritance: `kiwi.iso_tools.xorriso` Module -------------------------------- .. automodule:: kiwi.iso_tools.xorriso :members: :undoc-members: :show-inheritance: `kiwi.iso_tools.iso` Module ---------------------------- .. automodule:: kiwi.iso_tools.iso :members: :undoc-members: :show-inheritance: .. _db_kiwi_iso_tools_content: Module Contents --------------- .. automodule:: kiwi.iso_tools :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.package_manager.rst0000644000000000000000000000144714711142327017162 0ustar00kiwi.package_manager Package ============================ .. _db_kiwi_package_manager_submodules: Submodules ---------- `kiwi.package_manager.base` Module ---------------------------------- .. automodule:: kiwi.package_manager.base :members: :undoc-members: :show-inheritance: `kiwi.package_manager.dnf4` Module ---------------------------------- .. automodule:: kiwi.package_manager.dnf4 :members: :undoc-members: :show-inheritance: `kiwi.package_manager.zypper` Module ------------------------------------ .. automodule:: kiwi.package_manager.zypper :members: :undoc-members: :show-inheritance: .. _db_kiwi_package_manager_content: Module Contents --------------- .. automodule:: kiwi.package_manager :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.partitioner.rst0000644000000000000000000000161114711142327016426 0ustar00kiwi.partitioner Package ======================== .. _db_kiwi_partitioner_submodules: Submodules ---------- `kiwi.partitioner.base` Module ------------------------------ .. automodule:: kiwi.partitioner.base :members: :undoc-members: :show-inheritance: `kiwi.partitioner.dasd` Module ------------------------------ .. automodule:: kiwi.partitioner.dasd :members: :undoc-members: :show-inheritance: `kiwi.partitioner.gpt` Module ----------------------------- .. automodule:: kiwi.partitioner.gpt :members: :undoc-members: :show-inheritance: `kiwi.partitioner.msdos` Module ------------------------------- .. automodule:: kiwi.partitioner.msdos :members: :undoc-members: :show-inheritance: .. _db_kiwi_partitioner_content: Module Contents --------------- .. automodule:: kiwi.partitioner :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.repository.rst0000644000000000000000000000134214711142327016306 0ustar00kiwi.repository Package ======================= .. _db_kiwi_repository_submodules: Submodules ---------- `kiwi.repository.base` Module ----------------------------- .. automodule:: kiwi.repository.base :members: :undoc-members: :show-inheritance: `kiwi.repository.dnf4` Module ----------------------------- .. automodule:: kiwi.repository.dnf4 :members: :undoc-members: :show-inheritance: `kiwi.repository.zypper` Module ------------------------------- .. automodule:: kiwi.repository.zypper :members: :undoc-members: :show-inheritance: .. _db_kiwi_repository_content: Module Contents --------------- .. automodule:: kiwi.repository :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.repository.template.rst0000644000000000000000000000075114711142327020123 0ustar00kiwi.repository.template Package ================================ .. _db_kiwi_repository_template_submodules: Submodules ---------- `kiwi.repository.template.apt` Module ------------------------------------- .. automodule:: kiwi.repository.template.apt :members: :undoc-members: :show-inheritance: .. _db_kiwi_repository_template_content: Module Contents --------------- .. automodule:: kiwi.repository.template :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.rst0000644000000000000000000000571614711142327014101 0ustar00kiwi Package ============ .. default-domain:: py .. _db_kiwi_submodules: Submodules ---------- `kiwi.app` Module ----------------- .. automodule:: kiwi.app :members: :undoc-members: :show-inheritance: `kiwi.cli` Module ----------------- .. automodule:: kiwi.cli :members: :undoc-members: :show-inheritance: `kiwi.command` Module --------------------- .. automodule:: kiwi.command :members: :undoc-members: :show-inheritance: `kiwi.command_process` Module ----------------------------- .. automodule:: kiwi.command_process :members: :undoc-members: :show-inheritance: `kiwi.defaults` Module ---------------------- .. automodule:: kiwi.defaults :members: :undoc-members: :show-inheritance: `kiwi.exceptions` Module ------------------------ .. automodule:: kiwi.exceptions :members: :undoc-members: :show-inheritance: `kiwi.firmware` Module ---------------------- .. automodule:: kiwi.firmware :members: :undoc-members: :show-inheritance: `kiwi.help` Module ------------------ .. automodule:: kiwi.help :members: :undoc-members: :show-inheritance: `kiwi.kiwi` Module ------------------ .. automodule:: kiwi.kiwi :members: :undoc-members: :show-inheritance: `kiwi.logger` Module -------------------- .. automodule:: kiwi.logger :members: :undoc-members: :show-inheritance: `kiwi.logger_color_formatter` Module ------------------------------------ .. automodule:: kiwi.logger_color_formatter :members: :undoc-members: :show-inheritance: `kiwi.logger_filter` Module --------------------------- .. automodule:: kiwi.logger_filter :members: :undoc-members: :show-inheritance: `kiwi.mount_manager` Module --------------------------- .. automodule:: kiwi.mount_manager :members: :undoc-members: :show-inheritance: `kiwi.path` Module ------------------ .. automodule:: kiwi.path :members: :undoc-members: :show-inheritance: `kiwi.privileges` Module ------------------------ .. automodule:: kiwi.privileges :members: :undoc-members: :show-inheritance: `kiwi.runtime_checker` Module ----------------------------- .. automodule:: kiwi.runtime_checker :members: :undoc-members: :show-inheritance: `kiwi.runtime_config` Module ---------------------------- .. automodule:: kiwi.runtime_config :members: :undoc-members: :show-inheritance: `kiwi.version` Module --------------------- .. automodule:: kiwi.version :members: :undoc-members: :show-inheritance: `kiwi.xml_description` Module ----------------------------- .. automodule:: kiwi.xml_description :members: :undoc-members: :show-inheritance: `kiwi.xml_state` Module ----------------------- .. automodule:: kiwi.xml_state :members: :undoc-members: :show-inheritance: .. _db_kiwi_content: Module Contents --------------- .. automodule:: kiwi :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.solver.repository.rst0000644000000000000000000000142514711142327017621 0ustar00kiwi.solver.repository Package ============================== .. _db_kiwi_solver_repository_submodules: Submodules ---------- `kiwi.solver.repository.base` Module ------------------------------------ .. automodule:: kiwi.solver.repository.base :members: :undoc-members: :show-inheritance: .. automodule:: kiwi.solver.repository.rpm_md :members: :undoc-members: :show-inheritance: .. automodule:: kiwi.solver.repository.rpm_dir :members: :undoc-members: :show-inheritance: .. automodule:: kiwi.solver.repository.suse :members: :undoc-members: :show-inheritance: .. _db_kiwi_solver_repository_content: Module Contents --------------- .. automodule:: kiwi.solver.repository :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api/kiwi.solver.rst0000644000000000000000000000060514711142327015402 0ustar00kiwi.solver Package =================== .. _db_kiwi_solver_submodules: Submodules ---------- `kiwi.solver.sat` Module ----------------------------- .. automodule:: kiwi.solver.sat :members: :undoc-members: :show-inheritance: .. _db_kiwi_solver_content: Module Contents --------------- .. automodule:: kiwi.solver :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.storage.rst0000644000000000000000000000304614711142327015536 0ustar00kiwi.storage Package ==================== .. _db_kiwi_storage_submodules: Submodules ---------- `kiwi.storage.device_provider` Module ------------------------------------- .. automodule:: kiwi.storage.device_provider :members: :undoc-members: :show-inheritance: `kiwi.storage.disk` Module -------------------------- .. automodule:: kiwi.storage.disk :members: :undoc-members: :show-inheritance: `kiwi.storage.loop_device` Module --------------------------------- .. automodule:: kiwi.storage.loop_device :members: :undoc-members: :show-inheritance: `kiwi.storage.luks_device` Module --------------------------------- .. automodule:: kiwi.storage.luks_device :members: :undoc-members: :show-inheritance: `kiwi.storage.mapped_device` Module ----------------------------------- .. automodule:: kiwi.storage.mapped_device :members: :undoc-members: :show-inheritance: `kiwi.storage.raid_device` Module --------------------------------- .. automodule:: kiwi.storage.raid_device :members: :undoc-members: :show-inheritance: `kiwi.storage.clone_device` Module ---------------------------------- .. automodule:: kiwi.storage.clone_device :members: :undoc-members: :show-inheritance: `kiwi.storage.setup` Module --------------------------- .. automodule:: kiwi.storage.setup :members: :undoc-members: :show-inheritance: .. _db_kiwi_storage_content: Module Contents --------------- .. automodule:: kiwi.storage :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.storage.subformat.rst0000644000000000000000000000473414711142327017544 0ustar00kiwi.storage.subformat Package ============================== .. _db_kiwi_storage_subformat_submodules: Submodules ---------- `kiwi.storage.subformat.base` Module ------------------------------------ .. automodule:: kiwi.storage.subformat.base :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.gce` Module ----------------------------------- .. automodule:: kiwi.storage.subformat.gce :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.ova` Module ----------------------------------- .. automodule:: kiwi.storage.subformat.ova :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.qcow2` Module ------------------------------------- .. automodule:: kiwi.storage.subformat.qcow2 :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vagrant_base` Module -------------------------------------------- .. automodule:: kiwi.storage.subformat.vagrant_base :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vagrant_libvirt` Module ----------------------------------------------- .. automodule:: kiwi.storage.subformat.vagrant_libvirt :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vagrant_virtualbox` Module -------------------------------------------------- .. automodule:: kiwi.storage.subformat.vagrant_virtualbox :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vdi` Module ----------------------------------- .. automodule:: kiwi.storage.subformat.vdi :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vhd` Module ----------------------------------- .. automodule:: kiwi.storage.subformat.vhd :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vhdfixed` Module ---------------------------------------- .. automodule:: kiwi.storage.subformat.vhdfixed :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vhdx` Module ------------------------------------ .. automodule:: kiwi.storage.subformat.vhdx :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.vmdk` Module ------------------------------------ .. automodule:: kiwi.storage.subformat.vmdk :members: :undoc-members: :show-inheritance: .. _db_kiwi_storage_subformat_content: Module Contents --------------- .. automodule:: kiwi.storage.subformat :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.storage.subformat.template.rst0000644000000000000000000000203214711142327021343 0ustar00kiwi.storage.subformat.template Package ======================================= .. _db_kiwi_storage_subformat_template_submodules: Submodules ---------- `kiwi.storage.subformat.template.vmware_settings` Module -------------------------------------------------------- .. automodule:: kiwi.storage.subformat.template.vmware_settings :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.template.vagrant_config` Module -------------------------------------------------------- .. automodule:: kiwi.storage.subformat.template.vagrant_config :members: :undoc-members: :show-inheritance: `kiwi.storage.subformat.template.virtualbox_ovf` Module -------------------------------------------------------- .. automodule:: kiwi.storage.subformat.template.virtualbox_ovf :members: :undoc-members: :show-inheritance: .. _db_kiwi_storage_subformat_template_content: Module contents --------------- .. automodule:: kiwi.storage.subformat.template :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.system.rst0000644000000000000000000000400714711142327015414 0ustar00kiwi.system Package =================== .. _db_kiwi_system_submodules: Submodules ---------- `kiwi.system.identifier` Module ------------------------------- .. automodule:: kiwi.system.identifier :members: :undoc-members: :show-inheritance: `kiwi.system.kernel` Module --------------------------- .. automodule:: kiwi.system.kernel :members: :undoc-members: :show-inheritance: `kiwi.system.prepare` Module ---------------------------- .. automodule:: kiwi.system.prepare :members: :undoc-members: :show-inheritance: `kiwi.system.profile` Module ---------------------------- .. automodule:: kiwi.system.profile :members: :undoc-members: :show-inheritance: `kiwi.system.result` Module --------------------------- .. automodule:: kiwi.system.result :members: :undoc-members: :show-inheritance: `kiwi.system.root_bind` Module ------------------------------ .. automodule:: kiwi.system.root_bind :members: :undoc-members: :show-inheritance: `kiwi.system.root_init` Module ------------------------------ .. automodule:: kiwi.system.root_init :members: :undoc-members: :show-inheritance: `kiwi.system.setup` Module -------------------------- .. automodule:: kiwi.system.setup :members: :undoc-members: :show-inheritance: `kiwi.system.shell` Module -------------------------- .. automodule:: kiwi.system.shell :members: :undoc-members: :show-inheritance: `kiwi.system.size` Module ------------------------- .. automodule:: kiwi.system.size :members: :undoc-members: :show-inheritance: `kiwi.system.uri` Module ------------------------ .. automodule:: kiwi.system.uri :members: :undoc-members: :show-inheritance: `kiwi.system.users` Module -------------------------- .. automodule:: kiwi.system.users :members: :undoc-members: :show-inheritance: .. _db_kiwi_system_content: Module Contents --------------- .. automodule:: kiwi.system :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.tasks.rst0000644000000000000000000000254514711142327015222 0ustar00kiwi.tasks package ================== .. _db_kiwi_tasks_submodules: Submodules ---------- `kiwi.tasks.base` Module ------------------------ .. automodule:: kiwi.tasks.base :members: :undoc-members: :show-inheritance: `kiwi.tasks.result_bundle` Module --------------------------------- .. automodule:: kiwi.tasks.result_bundle :members: :undoc-members: :show-inheritance: `kiwi.tasks.result_list` Module ------------------------------- .. automodule:: kiwi.tasks.result_list :members: :undoc-members: :show-inheritance: `kiwi.tasks.system_build` Module -------------------------------- .. automodule:: kiwi.tasks.system_build :members: :undoc-members: :show-inheritance: `kiwi.tasks.system_create` Module --------------------------------- .. automodule:: kiwi.tasks.system_create :members: :undoc-members: :show-inheritance: `kiwi.tasks.system_prepare` Module ---------------------------------- .. automodule:: kiwi.tasks.system_prepare :members: :undoc-members: :show-inheritance: `kiwi.tasks.system_update` Module --------------------------------- .. automodule:: kiwi.tasks.system_update :members: :undoc-members: :show-inheritance: .. _db_kiwi_tasks_content: Module Contents --------------- .. automodule:: kiwi.tasks :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.utils.rst0000644000000000000000000000173014711142327015230 0ustar00kiwi.utils Package ================== .. _db_kiwi_utils_submodules: Submodules ---------- `kiwi.utils.checksum` Module ---------------------------- .. automodule:: kiwi.utils.block :members: :undoc-members: :show-inheritance: `kiwi.utils.block` Module ------------------------- .. automodule:: kiwi.utils.checksum :members: :undoc-members: :show-inheritance: `kiwi.utils.compress` Module ---------------------------- .. automodule:: kiwi.utils.compress :members: :undoc-members: :show-inheritance: `kiwi.utils.sync` Module ------------------------ .. automodule:: kiwi.utils.sync :members: :undoc-members: :show-inheritance: `kiwi.utils.sysconfig` Module ----------------------------- .. automodule:: kiwi.utils.sysconfig :members: :undoc-members: :show-inheritance: .. _db_kiwi_utils_content: Module Contents --------------- .. automodule:: kiwi.utils :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/api/kiwi.volume_manager.rst0000644000000000000000000000142314711142327017070 0ustar00kiwi.volume_manager Package =========================== .. _db_kiwi_volume_manager_submodules: Submodules ---------- `kiwi.volume_manager.base` Module --------------------------------- .. automodule:: kiwi.volume_manager.base :members: :undoc-members: :show-inheritance: `kiwi.volume_manager.btrfs` Module ---------------------------------- .. automodule:: kiwi.volume_manager.btrfs :members: :undoc-members: :show-inheritance: `kiwi.volume_manager.lvm` Module -------------------------------- .. automodule:: kiwi.volume_manager.lvm :members: :undoc-members: :show-inheritance: .. _db_kiwi_volume_manager_content: Module Contents --------------- .. automodule:: kiwi.volume_manager :members: :undoc-members: :show-inheritance: ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1730462934.575262 kiwi-10.1.18/doc/source/api.rst0000644000000000000000000000136514711142327013132 0ustar00.. _api: Python API ========== .. note:: This API documentation covers {kiwi} |version| .. toctree:: :maxdepth: 1 api/kiwi api/kiwi.archive api/kiwi.boot.image api/kiwi.bootloader.config api/kiwi.bootloader.install api/kiwi.bootloader api/kiwi.bootloader.template api/kiwi.boot api/kiwi.builder api/kiwi.container api/kiwi.container.setup api/kiwi.filesystem api/kiwi.iso_tools api/kiwi.package_manager api/kiwi.partitioner api/kiwi.repository api/kiwi.repository.template api/kiwi.solver.repository api/kiwi.solver api/kiwi.storage api/kiwi.storage.subformat api/kiwi.storage.subformat.template api/kiwi.system api/kiwi.tasks api/kiwi.utils api/kiwi.volume_manager ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_container_image.rst0000644000000000000000000001003514711142327022000 0ustar00.. _building_container_build: Build a Container Image ======================= .. sidebar:: Abstract This page explains how to build a Container Image. It covers the following topics: * basic configuration explanation * how to build a Container Image * how to run it with a Container Runtime {kiwi} can build native container images from scratch or using existing images. {kiwi} container images are considered to be native, because a {kiwi} tarball image can be loaded directly into container runtimes like Podman, Docker or Containerd, including common container configurations. The container configuration metadata is supplied to {kiwi} as part of the :ref:`XML description file ` using the ```` tag. The following configuration metadata can be specified. `containerconfig` attributes: * ``name``: Specifies the repository name of the container image. * ``tag``: Sets the tag of the container image. * ``maintainer``: Specifies the author of the container. Equivalent to the `MAINTAINER` directive in a :file:`Dockerfile`. * ``user``: Sets the user name or user id (UID) to be used when running `entrypoint` and `subcommand`. Equivalent of the `USER` directive of a :file:`Dockerfile`. * ``workingdir``: Sets the working directory to be used when running `cmd` and `entrypoint`. Equivalent of the `WORKDIR` directive in a :file:`Dockerfile`. `containerconfig` child tags: * ``subcommand``: Provides the default execution parameters of the container. Equivalent of the `CMD` directive in a :file:`Dockerfile`. * ``labels``: Adds custom metadata to an image using key-value pairs. Equivalent to one or more `LABEL` directives in a :file:`Dockerfile`. * ``expose``: Defines which ports can be exposed to the outside when running this container image. Equivalent to one or more `EXPOSE` directives in a :file:`Dockerfile`. * ``environment``: Sets environment variables using key-value pairs. Equivalent to one or multiple `ENV` directives in a :file:`Dockerfile`. * ``entrypoint``: Sets the binary to use for executing all commands inside the container. Equivalent of the `ENTRYPOINT` directive in a :file:`Dockerfile`. * ``volumes``: Creates mountpoints with the given name and marks them to hold external volumes from the host or from other containers. Equivalent to one or more `VOLUME` directives in a :file:`Dockerfile`. * ``stopsignal``: The stopsignal element sets the system call signal that will be sent to the container to exit. This signal can be a signal name in the format SIG[NAME], for instance SIGKILL, or an unsigned number that matches a position in the kernel's syscall table, for instance 9. The default is SIGTERM if not defined Other :file:`Dockerfile` directives such as ``RUN``, ``COPY`` or ``ADD``, can be mapped to {kiwi} using the :ref:`config.sh ` script file to run Bash commands, or the :ref:`overlay tree ` to include additional files. The following example illustrates how to build a container image based on openSUSE Leap: 1. Make sure you have checked out the example image descriptions (see :ref:`example-descriptions`). #. Include the ``Virtualization/containers`` repository into your list (replace the placeholder `` with the name of the desired distribution): .. code:: bash $ zypper addrepo http://download.opensuse.org/repositories/Virtualization:/containers/ container-tools #. Install :command:`umoci` and :command:`skopeo` tools .. code:: bash $ zypper in umoci skopeo #. Build an image with {kiwi}: .. code:: bash $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_docker} \ --set-repo {exc_repo_leap} \ --target-dir /tmp/myimage #. Test the container image. First load the new image into your container runtime: .. code:: bash $ podman load -i {exc_image_base_name_docker}.x86_64-{exc_image_version}.docker.tar.xz Then run the image: .. code:: bash $ podman run --rm -it buildsystem /bin/bash ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_enclave.rst0000644000000000000000000000641514711142327020300 0ustar00.. _eif: Build an AWS Nitro Enclave ============================== .. sidebar:: Abstract This page explains how to build AWS Nitro Enclaves. It covers the following topics: * how to build an AWS Nitro Enclave * how to test the enclave via QEMU AWS Nitro Enclaves enables customers to create isolated compute environments to further protect and securely process highly sensitive data such as personally identifiable information (PII), healthcare, financial, and intellectual property data within their Amazon EC2 instances. Nitro Enclaves uses the same Nitro Hypervisor technology that provides CPU and memory isolation for EC2 instances. For further details please visit https://aws.amazon.com/ec2/nitro/nitro-enclaves To add an enclave build to your appliance, create a `type` element with `image` set to `enclave` in the :file:`config.xml` file as shown below: .. code:: xml The following attributes of the `type` element are relevant: - `enclave_format`: Specifies the enclave target As of today only the `aws-nitro` enclave target is supported - `kernelcmdline`: Specifies the kernel commandline suitable for the enclave An enclave is a system that runs completely in RAM loaded from an enclave binary format which includes the kernel, initrd and the kernel commandline suitable for the target system. With the appropriate settings specified in :file:`config.xml`, you can build an image using {kiwi}: .. code:: bash $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_enclave} \ --set-repo {exc_repo_rawhide} \ --target-dir /tmp/myimage The resulting image is saved in :file:`/tmp/myimage`, and the image can be tested with QEMU: .. code:: bash $ sudo qemu-system-x86_64 \ -M nitro-enclave,vsock=c \ -m 4G \ -nographic \ -chardev socket,id=c,path=/tmp/vhost4.socket \ -kernel {exc_image_base_name_enclave}.eif The image is now complete and ready to use. Access to the system is possible via ssh through a vsock connection into the guest. To establish a vsock connection it's required to forward the connection through the guest AF_VSOCK socket. This can be done via a ProxyCommand setup of the host ssh as follows: .. code:: bash $ vi ~/bin/vsock-ssh.sh #!/bin/bash CID=$(echo "$1" | cut -d . -f 1) socat - VSOCK-CONNECT:$CID:22 .. code:: bash $ vi ~/.ssh/config host *.vsock ProxyCommand ~/bin/vsock-ssh.sh %h After the ssh proxy setup login to the enclave with a custom vsock port as follows: .. code:: bash $ ssh root@21.vsock ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_expandable_disk.rst0000644000000000000000000003665014711142327022004 0ustar00.. _expandable_disk: Build an Expandable Disk Image ============================== .. sidebar:: Abstract This page explains how to build an expandable disk image. It covers the following topics: * build an expandable disk image * deploy an expandable disk image * run the deployed system An expandable disk represents the system disk with the capability to automatically expand the disk and its filesystem to a custom disk geometry. This allows deploying the same disk image on target systems with different hardware setups. The following example shows how to build and deploy an expandable disk image based on openSUSE Leap using a QEMU virtual machine as a target system: 1. Make sure you have checked out the example image descriptions (see :ref:`example-descriptions`). 2. Build an image with {kiwi}: .. code:: bash $ sudo kiwi-ng --type oem system build \ --description kiwi/build-tests/{exc_description_disk} \ --set-repo {exc_repo_leap} \ --target-dir /tmp/myimage The resulting image is saved in :file:`/tmp/myimage`. * The disk image with the suffix :file:`.raw` is an expandable virtual disk. It can expand itself to a custom disk geometry. * The installation image with the suffix :file:`install.iso` is a hybrid installation system which contains the disk image and is capable to install this image on any target disk. .. _deployment_methods: Deployment Methods ------------------ The goal of an expandable disk image is to provide the virtual disk data for OEM vendors to support easy deployment of the system to physical storage media. Basic deployment strategies are as follows: 1. :ref:`deploy_manually` Manually deploy the disk image onto the target disk. 2. :ref:`deploy_from_iso` Boot the installation image and let {kiwi}'s installer deploy the disk image from CD/DVD or USB stick onto the target disk. 3. :ref:`deploy_from_network` PXE boot the target system and let {kiwi}'s installer deploy the disk image from the network onto the target disk. .. _deploy_manually: Manual Deployment ----------------- The manual deployment method can be tested using virtualization software like QEMU and an additional virtual a large-size target disk. To do this, follow the steps below. 1. Create a target disk: .. code:: bash $ qemu-img create target_disk 20g .. note:: Retaining the Disk Geometry If the target disk geometry is less than or equals to the geometry of the disk image itself, the disk expansion that is performed on a physical disk install during the boot workflow is skipped and the original disk geometry stays unchanged. 2. Dump disk image on target disk: .. code:: bash $ dd if={exc_image_base_name_disk}.x86_64-{exc_image_version}.raw of=target_disk conv=notrunc 3. Boot the target disk: .. code:: bash $ sudo qemu -hda target_disk -m 4096 -serial stdio On first boot of the target_disk, the system is expanded to the configured storage layout. By default, the system root partition and filesystem are resized to the maximum free space available. .. _deploy_from_iso: CD/DVD Deployment ----------------- The deployment from CD/DVD via an installation image can also be tested using virtualization software such as QEMU. To do this, follow the steps below. 1. Create a target disk: Follow the steps above to create a virtual target disk 2. Boot the installation image as CD/DVD with the target disk attached. .. code:: bash $ sudo qemu -cdrom \ {exc_image_base_name_disk}.x86_64-{exc_image_version}.install.iso -hda target_disk \ -boot d -m 4096 -serial stdio .. note:: USB Stick Deployment Like any other ISO image built with {kiwi}, the installation image is also a hybrid image. Thus, it can also be used on USB stick and serve as installation media as explained in :ref:`hybrid_iso` .. _deploy_from_network: Network Deployment ------------------ The process of deployment from the network downloads the disk image from a PXE boot server. This requires a PXE network boot server to be setup as described in :ref:`network-boot-server` If the PXE server is running, the following steps show how to test the deployment process over the network using a QEMU virtual machine as a target system: 1. Create an installation PXE TAR archive along with your disk image by replacing the following configuration in kiwi/build-tests/{exc_description_disk}/appliance.kiwi Find the line below: .. code:: xml Modify the line as follows: .. code:: xml 2. Rebuild the image, unpack the resulting :file:`{exc_image_base_name_disk}.x86_64-{exc_image_version}.install.tar.xz` file to a temporary directory, and copy the initrd and kernel images to the PXE server. a) Unpack installation tarball: .. code:: bash mkdir /tmp/pxe && cd /tmp/pxe tar -xf {exc_image_base_name_disk}.x86_64-{exc_image_version}.install.tar.xz b) Copy kernel and initrd used for PXE boot: .. code:: bash scp pxeboot.{exc_image_base_name_disk}.x86_64-{exc_image_version}.initrd PXE_SERVER_IP:/srv/tftpboot/boot/initrd scp pxeboot.{exc_image_base_name_disk}.x86_64-{exc_image_version}.kernel PXE_SERVER_IP:/srv/tftpboot/boot/linux 3. Copy the disk image, MD5 file, system kernel, initrd and bootoptions to the PXE boot server. Activation of the deployed system is done via `kexec` of the kernel and initrd provided here. a) Copy system image and MD5 checksum: .. code:: bash scp {exc_image_base_name_disk}.x86_64-{exc_image_version}.xz PXE_SERVER_IP:/srv/tftpboot/image/ scp {exc_image_base_name_disk}.x86_64-{exc_image_version}.md5 PXE_SERVER_IP:/srv/tftpboot/image/ b) Copy kernel, initrd and bootoptions used for booting the system via kexec: .. code:: bash scp {exc_image_base_name_disk}.x86_64-{exc_image_version}.initrd PXE_SERVER_IP:/srv/tftpboot/image/ scp {exc_image_base_name_disk}.x86_64-{exc_image_version}.kernel PXE_SERVER_IP:/srv/tftpboot/image/ scp {exc_image_base_name_disk}.x86_64-{exc_image_version}.config.bootoptions PXE_SERVER_IP:/srv/tftpboot/image/ .. note:: The config.bootoptions file is used with kexec to boot the previously dumped image. This file specifies the root of the dumped image, and the file can include other boot options. The file provided with the {kiwi} built image connected to the image present in the PXE TAR archive. If other images are deployed, the file must be modified to match the correct root reference. 4. Add/Update the kernel command line parameters. Edit your PXE configuration (for example :file:`pxelinux.cfg/default`) on the PXE server, and add the following parameters to the append line similar to shown below: .. code:: bash append initrd=boot/initrd rd.kiwi.install.pxe rd.kiwi.install.image=tftp://192.168.100.16/image/{exc_image_base_name_disk}.x86_64-{exc_image_version}.xz The location of the image is specified as a source URI that can point to any location supported by the `curl` command. {kiwi} uses `curl` to fetch the data from this URI. This means that the image, MD5 file, system kernel and initrd can be fetched from any server, and they do not need to be stored on the `PXE_SERVER`. By default {kiwi} does not use specific `curl` options or flags. But it is possible to specify desired options by adding the `rd.kiwi.install.pxe.curl_options` flag to the kernel command line (`curl` options are passed as comma-separated values), for example: .. code:: bash rd.kiwi.install.pxe.curl_options=--retry,3,--retry-delay,3,--speed-limit,2048 The above instructs {kiwi} to run `curl` as follows: .. code:: bash curl --retry 3 --retry-delay 3 --speed-limit 2048 -f This can be particularly useful when the deployment infrastructure requires specific download configuration. For example, setting more robust retries over an unstable network connection. .. note:: {kiwi} replaces commas with spaces and appends the result to the `curl` command. Keep that in mind, because command-line options that include commas break the command. .. note:: The initrd and Linux Kernel for PXE boot are always loaded via TFTP from the `PXE_SERVER`. 4. Create a target disk. Follow the steps above to create a virtual target disk. 5. Connect the client to the network and boot QEMU with the target disk attached to the virtual machine: .. code:: bash $ sudo qemu -boot n -hda target_disk -m 4096 .. note:: QEMU bridged networking To connect QEMU to the network, we recommend to setup a network bridge on the host system and connect QEMU to it via a custom /etc/qemu-ifup configuration. For details, see https://en.wikibooks.org/wiki/QEMU/Networking .. _oem_customize: OEM Customization ----------------- The deployment process of an OEM image can be customized using the `oemconfig` element. This element is a child section of the `type` element, for example: .. code:: xml 512 Below is a losr list of optional `oem` element settings. oemconfig.oem-resize Determines if the disk has the capability to expand itself to a new disk geometry or not. By default, this feature is activated. The implementation of the resize capability is done in a dracut module packaged as `dracut-kiwi-oem-repart`. If `oem-resize` is set to false, the installation of the corresponding dracut package can be skipped as well. oemconfig.oem-boot-title By default, the string OEM is used as the boot manager menu entry when KIWI creates the GRUB configuration during deployment. The `oem-boot-title` element allows you to set a custom name for the grub menu entry. This value is represented by the ``kiwi_oemtitle`` variable in the initrd. oemconfig.oem-bootwait Determines if the system waits for user interaction before continuing the boot process after the disk image has been dumped to the designated storage device (default value is false). This value is represented by the ``kiwi_oembootwait`` variable in the initrd. oemconfig.oem-reboot When enabled, the system is rebooted after the disk image has been deployed to the designated storage device (default value is false). This value is represented by the ``kiwi_oemreboot`` variable in the initrd. oemconfig.oem-reboot-interactive When enabled, the system is rebooted after the disk image has been deployed to the designated storage device (default value is false). Before the reboot, a message is displayed, and it and must be acknowledged by the user for the system to reboot. This value is represented by the ``kiwi_oemrebootinteractive`` variable in the initrd. oemconfig.oem-silent-boot Determines if the system boots in silent mode after the disk image has been deployed to the designated storage device (default value is false). This value is represented by the ``kiwi_oemsilentboot`` variable in the initrd. oemconfig.oem-shutdown Determines if the system is powered down after the disk image has been deployed to the designated storage device (default value is false). This value is represented by the ``kiwi_oemshutdown`` variable in the initrd. oemconfig.oem-shutdown-interactive Determines if the system is powered down after the disk image has been deployed to the designated storage device (default value is false). Before the shutdown a message is displayed, and it must be acknowledged by the user for the system to power off. This value is represented by the ``kiwi_oemshutdowninteractive`` variable in the initrd oemconfig.oem-swap Determines if a swap partition is be created. By default, no swap partition is created. This value is represented by the ``kiwi_oemswap`` variable in the initrd. oemconfig.oem-swapname Specifies the name of the swap space. By default, the name is set to ``LVSwap``. The default indicates that this setting is only useful in combination with the LVM volume manager. In this case, the swapspace is configured as a volume in the volume group, and every volume requires a name. The name specified in `oemconfig.oem-swapname` here is used as a name of the swap volume. oemconfig.oem-swapsize Specifies the size of the swap partition. If a swap partition is created while the size of the swap partition is not specified, KIWI calculates the size of the swap partition, and creates a swap partition at initial boot time. In this case, the swap partition size equals the double amount of RAM of the system. This value is represented by the ``kiwi_oemswapMB`` variable in the initrd. oemconfig.oem-systemsize Specifies the size the operating system is allowed to occupy on the target disk. The size limit does not include any swap space or recovery partition considerations. In a setup *without* the systemdisk element, this value specifies the size of the root partition. In a setup that *includes* the systemdisk element, this value specifies the size of the LVM partition that contains all specified volumes. This means that the sum of all specified volume sizes plus the sum of the specified freespace for each volume must be smaller than or equal to the size specified with the `oem-systemsize` element. This value is represented by the variable ``kiwi_oemrootMB`` in the initrd. oemconfig.oem-unattended The installation of the image to the target system occurs automatically without requiring user interaction. If multiple possible target devices are discovered, the image is deployed to the first device. ``kiwi_oemunattended`` in the initrd. oemconfig.oem-unattended-id Selects a target disk device for the installation according to the specified device ID. The device ID corresponds to the name of the device for the configured `devicepersistency`. By default, it is the `by-uuid` device name. If no representation exists, for example for ramdisk devices, the UNIX device node can be used to select one. The given name must be present in the device list detected by KIWI. oemconfig.oem-skip-verify Disables the checksum verification process after installing of the image to the target disk. The verification process computes the checksum of the image installed to the target. This value is then compared to the initrd embedded checksum generated at build time of the image. Depending on the size of the image and machine power, computing the checksum may take time. .. _installmedia_customize: Installation Media Customization -------------------------------- The installation media created for OEM network or CD/DVD deployments can be customized with the `installmedia` section. It is a child section of the `type` element, for example: .. code:: xml The `installmedia` is only available for OEM image types that include the request to create an installation media. The `initrd` child element of `installmedia` lists dracut modules. The element's `action` attribute determines whether the dracut module is omitted (`action="omit"`) or added (`action="add"`). Use `action="set"` to use only the listed modules and nothing else (that is, none of the dracut modules included by default).././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_kis.rst0000644000000000000000000000700114711142327017441 0ustar00.. _kis: Build KIS Image (Kernel, Initrd, System) ======================================== .. sidebar:: Abstract This page explains how to build an image that consists out of three components: the kernel an initrd, and an optional root filesystem image. In {kiwi} terminology, this type of image is called KIS. A KIS image is a collection of image components that are not associated with a dedicated use case. This means that as far as {kiwi} is concerned, it is not known in which environment these components are expected to be used. The predecessor of this image type was called `pxe` under the assumption that the components will be used in a PXE boot environment. However, this assumption is not always true, and the image components may be used in different ways. Because there are so many possible deployment strategies for a `kernel` plus `initrd` and optional `system root filesystem`, {kiwi} provides this as the universal `KIS` type. The former `pxe` image type still exist, but it is expected to be used only in combination with the legacy `netboot` infrastructure, as described in :ref:`build_legacy_pxe`. To add a KIS build to an appliance, create a `type` element with `image` set to `kis` in the :file:`config.xml` as shown below: .. code:: xml With this image type setup, {kiwi} builds a kernel and initrd not associated with any system root file system. Normally, such an image is only useful with certain custom dracut extensions as part of the image description. The following attributes of the `type` element are often used when building KIS images: - `filesystem`: Specifies the root filesystem and triggers the build of an additional filesystem image of that filesystem. The generated kernel command-line options file (append file) then also include a `root=` parameter that references this filesystem image UUID. Whther the information from the append file should be used or not is optional. - `kernelcmdline`: Specifies kernel command-line options that are part of the generated kernel command-line options file (append file). By default, the append file contains neither information nor the reference to the root UUID, if the `filesystem` attribute is used. All other attributes of the `type` element that applies to an optional root filesystem image remain in effect in the system image of a KIS image as well. With the appropriate settings present in :file:`config.xml`, you can use {kiwi} to build the image: .. code:: bash $ sudo kiwi-ng --type kis system build \ --description kiwi/build-tests/{exc_description_pxe} \ --set-repo {exc_repo_tumbleweed} \ --target-dir /tmp/myimage The resulting image components are saved in :file:`/tmp/myimage`. Outside of a deployment infrastructure, the example KIS image can be tested with QEMU as follows: .. code:: bash $ sudo qemu -kernel /tmp/myimage/*.kernel \ -initrd /tmp/myimage/*.initrd \ -append "$(cat /tmp/myimage/*.append) rw" \ -drive file=/tmp/myimage/{exc_image_base_name_pxe}.*-{exc_image_version},if=virtio,driver=raw \ -serial stdio .. note:: For testing the components of a KIS image normally requires a deployment infrastructure and a deployment process. An example of a deployment infrastructure using PXE is provided by {kiwi} with the `netboot` infrastructure. However, that netboot infrastructure is no longer developed and only kept for compatibility reasons. For details, see :ref:`build_legacy_pxe` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_live_iso.rst0000644000000000000000000001437114711142327020474 0ustar00.. _hybrid_iso: Build an ISO Hybrid Live Image ============================== .. sidebar:: Abstract This page explains how to build a live image. It covers the following topics: * how to build an ISO image * how to run the image with QEMU A Live ISO image is a system on a removable media, for example a CD/DVD or a USB stick. Booting a Live ISO image does not interfere with other system storage components, making it a useful portable system for demonstration, testing, and debugging. To add a Live ISO build to your appliance, create a `type` element with `image` set to `iso` in the :file:`config.xml` file as shown below: .. code:: xml The following attributes of the `type` element are relevant when building Live ISO images: - `flags`: Specifies the dracut module to use. If set to `overlay`, the kiwi-live dracut module supplied by {kiwi} is used for booting. If set to `dmsquash`, the dracut-supplied dmsquash-live module is used for booting. Both modules support a different set of live features. For details see :ref:`live_features` - `filesystem`: Specifies the root filesystem for the live system. If set to `squashfs`, the root filesystem is written into a squashfs image. This option is not compatible with device-mapper specific features of the dmsquash-live dracut module. In that case, use overayfs. If set to a value different from `squashfs`, the root filesystem is written into a filesystem image of the specified type, and the filesystem image written into a squashfs image for compression. The default value of this option is `ext4`. - `hybridpersistent`: Accepts `true` or `false`, if set to `true`, the resulting image is created with a COW file to keep data persistent over a reboot. - `hybridpersistent_filesystem`: The filesystem used for the COW file. Valid values are `ext4` or `xfs`, with `ext4` being the default. With the appropriate settings specified in :file:`config.xml`, you can build an image using {kiwi}: .. code:: bash $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_live} \ --set-repo {exc_repo_leap} \ --target-dir /tmp/myimage The resulting image is saved in :file:`/tmp/myimage`, and the image can be tested with QEMU: .. code:: bash $ sudo qemu -cdrom \ {exc_image_base_name_live}.x86_64-{exc_image_version}.iso \ -m 4096 -serial stdio The image is now complete and ready to use. See :ref:`iso_to_usb_stick` and :ref:`iso_as_file_to_usb_stick` for further information concerning deployment. .. _live_features: `overlay` or `dmsquash` ---------------------------------- Whether you choose the `overlay` or `dmsquash` dracut module depends on the features you intend to use. The `overlay` module supports only overlayfs based overlays, but with automatic creation of a writable layer for persistence. The `dmsquash` module supports overlayfs as well as device-mapper based overlays. The following list describes important Live ISO features and their support status in the `overlay` and `dmsquash` modules. ISO scan Usable in the same way with both dracut modules. This feature allows to boot the Live ISO as a file from a grub loopback configured bootloader. The `live-grub-stick` tool is one example that uses this feature. For details how to setup ISO scan with the `overlay` module see :ref:`iso_as_file_to_usb_stick` ISO in RAM completely Usable with the `dmsquash` module through `rd.live.ram`. The `overlay` module does not support this mode, while {kiwi} supports RAM only systems as OEM deployment into RAM from an install ISO media. For details how to setup RAM only deployments in {kiwi} see: :ref:`ramdisk_deployment` Overlay based on overlayfs Usable with both dracut modules. The readonly root filesystem is overlaid with a readwrite filesystem using the kernel overlayfs filesystem. Overlay based on device mapper snapshots Usable with the `dmsquash` module. A squashfs compressed readonly root is overlaid with a readwrite filesystem using a device mapper snapshot. Media Checksum Verification Boot the Live iso only for ISO checksum verification. This is possible with both modules but the `overlay` module uses the `checkmedia` tool, whereas the upstream `dmsquash` module uses `checkisomd5`. The verification process is triggered by passing the kernel option `mediacheck` for the `overlay` module and `rd.live.check` for the `dmsquash` module. Live ISO through PXE boot Boot the Live image via the network. This is possible with both modules, but it uses different technologies. The `overlay` module supports network boot only in combination with the AoE (Ata Over Ethernet) protocol. For details see :ref:`network_live_boot`. The `dmsquash` module supports network boot by fetching the ISO image into memory from `root=live:` using the `livenet` module. Persistent Data Keep new data persistent on a writable storage device. This can be done with both modules but in different ways. The `overlay` module activates persistency with the kernel boot parameter `rd.live.overlay.persistent`. If the persistent setup cannot be created the fallback to the non persistent mode applies automatically. The `overlay` module auto detects if it is used on a disk or ISO scan loop booted from a file. If booted as disk, persistency is setup on a new partition of that disk. If loop booted from file, persistency is setup on a new cow file. The cow file/partition setup can be influenced with the kernel boot parameters: `rd.live.overlay.cowfs` and `rd.live.cowfile.mbsize`. The `dmsquash` module configures persistency through the `rd.live.overlay` option exclusively and does not support the automatic creation of a write partition in disk mode. .. admonition:: dmsquash documentation Documentation for the upstream `dmsquash` module can be found `here `_. Options to setup `dmsquash` are marked with `rd.live` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_simple_disk.rst0000644000000000000000000002602714711142327021167 0ustar00.. _simple_disk: Build a Virtual Disk Image ========================== .. sidebar:: Abstract This page explains how to build a simple disk image. It covers the following topics: - define a simple disk image in the image description - build a simple disk image - run it with QEMU A simple virtual disk image is a compressed system disk with additional metadata useful for cloud frameworks like Amazon EC2, Google Compute Engine, or Microsoft Azure. It is used as the native disk of a system, and it does not require an additional installation workflow or a complex first boot setup procedure. To enable {kiwi} to build a simple disk image, add a `type` element with `image="oem"` in :file:`config.xml`, where the `oem-resize` option disabled. An example configuration for a 42 GB large VMDK image with 512 MB RAM, an IDE controller and a bridged network interface is shown below: .. code:: xml 42 false The following attributes of the `type` element are deserve attention when building simple disk images: - `format`: Specifies the format of the virtual disk, possible values are: `gce`, `ova`, `qcow2`, `vagrant`, `vmdk`, `vdi`, `vhd`, `vhdx` and `vhd-fixed`. - `formatoptions`: Specifies additional format options passed to :command:`qemu-img`. `formatoptions` is a comma-separated list of format specific options in a ``name=value`` format as expected by :command:`qemu-img`. {kiwi} forwards the settings from the attribute as a parameter to the `-o` option in the :command:`qemu-img` call. The `bootloader`, `size` and `machine` child-elements of `type` can be used to customize the virtual machine image. These elements are described in the following sections: :ref:`disk-bootloader`, :ref:`disk-the-size-element` and :ref:`disk-the-machine-element` Once your image description is finished , you can build the image using the following {kiwi} command: .. code:: bash $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_disk_simple} \ --set-repo {exc_repo_leap} \ --target-dir /tmp/myimage The resulting :file:`.raw` image is stored in :file:`/tmp/myimage`. You can test the image using QEMU: .. code:: bash $ sudo qemu \ -drive file={exc_image_base_name_disk_simple}.x86_64-{exc_image_version}.raw,format=raw,if=virtio \ -m 4096 For further information on how to configure the image to work within a cloud framework see: * :ref:`setup_for_ec2` * :ref:`setup_for_azure` * :ref:`setup_for_gce` For information on how to setup a Vagrant system, see: :ref:`setup_vagrant`. .. _disk-bootloader: Setting up the Bootloader in the Image -------------------------------------- .. code:: xml The `bootloader` element defines which bootloader to use in the image, and the element offers several options for customizing its configuration. For details, see: :ref:`preferences-type-bootloader` .. _disk-the-size-element: Modifying the Size of the Image ------------------------------- The `size` child element of `type` specifies the size of the resulting disk image. The following example shows an image description, where 20 GB are added to the virtual machine image, of which 5 GB are left unpartitioned: .. code:: xml 20 false The following optional attributes can be used to futher customize the image size: - `unit`: Defines the unit used for the provided numerical value, possible values are `M` for megabytes and `G` for gigabytes. The default unit is megabytes. - `additive`: Boolean value that determines whether the provided value is added to the current image size (`additive="true"`) or whether it is the total size (`additive="false"`). The default value is `false`. - `unpartitioned`: Specifies the image space in the image that is not partitioned. The attribute uses either the same unit as defined in the attribute `unit` or the default value. .. _disk-the-machine-element: Customizing the Virtual Machine ------------------------------- The `machine` child element of `type` can be used to customize the virtual machine configuration, including the number of CPUs and the connected network interfaces. The following attributes are supported by the `machine` element: - `ovftype`: The OVF configuration type. The Open Virtualization Format is a standard for describing virtual appliances and distribute them in an archive called Open Virtual Appliance (OVA). The standard describes the major components associated with a disk image. The exact specification depends on the product using the format. Supported values are `zvm`, `powervm`, `xen` and `vmware`. - `HWversion`: The virtual machine's hardware version (`vmdk` and `ova` formats only), refer https://kb.vmware.com/s/article/1003746 for further information on which value to choose. - `arch`: the VM architecture (`vmdk` format only). Valid values are `ix86` (= `i585` and `i686`) and `x86_64`. - `xen_loader`: the Xen target loader which is expected to load the guest. Valid values are: `hvmloader`, `pygrub` and `pvgrub`. - `guestOS`: The virtual guest OS' identification string for the VM (only applicable for `vmdk` and `ova` formats. Note that the name designation is different for the two formats). Note: For vmware ovftools, guestOS is a VMX GuestOS, but not VIM GuestOS. For instance, correct value for Ubuntu 64 bit is "ubuntu-64", but not "ubuntu64Guest". See GUEST_OS_KEY_MAP in guest_os_tables.h at https://github.com/vmware/open-vm-tools for another guestOS values. - `min_memory`: The virtual machine's minimum memory in MB (`ova` format only). - `max_memory`: The virtual machine's maximum memory in MB (`ova` format only). - `min_cpu`: The virtual machine's minimum CPU count (`ova` format only). - `max_cpu`: The virtual machine's maximum CPU count (`ova` format only). - `memory`: The virtual machine's memory in MB (all formats). - `ncpus`: The number of virtual CPUs available to the virtual machine (all formats). `machine` also supports additional child elements that are covered in the following subsections. Modifying the VM Configuration Directly ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The `vmconfig-entry` element is used to add entries directly into the virtual machine's configuration file. This is currently only supported for the `vmdk` format where the provided strings are directly pasted into the :file:`.vmx` file. The `vmconfig-entry` element has no attributes and can appear multiple times. The entries are added to the configuration file in the provided order. Note that {kiwi} does not check the entries for correctness. The following example adds the two entries `numvcpus = "4"` and `cpuid.coresPerSocket = "2"` into the VM configuration file: .. code:: xml numvcpus = "4" cpuid.coresPerSocket = "2" Adding Network Interfaces to the VM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Network interfaces can be explicitly specified for the VM when required via the `vmnic` element. This makes is possible to add another bridged interface or to specify the driver wto be used. Note that this element is used for the `vmdk` image format only. The following example adds a bridged network interface that uses the `e1000` driver: .. code:: xml The `vmnic` element supports the following attributes: - `interface`: **Mandatory** interface ID for the VM's network interface. - `driver`: An optional driver. - `mac`: The MAC address of the specified interface. - `mode`: The mode of the interface. Note that {kiwi} doesn **not** verify the values of the attributes, it only inserts them into the appropriate configuration files. Specifying Disks and Disk Controllers ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The `vmdisk` element can be used to customize the disks and disk controllers for the virtual machine. This element can be specified for each disk or disk controller present. Note that this element is used for `vmdk` and `ova` image formats only. The following example adds a disk with the ID 0 that uses an IDE controller: .. code:: xml Each `vmdisk` element can be further customized using optional attributes: - `controller`: The disk controller used for the VM guest (`vmdk` format only). Supported values are: `ide`, `buslogic`, `lsilogic`, `lsisas1068`, `legacyESX` and `pvscsi`. - `device`: The disk device to appear in the guest (`xen` format only). - `diskmode`: The disk mode (`vmdk` format only). Valid values are `monolithicSparse`, `monolithicFlat`, `twoGbMaxExtentSparse`, `twoGbMaxExtentFlat` and `streamOptimized` (see also https://www.vmware.com/support/developer/converter-sdk/conv60_apireference/vim.OvfManager.CreateImportSpecParams.DiskProvisioningType.html). - `disktype`: The type of the disk handled internally by the VM (`ova` format only). This attribute is currently unused. - `id`: The disk ID of the VM disk (`vmdk` format only). Adding CD/DVD Drives ^^^^^^^^^^^^^^^^^^^^ {kiwi} supports adding IDE and SCSCI CD/DVD drives to the virtual machine using the `vmdvd` element for the `vmdk` image format. The following example adds two drives: one with a SCSCI and another with a IDE controller: .. code:: xml The `vmdvd` element features two **mandatory** attributes: - `id`: The CD/DVD ID of the drive. - `controller`: The CD/DVD controller used for the VM guest. Valid values are `ide` and `scsi`. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images/build_wsl_container.rst0000644000000000000000000001341514711142327021530 0ustar00.. _building_wsl_build: Build a WSL Container Image =========================== .. sidebar:: Abstract This page explains how to build a WSL/Appx container image. WSL stands for Windows Subsystem Linux, and it is a zip-based container format consumable by Windows 10 with WSL enabled. {kiwi} can build WSL images using the :command:`appx` utility. Make sure you have installed the package that provides the command on your build host. Once the build host has the :command:`appx` installed, the following image type setup is required in the XML description :file:`config.xml`: .. code:: xml The :file:`/meta/data` path specifies a path that provides additional information required for the :command:`WSL-DistroLauncher`. This component consists out of a Windows(`exe`) executable file and an :file:`AppxManifest.xml` file that references other files, like icons and resource configurations for the startup of the container under Windows. .. note:: **/meta/data** Except for the root filesystem tarball {kiwi} is not responsible for providing the meta data required for the :command:`WSL-DistroLauncher`. It is expected that the given metadata path contains all the needed information. Typically this information is delivered in a package provided by the distribution, and it is installed on the build host. Setup of the WSL-DistroLauncher ------------------------------- The contents of the :file:`AppxManifest.xml` is changed by {kiwi} if the :file:`containerconfig` section is provided in the XML description. In the context of a WSL image, the following container configuration parameters are taken into account: .. code:: xml Container Description Text All information provided here, including the entire section, is optional. If the information is not specified, the existing :file:`AppxManifest.xml` is left untouched. created_by Specifies the name of a publisher organization. An appx container must to be signed off with a digital signature. If the image is build in the Open Build Service (OBS), this is done automatically. Outside of OBS, you must o make sure that the given publisher organization name matches the certificate used for signing. author Provides the name of the author and maintainer of this container. application_id Specifies an ID name for the container. The name must start with a letter, and only alphanumeric characters are allowed. {kiwi} doesn not validate the specified name string, because there is no common criteria for various the container architectures. package_version Specifies the version identification for the container. {kiwi} validates it against the `Microsoft Package Version Numbering `_ rules. launcher Specifies the binary file name of the launcher :file:`.exe` file. .. warning:: {kiwi} does not check the configuration in :file:`AppxManifest.xml` ifor validity or completeness. The following example shows how to build a WSL image based on openSUSE Tumbleweed: 1. Check the example image descriptions, see :ref:`example-descriptions`. #. Include the ``Virtualization/WSL`` repository to the list ((replace `` with the desired distribution)): .. code:: bash $ zypper addrepo http://download.opensuse.org/repositories/Virtualization:/WSL/ WSL #. Install :command:`fb-util-for-appx` utility and the package that provides the :command:`WSL-DistroLauncher` metadata. See the previous note on :file:`/meta/data`. .. code:: bash $ zypper in fb-util-for-appx DISTRO_APPX_METADATA_PACKAGE .. note:: When building images with the Open Build Servic,e make sure to add the packages from the zypper command above to the project configuration via :command:`osc meta -e prjconf` along with the line :file:`support: PACKAGE_NAME` for each package that needs to be installed on the Open Build Service worker that runs the {kiwi} build process. #. Configure the image type: Add the following type and container configuration to :file:`kiwi/build-tests/{exc_description_wsl}/appliance.kiwi`: .. code:: xml Tumbleweed Appliance text based .. warning:: If the configured metadata path does not exist, the build will fail. Furthermore, {kiwi} does not check whether the metadata is complete or is valid according to the requirements of the :command:`WSL-DistroLauncher` #. Build the image with {kiwi}: .. code:: bash $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_wsl} \ --set-repo {exc_repo_tumbleweed} \ --target-dir /tmp/myimage Testing the WSL image --------------------- For testing the image, you need a Windows 10 system. Before you proceed, enable the optional feature named :file:`Microsoft-Windows-Subsystem-Linux`. For further details on how to setup the Windows machine, see: `Windows Subsystem for Linux `__ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/building_images.rst0000644000000000000000000000106014711142327015473 0ustar00.. _building_types: Building Images for Supported Types =================================== .. note:: This document provides an overview how to build and use the {kiwi} supported image types. All images that we provide for testing uses the root password: `linux` .. toctree:: :maxdepth: 1 building_images/build_live_iso building_images/build_simple_disk building_images/build_expandable_disk building_images/build_container_image building_images/build_wsl_container building_images/build_kis building_images/build_enclave ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/image_info.rst0000644000000000000000000000545114711142327016257 0ustar00kiwi-ng image info ================== .. _db_image_info_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng image info -h | --help kiwi-ng image info --description= [--resolve-package-list] [--list-profiles] [--ignore-repos] [--add-repo=...] [--print-xml|--print-yaml] kiwi-ng image info help .. _db_image_info_desc: DESCRIPTION ----------- Provides information about the specified image description. If no specific info option is provided, the command lists basic information about the image. This information is also available in the image XML description file. Specifying an extension option like `resolve-package-list` makes a dependency resolver to run through the list of packages, providing more detailed information about the image description. .. _db_image_info_opts: OPTIONS ------- --add-repo= Add repository with given source, type, alias and priority. --description= The description must be a directory containing a kiwi XML description and optional metadata files. --ignore-repos Ignore all repository configurations from the XML description. This option is usually used together with the --add-repo option. Otherwise there are no repositories available for the processing the requested image information, which could lead to an error. --list-profiles list profiles available for the selected/default type. NOTE: If the image description is designed in a way that there is no default build type configured and/or the main build type is also profiled, it's required to provide this information to kiwi to list further profiles for this type. For example: kiwi-ng --profile top_level_entry_profile image info ... --resolve-package-list Solve package dependencies and return a list of all packages including their attributes, for example size, shasum, and more. --print-xml Print image description in the XML format. The specified image description is converted to XML and sent to the XSLT stylesheet processor. The result is then validated using the RelaxNG schema and the schematron rules. The command is normally used to convert an old image description to the latest schema. --print-yaml Behaves similar to `--print-xml`, but after validation, the result is converted to the YAML format. The command can be used for different operations: * Conversion of the specified image description from or into different formats. This requires the `anymarkup` Python module to be installed. The module is not a hard requirement and loaded on demand. If the module is missing, requests to convert to other format than XML fail. * Update of an old image description to the latest schema ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/image_resize.rst0000644000000000000000000000220414711142327016616 0ustar00.. _db_kiwi_image_resize: kiwi-ng image resize ==================== .. _db_kiwi_image_resize_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng image resize -h | --help kiwi-ng image resize --target-dir= --size= [--root=] kiwi-ng image resize help .. _db_kiwi_image_resize_desc: DESCRIPTION ----------- For disk based images, allow to resize the image to a new disk geometry. The additional space is free and not in use by the image. The OEM boot code in {kiwi} offers a resizing procedure that can be used to make use of the additional free space. For OEM image builds, it is advisable to run the resizing operation. .. _db_kiwi_image_resize_opts: OPTIONS ------- --root= The path to the root directory. If not specified, kiwi searches the root directory in build/image-root under the specified target directory. --size= New size of the image. The value is either a size in bytes, or it can be specified with m (MB) or g (GB). Example: 20g --target-dir= Directory containing the kiwi build results. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/kiwi.rst0000644000000000000000000001375414711142327015132 0ustar00kiwi-ng ======= .. _db_commands_kiwi_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng -h | --help kiwi-ng [--profile=...] [--temp-dir=] [--type=] [--logfile=] [--logsocket=] [--loglevel=] [--debug] [--debug-run-scripts-in-screen] [--color-output] [--config=] [--kiwi-file=] image [...] kiwi-ng [--logfile=] [--logsocket=] [--loglevel=] [--debug] [--debug-run-scripts-in-screen] [--color-output] [--config=] result [...] kiwi-ng [--profile=...] [--shared-cache-dir=] [--temp-dir=] [--target-arch=] [--type=] [--logfile=] [--logsocket=] [--loglevel=] [--debug] [--debug-run-scripts-in-screen] [--color-output] [--config=] [--kiwi-file=] system [...] kiwi-ng -v | --version kiwi-ng help .. _db_commands_kiwi_desc: DESCRIPTION ----------- {kiwi} is an imaging solution that is based on an image XML description. A description can consist of a single :file:`config.xml` or :file:`.kiwi` file. It may also include additional files, such as scripts or configuration data. A collection of example image descriptions can be found in the following GitHub repository: https://github.com/OSInside/kiwi-descriptions. Most of the descriptions provide a so-called appliance image. Appliance is a small, text-based image including a predefined remote source setup to allow installation of missing software components. Although {kiwi} operates in two steps, the system build command combines both steps into one to make it easier to start with {kiwi}. The first step is to prepare a directory that includes the contents of a new filesystem based on one or more software package sources. The second step uses the prepared contents of the new image root tree to create an output image. {kiwi} supports the creation of the following image types: - ISO Live Systems - virtual disk for e.g cloud frameworks - OEM expandable disk for system deployment from ISO or the network - file system images for deployment in a PXE boot environment Depending on the image type, different disk formats and architectures are supported. .. _db_commands_kiwi_opts: GLOBAL OPTIONS -------------- --color-output Use escape sequences to print different types of information in colored output. for this option to work, the underlying terminal must support those escape characters. Error messages appear in red, warning messages in yellow, and debugging information is printed in light grey. --config= Use specified runtime configuration file. If not specified, the runtime configuration is expected to be in the :file:`~/.config/kiwi/config.yml` or :file:`/etc/kiwi.yml` files. --debug Print debug information on the command line. Same as: `--loglevel 10`. --debug-run-scripts-in-screen Run scripts called by {kiwi} in a screen session. --logfile= Specify log file. The logfile contains detailed information about the process. The special call: `--logfile stdout` sends all information to standard out instead of writing to a file. --logsocket= Send log data to the specified Unix Domain socket in the same format as with `--logfile`. --loglevel= Specify logging level as a number. Further info about the available log levels can be found at: https://docs.python.org/3/library/logging.html#logging-levels Setting a log level displays all messages above the specified level. .. code:: bash ---------------------------- | Level | Numeric value | ---------------------------- | CRITICAL | 50 | | ERROR | 40 | | WARNING | 30 | | INFO | 20 | | DEBUG | 10 | | NOTSET | 0 | ---------------------------- --profile= Select profile to use. The specified profile must be part of the XML description. The option can be specified multiple times to allow a combination of profiles. --shared-cache-dir= Specify an alternative shared cache directory. The directory is shared via bind mount between the build host and image root system, and it contains information about package repositories and their cache and meta data. The default location is `/var/cache/kiwi`. --temp-dir= Specify an alternative base temporary directory. The provided path is used as base directory to store temporary files and directories. Default is `/var/tmp`. --target-arch= Specify an image architecture. By default, the host architecture is used as the image architecture. If the specified architecture name does not match the host architecture (thus requesting a cross architecture image build), you must configure the support for the image architecture and binary format on the building host. This must be done during the preparation stage, and it is beyond the scope of {kiwi}. --type= Select an image build type. The specified build type must be configured as part of the XML description. --kiwi-file= Basename of kiwi file that contains the main image configuration elements. If not specified, kiwi uses a file named `config.xml` or a file matching `*.kiwi` --version Show program version .. _db_commands_kiwi_example: EXAMPLE ------- .. code:: bash $ git clone https://github.com/OSInside/kiwi $ sudo kiwi-ng system build \ --description kiwi/build-tests/{exc_description_disk} \ --set-repo {exc_repo_leap} \ --target-dir /tmp/myimage ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/result_bundle.rst0000644000000000000000000000406214711142327017026 0ustar00kiwi-ng result bundle ===================== .. _db_kiwi_result_bundle_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng result bundle -h | --help kiwi-ng result bundle --target-dir= --id= --bundle-dir= [--bundle-format=] [--zsync_source=] [--package-as-rpm] kiwi-ng result bundle help .. _db_kiwi_result_bundle_desc: DESCRIPTION ----------- Create a result bundle from the image build in the specified target directory. Each resulting image contains the specified bundle identifier as part of its filename. Uncompressed image files are also compressed as an XZ archive. An SHA checksum is generated for each resulting image. .. _db_kiwi_result_bundle_opts: OPTIONS ------- --bundle-dir= Directory containing the bundle results, compressed versions of image results, and SHA checksum files. --bundle-format= Specify the bundle format to create the bundle. If provided, this setting will overwrite an eventually provided `bundle_format` attribute from the main image description. The format string can contain placeholders for the following elements: * %N : Image name * %P : Concatenated profile name (_) * %A : Architecture name * %I : Bundle ID * %T : Image build type name * %M : Image Major version number * %m : Image Minor version number * %p : Image Patch version number * %v : Image Version string --id= Bundle ID. It is a free-form text appended to the image version information as part of the result image filename. --target-dir= Directory containing the {kiwi} build results. --zsync_source= Download location of the bundle file or files. Only relevant if `zsync` is used to sync the bundle. * The zsync control file is created for the bundle files marked for compression. * All files in a bundle must be stored in the same download location. --package-as-rpm Create an RPM package containing the result files. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/result_list.rst0000644000000000000000000000132714711142327016531 0ustar00kiwi-ng result list =================== .. _db_kiwi_result_list_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng result list -h | --help kiwi-ng result list --target-dir= kiwi-ng result list help .. _db_kiwi_result_list_desc: DESCRIPTION ----------- List build results from a previous build or create command. During multiple image builds with the same target directory, the build result information is overwritten every time you build an image. This means that the build result list is valid for the last build only. .. _db_kiwi_result_list_opts: OPTIONS ------- --target-dir= Directory containing the {kiwi} build results. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1730462934.5792623 kiwi-10.1.18/doc/source/commands/system_build.rst0000644000000000000000000001733314711142327016667 0ustar00.. _kiwi_system_build: kiwi-ng system build ==================== .. _db_kiwi_system_build_synopsis: SYNOPSIS -------- .. code:: bash kiwi-ng [global options] service [] kiwi-ng system build -h | --help kiwi-ng system build --description= --target-dir= [--allow-existing-root] [--clear-cache] [--ignore-repos] [--ignore-repos-used-for-build] [--set-repo=] [--set-repo-credentials=] [--add-repo=...] [--add-repo-credentials=...] [--add-package=...] [--add-bootstrap-package=...] [--delete-package=...] [--set-container-derived-from=] [--set-container-tag=] [--add-container-label=