##// END OF EJS Templates
Merge from stable
Mads Kiilerich -
r8788:b9e24c7b merge default
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,194 +1,197 b''
1 List of contributors to Kallithea project:
1 List of contributors to Kallithea project:
2
2
3 Mads Kiilerich <mads@kiilerich.com> 2016-2023
3 Mads Kiilerich <mads@kiilerich.com> 2016-2024
4 Aristotelis Stageiritis <aristotelis79@gmail.com> 2024
5 Poesty Li <poesty7450@gmail.com> 2024
4 Manuel Jacob <me@manueljacob.de> 2019-2020 2022-2023
6 Manuel Jacob <me@manueljacob.de> 2019-2020 2022-2023
5 Mathias De Mare <mathias.de_mare@nokia.com> 2023
7 Mathias De Mare <mathias.de_mare@nokia.com> 2023
8 qy117121 <mixuan121@gmail.com> 2023
6 Asterios Dimitriou <steve@pci.gr> 2016-2017 2020 2022
9 Asterios Dimitriou <steve@pci.gr> 2016-2017 2020 2022
10 Étienne Gilli <etienne@gilli.io> 2020-2022
7 Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net> 2022
11 Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net> 2022
8 Louis Bertrand <louis.bertrand@durhamcollege.ca> 2022
12 Louis Bertrand <louis.bertrand@durhamcollege.ca> 2022
9 toras9000 <toras9000@gmail.com> 2022
13 toras9000 <toras9000@gmail.com> 2022
10 yzqzss <yzqzss@othing.xyz> 2022
14 yzqzss <yzqzss@othing.xyz> 2022
11 МАН69К <weblate@mah69k.net> 2022
15 МАН69К <weblate@mah69k.net> 2022
12 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> 2014-2021
16 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> 2014-2021
13 ssantos <ssantos@web.de> 2018-2021
17 ssantos <ssantos@web.de> 2018-2021
14 Private <adamantine.sword@gmail.com> 2019-2021
18 Private <adamantine.sword@gmail.com> 2019-2021
15 Étienne Gilli <etienne@gilli.io> 2020-2021
16 fresh <fresh190@protonmail.com> 2020-2021
19 fresh <fresh190@protonmail.com> 2020-2021
17 robertus <robertuss12@gmail.com> 2020-2021
20 robertus <robertuss12@gmail.com> 2020-2021
18 Eugenia Russell <eugenia.russell2019@gmail.com> 2021
21 Eugenia Russell <eugenia.russell2019@gmail.com> 2021
19 Michalis <michalisntovas@yahoo.gr> 2021
22 Michalis <michalisntovas@yahoo.gr> 2021
20 vs <vsuhachev@yandex.ru> 2021
23 vs <vsuhachev@yandex.ru> 2021
21 Александр <akonn7@mail.ru> 2021
24 Александр <akonn7@mail.ru> 2021
22 Allan Nordhøy <epost@anotheragency.no> 2017-2020
25 Allan Nordhøy <epost@anotheragency.no> 2017-2020
23 Anton Schur <tonich.sh@gmail.com> 2017 2020
26 Anton Schur <tonich.sh@gmail.com> 2017 2020
24 Artem <kovalevartem.ru@gmail.com> 2020
27 Artem <kovalevartem.ru@gmail.com> 2020
25 David Ignjić <ignjic@gmail.com> 2020
28 David Ignjić <ignjic@gmail.com> 2020
26 Dennis Fink <dennis.fink@c3l.lu> 2020
29 Dennis Fink <dennis.fink@c3l.lu> 2020
27 J. Lavoie <j.lavoie@net-c.ca> 2020
30 J. Lavoie <j.lavoie@net-c.ca> 2020
28 Ross Thomas <ross@lns-nevasoft.com> 2020
31 Ross Thomas <ross@lns-nevasoft.com> 2020
29 Tim Ooms <tatankat@users.noreply.github.com> 2020
32 Tim Ooms <tatankat@users.noreply.github.com> 2020
30 Andrej Shadura <andrew@shadura.me> 2012 2014-2017 2019
33 Andrej Shadura <andrew@shadura.me> 2012 2014-2017 2019
31 Étienne Gilli <etienne.gilli@gmail.com> 2015-2017 2019
34 Étienne Gilli <etienne.gilli@gmail.com> 2015-2017 2019
32 Adi Kriegisch <adi@cg.tuwien.ac.at> 2019
35 Adi Kriegisch <adi@cg.tuwien.ac.at> 2019
33 Danni Randeris <danniranderis@gmail.com> 2019
36 Danni Randeris <danniranderis@gmail.com> 2019
34 Edmund Wong <ewong@crazy-cat.org> 2019
37 Edmund Wong <ewong@crazy-cat.org> 2019
35 Elizabeth Sherrock <lizzyd710@gmail.com> 2019
38 Elizabeth Sherrock <lizzyd710@gmail.com> 2019
36 Hüseyin Tunç <huseyin.tunc@bulutfon.com> 2019
39 Hüseyin Tunç <huseyin.tunc@bulutfon.com> 2019
37 leela <53352@protonmail.com> 2019
40 leela <53352@protonmail.com> 2019
38 Mateusz Mendel <mendelm9@gmail.com> 2019
41 Mateusz Mendel <mendelm9@gmail.com> 2019
39 Nathan <bonnemainsnathan@gmail.com> 2019
42 Nathan <bonnemainsnathan@gmail.com> 2019
40 Oleksandr Shtalinberg <o.shtalinberg@gmail.com> 2019
43 Oleksandr Shtalinberg <o.shtalinberg@gmail.com> 2019
41 THANOS SIOURDAKIS <siourdakisthanos@gmail.com> 2019
44 THANOS SIOURDAKIS <siourdakisthanos@gmail.com> 2019
42 Wolfgang Scherer <wolfgang.scherer@gmx.de> 2019
45 Wolfgang Scherer <wolfgang.scherer@gmx.de> 2019
43 Христо Станев <hstanev@gmail.com> 2019
46 Христо Станев <hstanev@gmail.com> 2019
44 Dominik Ruf <dominikruf@gmail.com> 2012 2014-2018
47 Dominik Ruf <dominikruf@gmail.com> 2012 2014-2018
45 Michal Čihař <michal@cihar.com> 2014-2015 2018
48 Michal Čihař <michal@cihar.com> 2014-2015 2018
46 Branko Majic <branko@majic.rs> 2015 2018
49 Branko Majic <branko@majic.rs> 2015 2018
47 Chris Rule <crule@aegistg.com> 2018
50 Chris Rule <crule@aegistg.com> 2018
48 Jesús Sánchez <jsanchezfdz95@gmail.com> 2018
51 Jesús Sánchez <jsanchezfdz95@gmail.com> 2018
49 Patrick Vane <patrick_vane@lowentry.com> 2018
52 Patrick Vane <patrick_vane@lowentry.com> 2018
50 Pheng Heong Tan <phtan90@gmail.com> 2018
53 Pheng Heong Tan <phtan90@gmail.com> 2018
51 Максим Якимчук <xpinovo@gmail.com> 2018
54 Максим Якимчук <xpinovo@gmail.com> 2018
52 Марс Ямбар <mjambarmeta@gmail.com> 2018
55 Марс Ямбар <mjambarmeta@gmail.com> 2018
53 Mads Kiilerich <madski@unity3d.com> 2012-2017
56 Mads Kiilerich <madski@unity3d.com> 2012-2017
54 Unity Technologies 2012-2017
57 Unity Technologies 2012-2017
55 Søren Løvborg <sorenl@unity3d.com> 2015-2017
58 Søren Løvborg <sorenl@unity3d.com> 2015-2017
56 Sam Jaques <sam.jaques@me.com> 2015 2017
59 Sam Jaques <sam.jaques@me.com> 2015 2017
57 Alessandro Molina <alessandro.molina@axant.it> 2017
60 Alessandro Molina <alessandro.molina@axant.it> 2017
58 Ching-Chen Mao <mao@lins.fju.edu.tw> 2017
61 Ching-Chen Mao <mao@lins.fju.edu.tw> 2017
59 Eivind Tagseth <eivindt@gmail.com> 2017
62 Eivind Tagseth <eivindt@gmail.com> 2017
60 FUJIWARA Katsunori <foozy@lares.dti.ne.jp> 2017
63 FUJIWARA Katsunori <foozy@lares.dti.ne.jp> 2017
61 Holger Schramm <info@schramm.by> 2017
64 Holger Schramm <info@schramm.by> 2017
62 Karl Goetz <karl@kgoetz.id.au> 2017
65 Karl Goetz <karl@kgoetz.id.au> 2017
63 Lars Kruse <devel@sumpfralle.de> 2017
66 Lars Kruse <devel@sumpfralle.de> 2017
64 Marko Semet <markosemet@googlemail.com> 2017
67 Marko Semet <markosemet@googlemail.com> 2017
65 Viktar Vauchkevich <victorenator@gmail.com> 2017
68 Viktar Vauchkevich <victorenator@gmail.com> 2017
66 Takumi IINO <trot.thunder@gmail.com> 2012-2016
69 Takumi IINO <trot.thunder@gmail.com> 2012-2016
67 Jan Heylen <heyleke@gmail.com> 2015-2016
70 Jan Heylen <heyleke@gmail.com> 2015-2016
68 Robert Martinez <ntttq@inboxen.org> 2015-2016
71 Robert Martinez <ntttq@inboxen.org> 2015-2016
69 Robert Rauch <mail@robertrauch.de> 2015-2016
72 Robert Rauch <mail@robertrauch.de> 2015-2016
70 Angel Ezquerra <angel.ezquerra@gmail.com> 2016
73 Angel Ezquerra <angel.ezquerra@gmail.com> 2016
71 Anton Shestakov <av6@dwimlabs.net> 2016
74 Anton Shestakov <av6@dwimlabs.net> 2016
72 Brandon Jones <bjones14@gmail.com> 2016
75 Brandon Jones <bjones14@gmail.com> 2016
73 Kateryna Musina <kateryna@unity3d.com> 2016
76 Kateryna Musina <kateryna@unity3d.com> 2016
74 Konstantin Veretennicov <kveretennicov@gmail.com> 2016
77 Konstantin Veretennicov <kveretennicov@gmail.com> 2016
75 Oscar Curero <oscar@naiandei.net> 2016
78 Oscar Curero <oscar@naiandei.net> 2016
76 Robert James Dennington <tinytimrob@googlemail.com> 2016
79 Robert James Dennington <tinytimrob@googlemail.com> 2016
77 timeless@gmail.com 2016
80 timeless@gmail.com 2016
78 YFdyh000 <yfdyh000@gmail.com> 2016
81 YFdyh000 <yfdyh000@gmail.com> 2016
79 Aras Pranckevičius <aras@unity3d.com> 2012-2013 2015
82 Aras Pranckevičius <aras@unity3d.com> 2012-2013 2015
80 Sean Farley <sean.michael.farley@gmail.com> 2013-2015
83 Sean Farley <sean.michael.farley@gmail.com> 2013-2015
81 Bradley M. Kuhn <bkuhn@sfconservancy.org> 2014-2015
84 Bradley M. Kuhn <bkuhn@sfconservancy.org> 2014-2015
82 Christian Oyarzun <oyarzun@gmail.com> 2014-2015
85 Christian Oyarzun <oyarzun@gmail.com> 2014-2015
83 Joseph Rivera <rivera.d.joseph@gmail.com> 2014-2015
86 Joseph Rivera <rivera.d.joseph@gmail.com> 2014-2015
84 Anatoly Bubenkov <bubenkoff@gmail.com> 2015
87 Anatoly Bubenkov <bubenkoff@gmail.com> 2015
85 Andrew Bartlett <abartlet@catalyst.net.nz> 2015
88 Andrew Bartlett <abartlet@catalyst.net.nz> 2015
86 Balázs Úr <urbalazs@gmail.com> 2015
89 Balázs Úr <urbalazs@gmail.com> 2015
87 Ben Finney <ben@benfinney.id.au> 2015
90 Ben Finney <ben@benfinney.id.au> 2015
88 Daniel Hobley <danielh@unity3d.com> 2015
91 Daniel Hobley <danielh@unity3d.com> 2015
89 David Avigni <david.avigni@ankapi.com> 2015
92 David Avigni <david.avigni@ankapi.com> 2015
90 Denis Blanchette <dblanchette@coveo.com> 2015
93 Denis Blanchette <dblanchette@coveo.com> 2015
91 duanhongyi <duanhongyi@doopai.com> 2015
94 duanhongyi <duanhongyi@doopai.com> 2015
92 EriCSN Chang <ericsning@gmail.com> 2015
95 EriCSN Chang <ericsning@gmail.com> 2015
93 Grzegorz Krason <grzegorz.krason@gmail.com> 2015
96 Grzegorz Krason <grzegorz.krason@gmail.com> 2015
94 Jiří Suchan <yed@vanyli.net> 2015
97 Jiří Suchan <yed@vanyli.net> 2015
95 Kazunari Kobayashi <kobanari@nifty.com> 2015
98 Kazunari Kobayashi <kobanari@nifty.com> 2015
96 Kevin Bullock <kbullock@ringworld.org> 2015
99 Kevin Bullock <kbullock@ringworld.org> 2015
97 kobanari <kobanari@nifty.com> 2015
100 kobanari <kobanari@nifty.com> 2015
98 Marc Abramowitz <marc@marc-abramowitz.com> 2015
101 Marc Abramowitz <marc@marc-abramowitz.com> 2015
99 Marc Villetard <marc.villetard@gmail.com> 2015
102 Marc Villetard <marc.villetard@gmail.com> 2015
100 Matthias Zilk <matthias.zilk@gmail.com> 2015
103 Matthias Zilk <matthias.zilk@gmail.com> 2015
101 Michael Pohl <michael@mipapo.de> 2015
104 Michael Pohl <michael@mipapo.de> 2015
102 Michael V. DePalatis <mike@depalatis.net> 2015
105 Michael V. DePalatis <mike@depalatis.net> 2015
103 Morten Skaaning <mortens@unity3d.com> 2015
106 Morten Skaaning <mortens@unity3d.com> 2015
104 Nick High <nick@silverchip.org> 2015
107 Nick High <nick@silverchip.org> 2015
105 Niemand Jedermann <predatorix@web.de> 2015
108 Niemand Jedermann <predatorix@web.de> 2015
106 Peter Vitt <petervitt@web.de> 2015
109 Peter Vitt <petervitt@web.de> 2015
107 Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> 2015
110 Ronny Pfannschmidt <opensource@ronnypfannschmidt.de> 2015
108 Tuux <tuxa@galaxie.eu.org> 2015
111 Tuux <tuxa@galaxie.eu.org> 2015
109 Viktar Palstsiuk <vipals@gmail.com> 2015
112 Viktar Palstsiuk <vipals@gmail.com> 2015
110 Ante Ilic <ante@unity3d.com> 2014
113 Ante Ilic <ante@unity3d.com> 2014
111 Calinou <calinou@opmbx.org> 2014
114 Calinou <calinou@opmbx.org> 2014
112 Daniel Anderson <daniel@dattrix.com> 2014
115 Daniel Anderson <daniel@dattrix.com> 2014
113 Henrik Stuart <hg@hstuart.dk> 2014
116 Henrik Stuart <hg@hstuart.dk> 2014
114 Ingo von Borstel <kallithea@planetmaker.de> 2014
117 Ingo von Borstel <kallithea@planetmaker.de> 2014
115 invision70 <invision70@gmail.com> 2014
118 invision70 <invision70@gmail.com> 2014
116 Jelmer Vernooij <jelmer@samba.org> 2014
119 Jelmer Vernooij <jelmer@samba.org> 2014
117 Jim Hague <jim.hague@acm.org> 2014
120 Jim Hague <jim.hague@acm.org> 2014
118 Matt Fellows <kallithea@matt-fellows.me.uk> 2014
121 Matt Fellows <kallithea@matt-fellows.me.uk> 2014
119 Max Roman <max@choloclos.se> 2014
122 Max Roman <max@choloclos.se> 2014
120 Na'Tosha Bard <natosha@unity3d.com> 2014
123 Na'Tosha Bard <natosha@unity3d.com> 2014
121 Rasmus Selsmark <rasmuss@unity3d.com> 2014
124 Rasmus Selsmark <rasmuss@unity3d.com> 2014
122 SkryabinD <skryabind@gmail.com> 2014
125 SkryabinD <skryabind@gmail.com> 2014
123 Tim Freund <tim@freunds.net> 2014
126 Tim Freund <tim@freunds.net> 2014
124 Travis Burtrum <android@moparisthebest.com> 2014
127 Travis Burtrum <android@moparisthebest.com> 2014
125 whosaysni <whosaysni@gmail.com> 2014
128 whosaysni <whosaysni@gmail.com> 2014
126 Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com> 2014
129 Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com> 2014
127 Marcin Kuźmiński <marcin@python-works.com> 2010-2013
130 Marcin Kuźmiński <marcin@python-works.com> 2010-2013
128 Nemcio <areczek01@gmail.com> 2012-2013
131 Nemcio <areczek01@gmail.com> 2012-2013
129 xpol <xpolife@gmail.com> 2012-2013
132 xpol <xpolife@gmail.com> 2012-2013
130 Andrey Mivrenik <myvrenik@gmail.com> 2013
133 Andrey Mivrenik <myvrenik@gmail.com> 2013
131 Aparkar <aparkar@icloud.com> 2013
134 Aparkar <aparkar@icloud.com> 2013
132 ArcheR <aleclitvinov1980@gmail.com> 2013
135 ArcheR <aleclitvinov1980@gmail.com> 2013
133 Dennis Brakhane <brakhane@googlemail.com> 2013
136 Dennis Brakhane <brakhane@googlemail.com> 2013
134 gnustavo <gustavo@gnustavo.com> 2013
137 gnustavo <gustavo@gnustavo.com> 2013
135 Grzegorz Rożniecki <xaerxess@gmail.com> 2013
138 Grzegorz Rożniecki <xaerxess@gmail.com> 2013
136 Ilya Beda <ir4y.ix@gmail.com> 2013
139 Ilya Beda <ir4y.ix@gmail.com> 2013
137 ivlevdenis <ivlevdenis.ru@gmail.com> 2013
140 ivlevdenis <ivlevdenis.ru@gmail.com> 2013
138 Jonathan Sternberg <jonathansternberg@gmail.com> 2013
141 Jonathan Sternberg <jonathansternberg@gmail.com> 2013
139 Leonardo Carneiro <leonardo@unity3d.com> 2013
142 Leonardo Carneiro <leonardo@unity3d.com> 2013
140 Magnus Ericmats <magnus.ericmats@gmail.com> 2013
143 Magnus Ericmats <magnus.ericmats@gmail.com> 2013
141 Martin Vium <martinv@unity3d.com> 2013
144 Martin Vium <martinv@unity3d.com> 2013
142 Mikhail Zholobov <legal90@gmail.com> 2013
145 Mikhail Zholobov <legal90@gmail.com> 2013
143 mokeev1995 <mokeev_andre@mail.ru> 2013
146 mokeev1995 <mokeev_andre@mail.ru> 2013
144 Ruslan Bekenev <furyinbox@gmail.com> 2013
147 Ruslan Bekenev <furyinbox@gmail.com> 2013
145 shirou - しろう 2013
148 shirou - しろう 2013
146 Simon Lopez <simon.lopez@slopez.org> 2013
149 Simon Lopez <simon.lopez@slopez.org> 2013
147 softforwinxp <softforwinxp@gmail.com> 2013
150 softforwinxp <softforwinxp@gmail.com> 2013
148 stephanj <info@stephan-jauernick.de> 2013
151 stephanj <info@stephan-jauernick.de> 2013
149 Ton Plomp <tcplomp@gmail.com> 2013
152 Ton Plomp <tcplomp@gmail.com> 2013
150 zhmylove <zhmylove@narod.ru> 2013
153 zhmylove <zhmylove@narod.ru> 2013
151 こいんとす <tkondou@gmail.com> 2013
154 こいんとす <tkondou@gmail.com> 2013
152 Augusto Herrmann <augusto.herrmann@planejamento.gov.br> 2011-2012
155 Augusto Herrmann <augusto.herrmann@planejamento.gov.br> 2011-2012
153 Augusto Herrmann <augusto.herrmann@gmail.com> 2012
156 Augusto Herrmann <augusto.herrmann@gmail.com> 2012
154 Dan Sheridan <djs@adelard.com> 2012
157 Dan Sheridan <djs@adelard.com> 2012
155 Dies Koper <diesk@fast.au.fujitsu.com> 2012
158 Dies Koper <diesk@fast.au.fujitsu.com> 2012
156 Erwin Kroon <e.kroon@smartmetersolutions.nl> 2012
159 Erwin Kroon <e.kroon@smartmetersolutions.nl> 2012
157 H Waldo G <gwaldo@gmail.com> 2012
160 H Waldo G <gwaldo@gmail.com> 2012
158 hppj <hppj@postmage.biz> 2012
161 hppj <hppj@postmage.biz> 2012
159 Indra Talip <indra.talip@gmail.com> 2012
162 Indra Talip <indra.talip@gmail.com> 2012
160 mikespook <mikespook@gmail.com> 2012
163 mikespook <mikespook@gmail.com> 2012
161 nansenat16 <nansenat16@null.tw> 2012
164 nansenat16 <nansenat16@null.tw> 2012
162 Nemcio <bogdan114@g.pl> 2012
165 Nemcio <bogdan114@g.pl> 2012
163 Philip Jameson <philip.j@hostdime.com> 2012
166 Philip Jameson <philip.j@hostdime.com> 2012
164 Raoul Thill <raoul.thill@gmail.com> 2012
167 Raoul Thill <raoul.thill@gmail.com> 2012
165 Stefan Engel <mail@engel-stefan.de> 2012
168 Stefan Engel <mail@engel-stefan.de> 2012
166 Tony Bussieres <t.bussieres@gmail.com> 2012
169 Tony Bussieres <t.bussieres@gmail.com> 2012
167 Vincent Caron <vcaron@bearstech.com> 2012
170 Vincent Caron <vcaron@bearstech.com> 2012
168 Vincent Duvert <vincent@duvert.net> 2012
171 Vincent Duvert <vincent@duvert.net> 2012
169 Vladislav Poluhin <nuklea@gmail.com> 2012
172 Vladislav Poluhin <nuklea@gmail.com> 2012
170 Zachary Auclair <zach101@gmail.com> 2012
173 Zachary Auclair <zach101@gmail.com> 2012
171 Ankit Solanki <ankit.solanki@gmail.com> 2011
174 Ankit Solanki <ankit.solanki@gmail.com> 2011
172 Dmitri Kuznetsov 2011
175 Dmitri Kuznetsov 2011
173 Jared Bunting <jared.bunting@peachjean.com> 2011
176 Jared Bunting <jared.bunting@peachjean.com> 2011
174 Jason Harris <jason@jasonfharris.com> 2011
177 Jason Harris <jason@jasonfharris.com> 2011
175 Les Peabody <lpeabody@gmail.com> 2011
178 Les Peabody <lpeabody@gmail.com> 2011
176 Liad Shani <liadff@gmail.com> 2011
179 Liad Shani <liadff@gmail.com> 2011
177 Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it> 2011
180 Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it> 2011
178 Matt Zuba <matt.zuba@goodwillaz.org> 2011
181 Matt Zuba <matt.zuba@goodwillaz.org> 2011
179 Nicolas VINOT <aeris@imirhil.fr> 2011
182 Nicolas VINOT <aeris@imirhil.fr> 2011
180 Shawn K. O'Shea <shawn@eth0.net> 2011
183 Shawn K. O'Shea <shawn@eth0.net> 2011
181 Thayne Harbaugh <thayne@fusionio.com> 2011
184 Thayne Harbaugh <thayne@fusionio.com> 2011
182 Łukasz Balcerzak <lukaszbalcerzak@gmail.com> 2010
185 Łukasz Balcerzak <lukaszbalcerzak@gmail.com> 2010
183 Andrew Kesterson <andrew@aklabs.net>
186 Andrew Kesterson <andrew@aklabs.net>
184 cejones
187 cejones
185 David A. Sjøen <david.sjoen@westcon.no>
188 David A. Sjøen <david.sjoen@westcon.no>
186 James Rhodes <jrhodes@redpointsoftware.com.au>
189 James Rhodes <jrhodes@redpointsoftware.com.au>
187 Jonas Oberschweiber <jonas.oberschweiber@d-velop.de>
190 Jonas Oberschweiber <jonas.oberschweiber@d-velop.de>
188 larikale
191 larikale
189 RhodeCode GmbH
192 RhodeCode GmbH
190 Sebastian Kreutzberger <sebastian@rhodecode.com>
193 Sebastian Kreutzberger <sebastian@rhodecode.com>
191 Steve Romanow <slestak989@gmail.com>
194 Steve Romanow <slestak989@gmail.com>
192 SteveCohen
195 SteveCohen
193 Thomas <thomas@rhodecode.com>
196 Thomas <thomas@rhodecode.com>
194 Thomas Waldmann <tw-public@gmx.de>
197 Thomas Waldmann <tw-public@gmx.de>
@@ -1,211 +1,211 b''
1 def createvirtualenv = ''
1 def createvirtualenv = ''
2 def activatevirtualenv = ''
2 def activatevirtualenv = ''
3
3
4 node {
4 node {
5 properties([[$class: 'BuildDiscarderProperty',
5 properties([[$class: 'BuildDiscarderProperty',
6 strategy: [$class: 'LogRotator',
6 strategy: [$class: 'LogRotator',
7 artifactDaysToKeepStr: '',
7 artifactDaysToKeepStr: '',
8 artifactNumToKeepStr: '10',
8 artifactNumToKeepStr: '10',
9 daysToKeepStr: '',
9 daysToKeepStr: '',
10 numToKeepStr: '']]]);
10 numToKeepStr: '']]]);
11 if (isUnix()) {
11 if (isUnix()) {
12 createvirtualenv = 'rm -r $JENKINS_HOME/venv/$JOB_NAME || true && python3 -m venv $JENKINS_HOME/venv/$JOB_NAME'
12 createvirtualenv = 'rm -r $JENKINS_HOME/venv/$JOB_NAME || true && python3 -m venv $JENKINS_HOME/venv/$JOB_NAME'
13 activatevirtualenv = '. $JENKINS_HOME/venv/$JOB_NAME/bin/activate'
13 activatevirtualenv = '. $JENKINS_HOME/venv/$JOB_NAME/bin/activate'
14 } else {
14 } else {
15 createvirtualenv = 'rmdir /s /q %JENKINS_HOME%\\venv\\%JOB_NAME% || true && python3 -m venv %JENKINS_HOME%\\venv\\%JOB_NAME%'
15 createvirtualenv = 'rmdir /s /q %JENKINS_HOME%\\venv\\%JOB_NAME% || true && python3 -m venv %JENKINS_HOME%\\venv\\%JOB_NAME%'
16 activatevirtualenv = 'call %JENKINS_HOME%\\venv\\%JOB_NAME%\\Scripts\\activate.bat'
16 activatevirtualenv = 'call %JENKINS_HOME%\\venv\\%JOB_NAME%\\Scripts\\activate.bat'
17 }
17 }
18
18
19 stage('checkout') {
19 stage('checkout') {
20 checkout scm
20 checkout scm
21 if (isUnix()) {
21 if (isUnix()) {
22 sh 'hg --config extensions.purge= purge --all'
22 sh 'hg --config extensions.purge= purge --all'
23 } else {
23 } else {
24 bat 'hg --config extensions.purge= purge --all'
24 bat 'hg --config extensions.purge= purge --all'
25 }
25 }
26 }
26 }
27 stage('virtual env') {
27 stage('virtual env') {
28 def virtualenvscript = """$createvirtualenv
28 def virtualenvscript = """$createvirtualenv
29 $activatevirtualenv
29 $activatevirtualenv
30 python -m pip install --upgrade pip
30 python -m pip install --upgrade "pip<24.1"
31 pip install --upgrade setuptools
31 pip install --upgrade "setuptools<67"
32 pip install --upgrade pylint
32 pip install --upgrade pylint
33 pip install --upgrade pytest-cov
33 pip install --upgrade pytest-cov
34 """
34 """
35 if (isUnix()) {
35 if (isUnix()) {
36 virtualenvscript += """
36 virtualenvscript += """
37 pip install --upgrade python-ldap
37 pip install --upgrade python-ldap
38 pip install --upgrade python-pam
38 pip install --upgrade python-pam
39 """
39 """
40 sh virtualenvscript
40 sh virtualenvscript
41 } else {
41 } else {
42 bat virtualenvscript
42 bat virtualenvscript
43 }
43 }
44 }
44 }
45 stage('setup') {
45 stage('setup') {
46 def virtualenvscript = """$activatevirtualenv
46 def virtualenvscript = """$activatevirtualenv
47 pip install --upgrade -e . -r dev_requirements.txt
47 pip install --upgrade -e . -r dev_requirements.txt
48 python setup.py compile_catalog
48 python setup.py compile_catalog
49 """
49 """
50 if (isUnix()) {
50 if (isUnix()) {
51 sh virtualenvscript
51 sh virtualenvscript
52 } else {
52 } else {
53 bat virtualenvscript
53 bat virtualenvscript
54 }
54 }
55 stash name: 'kallithea', useDefaultExcludes: false
55 stash name: 'kallithea', useDefaultExcludes: false
56 }
56 }
57 stage('pylint') {
57 stage('pylint') {
58 sh script: """$activatevirtualenv
58 sh script: """$activatevirtualenv
59 pylint -j 0 --disable=C -f parseable kallithea > pylint.out
59 pylint -j 0 --disable=C -f parseable kallithea > pylint.out
60 """, returnStatus: true
60 """, returnStatus: true
61 archiveArtifacts 'pylint.out'
61 archiveArtifacts 'pylint.out'
62 try {
62 try {
63 step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'PyLint', pattern: 'pylint.out']], unHealthy: ''])
63 step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'PyLint', pattern: 'pylint.out']], unHealthy: ''])
64 } catch (java.lang.IllegalArgumentException exc) {
64 } catch (java.lang.IllegalArgumentException exc) {
65 echo "You need to install the 'Warnings Plug-in' to display the pylint report."
65 echo "You need to install the 'Warnings Plug-in' to display the pylint report."
66 currentBuild.result = 'UNSTABLE'
66 currentBuild.result = 'UNSTABLE'
67 echo "Caught: ${exc}"
67 echo "Caught: ${exc}"
68 }
68 }
69 }
69 }
70 }
70 }
71
71
72 def pytests = [:]
72 def pytests = [:]
73 pytests['sqlite'] = {
73 pytests['sqlite'] = {
74 node {
74 node {
75 ws {
75 ws {
76 deleteDir()
76 deleteDir()
77 unstash name: 'kallithea'
77 unstash name: 'kallithea'
78 if (isUnix()) {
78 if (isUnix()) {
79 sh script: """$activatevirtualenv
79 sh script: """$activatevirtualenv
80 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
80 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
81 """, returnStatus: true
81 """, returnStatus: true
82 } else {
82 } else {
83 bat script: """$activatevirtualenv
83 bat script: """$activatevirtualenv
84 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
84 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_sqlite.xml --cov=kallithea
85 """, returnStatus: true
85 """, returnStatus: true
86 }
86 }
87 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1SQLITE./g" pytest_sqlite.xml'
87 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1SQLITE./g" pytest_sqlite.xml'
88 archiveArtifacts 'pytest_sqlite.xml'
88 archiveArtifacts 'pytest_sqlite.xml'
89 junit 'pytest_sqlite.xml'
89 junit 'pytest_sqlite.xml'
90 writeFile(file: '.coverage.sqlite', text: readFile('.coverage'))
90 writeFile(file: '.coverage.sqlite', text: readFile('.coverage'))
91 stash name: 'coverage.sqlite', includes: '.coverage.sqlite'
91 stash name: 'coverage.sqlite', includes: '.coverage.sqlite'
92 }
92 }
93 }
93 }
94 }
94 }
95
95
96 pytests['de'] = {
96 pytests['de'] = {
97 node {
97 node {
98 if (isUnix()) {
98 if (isUnix()) {
99 ws {
99 ws {
100 deleteDir()
100 deleteDir()
101 unstash name: 'kallithea'
101 unstash name: 'kallithea'
102 withEnv(['LANG=de_DE.UTF-8',
102 withEnv(['LANG=de_DE.UTF-8',
103 'LANGUAGE=de',
103 'LANGUAGE=de',
104 'LC_ADDRESS=de_DE.UTF-8',
104 'LC_ADDRESS=de_DE.UTF-8',
105 'LC_IDENTIFICATION=de_DE.UTF-8',
105 'LC_IDENTIFICATION=de_DE.UTF-8',
106 'LC_MEASUREMENT=de_DE.UTF-8',
106 'LC_MEASUREMENT=de_DE.UTF-8',
107 'LC_MONETARY=de_DE.UTF-8',
107 'LC_MONETARY=de_DE.UTF-8',
108 'LC_NAME=de_DE.UTF-8',
108 'LC_NAME=de_DE.UTF-8',
109 'LC_NUMERIC=de_DE.UTF-8',
109 'LC_NUMERIC=de_DE.UTF-8',
110 'LC_PAPER=de_DE.UTF-8',
110 'LC_PAPER=de_DE.UTF-8',
111 'LC_TELEPHONE=de_DE.UTF-8',
111 'LC_TELEPHONE=de_DE.UTF-8',
112 'LC_TIME=de_DE.UTF-8',
112 'LC_TIME=de_DE.UTF-8',
113 ]) {
113 ]) {
114 sh script: """$activatevirtualenv
114 sh script: """$activatevirtualenv
115 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_de.xml --cov=kallithea
115 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_de.xml --cov=kallithea
116 """, returnStatus: true
116 """, returnStatus: true
117 }
117 }
118 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1DE./g" pytest_de.xml'
118 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1DE./g" pytest_de.xml'
119 archiveArtifacts 'pytest_de.xml'
119 archiveArtifacts 'pytest_de.xml'
120 junit 'pytest_de.xml'
120 junit 'pytest_de.xml'
121 writeFile(file: '.coverage.de', text: readFile('.coverage'))
121 writeFile(file: '.coverage.de', text: readFile('.coverage'))
122 stash name: 'coverage.de', includes: '.coverage.de'
122 stash name: 'coverage.de', includes: '.coverage.de'
123 }
123 }
124 }
124 }
125 }
125 }
126 }
126 }
127 pytests['mysql'] = {
127 pytests['mysql'] = {
128 node {
128 node {
129 if (isUnix()) {
129 if (isUnix()) {
130 ws {
130 ws {
131 deleteDir()
131 deleteDir()
132 unstash name: 'kallithea'
132 unstash name: 'kallithea'
133 sh """$activatevirtualenv
133 sh """$activatevirtualenv
134 pip install --upgrade MySQL-python
134 pip install --upgrade MySQL-python
135 """
135 """
136 withEnv(['TEST_DB=mysql://kallithea:kallithea@jenkins_mysql/kallithea_test?charset=utf8']) {
136 withEnv(['TEST_DB=mysql://kallithea:kallithea@jenkins_mysql/kallithea_test?charset=utf8']) {
137 if (isUnix()) {
137 if (isUnix()) {
138 sh script: """$activatevirtualenv
138 sh script: """$activatevirtualenv
139 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
139 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
140 """, returnStatus: true
140 """, returnStatus: true
141 } else {
141 } else {
142 bat script: """$activatevirtualenv
142 bat script: """$activatevirtualenv
143 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
143 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_mysql.xml --cov=kallithea
144 """, returnStatus: true
144 """, returnStatus: true
145 }
145 }
146 }
146 }
147 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1MYSQL./g" pytest_mysql.xml'
147 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1MYSQL./g" pytest_mysql.xml'
148 archiveArtifacts 'pytest_mysql.xml'
148 archiveArtifacts 'pytest_mysql.xml'
149 junit 'pytest_mysql.xml'
149 junit 'pytest_mysql.xml'
150 writeFile(file: '.coverage.mysql', text: readFile('.coverage'))
150 writeFile(file: '.coverage.mysql', text: readFile('.coverage'))
151 stash name: 'coverage.mysql', includes: '.coverage.mysql'
151 stash name: 'coverage.mysql', includes: '.coverage.mysql'
152 }
152 }
153 }
153 }
154 }
154 }
155 }
155 }
156 pytests['postgresql'] = {
156 pytests['postgresql'] = {
157 node {
157 node {
158 if (isUnix()) {
158 if (isUnix()) {
159 ws {
159 ws {
160 deleteDir()
160 deleteDir()
161 unstash name: 'kallithea'
161 unstash name: 'kallithea'
162 sh """$activatevirtualenv
162 sh """$activatevirtualenv
163 pip install --upgrade psycopg2
163 pip install --upgrade psycopg2
164 """
164 """
165 withEnv(['TEST_DB=postgresql://kallithea:kallithea@jenkins_postgresql/kallithea_test']) {
165 withEnv(['TEST_DB=postgresql://kallithea:kallithea@jenkins_postgresql/kallithea_test']) {
166 if (isUnix()) {
166 if (isUnix()) {
167 sh script: """$activatevirtualenv
167 sh script: """$activatevirtualenv
168 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
168 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
169 """, returnStatus: true
169 """, returnStatus: true
170 } else {
170 } else {
171 bat script: """$activatevirtualenv
171 bat script: """$activatevirtualenv
172 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
172 py.test -p no:sugar --cov-config .coveragerc --junit-xml=pytest_postgresql.xml --cov=kallithea
173 """, returnStatus: true
173 """, returnStatus: true
174 }
174 }
175 }
175 }
176 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1POSTGRES./g" pytest_postgresql.xml'
176 sh 'sed --in-place "s/\\(classname=[\'\\"]\\)/\\1POSTGRES./g" pytest_postgresql.xml'
177 archiveArtifacts 'pytest_postgresql.xml'
177 archiveArtifacts 'pytest_postgresql.xml'
178 junit 'pytest_postgresql.xml'
178 junit 'pytest_postgresql.xml'
179 writeFile(file: '.coverage.postgresql', text: readFile('.coverage'))
179 writeFile(file: '.coverage.postgresql', text: readFile('.coverage'))
180 stash name: 'coverage.postgresql', includes: '.coverage.postgresql'
180 stash name: 'coverage.postgresql', includes: '.coverage.postgresql'
181 }
181 }
182 }
182 }
183 }
183 }
184 }
184 }
185 stage('Tests') {
185 stage('Tests') {
186 parallel pytests
186 parallel pytests
187 node {
187 node {
188 unstash 'coverage.sqlite'
188 unstash 'coverage.sqlite'
189 unstash 'coverage.de'
189 unstash 'coverage.de'
190 unstash 'coverage.mysql'
190 unstash 'coverage.mysql'
191 unstash 'coverage.postgresql'
191 unstash 'coverage.postgresql'
192 if (isUnix()) {
192 if (isUnix()) {
193 sh script: """$activatevirtualenv
193 sh script: """$activatevirtualenv
194 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
194 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
195 coverage xml
195 coverage xml
196 """, returnStatus: true
196 """, returnStatus: true
197 } else {
197 } else {
198 bat script: """$activatevirtualenv
198 bat script: """$activatevirtualenv
199 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
199 coverage combine .coverage.sqlite .coverage.de .coverage.mysql .coverage.postgresql
200 coverage xml
200 coverage xml
201 """, returnStatus: true
201 """, returnStatus: true
202 }
202 }
203 try {
203 try {
204 step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage.xml', failNoReports: false, failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, zoomCoverageChart: false])
204 step([$class: 'CoberturaPublisher', autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'coverage.xml', failNoReports: false, failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 0, onlyStable: false, zoomCoverageChart: false])
205 } catch (java.lang.IllegalArgumentException exc) {
205 } catch (java.lang.IllegalArgumentException exc) {
206 echo "You need to install the pipeline compatible 'CoberturaPublisher Plug-in' to display the coverage report."
206 echo "You need to install the pipeline compatible 'CoberturaPublisher Plug-in' to display the coverage report."
207 currentBuild.result = 'UNSTABLE'
207 currentBuild.result = 'UNSTABLE'
208 echo "Caught: ${exc}"
208 echo "Caught: ${exc}"
209 }
209 }
210 }
210 }
211 }
211 }
@@ -1,9 +1,9 b''
1 pytest >= 4.6.6, < 6.3
1 pytest >= 4.6.6, < 8.3
2 pytest-sugar >= 0.9.2, < 0.10
2 pytest-sugar >= 0.9.2, < 1.1
3 pytest-benchmark >= 3.2.2, < 3.3
3 pytest-benchmark >= 3.2.2, < 4.1
4 pytest-localserver >= 0.5.0, < 0.6
4 pytest-localserver >= 0.5.0, < 0.9
5 mock >= 3.0.0, < 4.1
5 mock >= 3.0.0, < 5.2
6 Sphinx >= 1.8.0, < 5.2
6 Sphinx >= 1.8.0, < 5.2
7 WebTest >= 2.0.6, < 2.1
7 WebTest >= 2.0.6, < 3.1
8 isort == 5.1.2
8 isort == 5.13.2
9 pyflakes == 2.2.0
9 pyflakes == 3.2.0
@@ -1,229 +1,229 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 #
2 #
3 # Kallithea documentation build configuration file, created by
3 # Kallithea documentation build configuration file, created by
4 # sphinx-quickstart on Sun Oct 10 16:46:37 2010.
4 # sphinx-quickstart on Sun Oct 10 16:46:37 2010.
5 #
5 #
6 # This file is execfile()d with the current directory set to its containing dir.
6 # This file is execfile()d with the current directory set to its containing dir.
7 #
7 #
8 # Note that not all possible configuration values are present in this
8 # Note that not all possible configuration values are present in this
9 # autogenerated file.
9 # autogenerated file.
10 #
10 #
11 # All configuration values have a default; values that are commented out
11 # All configuration values have a default; values that are commented out
12 # serve to show the default.
12 # serve to show the default.
13
13
14 import os
14 import os
15 import sys
15 import sys
16
16
17 import kallithea
17 import kallithea
18
18
19
19
20 # If extensions (or modules to document with autodoc) are in another directory,
20 # If extensions (or modules to document with autodoc) are in another directory,
21 # add these directories to sys.path here. If the directory is relative to the
21 # add these directories to sys.path here. If the directory is relative to the
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
22 # documentation root, use os.path.abspath to make it absolute, like shown here.
23 sys.path.insert(0, os.path.abspath('..'))
23 sys.path.insert(0, os.path.abspath('..'))
24
24
25 # -- General configuration -----------------------------------------------------
25 # -- General configuration -----------------------------------------------------
26
26
27 # If your documentation needs a minimal Sphinx version, state it here.
27 # If your documentation needs a minimal Sphinx version, state it here.
28 #needs_sphinx = '1.0'
28 #needs_sphinx = '1.0'
29
29
30 # Add any Sphinx extension module names here, as strings. They can be extensions
30 # Add any Sphinx extension module names here, as strings. They can be extensions
31 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
31 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
32 extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest',
32 extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest',
33 'sphinx.ext.intersphinx', 'sphinx.ext.todo',
33 'sphinx.ext.intersphinx', 'sphinx.ext.todo',
34 'sphinx.ext.viewcode']
34 'sphinx.ext.viewcode']
35
35
36 # Add any paths that contain templates here, relative to this directory.
36 # Add any paths that contain templates here, relative to this directory.
37 templates_path = ['_templates']
37 templates_path = ['_templates']
38
38
39 # The suffix of source filenames.
39 # The suffix of source filenames.
40 source_suffix = '.rst'
40 source_suffix = '.rst'
41
41
42 # The encoding of source files.
42 # The encoding of source files.
43 #source_encoding = 'utf-8-sig'
43 #source_encoding = 'utf-8-sig'
44
44
45 # The master toctree document.
45 # The master toctree document.
46 master_doc = 'index'
46 master_doc = 'index'
47
47
48 # General information about the project.
48 # General information about the project.
49 project = 'Kallithea'
49 project = 'Kallithea'
50 copyright = '2010-2023 by various authors, licensed as GPLv3.'
50 copyright = '2010-2024 by various authors, licensed as GPLv3.'
51
51
52 # The version info for the project you're documenting, acts as replacement for
52 # The version info for the project you're documenting, acts as replacement for
53 # |version| and |release|, also used in various other places throughout the
53 # |version| and |release|, also used in various other places throughout the
54 # built documents.
54 # built documents.
55 #
55 #
56 # The short X.Y version.
56 # The short X.Y version.
57 root = os.path.dirname(os.path.dirname(__file__))
57 root = os.path.dirname(os.path.dirname(__file__))
58 sys.path.append(root)
58 sys.path.append(root)
59 version = kallithea.__version__
59 version = kallithea.__version__
60 # The full version, including alpha/beta/rc tags.
60 # The full version, including alpha/beta/rc tags.
61 release = kallithea.__version__
61 release = kallithea.__version__
62
62
63 # The language for content autogenerated by Sphinx. Refer to documentation
63 # The language for content autogenerated by Sphinx. Refer to documentation
64 # for a list of supported languages.
64 # for a list of supported languages.
65 #language = None
65 #language = None
66
66
67 # There are two options for replacing |today|: either, you set today to some
67 # There are two options for replacing |today|: either, you set today to some
68 # non-false value, then it is used:
68 # non-false value, then it is used:
69 #today = ''
69 #today = ''
70 # Else, today_fmt is used as the format for a strftime call.
70 # Else, today_fmt is used as the format for a strftime call.
71 #today_fmt = '%B %d, %Y'
71 #today_fmt = '%B %d, %Y'
72
72
73 # List of patterns, relative to source directory, that match files and
73 # List of patterns, relative to source directory, that match files and
74 # directories to ignore when looking for source files.
74 # directories to ignore when looking for source files.
75 exclude_patterns = ['_build']
75 exclude_patterns = ['_build']
76
76
77 # The reST default role (used for this markup: `text`) to use for all documents.
77 # The reST default role (used for this markup: `text`) to use for all documents.
78 #default_role = None
78 #default_role = None
79
79
80 # If true, '()' will be appended to :func: etc. cross-reference text.
80 # If true, '()' will be appended to :func: etc. cross-reference text.
81 #add_function_parentheses = True
81 #add_function_parentheses = True
82
82
83 # If true, the current module name will be prepended to all description
83 # If true, the current module name will be prepended to all description
84 # unit titles (such as .. function::).
84 # unit titles (such as .. function::).
85 #add_module_names = True
85 #add_module_names = True
86
86
87 # If true, sectionauthor and moduleauthor directives will be shown in the
87 # If true, sectionauthor and moduleauthor directives will be shown in the
88 # output. They are ignored by default.
88 # output. They are ignored by default.
89 #show_authors = False
89 #show_authors = False
90
90
91 # The name of the Pygments (syntax highlighting) style to use.
91 # The name of the Pygments (syntax highlighting) style to use.
92 pygments_style = 'sphinx'
92 pygments_style = 'sphinx'
93 highlight_language = 'none'
93 highlight_language = 'none'
94
94
95 # A list of ignored prefixes for module index sorting.
95 # A list of ignored prefixes for module index sorting.
96 #modindex_common_prefix = []
96 #modindex_common_prefix = []
97
97
98
98
99 # -- Options for HTML output ---------------------------------------------------
99 # -- Options for HTML output ---------------------------------------------------
100
100
101 # The theme to use for HTML and HTML Help pages. See the documentation for
101 # The theme to use for HTML and HTML Help pages. See the documentation for
102 # a list of builtin themes.
102 # a list of builtin themes.
103 html_theme = 'nature'
103 html_theme = 'nature'
104
104
105 # Theme options are theme-specific and customize the look and feel of a theme
105 # Theme options are theme-specific and customize the look and feel of a theme
106 # further. For a list of options available for each theme, see the
106 # further. For a list of options available for each theme, see the
107 # documentation.
107 # documentation.
108 #html_theme_options = {}
108 #html_theme_options = {}
109
109
110 # Add any paths that contain custom themes here, relative to this directory.
110 # Add any paths that contain custom themes here, relative to this directory.
111 html_theme_path = ['theme']
111 html_theme_path = ['theme']
112
112
113 # The name for this set of Sphinx documents. If None, it defaults to
113 # The name for this set of Sphinx documents. If None, it defaults to
114 # "<project> v<release> documentation".
114 # "<project> v<release> documentation".
115 #html_title = None
115 #html_title = None
116
116
117 # A shorter title for the navigation bar. Default is the same as html_title.
117 # A shorter title for the navigation bar. Default is the same as html_title.
118 #html_short_title = None
118 #html_short_title = None
119
119
120 # The name of an image file (relative to this directory) to place at the top
120 # The name of an image file (relative to this directory) to place at the top
121 # of the sidebar.
121 # of the sidebar.
122 #html_logo = None
122 #html_logo = None
123
123
124 # The name of an image file (within the static path) to use as favicon of the
124 # The name of an image file (within the static path) to use as favicon of the
125 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
125 # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
126 # pixels large.
126 # pixels large.
127 #html_favicon = None
127 #html_favicon = None
128
128
129 # Add any paths that contain custom static files (such as style sheets) here,
129 # Add any paths that contain custom static files (such as style sheets) here,
130 # relative to this directory. They are copied after the builtin static files,
130 # relative to this directory. They are copied after the builtin static files,
131 # so a file named "default.css" will overwrite the builtin "default.css".
131 # so a file named "default.css" will overwrite the builtin "default.css".
132 #html_static_path = ['_static']
132 #html_static_path = ['_static']
133
133
134 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
134 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
135 # using the given strftime format.
135 # using the given strftime format.
136 #html_last_updated_fmt = '%b %d, %Y'
136 #html_last_updated_fmt = '%b %d, %Y'
137
137
138 # If true, SmartyPants will be used to convert quotes and dashes to
138 # If true, SmartyPants will be used to convert quotes and dashes to
139 # typographically correct entities.
139 # typographically correct entities.
140 #html_use_smartypants = True
140 #html_use_smartypants = True
141
141
142 # Custom sidebar templates, maps document names to template names.
142 # Custom sidebar templates, maps document names to template names.
143 #html_sidebars = {}
143 #html_sidebars = {}
144
144
145 # Additional templates that should be rendered to pages, maps page names to
145 # Additional templates that should be rendered to pages, maps page names to
146 # template names.
146 # template names.
147 #html_additional_pages = {}
147 #html_additional_pages = {}
148
148
149 # If false, no module index is generated.
149 # If false, no module index is generated.
150 #html_domain_indices = True
150 #html_domain_indices = True
151
151
152 # If false, no index is generated.
152 # If false, no index is generated.
153 #html_use_index = True
153 #html_use_index = True
154
154
155 # If true, the index is split into individual pages for each letter.
155 # If true, the index is split into individual pages for each letter.
156 #html_split_index = False
156 #html_split_index = False
157
157
158 # If true, links to the reST sources are added to the pages.
158 # If true, links to the reST sources are added to the pages.
159 #html_show_sourcelink = True
159 #html_show_sourcelink = True
160
160
161 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
161 # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
162 #html_show_sphinx = True
162 #html_show_sphinx = True
163
163
164 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
164 # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
165 #html_show_copyright = True
165 #html_show_copyright = True
166
166
167 # If true, an OpenSearch description file will be output, and all pages will
167 # If true, an OpenSearch description file will be output, and all pages will
168 # contain a <link> tag referring to it. The value of this option must be the
168 # contain a <link> tag referring to it. The value of this option must be the
169 # base URL from which the finished HTML is served.
169 # base URL from which the finished HTML is served.
170 #html_use_opensearch = ''
170 #html_use_opensearch = ''
171
171
172 # This is the file name suffix for HTML files (e.g. ".xhtml").
172 # This is the file name suffix for HTML files (e.g. ".xhtml").
173 #html_file_suffix = None
173 #html_file_suffix = None
174
174
175 # Output file base name for HTML help builder.
175 # Output file base name for HTML help builder.
176 htmlhelp_basename = 'Kallithea-docs'
176 htmlhelp_basename = 'Kallithea-docs'
177
177
178
178
179 # -- Options for LaTeX output --------------------------------------------------
179 # -- Options for LaTeX output --------------------------------------------------
180
180
181 # The paper size ('letter' or 'a4').
181 # The paper size ('letter' or 'a4').
182 #latex_paper_size = 'letter'
182 #latex_paper_size = 'letter'
183
183
184 # The font size ('10pt', '11pt' or '12pt').
184 # The font size ('10pt', '11pt' or '12pt').
185 #latex_font_size = '10pt'
185 #latex_font_size = '10pt'
186
186
187 # Grouping the document tree into LaTeX files. List of tuples
187 # Grouping the document tree into LaTeX files. List of tuples
188 # (source start file, target name, title, author, documentclass [howto/manual]).
188 # (source start file, target name, title, author, documentclass [howto/manual]).
189 latex_documents = [
189 latex_documents = [
190 ('index', 'Kallithea.tex', 'Kallithea Documentation',
190 ('index', 'Kallithea.tex', 'Kallithea Documentation',
191 'Kallithea Developers', 'manual'),
191 'Kallithea Developers', 'manual'),
192 ]
192 ]
193
193
194 # The name of an image file (relative to this directory) to place at the top of
194 # The name of an image file (relative to this directory) to place at the top of
195 # the title page.
195 # the title page.
196 #latex_logo = None
196 #latex_logo = None
197
197
198 # For "manual" documents, if this is true, then toplevel headings are parts,
198 # For "manual" documents, if this is true, then toplevel headings are parts,
199 # not chapters.
199 # not chapters.
200 #latex_use_parts = False
200 #latex_use_parts = False
201
201
202 # If true, show page references after internal links.
202 # If true, show page references after internal links.
203 #latex_show_pagerefs = False
203 #latex_show_pagerefs = False
204
204
205 # If true, show URL addresses after external links.
205 # If true, show URL addresses after external links.
206 #latex_show_urls = False
206 #latex_show_urls = False
207
207
208 # Additional stuff for the LaTeX preamble.
208 # Additional stuff for the LaTeX preamble.
209 #latex_preamble = ''
209 #latex_preamble = ''
210
210
211 # Documents to append as an appendix to all manuals.
211 # Documents to append as an appendix to all manuals.
212 #latex_appendices = []
212 #latex_appendices = []
213
213
214 # If false, no module index is generated.
214 # If false, no module index is generated.
215 #latex_domain_indices = True
215 #latex_domain_indices = True
216
216
217
217
218 # -- Options for manual page output --------------------------------------------
218 # -- Options for manual page output --------------------------------------------
219
219
220 # One entry per manual page. List of tuples
220 # One entry per manual page. List of tuples
221 # (source start file, name, description, authors, manual section).
221 # (source start file, name, description, authors, manual section).
222 man_pages = [
222 man_pages = [
223 ('index', 'kallithea', 'Kallithea Documentation',
223 ('index', 'kallithea', 'Kallithea Documentation',
224 ['Kallithea Developers'], 1)
224 ['Kallithea Developers'], 1)
225 ]
225 ]
226
226
227
227
228 # Example configuration for intersphinx: refer to the Python standard library.
228 # Example configuration for intersphinx: refer to the Python standard library.
229 intersphinx_mapping = {'http://docs.python.org/': None}
229 intersphinx_mapping = {'http://docs.python.org/': None}
@@ -1,397 +1,397 b''
1 .. _contributing:
1 .. _contributing:
2
2
3 =========================
3 =========================
4 Contributing to Kallithea
4 Contributing to Kallithea
5 =========================
5 =========================
6
6
7 Kallithea is developed and maintained by its users. Please join us and scratch
7 Kallithea is developed and maintained by its users. Please join us and scratch
8 your own itch.
8 your own itch.
9
9
10
10
11 Infrastructure
11 Infrastructure
12 --------------
12 --------------
13
13
14 The main repository is hosted on Our Own Kallithea (aka OOK) at
14 The main repository is hosted on Our Own Kallithea (aka OOK) at
15 https://kallithea-scm.org/repos/kallithea/, our self-hosted instance
15 https://kallithea-scm.org/repos/kallithea/, our self-hosted instance
16 of Kallithea.
16 of Kallithea.
17
17
18 Please use the `mailing list`_ to send patches or report issues.
18 Please use the `mailing list`_ to send patches or report issues.
19
19
20 We use Weblate_ to translate the user interface messages into languages other
20 We use Weblate_ to translate the user interface messages into languages other
21 than English. Join our project on `Hosted Weblate`_ to help us.
21 than English. Join our project on `Hosted Weblate`_ to help us.
22 To register, you can use your Bitbucket or GitHub account. See :ref:`translations`
22 To register, you can use your Bitbucket or GitHub account. See :ref:`translations`
23 for more details.
23 for more details.
24
24
25
25
26 Getting started
26 Getting started
27 ---------------
27 ---------------
28
28
29 To get started with Kallithea development run the following commands in your
29 To get started with Kallithea development run the following commands in your
30 bash shell::
30 bash shell::
31
31
32 hg clone https://kallithea-scm.org/repos/kallithea
32 hg clone https://kallithea-scm.org/repos/kallithea
33 cd kallithea
33 cd kallithea
34 python3 -m venv venv
34 python3 -m venv venv
35 . venv/bin/activate
35 . venv/bin/activate
36 pip install --upgrade pip setuptools
36 pip install --upgrade "pip<24.1" "setuptools<67"
37 pip install --upgrade -e . -r dev_requirements.txt python-ldap python-pam
37 pip install --upgrade -e . -r dev_requirements.txt python-ldap python-pam
38 kallithea-cli config-create my.ini
38 kallithea-cli config-create my.ini
39 kallithea-cli db-create -c my.ini --user=user --email=user@example.com --password=password --repos=/tmp
39 kallithea-cli db-create -c my.ini --user=user --email=user@example.com --password=password --repos=/tmp
40 kallithea-cli front-end-build
40 kallithea-cli front-end-build
41 gearbox serve -c my.ini --reload &
41 gearbox serve -c my.ini --reload &
42 firefox http://127.0.0.1:5000/
42 firefox http://127.0.0.1:5000/
43
43
44
44
45 Contribution flow
45 Contribution flow
46 -----------------
46 -----------------
47
47
48 Starting from an existing Kallithea clone, make sure it is up to date with the
48 Starting from an existing Kallithea clone, make sure it is up to date with the
49 latest upstream changes::
49 latest upstream changes::
50
50
51 hg pull
51 hg pull
52 hg update
52 hg update
53
53
54 Review the :ref:`contributing-guidelines` and :ref:`coding-guidelines`.
54 Review the :ref:`contributing-guidelines` and :ref:`coding-guidelines`.
55
55
56 If you are new to Mercurial, refer to Mercurial `Quick Start`_ and `Beginners
56 If you are new to Mercurial, refer to Mercurial `Quick Start`_ and `Beginners
57 Guide`_ on the Mercurial wiki.
57 Guide`_ on the Mercurial wiki.
58
58
59 Now, make some changes and test them (see :ref:`contributing-tests`). Don't
59 Now, make some changes and test them (see :ref:`contributing-tests`). Don't
60 forget to add new tests to cover new functionality or bug fixes.
60 forget to add new tests to cover new functionality or bug fixes.
61
61
62 For documentation changes, run ``make html`` from the ``docs`` directory to
62 For documentation changes, run ``make html`` from the ``docs`` directory to
63 generate the HTML result, then review them in your browser.
63 generate the HTML result, then review them in your browser.
64
64
65 Before submitting any changes, run the cleanup script::
65 Before submitting any changes, run the cleanup script::
66
66
67 ./scripts/run-all-cleanup
67 ./scripts/run-all-cleanup
68
68
69 When you are completely ready, you can send your changes to the community for
69 When you are completely ready, you can send your changes to the community for
70 review and inclusion, via the mailing list (via ``hg email``).
70 review and inclusion, via the mailing list (via ``hg email``).
71
71
72 .. _contributing-tests:
72 .. _contributing-tests:
73
73
74
74
75 Internal dependencies
75 Internal dependencies
76 ---------------------
76 ---------------------
77
77
78 We try to keep the code base clean and modular and avoid circular dependencies.
78 We try to keep the code base clean and modular and avoid circular dependencies.
79 Code should only invoke code in layers below itself.
79 Code should only invoke code in layers below itself.
80
80
81 Imports should import whole modules ``from`` their parent module, perhaps
81 Imports should import whole modules ``from`` their parent module, perhaps
82 ``as`` a shortened name. Avoid imports ``from`` modules.
82 ``as`` a shortened name. Avoid imports ``from`` modules.
83
83
84 To avoid cycles and partially initialized modules, ``__init__.py`` should *not*
84 To avoid cycles and partially initialized modules, ``__init__.py`` should *not*
85 contain any non-trivial imports. The top level of a module should *not* be a
85 contain any non-trivial imports. The top level of a module should *not* be a
86 facade for the module functionality.
86 facade for the module functionality.
87
87
88 Common code for a module is often in ``base.py``.
88 Common code for a module is often in ``base.py``.
89
89
90 The important part of the dependency graph is approximately linear. In the
90 The important part of the dependency graph is approximately linear. In the
91 following list, modules may only depend on modules below them:
91 following list, modules may only depend on modules below them:
92
92
93 ``tests``
93 ``tests``
94 Just get the job done - anything goes.
94 Just get the job done - anything goes.
95
95
96 ``bin/`` & ``config/`` & ``alembic/``
96 ``bin/`` & ``config/`` & ``alembic/``
97 The main entry points, defined in ``setup.py``. Note: The TurboGears template
97 The main entry points, defined in ``setup.py``. Note: The TurboGears template
98 use ``config`` for the high WSGI application - this is not for low level
98 use ``config`` for the high WSGI application - this is not for low level
99 configuration.
99 configuration.
100
100
101 ``controllers/``
101 ``controllers/``
102 The top level web application, with TurboGears using the ``root`` controller
102 The top level web application, with TurboGears using the ``root`` controller
103 as entry point, and ``routing`` dispatching to other controllers.
103 as entry point, and ``routing`` dispatching to other controllers.
104
104
105 ``templates/**.html``
105 ``templates/**.html``
106 The "view", rendering to HTML. Invoked by controllers which can pass them
106 The "view", rendering to HTML. Invoked by controllers which can pass them
107 anything from lower layers - especially ``helpers`` available as ``h`` will
107 anything from lower layers - especially ``helpers`` available as ``h`` will
108 cut through all layers, and ``c`` gives access to global variables.
108 cut through all layers, and ``c`` gives access to global variables.
109
109
110 ``lib/helpers.py``
110 ``lib/helpers.py``
111 High level helpers, exposing everything to templates as ``h``. It depends on
111 High level helpers, exposing everything to templates as ``h``. It depends on
112 everything and has a huge dependency chain, so it should not be used for
112 everything and has a huge dependency chain, so it should not be used for
113 anything else. TODO.
113 anything else. TODO.
114
114
115 ``controllers/base.py``
115 ``controllers/base.py``
116 The base class of controllers, with lots of model knowledge.
116 The base class of controllers, with lots of model knowledge.
117
117
118 ``lib/auth.py``
118 ``lib/auth.py``
119 All things related to authentication. TODO.
119 All things related to authentication. TODO.
120
120
121 ``lib/utils.py``
121 ``lib/utils.py``
122 High level utils with lots of model knowledge. TODO.
122 High level utils with lots of model knowledge. TODO.
123
123
124 ``lib/hooks.py``
124 ``lib/hooks.py``
125 Hooks into "everything" to give centralized logging to database, cache
125 Hooks into "everything" to give centralized logging to database, cache
126 invalidation, and extension handling. TODO.
126 invalidation, and extension handling. TODO.
127
127
128 ``model/``
128 ``model/``
129 Convenience business logic wrappers around database models.
129 Convenience business logic wrappers around database models.
130
130
131 ``model/db.py``
131 ``model/db.py``
132 Defines the database schema and provides some additional logic.
132 Defines the database schema and provides some additional logic.
133
133
134 ``model/scm.py``
134 ``model/scm.py``
135 All things related to anything. TODO.
135 All things related to anything. TODO.
136
136
137 SQLAlchemy
137 SQLAlchemy
138 Database session and transaction in thread-local variables.
138 Database session and transaction in thread-local variables.
139
139
140 ``lib/utils2.py``
140 ``lib/utils2.py``
141 Low level utils specific to Kallithea.
141 Low level utils specific to Kallithea.
142
142
143 ``lib/webutils.py``
143 ``lib/webutils.py``
144 Low level generic utils with awareness of the TurboGears environment.
144 Low level generic utils with awareness of the TurboGears environment.
145
145
146 TurboGears
146 TurboGears
147 Request, response and state like i18n gettext in thread-local variables.
147 Request, response and state like i18n gettext in thread-local variables.
148 External dependency with global state - usage should be minimized.
148 External dependency with global state - usage should be minimized.
149
149
150 ``lib/vcs/``
150 ``lib/vcs/``
151 Previously an independent library. No awareness of web, database, or state.
151 Previously an independent library. No awareness of web, database, or state.
152
152
153 ``lib/*``
153 ``lib/*``
154 Various "pure" functionality not depending on anything else.
154 Various "pure" functionality not depending on anything else.
155
155
156 ``__init__``
156 ``__init__``
157 Very basic Kallithea constants - some of them are set very early based on ``.ini``.
157 Very basic Kallithea constants - some of them are set very early based on ``.ini``.
158
158
159 This is not exactly how it is right now, but we aim for something like that.
159 This is not exactly how it is right now, but we aim for something like that.
160 Especially the areas marked as TODO have some problems that need untangling.
160 Especially the areas marked as TODO have some problems that need untangling.
161
161
162
162
163 Running tests
163 Running tests
164 -------------
164 -------------
165
165
166 After finishing your changes make sure all tests pass cleanly. Run the testsuite
166 After finishing your changes make sure all tests pass cleanly. Run the testsuite
167 by invoking ``py.test`` from the project root::
167 by invoking ``py.test`` from the project root::
168
168
169 py.test
169 py.test
170
170
171 Note that on unix systems, the temporary directory (``/tmp`` or where
171 Note that on unix systems, the temporary directory (``/tmp`` or where
172 ``$TMPDIR`` points) must allow executable files; Git hooks must be executable,
172 ``$TMPDIR`` points) must allow executable files; Git hooks must be executable,
173 and the test suite creates repositories in the temporary directory. Linux
173 and the test suite creates repositories in the temporary directory. Linux
174 systems with /tmp mounted noexec will thus fail.
174 systems with /tmp mounted noexec will thus fail.
175
175
176 Tests can be run on PostgreSQL like::
176 Tests can be run on PostgreSQL like::
177
177
178 sudo -u postgres createuser 'kallithea-test' --pwprompt # password password
178 sudo -u postgres createuser 'kallithea-test' --pwprompt # password password
179 sudo -u postgres createdb 'kallithea-test' --owner 'kallithea-test'
179 sudo -u postgres createdb 'kallithea-test' --owner 'kallithea-test'
180 REUSE_TEST_DB='postgresql://kallithea-test:password@localhost/kallithea-test' py.test
180 REUSE_TEST_DB='postgresql://kallithea-test:password@localhost/kallithea-test' py.test
181
181
182 Tests can be run on MariaDB/MySQL like::
182 Tests can be run on MariaDB/MySQL like::
183
183
184 echo "GRANT ALL PRIVILEGES ON \`kallithea-test\`.* TO 'kallithea-test'@'localhost' IDENTIFIED BY 'password'" | sudo -u mysql mysql
184 echo "GRANT ALL PRIVILEGES ON \`kallithea-test\`.* TO 'kallithea-test'@'localhost' IDENTIFIED BY 'password'" | sudo -u mysql mysql
185 TEST_DB='mysql://kallithea-test:password@localhost/kallithea-test?charset=utf8mb4' py.test
185 TEST_DB='mysql://kallithea-test:password@localhost/kallithea-test?charset=utf8mb4' py.test
186
186
187 You can also use ``tox`` to run the tests with all supported Python versions.
187 You can also use ``tox`` to run the tests with all supported Python versions.
188
188
189 When running tests, Kallithea generates a `test.ini` based on template values
189 When running tests, Kallithea generates a `test.ini` based on template values
190 in `kallithea/tests/conftest.py` and populates the SQLite database specified
190 in `kallithea/tests/conftest.py` and populates the SQLite database specified
191 there.
191 there.
192
192
193 It is possible to avoid recreating the full test database on each invocation of
193 It is possible to avoid recreating the full test database on each invocation of
194 the tests, thus eliminating the initial delay. To achieve this, run the tests as::
194 the tests, thus eliminating the initial delay. To achieve this, run the tests as::
195
195
196 gearbox serve -c /tmp/kallithea-test-XXX/test.ini --pid-file=test.pid --daemon
196 gearbox serve -c /tmp/kallithea-test-XXX/test.ini --pid-file=test.pid --daemon
197 KALLITHEA_WHOOSH_TEST_DISABLE=1 KALLITHEA_NO_TMP_PATH=1 py.test
197 KALLITHEA_WHOOSH_TEST_DISABLE=1 KALLITHEA_NO_TMP_PATH=1 py.test
198 kill -9 $(cat test.pid)
198 kill -9 $(cat test.pid)
199
199
200 In these commands, the following variables are used::
200 In these commands, the following variables are used::
201
201
202 KALLITHEA_WHOOSH_TEST_DISABLE=1 - skip whoosh index building and tests
202 KALLITHEA_WHOOSH_TEST_DISABLE=1 - skip whoosh index building and tests
203 KALLITHEA_NO_TMP_PATH=1 - disable new temp path for tests, used mostly for testing_vcs_operations
203 KALLITHEA_NO_TMP_PATH=1 - disable new temp path for tests, used mostly for testing_vcs_operations
204
204
205 You can run individual tests by specifying their path as argument to py.test.
205 You can run individual tests by specifying their path as argument to py.test.
206 py.test also has many more options, see `py.test -h`. Some useful options
206 py.test also has many more options, see `py.test -h`. Some useful options
207 are::
207 are::
208
208
209 -k EXPRESSION only run tests which match the given substring
209 -k EXPRESSION only run tests which match the given substring
210 expression. An expression is a python evaluable
210 expression. An expression is a python evaluable
211 expression where all names are substring-matched
211 expression where all names are substring-matched
212 against test names and their parent classes. Example:
212 against test names and their parent classes. Example:
213 -x, --exitfirst exit instantly on first error or failed test.
213 -x, --exitfirst exit instantly on first error or failed test.
214 --lf rerun only the tests that failed at the last run (or
214 --lf rerun only the tests that failed at the last run (or
215 all if none failed)
215 all if none failed)
216 --ff run all tests but run the last failures first. This
216 --ff run all tests but run the last failures first. This
217 may re-order tests and thus lead to repeated fixture
217 may re-order tests and thus lead to repeated fixture
218 setup/teardown
218 setup/teardown
219 --pdb start the interactive Python debugger on errors.
219 --pdb start the interactive Python debugger on errors.
220 -s, --capture=no don't capture stdout (any stdout output will be
220 -s, --capture=no don't capture stdout (any stdout output will be
221 printed immediately)
221 printed immediately)
222
222
223 Performance tests
223 Performance tests
224 ^^^^^^^^^^^^^^^^^
224 ^^^^^^^^^^^^^^^^^
225
225
226 A number of performance tests are present in the test suite, but they are
226 A number of performance tests are present in the test suite, but they are
227 not run in a standard test run. These tests are useful to
227 not run in a standard test run. These tests are useful to
228 evaluate the impact of certain code changes with respect to performance.
228 evaluate the impact of certain code changes with respect to performance.
229
229
230 To run these tests::
230 To run these tests::
231
231
232 env TEST_PERFORMANCE=1 py.test kallithea/tests/performance
232 env TEST_PERFORMANCE=1 py.test kallithea/tests/performance
233
233
234 To analyze performance, you could install pytest-profiling_, which enables the
234 To analyze performance, you could install pytest-profiling_, which enables the
235 --profile and --profile-svg options to py.test.
235 --profile and --profile-svg options to py.test.
236
236
237 .. _pytest-profiling: https://github.com/manahl/pytest-plugins/tree/master/pytest-profiling
237 .. _pytest-profiling: https://github.com/manahl/pytest-plugins/tree/master/pytest-profiling
238
238
239 .. _contributing-guidelines:
239 .. _contributing-guidelines:
240
240
241
241
242 Contribution guidelines
242 Contribution guidelines
243 -----------------------
243 -----------------------
244
244
245 Kallithea is GPLv3 and we assume all contributions are made by the
245 Kallithea is GPLv3 and we assume all contributions are made by the
246 committer/contributor and under GPLv3 unless explicitly stated. We do care a
246 committer/contributor and under GPLv3 unless explicitly stated. We do care a
247 lot about preservation of copyright and license information for existing code
247 lot about preservation of copyright and license information for existing code
248 that is brought into the project.
248 that is brought into the project.
249
249
250 Contributions will be accepted in most formats -- such as commits hosted on your
250 Contributions will be accepted in most formats -- such as commits hosted on your
251 own Kallithea instance, or patches sent by email to the `kallithea-general`_
251 own Kallithea instance, or patches sent by email to the `kallithea-general`_
252 mailing list.
252 mailing list.
253
253
254 Make sure to test your changes both manually and with the automatic tests
254 Make sure to test your changes both manually and with the automatic tests
255 before posting.
255 before posting.
256
256
257 We care about quality and review and keeping a clean repository history. We
257 We care about quality and review and keeping a clean repository history. We
258 might give feedback that requests polishing contributions until they are
258 might give feedback that requests polishing contributions until they are
259 "perfect". We might also rebase and collapse and make minor adjustments to your
259 "perfect". We might also rebase and collapse and make minor adjustments to your
260 changes when we apply them.
260 changes when we apply them.
261
261
262 We try to make sure we have consensus on the direction the project is taking.
262 We try to make sure we have consensus on the direction the project is taking.
263 Everything non-sensitive should be discussed in public -- preferably on the
263 Everything non-sensitive should be discussed in public -- preferably on the
264 mailing list. We aim at having all non-trivial changes reviewed by at least
264 mailing list. We aim at having all non-trivial changes reviewed by at least
265 one other core developer before pushing. Obvious non-controversial changes will
265 one other core developer before pushing. Obvious non-controversial changes will
266 be handled more casually.
266 be handled more casually.
267
267
268 There is a main development branch ("default") which is generally stable so that
268 There is a main development branch ("default") which is generally stable so that
269 it can be (and is) used in production. There is also a "stable" branch that is
269 it can be (and is) used in production. There is also a "stable" branch that is
270 almost exclusively reserved for bug fixes or trivial changes. Experimental
270 almost exclusively reserved for bug fixes or trivial changes. Experimental
271 changes should live elsewhere (for example in a pull request) until they are
271 changes should live elsewhere (for example in a pull request) until they are
272 ready.
272 ready.
273
273
274 .. _coding-guidelines:
274 .. _coding-guidelines:
275
275
276
276
277 Coding guidelines
277 Coding guidelines
278 -----------------
278 -----------------
279
279
280 We don't have a formal coding/formatting standard. We are currently using a mix
280 We don't have a formal coding/formatting standard. We are currently using a mix
281 of Mercurial's (https://www.mercurial-scm.org/wiki/CodingStyle), pep8, and
281 of Mercurial's (https://www.mercurial-scm.org/wiki/CodingStyle), pep8, and
282 consistency with existing code. Run ``scripts/run-all-cleanup`` before
282 consistency with existing code. Run ``scripts/run-all-cleanup`` before
283 committing to ensure some basic code formatting consistency.
283 committing to ensure some basic code formatting consistency.
284
284
285 We support Python 3.6 and later.
285 We support Python 3.6 and later.
286
286
287 We try to support the most common modern web browsers. IE9 is still supported
287 We try to support the most common modern web browsers. IE9 is still supported
288 to the extent it is feasible, IE8 is not.
288 to the extent it is feasible, IE8 is not.
289
289
290 We primarily support Linux and OS X on the server side but Windows should also work.
290 We primarily support Linux and OS X on the server side but Windows should also work.
291
291
292 HTML templates should use 2 spaces for indentation ... but be pragmatic. We
292 HTML templates should use 2 spaces for indentation ... but be pragmatic. We
293 should use templates cleverly and avoid duplication. We should use reasonable
293 should use templates cleverly and avoid duplication. We should use reasonable
294 semantic markup with element classes and IDs that can be used for styling and testing.
294 semantic markup with element classes and IDs that can be used for styling and testing.
295 We should only use inline styles in places where it really is semantic (such as
295 We should only use inline styles in places where it really is semantic (such as
296 ``display: none``).
296 ``display: none``).
297
297
298 JavaScript must use ``;`` between/after statements. Indentation 4 spaces. Inline
298 JavaScript must use ``;`` between/after statements. Indentation 4 spaces. Inline
299 multiline functions should be indented two levels -- one for the ``()`` and one for
299 multiline functions should be indented two levels -- one for the ``()`` and one for
300 ``{}``.
300 ``{}``.
301 Variables holding jQuery objects should be named with a leading ``$``.
301 Variables holding jQuery objects should be named with a leading ``$``.
302
302
303 Commit messages should have a leading short line summarizing the changes. For
303 Commit messages should have a leading short line summarizing the changes. For
304 bug fixes, put ``(Issue #123)`` at the end of this line.
304 bug fixes, put ``(Issue #123)`` at the end of this line.
305
305
306 Use American English grammar and spelling overall. Use `English title case`_ for
306 Use American English grammar and spelling overall. Use `English title case`_ for
307 page titles, button labels, headers, and 'labels' for fields in forms.
307 page titles, button labels, headers, and 'labels' for fields in forms.
308
308
309 .. _English title case: https://en.wikipedia.org/wiki/Capitalization#Title_case
309 .. _English title case: https://en.wikipedia.org/wiki/Capitalization#Title_case
310
310
311 Template helpers (that is, everything in ``kallithea.lib.helpers``)
311 Template helpers (that is, everything in ``kallithea.lib.helpers``)
312 should only be referenced from templates. If you need to call a
312 should only be referenced from templates. If you need to call a
313 helper from the Python code, consider moving the function somewhere
313 helper from the Python code, consider moving the function somewhere
314 else (e.g. to the model).
314 else (e.g. to the model).
315
315
316 Notes on the SQLAlchemy session
316 Notes on the SQLAlchemy session
317 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
317 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
318
318
319 Each HTTP request runs inside an independent SQLAlchemy session (as well
319 Each HTTP request runs inside an independent SQLAlchemy session (as well
320 as in an independent database transaction). ``Session`` is the session manager
320 as in an independent database transaction). ``Session`` is the session manager
321 and factory. ``Session()`` will create a new session on-demand or return the
321 and factory. ``Session()`` will create a new session on-demand or return the
322 current session for the active thread. Many database operations are methods on
322 current session for the active thread. Many database operations are methods on
323 such session instances. The session will generally be removed by
323 such session instances. The session will generally be removed by
324 TurboGears automatically.
324 TurboGears automatically.
325
325
326 Database model objects
326 Database model objects
327 (almost) always belong to a particular SQLAlchemy session, which means
327 (almost) always belong to a particular SQLAlchemy session, which means
328 that SQLAlchemy will ensure that they're kept in sync with the database
328 that SQLAlchemy will ensure that they're kept in sync with the database
329 (but also means that they cannot be shared across requests).
329 (but also means that they cannot be shared across requests).
330
330
331 Objects can be added to the session using ``Session().add``, but this is
331 Objects can be added to the session using ``Session().add``, but this is
332 rarely needed:
332 rarely needed:
333
333
334 * When creating a database object by calling the constructor directly,
334 * When creating a database object by calling the constructor directly,
335 it must explicitly be added to the session.
335 it must explicitly be added to the session.
336
336
337 * When creating an object using a factory function (like
337 * When creating an object using a factory function (like
338 ``create_repo``), the returned object has already (by convention)
338 ``create_repo``), the returned object has already (by convention)
339 been added to the session, and should not be added again.
339 been added to the session, and should not be added again.
340
340
341 * When getting an object from the session (via ``Session().query`` or
341 * When getting an object from the session (via ``Session().query`` or
342 any of the utility functions that look up objects in the database),
342 any of the utility functions that look up objects in the database),
343 it's already part of the session, and should not be added again.
343 it's already part of the session, and should not be added again.
344 SQLAlchemy monitors attribute modifications automatically for all
344 SQLAlchemy monitors attribute modifications automatically for all
345 objects it knows about and syncs them to the database.
345 objects it knows about and syncs them to the database.
346
346
347 SQLAlchemy also flushes changes to the database automatically; manually
347 SQLAlchemy also flushes changes to the database automatically; manually
348 calling ``Session().flush`` is usually only necessary when the Python
348 calling ``Session().flush`` is usually only necessary when the Python
349 code needs the database to assign an "auto-increment" primary key ID to
349 code needs the database to assign an "auto-increment" primary key ID to
350 a freshly created model object (before flushing, the ID attribute will
350 a freshly created model object (before flushing, the ID attribute will
351 be ``None``).
351 be ``None``).
352
352
353 Debugging
353 Debugging
354 ^^^^^^^^^
354 ^^^^^^^^^
355
355
356 A good way to trace what Kallithea is doing is to keep an eye on the output on
356 A good way to trace what Kallithea is doing is to keep an eye on the output on
357 stdout/stderr of the server process. Perhaps change ``my.ini`` to log at
357 stdout/stderr of the server process. Perhaps change ``my.ini`` to log at
358 ``DEBUG`` or ``INFO`` level, especially ``[logger_kallithea]``, but perhaps
358 ``DEBUG`` or ``INFO`` level, especially ``[logger_kallithea]``, but perhaps
359 also other loggers. It is often easier to add additional ``log`` or ``print``
359 also other loggers. It is often easier to add additional ``log`` or ``print``
360 statements than to use a Python debugger.
360 statements than to use a Python debugger.
361
361
362 Sometimes it is simpler to disable ``errorpage.enabled`` and perhaps also
362 Sometimes it is simpler to disable ``errorpage.enabled`` and perhaps also
363 ``trace_errors.enable`` to expose raw errors instead of adding extra
363 ``trace_errors.enable`` to expose raw errors instead of adding extra
364 processing. Enabling ``debug`` can be helpful for showing and exploring
364 processing. Enabling ``debug`` can be helpful for showing and exploring
365 tracebacks in the browser, but is also insecure and will add extra processing.
365 tracebacks in the browser, but is also insecure and will add extra processing.
366
366
367 TurboGears2 DebugBar
367 TurboGears2 DebugBar
368 ^^^^^^^^^^^^^^^^^^^^
368 ^^^^^^^^^^^^^^^^^^^^
369
369
370 It is possible to enable the TurboGears2-provided DebugBar_, a toolbar overlayed
370 It is possible to enable the TurboGears2-provided DebugBar_, a toolbar overlayed
371 over the Kallithea web interface, allowing you to see:
371 over the Kallithea web interface, allowing you to see:
372
372
373 * timing information of the current request, including profiling information
373 * timing information of the current request, including profiling information
374 * request data, including GET data, POST data, cookies, headers and environment
374 * request data, including GET data, POST data, cookies, headers and environment
375 variables
375 variables
376 * a list of executed database queries, including timing and result values
376 * a list of executed database queries, including timing and result values
377
377
378 DebugBar is only activated when ``debug = true`` is set in the configuration
378 DebugBar is only activated when ``debug = true`` is set in the configuration
379 file. This is important, because the DebugBar toolbar will be visible for all
379 file. This is important, because the DebugBar toolbar will be visible for all
380 users, and allow them to see information they should not be allowed to see. Like
380 users, and allow them to see information they should not be allowed to see. Like
381 is anyway the case for ``debug = true``, do not use this in production!
381 is anyway the case for ``debug = true``, do not use this in production!
382
382
383 To enable DebugBar, install ``tgext.debugbar`` and ``kajiki`` (typically via
383 To enable DebugBar, install ``tgext.debugbar`` and ``kajiki`` (typically via
384 ``pip``) and restart Kallithea (in debug mode).
384 ``pip``) and restart Kallithea (in debug mode).
385
385
386
386
387 Thank you for your contribution!
387 Thank you for your contribution!
388 --------------------------------
388 --------------------------------
389
389
390
390
391 .. _Weblate: http://weblate.org/
391 .. _Weblate: http://weblate.org/
392 .. _mailing list: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
392 .. _mailing list: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
393 .. _kallithea-general: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
393 .. _kallithea-general: http://lists.sfconservancy.org/mailman/listinfo/kallithea-general
394 .. _Hosted Weblate: https://hosted.weblate.org/projects/kallithea/kallithea/
394 .. _Hosted Weblate: https://hosted.weblate.org/projects/kallithea/kallithea/
395 .. _DebugBar: https://github.com/TurboGears/tgext.debugbar
395 .. _DebugBar: https://github.com/TurboGears/tgext.debugbar
396 .. _Quick Start: https://www.mercurial-scm.org/wiki/QuickStart
396 .. _Quick Start: https://www.mercurial-scm.org/wiki/QuickStart
397 .. _Beginners Guide: https://www.mercurial-scm.org/wiki/BeginnersGuides
397 .. _Beginners Guide: https://www.mercurial-scm.org/wiki/BeginnersGuides
@@ -1,144 +1,144 b''
1 .. _installation:
1 .. _installation:
2
2
3 ==========================
3 ==========================
4 Installation on Unix/Linux
4 Installation on Unix/Linux
5 ==========================
5 ==========================
6
6
7 The following describes three different ways of installing Kallithea:
7 The following describes three different ways of installing Kallithea:
8
8
9 - :ref:`installation-source`: The simplest way to keep the installation
9 - :ref:`installation-source`: The simplest way to keep the installation
10 up-to-date and track any local customizations is to run directly from
10 up-to-date and track any local customizations is to run directly from
11 source in a Kallithea repository clone, preferably inside a virtualenv
11 source in a Kallithea repository clone, preferably inside a virtualenv
12 virtual Python environment.
12 virtual Python environment.
13
13
14 - :ref:`installation-virtualenv`: If you prefer to only use released versions
14 - :ref:`installation-virtualenv`: If you prefer to only use released versions
15 of Kallithea, the recommended method is to install Kallithea in a virtual
15 of Kallithea, the recommended method is to install Kallithea in a virtual
16 Python environment using `virtualenv`. The advantages of this method over
16 Python environment using `virtualenv`. The advantages of this method over
17 direct installation is that Kallithea and its dependencies are completely
17 direct installation is that Kallithea and its dependencies are completely
18 contained inside the virtualenv (which also means you can have multiple
18 contained inside the virtualenv (which also means you can have multiple
19 installations side by side or remove it entirely by just removing the
19 installations side by side or remove it entirely by just removing the
20 virtualenv directory) and does not require root privileges.
20 virtualenv directory) and does not require root privileges.
21
21
22 - Kallithea can also be installed with plain pip - globally or with ``--user``
22 - Kallithea can also be installed with plain pip - globally or with ``--user``
23 or similar. The package will be installed in the same location as all other
23 or similar. The package will be installed in the same location as all other
24 Python packages you have ever installed. As a result, removing it is not as
24 Python packages you have ever installed. As a result, removing it is not as
25 straightforward as with a virtualenv, as you'd have to remove its
25 straightforward as with a virtualenv, as you'd have to remove its
26 dependencies manually and make sure that they are not needed by other
26 dependencies manually and make sure that they are not needed by other
27 packages. We recommend using virtualenv.
27 packages. We recommend using virtualenv.
28
28
29 Regardless of the installation method you may need to make sure you have
29 Regardless of the installation method you may need to make sure you have
30 appropriate development packages installed, as installation of some of the
30 appropriate development packages installed, as installation of some of the
31 Kallithea dependencies requires a working C compiler and libffi library
31 Kallithea dependencies requires a working C compiler and libffi library
32 headers. Depending on your configuration, you may also need to install
32 headers. Depending on your configuration, you may also need to install
33 Git and development packages for the database of your choice.
33 Git and development packages for the database of your choice.
34
34
35 For Debian and Ubuntu, the following command will ensure that a reasonable
35 For Debian and Ubuntu, the following command will ensure that a reasonable
36 set of dependencies is installed::
36 set of dependencies is installed::
37
37
38 sudo apt-get install build-essential git libffi-dev python3-dev
38 sudo apt-get install build-essential git libffi-dev python3-dev
39
39
40 For Fedora and RHEL-derivatives, the following command will ensure that a
40 For Fedora and RHEL-derivatives, the following command will ensure that a
41 reasonable set of dependencies is installed::
41 reasonable set of dependencies is installed::
42
42
43 sudo yum install gcc git libffi-devel python3-devel
43 sudo yum install gcc git libffi-devel python3-devel
44
44
45 .. _installation-source:
45 .. _installation-source:
46
46
47
47
48 Installation from repository source
48 Installation from repository source
49 -----------------------------------
49 -----------------------------------
50
50
51 To install Kallithea in a virtualenv using the stable branch of the development
51 To install Kallithea in a virtualenv using the stable branch of the development
52 repository, use the following commands in your bash shell::
52 repository, use the following commands in your bash shell::
53
53
54 hg clone https://kallithea-scm.org/repos/kallithea -u stable
54 hg clone https://kallithea-scm.org/repos/kallithea -u stable
55 cd kallithea
55 cd kallithea
56 python3 -m venv venv
56 python3 -m venv venv
57 . venv/bin/activate
57 . venv/bin/activate
58 pip install --upgrade pip setuptools
58 pip install --upgrade "pip<24.1" "setuptools<67"
59 pip install --upgrade -e .
59 pip install --upgrade -e .
60 python3 setup.py compile_catalog # for translation of the UI
60 python3 setup.py compile_catalog # for translation of the UI
61
61
62 .. note::
62 .. note::
63 This will install all Python dependencies into the virtualenv. Kallithea
63 This will install all Python dependencies into the virtualenv. Kallithea
64 itself will however only be installed as a pointer to the source location.
64 itself will however only be installed as a pointer to the source location.
65 The source clone must thus be kept in the same location, and it shouldn't be
65 The source clone must thus be kept in the same location, and it shouldn't be
66 updated to other revisions unless you want to upgrade. Edits in the source
66 updated to other revisions unless you want to upgrade. Edits in the source
67 tree will have immediate impact (possibly after a restart of the service).
67 tree will have immediate impact (possibly after a restart of the service).
68
68
69 You can now proceed to :ref:`prepare-front-end-files`.
69 You can now proceed to :ref:`prepare-front-end-files`.
70
70
71 .. _installation-virtualenv:
71 .. _installation-virtualenv:
72
72
73
73
74 Installing a released version in a virtualenv
74 Installing a released version in a virtualenv
75 ---------------------------------------------
75 ---------------------------------------------
76
76
77 It is highly recommended to use a separate virtualenv for installing Kallithea.
77 It is highly recommended to use a separate virtualenv for installing Kallithea.
78 This way, all libraries required by Kallithea will be installed separately from your
78 This way, all libraries required by Kallithea will be installed separately from your
79 main Python installation and other applications and things will be less
79 main Python installation and other applications and things will be less
80 problematic when upgrading the system or Kallithea.
80 problematic when upgrading the system or Kallithea.
81 An additional benefit of virtualenv is that it doesn't require root privileges.
81 An additional benefit of virtualenv is that it doesn't require root privileges.
82
82
83 - Don't install as root - install as a dedicated user like ``kallithea``.
83 - Don't install as root - install as a dedicated user like ``kallithea``.
84 If necessary, create the top directory for the virtualenv (like
84 If necessary, create the top directory for the virtualenv (like
85 ``/srv/kallithea/venv``) as root and assign ownership to the user.
85 ``/srv/kallithea/venv``) as root and assign ownership to the user.
86
86
87 Make a parent folder for the virtualenv (and perhaps also Kallithea
87 Make a parent folder for the virtualenv (and perhaps also Kallithea
88 configuration and data files) such as ``/srv/kallithea``. Create the
88 configuration and data files) such as ``/srv/kallithea``. Create the
89 directory as root if necessary and grant ownership to the ``kallithea`` user.
89 directory as root if necessary and grant ownership to the ``kallithea`` user.
90
90
91 - Create a new virtual environment, for example in ``/srv/kallithea/venv``,
91 - Create a new virtual environment, for example in ``/srv/kallithea/venv``,
92 specifying the right Python binary::
92 specifying the right Python binary::
93
93
94 python3 -m venv /srv/kallithea/venv
94 python3 -m venv /srv/kallithea/venv
95
95
96 - Activate the virtualenv in your current shell session and make sure the
96 - Activate the virtualenv in your current shell session and make sure the
97 basic requirements are up-to-date by running the following commands in your
97 basic requirements are up-to-date by running the following commands in your
98 bash shell::
98 bash shell::
99
99
100 . /srv/kallithea/venv/bin/activate
100 . /srv/kallithea/venv/bin/activate
101 pip install --upgrade pip setuptools
101 pip install --upgrade "pip<24.1" "setuptools<67"
102
102
103 .. note:: You can't use UNIX ``sudo`` to source the ``activate`` script; it
103 .. note:: You can't use UNIX ``sudo`` to source the ``activate`` script; it
104 will "activate" a shell that terminates immediately.
104 will "activate" a shell that terminates immediately.
105
105
106 - Install Kallithea in the activated virtualenv::
106 - Install Kallithea in the activated virtualenv::
107
107
108 pip install --upgrade kallithea
108 pip install --upgrade kallithea
109
109
110 .. note:: Some dependencies are optional. If you need them, install them in
110 .. note:: Some dependencies are optional. If you need them, install them in
111 the virtualenv too::
111 the virtualenv too::
112
112
113 pip install --upgrade kallithea python-ldap python-pam psycopg2
113 pip install --upgrade kallithea python-ldap python-pam psycopg2
114
114
115 This might require installation of development packages using your
115 This might require installation of development packages using your
116 distribution's package manager.
116 distribution's package manager.
117
117
118 Alternatively, download a .tar.gz from http://pypi.python.org/pypi/Kallithea,
118 Alternatively, download a .tar.gz from http://pypi.python.org/pypi/Kallithea,
119 extract it and install from source by running::
119 extract it and install from source by running::
120
120
121 pip install --upgrade .
121 pip install --upgrade .
122
122
123 - This will install Kallithea together with all other required
123 - This will install Kallithea together with all other required
124 Python libraries into the activated virtualenv.
124 Python libraries into the activated virtualenv.
125
125
126 You can now proceed to :ref:`prepare-front-end-files`.
126 You can now proceed to :ref:`prepare-front-end-files`.
127
127
128 .. _prepare-front-end-files:
128 .. _prepare-front-end-files:
129
129
130
130
131 Prepare front-end files
131 Prepare front-end files
132 -----------------------
132 -----------------------
133
133
134 Finally, the front-end files with CSS and JavaScript must be prepared. This
134 Finally, the front-end files with CSS and JavaScript must be prepared. This
135 depends on having some commands available in the shell search path: ``npm``
135 depends on having some commands available in the shell search path: ``npm``
136 version 6 or later, and ``node.js`` (version 12 or later) available as
136 version 6 or later, and ``node.js`` (version 12 or later) available as
137 ``node``. The installation method for these dependencies varies between
137 ``node``. The installation method for these dependencies varies between
138 operating systems and distributions.
138 operating systems and distributions.
139
139
140 Prepare the front-end by running::
140 Prepare the front-end by running::
141
141
142 kallithea-cli front-end-build
142 kallithea-cli front-end-build
143
143
144 You can now proceed to :ref:`setup`.
144 You can now proceed to :ref:`setup`.
@@ -1,193 +1,193 b''
1 .. _installation_win:
1 .. _installation_win:
2
2
3 .. warning:: This section is outdated and needs updating for Python 3.
3 .. warning:: This section is outdated and needs updating for Python 3.
4
4
5 ====================================================
5 ====================================================
6 Installation on Windows (7/Server 2008 R2 and newer)
6 Installation on Windows (7/Server 2008 R2 and newer)
7 ====================================================
7 ====================================================
8
8
9
9
10 First time install
10 First time install
11 ------------------
11 ------------------
12
12
13 Target OS: Windows 7 and newer or Windows Server 2008 R2 and newer
13 Target OS: Windows 7 and newer or Windows Server 2008 R2 and newer
14
14
15 Tested on Windows 8.1, Windows Server 2008 R2 and Windows Server 2012
15 Tested on Windows 8.1, Windows Server 2008 R2 and Windows Server 2012
16
16
17 To install on an older version of Windows, see `<installation_win_old.html>`_
17 To install on an older version of Windows, see `<installation_win_old.html>`_
18
18
19 Step 1 -- Install Python
19 Step 1 -- Install Python
20 ^^^^^^^^^^^^^^^^^^^^^^^^
20 ^^^^^^^^^^^^^^^^^^^^^^^^
21
21
22 Install Python 3. Latest version is recommended. If you need another version, they can run side by side.
22 Install Python 3. Latest version is recommended. If you need another version, they can run side by side.
23
23
24 - Download Python 3 from http://www.python.org/download/
24 - Download Python 3 from http://www.python.org/download/
25 - Choose and click on the version
25 - Choose and click on the version
26 - Click on "Windows X86-64 Installer" for x64 or "Windows x86 MSI installer" for Win32.
26 - Click on "Windows X86-64 Installer" for x64 or "Windows x86 MSI installer" for Win32.
27 - Disable UAC or run the installer with admin privileges. If you chose to disable UAC, do not forget to reboot afterwards.
27 - Disable UAC or run the installer with admin privileges. If you chose to disable UAC, do not forget to reboot afterwards.
28
28
29 While writing this guide, the latest version was v3.8.1.
29 While writing this guide, the latest version was v3.8.1.
30 Remember the specific major and minor versions installed, because they will
30 Remember the specific major and minor versions installed, because they will
31 be needed in the next step. In this case, it is "3.8".
31 be needed in the next step. In this case, it is "3.8".
32
32
33 Step 2 -- Python BIN
33 Step 2 -- Python BIN
34 ^^^^^^^^^^^^^^^^^^^^
34 ^^^^^^^^^^^^^^^^^^^^
35
35
36 Add Python BIN folder to the path. This can be done manually (editing
36 Add Python BIN folder to the path. This can be done manually (editing
37 "PATH" environment variable) or by using Windows Support Tools that
37 "PATH" environment variable) or by using Windows Support Tools that
38 come pre-installed in Windows Vista/7 and later.
38 come pre-installed in Windows Vista/7 and later.
39
39
40 Open a CMD and type::
40 Open a CMD and type::
41
41
42 SETX PATH "%PATH%;[your-python-path]" /M
42 SETX PATH "%PATH%;[your-python-path]" /M
43
43
44 Please substitute [your-python-path] with your Python installation
44 Please substitute [your-python-path] with your Python installation
45 path. Typically this is ``C:\\Python38``.
45 path. Typically this is ``C:\\Python38``.
46
46
47 Step 3 -- Install pywin32 extensions
47 Step 3 -- Install pywin32 extensions
48 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
48 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
49
49
50 Download pywin32 from:
50 Download pywin32 from:
51 http://sourceforge.net/projects/pywin32/files/
51 http://sourceforge.net/projects/pywin32/files/
52
52
53 - Click on "pywin32" folder
53 - Click on "pywin32" folder
54 - Click on the first folder (in this case, Build 219, maybe newer when you try)
54 - Click on the first folder (in this case, Build 219, maybe newer when you try)
55 - Choose the file ending with ".amd64-py3.x.exe" (".win32-py3.x.exe"
55 - Choose the file ending with ".amd64-py3.x.exe" (".win32-py3.x.exe"
56 for Win32) where x is the minor version of Python you installed.
56 for Win32) where x is the minor version of Python you installed.
57 When writing this guide, the file was:
57 When writing this guide, the file was:
58 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py3.8.exe/download
58 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py3.8.exe/download
59 (x64)
59 (x64)
60 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py3.8.exe/download
60 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py3.8.exe/download
61 (Win32)
61 (Win32)
62
62
63 Step 5 -- Kallithea folder structure
63 Step 5 -- Kallithea folder structure
64 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
64 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
65
65
66 Create a Kallithea folder structure.
66 Create a Kallithea folder structure.
67
67
68 This is only an example to install Kallithea. Of course, you can
68 This is only an example to install Kallithea. Of course, you can
69 change it. However, this guide will follow the proposed structure, so
69 change it. However, this guide will follow the proposed structure, so
70 please later adapt the paths if you change them. Folders without
70 please later adapt the paths if you change them. Folders without
71 spaces are recommended.
71 spaces are recommended.
72
72
73 Create the following folder structure::
73 Create the following folder structure::
74
74
75 C:\Kallithea
75 C:\Kallithea
76 C:\Kallithea\Bin
76 C:\Kallithea\Bin
77 C:\Kallithea\Env
77 C:\Kallithea\Env
78 C:\Kallithea\Repos
78 C:\Kallithea\Repos
79
79
80 Step 6 -- Install virtualenv
80 Step 6 -- Install virtualenv
81 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
81 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
82
82
83 .. note::
83 .. note::
84 A python virtual environment will allow for isolation between the Python packages of your system and those used for Kallithea.
84 A python virtual environment will allow for isolation between the Python packages of your system and those used for Kallithea.
85 It is strongly recommended to use it to ensure that Kallithea does not change a dependency that other software uses or vice versa.
85 It is strongly recommended to use it to ensure that Kallithea does not change a dependency that other software uses or vice versa.
86
86
87 To create a virtual environment, run::
87 To create a virtual environment, run::
88
88
89 python3 -m venv C:\Kallithea\Env
89 python3 -m venv C:\Kallithea\Env
90
90
91 Step 7 -- Install Kallithea
91 Step 7 -- Install Kallithea
92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
93
93
94 In order to install Kallithea, you need to be able to run "pip install kallithea". It will use pip to install the Kallithea Python package and its dependencies.
94 In order to install Kallithea, you need to be able to run "pip install kallithea". It will use pip to install the Kallithea Python package and its dependencies.
95 Some Python packages use managed code and need to be compiled.
95 Some Python packages use managed code and need to be compiled.
96 This can be done on Linux without any special steps. On Windows, you will need to install Microsoft Visual C++ compiler for Python 3.8.
96 This can be done on Linux without any special steps. On Windows, you will need to install Microsoft Visual C++ compiler for Python 3.8.
97
97
98 Download and install "Microsoft Visual C++ Compiler for Python 3.8" from http://aka.ms/vcpython27
98 Download and install "Microsoft Visual C++ Compiler for Python 3.8" from http://aka.ms/vcpython27
99
99
100 .. note::
100 .. note::
101 You can also install the dependencies using already compiled Windows binaries packages. A good source of compiled Python packages is http://www.lfd.uci.edu/~gohlke/pythonlibs/. However, not all of the necessary packages for Kallithea are on this site and some are hard to find, so we will stick with using the compiler.
101 You can also install the dependencies using already compiled Windows binaries packages. A good source of compiled Python packages is http://www.lfd.uci.edu/~gohlke/pythonlibs/. However, not all of the necessary packages for Kallithea are on this site and some are hard to find, so we will stick with using the compiler.
102
102
103 In a command prompt type (adapting paths if necessary)::
103 In a command prompt type (adapting paths if necessary)::
104
104
105 cd C:\Kallithea\Env\Scripts
105 cd C:\Kallithea\Env\Scripts
106 activate
106 activate
107 pip install --upgrade pip setuptools
107 pip install --upgrade "pip<24.1" "setuptools<67"
108
108
109 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
109 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
110 (depending of your folder structure). Then type::
110 (depending of your folder structure). Then type::
111
111
112 pip install kallithea
112 pip install kallithea
113
113
114 .. note:: This will take some time. Please wait patiently until it is fully
114 .. note:: This will take some time. Please wait patiently until it is fully
115 complete. Some warnings will appear. Don't worry, they are
115 complete. Some warnings will appear. Don't worry, they are
116 normal.
116 normal.
117
117
118 Step 8 -- Install Git (optional)
118 Step 8 -- Install Git (optional)
119 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
119 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
120
120
121 Mercurial being a python package, was installed automatically when doing ``pip install kallithea``.
121 Mercurial being a python package, was installed automatically when doing ``pip install kallithea``.
122
122
123 You need to install Git manually if you want Kallithea to be able to host Git repositories.
123 You need to install Git manually if you want Kallithea to be able to host Git repositories.
124 See http://git-scm.com/book/en/v2/Getting-Started-Installing-Git#Installing-on-Windows for instructions.
124 See http://git-scm.com/book/en/v2/Getting-Started-Installing-Git#Installing-on-Windows for instructions.
125 The location of the Git binaries (like ``c:\path\to\git\bin``) must be
125 The location of the Git binaries (like ``c:\path\to\git\bin``) must be
126 added to the ``PATH`` environment variable so ``git.exe`` and other tools like
126 added to the ``PATH`` environment variable so ``git.exe`` and other tools like
127 ``gzip.exe`` are available.
127 ``gzip.exe`` are available.
128
128
129 Step 9 -- Configuring Kallithea
129 Step 9 -- Configuring Kallithea
130 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
130 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
131
131
132 Steps taken from `<setup.html>`_
132 Steps taken from `<setup.html>`_
133
133
134 You have to use the same command prompt as in Step 7, so if you closed
134 You have to use the same command prompt as in Step 7, so if you closed
135 it, reopen it following the same commands (including the "activate"
135 it, reopen it following the same commands (including the "activate"
136 one). When ready, type::
136 one). When ready, type::
137
137
138 cd C:\Kallithea\Bin
138 cd C:\Kallithea\Bin
139 kallithea-cli config-create my.ini
139 kallithea-cli config-create my.ini
140
140
141 Then you must edit my.ini to fit your needs (IP address, IP
141 Then you must edit my.ini to fit your needs (IP address, IP
142 port, mail settings, database, etc.). `NotePad++`__ or a similar text
142 port, mail settings, database, etc.). `NotePad++`__ or a similar text
143 editor is recommended to properly handle the newline character
143 editor is recommended to properly handle the newline character
144 differences between Unix and Windows.
144 differences between Unix and Windows.
145
145
146 __ http://notepad-plus-plus.org/
146 __ http://notepad-plus-plus.org/
147
147
148 For the sake of simplicity, run it with the default settings. After your edits (if any) in the previous command prompt, type::
148 For the sake of simplicity, run it with the default settings. After your edits (if any) in the previous command prompt, type::
149
149
150 kallithea-cli db-create -c my.ini
150 kallithea-cli db-create -c my.ini
151
151
152 .. warning:: This time a *new* database will be installed. You must
152 .. warning:: This time a *new* database will be installed. You must
153 follow a different process to later :ref:`upgrade <upgrade>`
153 follow a different process to later :ref:`upgrade <upgrade>`
154 to a newer Kallithea version.
154 to a newer Kallithea version.
155
155
156 The script will ask you for confirmation about creating a new database, answer yes (y)
156 The script will ask you for confirmation about creating a new database, answer yes (y)
157
157
158 The script will ask you for the repository path, answer C:\\Kallithea\\Repos (or similar).
158 The script will ask you for the repository path, answer C:\\Kallithea\\Repos (or similar).
159
159
160 The script will ask you for the admin username and password, answer "admin" + "123456" (or whatever you want)
160 The script will ask you for the admin username and password, answer "admin" + "123456" (or whatever you want)
161
161
162 The script will ask you for admin mail, answer "admin@xxxx.com" (or whatever you want).
162 The script will ask you for admin mail, answer "admin@xxxx.com" (or whatever you want).
163
163
164 If you make a mistake and the script doesn't end, don't worry: start it again.
164 If you make a mistake and the script doesn't end, don't worry: start it again.
165
165
166 If you decided not to install Git, you will get errors about it that you can ignore.
166 If you decided not to install Git, you will get errors about it that you can ignore.
167
167
168 Step 10 -- Running Kallithea
168 Step 10 -- Running Kallithea
169 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
169 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
170
170
171 In the previous command prompt, being in the C:\\Kallithea\\Bin folder, type::
171 In the previous command prompt, being in the C:\\Kallithea\\Bin folder, type::
172
172
173 gearbox serve -c my.ini
173 gearbox serve -c my.ini
174
174
175 Open your web server, and go to http://127.0.0.1:5000
175 Open your web server, and go to http://127.0.0.1:5000
176
176
177 It works!! :-)
177 It works!! :-)
178
178
179 Remark:
179 Remark:
180 If it does not work the first time, Ctrl-C the CMD process and start it again. Don't forget the "http://" in Internet Explorer.
180 If it does not work the first time, Ctrl-C the CMD process and start it again. Don't forget the "http://" in Internet Explorer.
181
181
182 What this guide does not cover:
182 What this guide does not cover:
183
183
184 - Installing Celery
184 - Installing Celery
185 - Running Kallithea as a Windows Service. You can investigate here:
185 - Running Kallithea as a Windows Service. You can investigate here:
186
186
187 - http://pypi.python.org/pypi/wsgisvc
187 - http://pypi.python.org/pypi/wsgisvc
188 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
188 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
189 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
189 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
190
190
191 - Using Apache. You can investigate here:
191 - Using Apache. You can investigate here:
192
192
193 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
193 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
@@ -1,250 +1,250 b''
1 .. _installation_win_old:
1 .. _installation_win_old:
2
2
3 .. warning:: This section is outdated and needs updating for Python 3.
3 .. warning:: This section is outdated and needs updating for Python 3.
4
4
5 ==========================================================
5 ==========================================================
6 Installation on Windows (XP/Vista/Server 2003/Server 2008)
6 Installation on Windows (XP/Vista/Server 2003/Server 2008)
7 ==========================================================
7 ==========================================================
8
8
9
9
10 First-time install
10 First-time install
11 ------------------
11 ------------------
12
12
13 Target OS: Windows XP SP3 32-bit English (Clean installation)
13 Target OS: Windows XP SP3 32-bit English (Clean installation)
14 + All Windows Updates until 24-may-2012
14 + All Windows Updates until 24-may-2012
15
15
16 .. note::
16 .. note::
17
17
18 This installation is for 32-bit systems, for 64-bit Windows you might need
18 This installation is for 32-bit systems, for 64-bit Windows you might need
19 to download proper 64-bit versions of the different packages (Windows Installer, Win32py extensions)
19 to download proper 64-bit versions of the different packages (Windows Installer, Win32py extensions)
20 plus some extra tweaks.
20 plus some extra tweaks.
21 These extra steps haven been marked as "64-bit".
21 These extra steps haven been marked as "64-bit".
22 Tested on Windows Server 2008 R2 SP1, 9-feb-2013.
22 Tested on Windows Server 2008 R2 SP1, 9-feb-2013.
23 If you run into any 64-bit related problems, please check these pages:
23 If you run into any 64-bit related problems, please check these pages:
24
24
25 - http://blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/
25 - http://blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/
26 - http://bugs.python.org/issue7511
26 - http://bugs.python.org/issue7511
27
27
28 Step 1 -- Install Visual Studio 2008 Express
28 Step 1 -- Install Visual Studio 2008 Express
29 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30
30
31 Optional: You can also install MinGW, but VS2008 installation is easier.
31 Optional: You can also install MinGW, but VS2008 installation is easier.
32
32
33 Download "Visual C++ 2008 Express Edition with SP1" from:
33 Download "Visual C++ 2008 Express Edition with SP1" from:
34 http://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso
34 http://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso
35 (if not found or relocated, google for "visual studio 2008 express" for updated link. This link was taken from http://stackoverflow.com/questions/15318560/visual-c-2008-express-download-link-dead)
35 (if not found or relocated, google for "visual studio 2008 express" for updated link. This link was taken from http://stackoverflow.com/questions/15318560/visual-c-2008-express-download-link-dead)
36
36
37 You can also download full ISO file for offline installation, just
37 You can also download full ISO file for offline installation, just
38 choose "All -- Offline Install ISO image file" in the previous page and
38 choose "All -- Offline Install ISO image file" in the previous page and
39 choose "Visual C++ 2008 Express" when installing.
39 choose "Visual C++ 2008 Express" when installing.
40
40
41 .. note::
41 .. note::
42
42
43 Using other versions of Visual Studio will lead to random crashes.
43 Using other versions of Visual Studio will lead to random crashes.
44 You must use Visual Studio 2008!"
44 You must use Visual Studio 2008!"
45
45
46 .. note::
46 .. note::
47
47
48 Silverlight Runtime and SQL Server 2008 Express Edition are not
48 Silverlight Runtime and SQL Server 2008 Express Edition are not
49 required, you can uncheck them
49 required, you can uncheck them
50
50
51 .. note::
51 .. note::
52
52
53 64-bit: You also need to install the Microsoft Windows SDK for .NET 3.5 SP1 (.NET 4.0 won't work).
53 64-bit: You also need to install the Microsoft Windows SDK for .NET 3.5 SP1 (.NET 4.0 won't work).
54 Download from: http://www.microsoft.com/en-us/download/details.aspx?id=3138
54 Download from: http://www.microsoft.com/en-us/download/details.aspx?id=3138
55
55
56 .. note::
56 .. note::
57
57
58 64-bit: You also need to copy and rename a .bat file to make the Visual C++ compiler work.
58 64-bit: You also need to copy and rename a .bat file to make the Visual C++ compiler work.
59 I am not sure why this is not necessary for 32-bit.
59 I am not sure why this is not necessary for 32-bit.
60 Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
60 Copy C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat to C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
61
61
62 Step 2 -- Install Python
62 Step 2 -- Install Python
63 ^^^^^^^^^^^^^^^^^^^^^^^^
63 ^^^^^^^^^^^^^^^^^^^^^^^^
64
64
65 Install Python 3.8.x from:
65 Install Python 3.8.x from:
66 http://www.python.org/download/
66 http://www.python.org/download/
67
67
68 Remember the specific major and minor version installed, because it will
68 Remember the specific major and minor version installed, because it will
69 be needed in the next step. In this case, it is "3.8".
69 be needed in the next step. In this case, it is "3.8".
70
70
71 .. note::
71 .. note::
72
72
73 64-bit: Just download and install the 64-bit version of python.
73 64-bit: Just download and install the 64-bit version of python.
74
74
75 Step 3 -- Install Win32py extensions
75 Step 3 -- Install Win32py extensions
76 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
76 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
77
77
78 Download pywin32 from:
78 Download pywin32 from:
79 http://sourceforge.net/projects/pywin32/files/
79 http://sourceforge.net/projects/pywin32/files/
80
80
81 - Click on "pywin32" folder
81 - Click on "pywin32" folder
82 - Click on the first folder (in this case, Build 218, maybe newer when you try)
82 - Click on the first folder (in this case, Build 218, maybe newer when you try)
83 - Choose the file ending with ".win32-py3.x.exe" -> x being the minor
83 - Choose the file ending with ".win32-py3.x.exe" -> x being the minor
84 version of Python you installed (in this case, 7)
84 version of Python you installed (in this case, 7)
85 When writing this guide, the file was:
85 When writing this guide, the file was:
86 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
86 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
87
87
88 .. note::
88 .. note::
89
89
90 64-bit: Download and install the 64-bit version.
90 64-bit: Download and install the 64-bit version.
91 At the time of writing you can find this at:
91 At the time of writing you can find this at:
92 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
92 http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win-amd64-py3.8.exe/download
93
93
94 Step 4 -- Python BIN
94 Step 4 -- Python BIN
95 ^^^^^^^^^^^^^^^^^^^^
95 ^^^^^^^^^^^^^^^^^^^^
96
96
97 Add Python BIN folder to the path
97 Add Python BIN folder to the path
98
98
99 You have to add the Python folder to the path, you can do it manually
99 You have to add the Python folder to the path, you can do it manually
100 (editing "PATH" environment variable) or using Windows Support Tools
100 (editing "PATH" environment variable) or using Windows Support Tools
101 that came preinstalled in Vista/7 and can be installed in Windows XP.
101 that came preinstalled in Vista/7 and can be installed in Windows XP.
102
102
103 - Using support tools on WINDOWS XP:
103 - Using support tools on WINDOWS XP:
104 If you use Windows XP you can install them using Windows XP CD and
104 If you use Windows XP you can install them using Windows XP CD and
105 navigating to \SUPPORT\TOOLS. There, execute Setup.EXE (not MSI).
105 navigating to \SUPPORT\TOOLS. There, execute Setup.EXE (not MSI).
106 Afterwards, open a CMD and type::
106 Afterwards, open a CMD and type::
107
107
108 SETX PATH "%PATH%;[your-python-path]" -M
108 SETX PATH "%PATH%;[your-python-path]" -M
109
109
110 Close CMD (the path variable will be updated then)
110 Close CMD (the path variable will be updated then)
111
111
112 - Using support tools on WINDOWS Vista/7:
112 - Using support tools on WINDOWS Vista/7:
113
113
114 Open a CMD and type::
114 Open a CMD and type::
115
115
116 SETX PATH "%PATH%;[your-python-path]" /M
116 SETX PATH "%PATH%;[your-python-path]" /M
117
117
118 Please substitute [your-python-path] with your Python installation path.
118 Please substitute [your-python-path] with your Python installation path.
119 Typically: C:\\Python38
119 Typically: C:\\Python38
120
120
121 Step 5 -- Kallithea folder structure
121 Step 5 -- Kallithea folder structure
122 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
122 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
123
123
124 Create a Kallithea folder structure
124 Create a Kallithea folder structure
125
125
126 This is only a example to install Kallithea, you can of course change
126 This is only a example to install Kallithea, you can of course change
127 it. However, this guide will follow the proposed structure, so please
127 it. However, this guide will follow the proposed structure, so please
128 later adapt the paths if you change them. My recommendation is to use
128 later adapt the paths if you change them. My recommendation is to use
129 folders with NO SPACES. But you can try if you are brave...
129 folders with NO SPACES. But you can try if you are brave...
130
130
131 Create the following folder structure::
131 Create the following folder structure::
132
132
133 C:\Kallithea
133 C:\Kallithea
134 C:\Kallithea\Bin
134 C:\Kallithea\Bin
135 C:\Kallithea\Env
135 C:\Kallithea\Env
136 C:\Kallithea\Repos
136 C:\Kallithea\Repos
137
137
138 Step 6 -- Install virtualenv
138 Step 6 -- Install virtualenv
139 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
139 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
140
140
141 Create a virtual Python environment in C:\\Kallithea\\Env (or similar). To
141 Create a virtual Python environment in C:\\Kallithea\\Env (or similar). To
142 do so, open a CMD (Python Path should be included in Step3), and write::
142 do so, open a CMD (Python Path should be included in Step3), and write::
143
143
144 python3 -m venv C:\Kallithea\Env
144 python3 -m venv C:\Kallithea\Env
145
145
146 Step 7 -- Install Kallithea
146 Step 7 -- Install Kallithea
147 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
147 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
148
148
149 Finally, install Kallithea
149 Finally, install Kallithea
150
150
151 Close previously opened command prompt/s, and open a Visual Studio 2008
151 Close previously opened command prompt/s, and open a Visual Studio 2008
152 Command Prompt (**IMPORTANT!!**). To do so, go to Start Menu, and then open
152 Command Prompt (**IMPORTANT!!**). To do so, go to Start Menu, and then open
153 "Microsoft Visual C++ 2008 Express Edition" -> "Visual Studio Tools" ->
153 "Microsoft Visual C++ 2008 Express Edition" -> "Visual Studio Tools" ->
154 "Visual Studio 2008 Command Prompt"
154 "Visual Studio 2008 Command Prompt"
155
155
156 .. note::
156 .. note::
157
157
158 64-bit: For 64-bit you need to modify the shortcut that is used to start the
158 64-bit: For 64-bit you need to modify the shortcut that is used to start the
159 Visual Studio 2008 Command Prompt. Use right-mouse click to open properties.
159 Visual Studio 2008 Command Prompt. Use right-mouse click to open properties.
160
160
161 Change commandline from::
161 Change commandline from::
162
162
163 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
163 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
164
164
165 to::
165 to::
166
166
167 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64
167 %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" amd64
168
168
169 In that CMD (loaded with VS2008 PATHs) type::
169 In that CMD (loaded with VS2008 PATHs) type::
170
170
171 cd C:\Kallithea\Env\Scripts (or similar)
171 cd C:\Kallithea\Env\Scripts (or similar)
172 activate
172 activate
173 pip install --upgrade pip setuptools
173 pip install --upgrade "pip<24.1" "setuptools<67"
174
174
175 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
175 The prompt will change into "(Env) C:\\Kallithea\\Env\\Scripts" or similar
176 (depending of your folder structure). Then type::
176 (depending of your folder structure). Then type::
177
177
178 pip install kallithea
178 pip install kallithea
179
179
180 (long step, please wait until fully complete)
180 (long step, please wait until fully complete)
181
181
182 Some warnings will appear, don't worry as they are normal.
182 Some warnings will appear, don't worry as they are normal.
183
183
184 Step 8 -- Configuring Kallithea
184 Step 8 -- Configuring Kallithea
185 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
185 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
186
186
187 steps taken from http://packages.python.org/Kallithea/setup.html
187 steps taken from http://packages.python.org/Kallithea/setup.html
188
188
189 You have to use the same Visual Studio 2008 command prompt as Step7, so
189 You have to use the same Visual Studio 2008 command prompt as Step7, so
190 if you closed it reopen it following the same commands (including the
190 if you closed it reopen it following the same commands (including the
191 "activate" one). When ready, just type::
191 "activate" one). When ready, just type::
192
192
193 cd C:\Kallithea\Bin
193 cd C:\Kallithea\Bin
194 kallithea-cli config-create my.ini
194 kallithea-cli config-create my.ini
195
195
196 Then, you must edit my.ini to fit your needs (network address and
196 Then, you must edit my.ini to fit your needs (network address and
197 port, mail settings, database, whatever). I recommend using NotePad++
197 port, mail settings, database, whatever). I recommend using NotePad++
198 (free) or similar text editor, as it handles well the EndOfLine
198 (free) or similar text editor, as it handles well the EndOfLine
199 character differences between Unix and Windows
199 character differences between Unix and Windows
200 (http://notepad-plus-plus.org/)
200 (http://notepad-plus-plus.org/)
201
201
202 For the sake of simplicity lets run it with the default settings. After
202 For the sake of simplicity lets run it with the default settings. After
203 your edits (if any), in the previous Command Prompt, type::
203 your edits (if any), in the previous Command Prompt, type::
204
204
205 kallithea-cli db-create -c my.ini
205 kallithea-cli db-create -c my.ini
206
206
207 .. warning:: This time a *new* database will be installed. You must
207 .. warning:: This time a *new* database will be installed. You must
208 follow a different process to later :ref:`upgrade <upgrade>`
208 follow a different process to later :ref:`upgrade <upgrade>`
209 to a newer Kallithea version.
209 to a newer Kallithea version.
210
210
211 The script will ask you for confirmation about creating a NEW database,
211 The script will ask you for confirmation about creating a NEW database,
212 answer yes (y)
212 answer yes (y)
213 The script will ask you for repository path, answer C:\\Kallithea\\Repos
213 The script will ask you for repository path, answer C:\\Kallithea\\Repos
214 (or similar)
214 (or similar)
215 The script will ask you for admin username and password, answer "admin"
215 The script will ask you for admin username and password, answer "admin"
216 + "123456" (or whatever you want)
216 + "123456" (or whatever you want)
217 The script will ask you for admin mail, answer "admin@xxxx.com" (or
217 The script will ask you for admin mail, answer "admin@xxxx.com" (or
218 whatever you want)
218 whatever you want)
219
219
220 If you make some mistake and the script does not end, don't worry, start
220 If you make some mistake and the script does not end, don't worry, start
221 it again.
221 it again.
222
222
223 Step 9 -- Running Kallithea
223 Step 9 -- Running Kallithea
224 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
224 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
225
225
226 In the previous command prompt, being in the C:\\Kallithea\\Bin folder,
226 In the previous command prompt, being in the C:\\Kallithea\\Bin folder,
227 just type::
227 just type::
228
228
229 gearbox serve -c my.ini
229 gearbox serve -c my.ini
230
230
231 Open yout web server, and go to http://127.0.0.1:5000
231 Open yout web server, and go to http://127.0.0.1:5000
232
232
233 It works!! :-)
233 It works!! :-)
234
234
235 Remark:
235 Remark:
236 If it does not work first time, just Ctrl-C the CMD process and start it
236 If it does not work first time, just Ctrl-C the CMD process and start it
237 again. Don't forget the "http://" in Internet Explorer
237 again. Don't forget the "http://" in Internet Explorer
238
238
239 What this Guide does not cover:
239 What this Guide does not cover:
240
240
241 - Installing Celery
241 - Installing Celery
242 - Running Kallithea as Windows Service. You can investigate here:
242 - Running Kallithea as Windows Service. You can investigate here:
243
243
244 - http://pypi.python.org/pypi/wsgisvc
244 - http://pypi.python.org/pypi/wsgisvc
245 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
245 - http://ryrobes.com/python/running-python-scripts-as-a-windows-service/
246 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
246 - http://wiki.pylonshq.com/display/pylonscookbook/How+to+run+Pylons+as+a+Windows+service
247
247
248 - Using Apache. You can investigate here:
248 - Using Apache. You can investigate here:
249
249
250 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
250 - https://groups.google.com/group/rhodecode/msg/c433074e813ffdc4
@@ -1,165 +1,169 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 """
14 """
15 Global configuration file for TurboGears2 specific settings in Kallithea.
15 Global configuration file for TurboGears2 specific settings in Kallithea.
16
16
17 This file complements the .ini file.
17 This file complements the .ini file.
18 """
18 """
19
19
20 import logging
20 import logging
21 import os
21 import os
22 import platform
22 import platform
23 import sys
23 import sys
24
24
25 import alembic.config
25 import alembic.config
26 import mercurial
26 import mercurial
27 import tg
27 import tg
28 from alembic.migration import MigrationContext
28 from alembic.migration import MigrationContext
29 from alembic.script.base import ScriptDirectory
29 from alembic.script.base import ScriptDirectory
30 from sqlalchemy import create_engine
30 from sqlalchemy import create_engine
31 from tg import FullStackApplicationConfigurator
31 from tg import FullStackApplicationConfigurator
32
32
33 import kallithea.lib.locales
33 import kallithea.lib.locales
34 import kallithea.model.base
34 import kallithea.model.base
35 import kallithea.model.meta
35 import kallithea.model.meta
36 from kallithea.lib import celery_app
36 from kallithea.lib import celery_app
37 from kallithea.lib.utils import load_extensions, set_app_settings, set_indexer_config, set_vcs_config
37 from kallithea.lib.utils import load_extensions, set_app_settings, set_indexer_config, set_vcs_config
38 from kallithea.lib.utils2 import asbool, check_git_version
38 from kallithea.lib.utils2 import asbool, check_git_version
39 from kallithea.model import db
39 from kallithea.model import db
40
40
41
41
42 log = logging.getLogger(__name__)
42 log = logging.getLogger(__name__)
43
43
44
44
45 base_config = FullStackApplicationConfigurator()
45 base_config = FullStackApplicationConfigurator()
46
46
47 base_config.update_blueprint({
47 base_config.update_blueprint({
48 'package': kallithea,
48 'package': kallithea,
49
49
50 # Rendering Engines Configuration
50 # Rendering Engines Configuration
51 'renderers': [
51 'renderers': [
52 'json',
52 'json',
53 'mako',
53 'mako',
54 ],
54 ],
55 'default_renderer': 'mako',
55 'default_renderer': 'mako',
56 'use_dotted_templatenames': False,
56 'use_dotted_templatenames': False,
57
57
58 # Configure Sessions, store data as JSON to avoid pickle security issues
58 # Configure Sessions, store data as JSON to avoid pickle security issues
59 'session.enabled': True,
59 'session.enabled': True,
60 'session.data_serializer': 'json',
60 'session.data_serializer': 'json',
61
61
62 # Configure the base SQLALchemy Setup
62 # Configure the base SQLALchemy Setup
63 'use_sqlalchemy': True,
63 'use_sqlalchemy': True,
64 'model': kallithea.model.base,
64 'model': kallithea.model.base,
65 'DBSession': kallithea.model.meta.Session,
65 'DBSession': kallithea.model.meta.Session,
66
66
67 # Configure App without an authentication backend.
67 # Configure App without an authentication backend.
68 'auth_backend': None,
68 'auth_backend': None,
69
69
70 # Use custom error page for these errors. By default, Turbogears2 does not add
70 # Use custom error page for these errors. By default, Turbogears2 does not add
71 # 400 in this list.
71 # 400 in this list.
72 # Explicitly listing all is considered more robust than appending to defaults,
72 # Explicitly listing all is considered more robust than appending to defaults,
73 # in light of possible future framework changes.
73 # in light of possible future framework changes.
74 'errorpage.status_codes': [400, 401, 403, 404],
74 'errorpage.status_codes': [400, 401, 403, 404],
75
75
76 # Disable transaction manager -- currently Kallithea takes care of transactions itself
76 # Disable transaction manager -- currently Kallithea takes care of transactions itself
77 'tm.enabled': False,
77 'tm.enabled': False,
78
78
79 # Set the default i18n source language so TG doesn't search beyond 'en' in Accept-Language.
79 # Set the default i18n source language so TG doesn't search beyond 'en' in Accept-Language.
80 'i18n.lang': 'en',
80 'i18n.lang': 'en',
81
82 # For TurboGears 2.4.3, define the native language for translations to
83 # prevent fall-through to languages requested with lower priority.
84 'i18n.native': ['en', 'en_US', 'en_GB'],
81 })
85 })
82
86
83 # DebugBar, a debug toolbar for TurboGears2.
87 # DebugBar, a debug toolbar for TurboGears2.
84 # (https://github.com/TurboGears/tgext.debugbar)
88 # (https://github.com/TurboGears/tgext.debugbar)
85 # To enable it, install 'tgext.debugbar' and 'kajiki', and run Kallithea with
89 # To enable it, install 'tgext.debugbar' and 'kajiki', and run Kallithea with
86 # 'debug = true' (not in production!)
90 # 'debug = true' (not in production!)
87 # See the Kallithea documentation for more information.
91 # See the Kallithea documentation for more information.
88 try:
92 try:
89 import kajiki # only to check its existence
93 import kajiki # only to check its existence
90 from tgext.debugbar import enable_debugbar
94 from tgext.debugbar import enable_debugbar
91 assert kajiki
95 assert kajiki
92 except ImportError:
96 except ImportError:
93 pass
97 pass
94 else:
98 else:
95 base_config.get_blueprint_value('renderers').append('kajiki')
99 base_config.get_blueprint_value('renderers').append('kajiki')
96 enable_debugbar(base_config)
100 enable_debugbar(base_config)
97
101
98
102
99 def setup_configuration(app):
103 def setup_configuration(app):
100 config = app.config
104 config = app.config
101
105
102 if not kallithea.lib.locales.current_locale_is_valid():
106 if not kallithea.lib.locales.current_locale_is_valid():
103 log.error("Terminating ...")
107 log.error("Terminating ...")
104 sys.exit(1)
108 sys.exit(1)
105
109
106 # Mercurial sets encoding at module import time, so we have to monkey patch it
110 # Mercurial sets encoding at module import time, so we have to monkey patch it
107 hgencoding = config.get('hgencoding')
111 hgencoding = config.get('hgencoding')
108 if hgencoding:
112 if hgencoding:
109 mercurial.encoding.encoding = hgencoding
113 mercurial.encoding.encoding = hgencoding
110
114
111 if config.get('ignore_alembic_revision', False):
115 if config.get('ignore_alembic_revision', False):
112 log.warning('database alembic revision checking is disabled')
116 log.warning('database alembic revision checking is disabled')
113 else:
117 else:
114 dbconf = config['sqlalchemy.url']
118 dbconf = config['sqlalchemy.url']
115 alembic_cfg = alembic.config.Config()
119 alembic_cfg = alembic.config.Config()
116 alembic_cfg.set_main_option('script_location', 'kallithea:alembic')
120 alembic_cfg.set_main_option('script_location', 'kallithea:alembic')
117 alembic_cfg.set_main_option('sqlalchemy.url', dbconf)
121 alembic_cfg.set_main_option('sqlalchemy.url', dbconf)
118 script_dir = ScriptDirectory.from_config(alembic_cfg)
122 script_dir = ScriptDirectory.from_config(alembic_cfg)
119 available_heads = sorted(script_dir.get_heads())
123 available_heads = sorted(script_dir.get_heads())
120
124
121 engine = create_engine(dbconf)
125 engine = create_engine(dbconf)
122 with engine.connect() as conn:
126 with engine.connect() as conn:
123 context = MigrationContext.configure(conn)
127 context = MigrationContext.configure(conn)
124 current_heads = sorted(str(s) for s in context.get_current_heads())
128 current_heads = sorted(str(s) for s in context.get_current_heads())
125 if current_heads != available_heads:
129 if current_heads != available_heads:
126 log.error('Failed to run Kallithea:\n\n'
130 log.error('Failed to run Kallithea:\n\n'
127 'The database version does not match the Kallithea version.\n'
131 'The database version does not match the Kallithea version.\n'
128 'Please read the documentation on how to upgrade or downgrade the database.\n'
132 'Please read the documentation on how to upgrade or downgrade the database.\n'
129 'Current database version id(s): %s\n'
133 'Current database version id(s): %s\n'
130 'Expected database version id(s): %s\n'
134 'Expected database version id(s): %s\n'
131 'If you are a developer and you know what you are doing, you can add `ignore_alembic_revision = True` '
135 'If you are a developer and you know what you are doing, you can add `ignore_alembic_revision = True` '
132 'to your .ini file to skip the check.\n' % (' '.join(current_heads), ' '.join(available_heads)))
136 'to your .ini file to skip the check.\n' % (' '.join(current_heads), ' '.join(available_heads)))
133 sys.exit(1)
137 sys.exit(1)
134
138
135 # store some globals into kallithea
139 # store some globals into kallithea
136 kallithea.DEFAULT_USER_ID = db.User.get_default_user().user_id
140 kallithea.DEFAULT_USER_ID = db.User.get_default_user().user_id
137
141
138 if asbool(config.get('use_celery')) and not kallithea.CELERY_APP.finalized:
142 if asbool(config.get('use_celery')) and not kallithea.CELERY_APP.finalized:
139 kallithea.CELERY_APP.config_from_object(celery_app.make_celery_config(config))
143 kallithea.CELERY_APP.config_from_object(celery_app.make_celery_config(config))
140 kallithea.CONFIG = config
144 kallithea.CONFIG = config
141
145
142 load_extensions(root_path=config['here'])
146 load_extensions(root_path=config['here'])
143
147
144 set_app_settings(config)
148 set_app_settings(config)
145
149
146 instance_id = kallithea.CONFIG.get('instance_id', '*')
150 instance_id = kallithea.CONFIG.get('instance_id', '*')
147 if instance_id == '*':
151 if instance_id == '*':
148 instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
152 instance_id = '%s-%s' % (platform.uname()[1], os.getpid())
149 kallithea.CONFIG['instance_id'] = instance_id
153 kallithea.CONFIG['instance_id'] = instance_id
150
154
151 # update kallithea.CONFIG with the meanwhile changed 'config'
155 # update kallithea.CONFIG with the meanwhile changed 'config'
152 kallithea.CONFIG.update(config)
156 kallithea.CONFIG.update(config)
153
157
154 # configure vcs and indexer libraries (they are supposed to be independent
158 # configure vcs and indexer libraries (they are supposed to be independent
155 # as much as possible and thus avoid importing tg.config or
159 # as much as possible and thus avoid importing tg.config or
156 # kallithea.CONFIG).
160 # kallithea.CONFIG).
157 set_vcs_config(kallithea.CONFIG)
161 set_vcs_config(kallithea.CONFIG)
158 set_indexer_config(kallithea.CONFIG)
162 set_indexer_config(kallithea.CONFIG)
159
163
160 check_git_version()
164 check_git_version()
161
165
162 kallithea.model.meta.Session.remove()
166 kallithea.model.meta.Session.remove()
163
167
164
168
165 tg.hooks.register('configure_new_app', setup_configuration)
169 tg.hooks.register('configure_new_app', setup_configuration)
@@ -1,403 +1,386 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 # This program is free software: you can redistribute it and/or modify
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
5 # (at your option) any later version.
6 #
6 #
7 # This program is distributed in the hope that it will be useful,
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License for more details.
10 # GNU General Public License for more details.
11 #
11 #
12 # You should have received a copy of the GNU General Public License
12 # You should have received a copy of the GNU General Public License
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 """
14 """
15 kallithea.controllers.admin.repo_groups
15 kallithea.controllers.admin.repo_groups
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17
17
18 Repository groups controller for Kallithea
18 Repository groups controller for Kallithea
19
19
20 This file was forked by the Kallithea project in July 2014.
20 This file was forked by the Kallithea project in July 2014.
21 Original author and date, and relevant copyright and licensing information is below:
21 Original author and date, and relevant copyright and licensing information is below:
22 :created_on: Mar 23, 2010
22 :created_on: Mar 23, 2010
23 :author: marcink
23 :author: marcink
24 :copyright: (c) 2013 RhodeCode GmbH, and others.
24 :copyright: (c) 2013 RhodeCode GmbH, and others.
25 :license: GPLv3, see LICENSE.md for more details.
25 :license: GPLv3, see LICENSE.md for more details.
26 """
26 """
27
27
28 import logging
28 import logging
29 import traceback
29 import traceback
30
30
31 import formencode
31 import formencode
32 from formencode import htmlfill
32 from formencode import htmlfill
33 from tg import app_globals, request
33 from tg import app_globals, request
34 from tg import tmpl_context as c
34 from tg import tmpl_context as c
35 from tg.i18n import ugettext as _
35 from tg.i18n import ugettext as _
36 from tg.i18n import ungettext
36 from tg.i18n import ungettext
37 from webob.exc import HTTPForbidden, HTTPFound, HTTPInternalServerError, HTTPNotFound
37 from webob.exc import HTTPForbidden, HTTPFound, HTTPInternalServerError, HTTPNotFound
38
38
39 from kallithea.controllers import base
39 from kallithea.controllers import base
40 from kallithea.lib import webutils
40 from kallithea.lib import webutils
41 from kallithea.lib.auth import HasPermissionAny, HasRepoGroupPermissionLevel, HasRepoGroupPermissionLevelDecorator, LoginRequired
41 from kallithea.lib.auth import HasPermissionAny, HasRepoGroupPermissionLevel, HasRepoGroupPermissionLevelDecorator, LoginRequired
42 from kallithea.lib.utils2 import safe_int
42 from kallithea.lib.utils2 import safe_int
43 from kallithea.lib.webutils import url
43 from kallithea.lib.webutils import url
44 from kallithea.model import db, meta
44 from kallithea.model import db, meta
45 from kallithea.model.forms import RepoGroupForm, RepoGroupPermsForm
45 from kallithea.model.forms import RepoGroupForm, RepoGroupPermsForm
46 from kallithea.model.repo import RepoModel
46 from kallithea.model.repo import RepoModel
47 from kallithea.model.repo_group import RepoGroupModel
47 from kallithea.model.repo_group import RepoGroupModel
48 from kallithea.model.scm import AvailableRepoGroupChoices, RepoGroupList
48 from kallithea.model.scm import AvailableRepoGroupChoices, RepoGroupList
49
49
50
50
51 log = logging.getLogger(__name__)
51 log = logging.getLogger(__name__)
52
52
53
53
54 class RepoGroupsController(base.BaseController):
54 class RepoGroupsController(base.BaseController):
55
55
56 @LoginRequired(allow_default_user=True)
56 @LoginRequired(allow_default_user=True)
57 def _before(self, *args, **kwargs):
57 def _before(self, *args, **kwargs):
58 super(RepoGroupsController, self)._before(*args, **kwargs)
58 super(RepoGroupsController, self)._before(*args, **kwargs)
59
59
60 def __load_defaults(self, extras=(), exclude=()):
60 def __load_defaults(self, extras=(), exclude=()):
61 """extras is used for keeping current parent ignoring permissions
61 """extras is used for keeping current parent ignoring permissions
62 exclude is used for not moving group to itself TODO: also exclude descendants
62 exclude is used for not moving group to itself TODO: also exclude descendants
63 Note: only admin can create top level groups
63 Note: only admin can create top level groups
64 """
64 """
65 repo_groups = AvailableRepoGroupChoices('admin', extras)
65 repo_groups = AvailableRepoGroupChoices('admin', extras)
66 exclude_group_ids = set(rg.group_id for rg in exclude)
66 exclude_group_ids = set(rg.group_id for rg in exclude)
67 c.repo_groups = [rg for rg in repo_groups
67 c.repo_groups = [rg for rg in repo_groups
68 if rg[0] not in exclude_group_ids]
68 if rg[0] not in exclude_group_ids]
69
69
70 def __load_data(self, group_id):
70 def __load_data(self, group_id):
71 """
71 """
72 Load defaults settings for edit, and update
72 Load defaults settings for edit, and update
73
73
74 :param group_id:
74 :param group_id:
75 """
75 """
76 repo_group = db.RepoGroup.get_or_404(group_id)
76 repo_group = db.RepoGroup.get_or_404(group_id)
77 data = repo_group.get_dict()
77 data = repo_group.get_dict()
78 data['group_name'] = repo_group.name
78 data['group_name'] = repo_group.name
79 data['owner'] = repo_group.owner.username
79 data['owner'] = repo_group.owner.username
80
80
81 # fill repository group users
81 # fill repository group users
82 for p in repo_group.repo_group_to_perm:
82 for p in repo_group.repo_group_to_perm:
83 data.update({'u_perm_%s' % p.user.username:
83 data.update({'u_perm_%s' % p.user.username:
84 p.permission.permission_name})
84 p.permission.permission_name})
85
85
86 # fill repository group groups
86 # fill repository group groups
87 for p in repo_group.users_group_to_perm:
87 for p in repo_group.users_group_to_perm:
88 data.update({'g_perm_%s' % p.users_group.users_group_name:
88 data.update({'g_perm_%s' % p.users_group.users_group_name:
89 p.permission.permission_name})
89 p.permission.permission_name})
90
90
91 return data
91 return data
92
92
93 def _revoke_perms_on_yourself(self, form_result):
94 _up = [u for u in form_result['perms_updates'] if request.authuser.username == u[0]]
95 _new = [u for u in form_result['perms_new'] if request.authuser.username == u[0]]
96 if _new and _new[0][1] != 'group.admin' or _up and _up[0][1] != 'group.admin':
97 return True
98 return False
99
100 def index(self, format='html'):
93 def index(self, format='html'):
101 _list = db.RepoGroup.query(sorted=True).all()
94 _list = db.RepoGroup.query(sorted=True).all()
102 group_iter = RepoGroupList(_list, perm_level='admin')
95 group_iter = RepoGroupList(_list, perm_level='admin')
103 repo_groups_data = []
96 repo_groups_data = []
104 _tmpl_lookup = app_globals.mako_lookup
97 _tmpl_lookup = app_globals.mako_lookup
105 template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
98 template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
106
99
107 def repo_group_name(repo_group_name, children_groups):
100 def repo_group_name(repo_group_name, children_groups):
108 return template.get_def("repo_group_name") \
101 return template.get_def("repo_group_name") \
109 .render_unicode(repo_group_name, children_groups, _=_, webutils=webutils, c=c)
102 .render_unicode(repo_group_name, children_groups, _=_, webutils=webutils, c=c)
110
103
111 def repo_group_actions(repo_group_id, repo_group_name, gr_count):
104 def repo_group_actions(repo_group_id, repo_group_name, gr_count):
112 return template.get_def("repo_group_actions") \
105 return template.get_def("repo_group_actions") \
113 .render_unicode(repo_group_id, repo_group_name, gr_count, _=_, webutils=webutils, c=c,
106 .render_unicode(repo_group_id, repo_group_name, gr_count, _=_, webutils=webutils, c=c,
114 ungettext=ungettext)
107 ungettext=ungettext)
115
108
116 for repo_gr in group_iter:
109 for repo_gr in group_iter:
117 children_groups = [g.name for g in repo_gr.parents] + [repo_gr.name]
110 children_groups = [g.name for g in repo_gr.parents] + [repo_gr.name]
118 repo_count = repo_gr.repositories.count()
111 repo_count = repo_gr.repositories.count()
119 repo_groups_data.append({
112 repo_groups_data.append({
120 "raw_name": webutils.escape(repo_gr.group_name),
113 "raw_name": webutils.escape(repo_gr.group_name),
121 "group_name": repo_group_name(repo_gr.group_name, children_groups),
114 "group_name": repo_group_name(repo_gr.group_name, children_groups),
122 "desc": webutils.escape(repo_gr.group_description),
115 "desc": webutils.escape(repo_gr.group_description),
123 "repos": repo_count,
116 "repos": repo_count,
124 "owner": repo_gr.owner.username,
117 "owner": repo_gr.owner.username,
125 "action": repo_group_actions(repo_gr.group_id, repo_gr.group_name,
118 "action": repo_group_actions(repo_gr.group_id, repo_gr.group_name,
126 repo_count)
119 repo_count)
127 })
120 })
128
121
129 c.data = {
122 c.data = {
130 "sort": None,
123 "sort": None,
131 "dir": "asc",
124 "dir": "asc",
132 "records": repo_groups_data
125 "records": repo_groups_data
133 }
126 }
134
127
135 return base.render('admin/repo_groups/repo_groups.html')
128 return base.render('admin/repo_groups/repo_groups.html')
136
129
137 def create(self):
130 def create(self):
138 self.__load_defaults()
131 self.__load_defaults()
139
132
140 # permissions for can create group based on parent_id are checked
133 # permissions for can create group based on parent_id are checked
141 # here in the Form
134 # here in the Form
142 repo_group_form = RepoGroupForm(repo_groups=c.repo_groups)
135 repo_group_form = RepoGroupForm(repo_groups=c.repo_groups)
143 form_result = None
136 form_result = None
144 try:
137 try:
145 form_result = repo_group_form.to_python(dict(request.POST))
138 form_result = repo_group_form.to_python(dict(request.POST))
146 gr = RepoGroupModel().create(
139 gr = RepoGroupModel().create(
147 group_name=form_result['group_name'],
140 group_name=form_result['group_name'],
148 group_description=form_result['group_description'],
141 group_description=form_result['group_description'],
149 parent=form_result['parent_group_id'],
142 parent=form_result['parent_group_id'],
150 owner=request.authuser.user_id,
143 owner=request.authuser.user_id,
151 copy_permissions=form_result['group_copy_permissions']
144 copy_permissions=form_result['group_copy_permissions']
152 )
145 )
153 meta.Session().commit()
146 meta.Session().commit()
154 # TODO: in future action_logger(, '', '', '')
147 # TODO: in future action_logger(, '', '', '')
155 except formencode.Invalid as errors:
148 except formencode.Invalid as errors:
156 return htmlfill.render(
149 return htmlfill.render(
157 base.render('admin/repo_groups/repo_group_add.html'),
150 base.render('admin/repo_groups/repo_group_add.html'),
158 defaults=errors.value,
151 defaults=errors.value,
159 errors=errors.error_dict or {},
152 errors=errors.error_dict or {},
160 prefix_error=False,
153 prefix_error=False,
161 encoding="UTF-8",
154 encoding="UTF-8",
162 force_defaults=False)
155 force_defaults=False)
163 except Exception:
156 except Exception:
164 log.error(traceback.format_exc())
157 log.error(traceback.format_exc())
165 webutils.flash(_('Error occurred during creation of repository group %s')
158 webutils.flash(_('Error occurred during creation of repository group %s')
166 % request.POST.get('group_name'), category='error')
159 % request.POST.get('group_name'), category='error')
167 if form_result is None:
160 if form_result is None:
168 raise
161 raise
169 parent_group_id = form_result['parent_group_id']
162 parent_group_id = form_result['parent_group_id']
170 # TODO: maybe we should get back to the main view, not the admin one
163 # TODO: maybe we should get back to the main view, not the admin one
171 raise HTTPFound(location=url('repos_groups', parent_group=parent_group_id))
164 raise HTTPFound(location=url('repos_groups', parent_group=parent_group_id))
172 webutils.flash(_('Created repository group %s') % gr.group_name,
165 webutils.flash(_('Created repository group %s') % gr.group_name,
173 category='success')
166 category='success')
174 raise HTTPFound(location=url('repos_group_home', group_name=gr.group_name))
167 raise HTTPFound(location=url('repos_group_home', group_name=gr.group_name))
175
168
176 def new(self):
169 def new(self):
177 parent_group_id = safe_int(request.GET.get('parent_group') or '-1')
170 parent_group_id = safe_int(request.GET.get('parent_group') or '-1')
178 if HasPermissionAny('hg.admin')('group create'):
171 if HasPermissionAny('hg.admin')('group create'):
179 # we're global admin, we're ok and we can create TOP level groups
172 # we're global admin, we're ok and we can create TOP level groups
180 pass
173 pass
181 else:
174 else:
182 # we pass in parent group into creation form, thus we know
175 # we pass in parent group into creation form, thus we know
183 # what would be the group, we can check perms here !
176 # what would be the group, we can check perms here !
184 group = db.RepoGroup.get(parent_group_id) if parent_group_id else None
177 group = db.RepoGroup.get(parent_group_id) if parent_group_id else None
185 group_name = group.group_name if group else None
178 group_name = group.group_name if group else None
186 if HasRepoGroupPermissionLevel('admin')(group_name, 'group create'):
179 if HasRepoGroupPermissionLevel('admin')(group_name, 'group create'):
187 pass
180 pass
188 else:
181 else:
189 raise HTTPForbidden()
182 raise HTTPForbidden()
190
183
191 self.__load_defaults()
184 self.__load_defaults()
192 return htmlfill.render(
185 return htmlfill.render(
193 base.render('admin/repo_groups/repo_group_add.html'),
186 base.render('admin/repo_groups/repo_group_add.html'),
194 defaults={'parent_group_id': parent_group_id},
187 defaults={'parent_group_id': parent_group_id},
195 errors={},
188 errors={},
196 prefix_error=False,
189 prefix_error=False,
197 encoding="UTF-8",
190 encoding="UTF-8",
198 force_defaults=False)
191 force_defaults=False)
199
192
200 @HasRepoGroupPermissionLevelDecorator('admin')
193 @HasRepoGroupPermissionLevelDecorator('admin')
201 def update(self, group_name):
194 def update(self, group_name):
202 c.repo_group = db.RepoGroup.guess_instance(group_name)
195 c.repo_group = db.RepoGroup.guess_instance(group_name)
203 self.__load_defaults(extras=[c.repo_group.parent_group],
196 self.__load_defaults(extras=[c.repo_group.parent_group],
204 exclude=[c.repo_group])
197 exclude=[c.repo_group])
205
198
206 # TODO: kill allow_empty_group - it is only used for redundant form validation!
199 # TODO: kill allow_empty_group - it is only used for redundant form validation!
207 if HasPermissionAny('hg.admin')('group edit'):
200 if HasPermissionAny('hg.admin')('group edit'):
208 # we're global admin, we're ok and we can create TOP level groups
201 # we're global admin, we're ok and we can create TOP level groups
209 allow_empty_group = True
202 allow_empty_group = True
210 elif not c.repo_group.parent_group:
203 elif not c.repo_group.parent_group:
211 allow_empty_group = True
204 allow_empty_group = True
212 else:
205 else:
213 allow_empty_group = False
206 allow_empty_group = False
214 repo_group_form = RepoGroupForm(
207 repo_group_form = RepoGroupForm(
215 edit=True,
208 edit=True,
216 old_data=c.repo_group.get_dict(),
209 old_data=c.repo_group.get_dict(),
217 repo_groups=c.repo_groups,
210 repo_groups=c.repo_groups,
218 can_create_in_root=allow_empty_group,
211 can_create_in_root=allow_empty_group,
219 )()
212 )()
220 try:
213 try:
221 form_result = repo_group_form.to_python(dict(request.POST))
214 form_result = repo_group_form.to_python(dict(request.POST))
222
215
223 new_gr = RepoGroupModel().update(group_name, form_result)
216 new_gr = RepoGroupModel().update(group_name, form_result)
224 meta.Session().commit()
217 meta.Session().commit()
225 webutils.flash(_('Updated repository group %s')
218 webutils.flash(_('Updated repository group %s')
226 % form_result['group_name'], category='success')
219 % form_result['group_name'], category='success')
227 # we now have new name !
220 # we now have new name !
228 group_name = new_gr.group_name
221 group_name = new_gr.group_name
229 # TODO: in future action_logger(, '', '', '')
222 # TODO: in future action_logger(, '', '', '')
230 except formencode.Invalid as errors:
223 except formencode.Invalid as errors:
231 c.active = 'settings'
224 c.active = 'settings'
232 return htmlfill.render(
225 return htmlfill.render(
233 base.render('admin/repo_groups/repo_group_edit.html'),
226 base.render('admin/repo_groups/repo_group_edit.html'),
234 defaults=errors.value,
227 defaults=errors.value,
235 errors=errors.error_dict or {},
228 errors=errors.error_dict or {},
236 prefix_error=False,
229 prefix_error=False,
237 encoding="UTF-8",
230 encoding="UTF-8",
238 force_defaults=False)
231 force_defaults=False)
239 except Exception:
232 except Exception:
240 log.error(traceback.format_exc())
233 log.error(traceback.format_exc())
241 webutils.flash(_('Error occurred during update of repository group %s')
234 webutils.flash(_('Error occurred during update of repository group %s')
242 % request.POST.get('group_name'), category='error')
235 % request.POST.get('group_name'), category='error')
243
236
244 raise HTTPFound(location=url('edit_repo_group', group_name=group_name))
237 raise HTTPFound(location=url('edit_repo_group', group_name=group_name))
245
238
246 @HasRepoGroupPermissionLevelDecorator('admin')
239 @HasRepoGroupPermissionLevelDecorator('admin')
247 def delete(self, group_name):
240 def delete(self, group_name):
248 gr = c.repo_group = db.RepoGroup.guess_instance(group_name)
241 gr = c.repo_group = db.RepoGroup.guess_instance(group_name)
249 parent_group = gr.parent_group
242 parent_group = gr.parent_group
250 repos = gr.repositories.all()
243 repos = gr.repositories.all()
251 if repos:
244 if repos:
252 webutils.flash(_('This group contains %s repositories and cannot be '
245 webutils.flash(_('This group contains %s repositories and cannot be '
253 'deleted') % len(repos), category='warning')
246 'deleted') % len(repos), category='warning')
254 raise HTTPFound(location=url('repos_groups'))
247 raise HTTPFound(location=url('repos_groups'))
255
248
256 children = gr.children.all()
249 children = gr.children.all()
257 if children:
250 if children:
258 webutils.flash(_('This group contains %s subgroups and cannot be deleted'
251 webutils.flash(_('This group contains %s subgroups and cannot be deleted'
259 % (len(children))), category='warning')
252 % (len(children))), category='warning')
260 raise HTTPFound(location=url('repos_groups'))
253 raise HTTPFound(location=url('repos_groups'))
261
254
262 try:
255 try:
263 RepoGroupModel().delete(group_name)
256 RepoGroupModel().delete(group_name)
264 meta.Session().commit()
257 meta.Session().commit()
265 webutils.flash(_('Removed repository group %s') % group_name,
258 webutils.flash(_('Removed repository group %s') % group_name,
266 category='success')
259 category='success')
267 # TODO: in future action_logger(, '', '', '')
260 # TODO: in future action_logger(, '', '', '')
268 except Exception:
261 except Exception:
269 log.error(traceback.format_exc())
262 log.error(traceback.format_exc())
270 webutils.flash(_('Error occurred during deletion of repository group %s')
263 webutils.flash(_('Error occurred during deletion of repository group %s')
271 % group_name, category='error')
264 % group_name, category='error')
272
265
273 if parent_group:
266 if parent_group:
274 raise HTTPFound(location=url('repos_group_home', group_name=parent_group.group_name))
267 raise HTTPFound(location=url('repos_group_home', group_name=parent_group.group_name))
275 raise HTTPFound(location=url('repos_groups'))
268 raise HTTPFound(location=url('repos_groups'))
276
269
277 def show_by_name(self, group_name):
270 def show_by_name(self, group_name):
278 """
271 """
279 This is a proxy that does a lookup group_name -> id, and shows
272 This is a proxy that does a lookup group_name -> id, and shows
280 the group by id view instead
273 the group by id view instead
281 """
274 """
282 group_name = group_name.rstrip('/')
275 group_name = group_name.rstrip('/')
283 id_ = db.RepoGroup.get_by_group_name(group_name)
276 id_ = db.RepoGroup.get_by_group_name(group_name)
284 if id_:
277 if id_:
285 return self.show(group_name)
278 return self.show(group_name)
286 raise HTTPNotFound
279 raise HTTPNotFound
287
280
288 @HasRepoGroupPermissionLevelDecorator('read')
281 @HasRepoGroupPermissionLevelDecorator('read')
289 def show(self, group_name):
282 def show(self, group_name):
290 c.active = 'settings'
283 c.active = 'settings'
291
284
292 c.group = c.repo_group = db.RepoGroup.guess_instance(group_name)
285 c.group = c.repo_group = db.RepoGroup.guess_instance(group_name)
293
286
294 groups = db.RepoGroup.query(sorted=True).filter_by(parent_group=c.group).all()
287 groups = db.RepoGroup.query(sorted=True).filter_by(parent_group=c.group).all()
295 repo_groups_list = self.scm_model.get_repo_groups(groups)
288 repo_groups_list = self.scm_model.get_repo_groups(groups)
296
289
297 repos_list = db.Repository.query(sorted=True).filter_by(group=c.group).all()
290 repos_list = db.Repository.query(sorted=True).filter_by(group=c.group).all()
298 c.data = RepoModel().get_repos_as_dict(repos_list,
291 c.data = RepoModel().get_repos_as_dict(repos_list,
299 repo_groups_list=repo_groups_list,
292 repo_groups_list=repo_groups_list,
300 short_name=True)
293 short_name=True)
301
294
302 return base.render('admin/repo_groups/repo_group_show.html')
295 return base.render('admin/repo_groups/repo_group_show.html')
303
296
304 @HasRepoGroupPermissionLevelDecorator('admin')
297 @HasRepoGroupPermissionLevelDecorator('admin')
305 def edit(self, group_name):
298 def edit(self, group_name):
306 c.active = 'settings'
299 c.active = 'settings'
307
300
308 c.repo_group = db.RepoGroup.guess_instance(group_name)
301 c.repo_group = db.RepoGroup.guess_instance(group_name)
309 self.__load_defaults(extras=[c.repo_group.parent_group],
302 self.__load_defaults(extras=[c.repo_group.parent_group],
310 exclude=[c.repo_group])
303 exclude=[c.repo_group])
311 defaults = self.__load_data(c.repo_group.group_id)
304 defaults = self.__load_data(c.repo_group.group_id)
312
305
313 return htmlfill.render(
306 return htmlfill.render(
314 base.render('admin/repo_groups/repo_group_edit.html'),
307 base.render('admin/repo_groups/repo_group_edit.html'),
315 defaults=defaults,
308 defaults=defaults,
316 encoding="UTF-8",
309 encoding="UTF-8",
317 force_defaults=False
310 force_defaults=False
318 )
311 )
319
312
320 @HasRepoGroupPermissionLevelDecorator('admin')
313 @HasRepoGroupPermissionLevelDecorator('admin')
321 def edit_repo_group_advanced(self, group_name):
314 def edit_repo_group_advanced(self, group_name):
322 c.active = 'advanced'
315 c.active = 'advanced'
323 c.repo_group = db.RepoGroup.guess_instance(group_name)
316 c.repo_group = db.RepoGroup.guess_instance(group_name)
324
317
325 return base.render('admin/repo_groups/repo_group_edit.html')
318 return base.render('admin/repo_groups/repo_group_edit.html')
326
319
327 @HasRepoGroupPermissionLevelDecorator('admin')
320 @HasRepoGroupPermissionLevelDecorator('admin')
328 def edit_repo_group_perms(self, group_name):
321 def edit_repo_group_perms(self, group_name):
329 c.active = 'perms'
322 c.active = 'perms'
330 c.repo_group = db.RepoGroup.guess_instance(group_name)
323 c.repo_group = db.RepoGroup.guess_instance(group_name)
331 self.__load_defaults()
324 self.__load_defaults()
332 defaults = self.__load_data(c.repo_group.group_id)
325 defaults = self.__load_data(c.repo_group.group_id)
333
326
334 return htmlfill.render(
327 return htmlfill.render(
335 base.render('admin/repo_groups/repo_group_edit.html'),
328 base.render('admin/repo_groups/repo_group_edit.html'),
336 defaults=defaults,
329 defaults=defaults,
337 encoding="UTF-8",
330 encoding="UTF-8",
338 force_defaults=False
331 force_defaults=False
339 )
332 )
340
333
341 @HasRepoGroupPermissionLevelDecorator('admin')
334 @HasRepoGroupPermissionLevelDecorator('admin')
342 def update_perms(self, group_name):
335 def update_perms(self, group_name):
343 """
336 """
344 Update permissions for given repository group
337 Update permissions for given repository group
345
338
346 :param group_name:
339 :param group_name:
347 """
340 """
348
341
349 c.repo_group = db.RepoGroup.guess_instance(group_name)
342 c.repo_group = db.RepoGroup.guess_instance(group_name)
350 valid_recursive_choices = ['none', 'repos', 'groups', 'all']
343 valid_recursive_choices = ['none', 'repos', 'groups', 'all']
351 form_result = RepoGroupPermsForm(valid_recursive_choices)().to_python(request.POST)
344 form_result = RepoGroupPermsForm(valid_recursive_choices)().to_python(request.POST)
352 if not request.authuser.is_admin:
353 if self._revoke_perms_on_yourself(form_result):
354 msg = _('Cannot revoke permission for yourself as admin')
355 webutils.flash(msg, category='warning')
356 raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
357 recursive = form_result['recursive']
345 recursive = form_result['recursive']
358 # iterate over all members(if in recursive mode) of this groups and
346 # iterate over all members(if in recursive mode) of this groups and
359 # set the permissions !
347 # set the permissions !
360 # this can be potentially heavy operation
348 # this can be potentially heavy operation
361 RepoGroupModel()._update_permissions(c.repo_group,
349 RepoGroupModel()._update_permissions(c.repo_group,
362 form_result['perms_new'],
350 form_result['perms_new'],
363 form_result['perms_updates'],
351 form_result['perms_updates'],
364 recursive)
352 recursive)
365 # TODO: implement this
353 # TODO: implement this
366 #action_logger(request.authuser, 'admin_changed_repo_permissions',
354 #action_logger(request.authuser, 'admin_changed_repo_permissions',
367 # repo_name, request.ip_addr)
355 # repo_name, request.ip_addr)
368 meta.Session().commit()
356 meta.Session().commit()
369 webutils.flash(_('Repository group permissions updated'), category='success')
357 webutils.flash(_('Repository group permissions updated'), category='success')
370 raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
358 raise HTTPFound(location=url('edit_repo_group_perms', group_name=group_name))
371
359
372 @HasRepoGroupPermissionLevelDecorator('admin')
360 @HasRepoGroupPermissionLevelDecorator('admin')
373 def delete_perms(self, group_name):
361 def delete_perms(self, group_name):
374 try:
362 try:
375 obj_type = request.POST.get('obj_type')
363 obj_type = request.POST.get('obj_type')
376 obj_id = None
364 obj_id = None
377 if obj_type == 'user':
365 if obj_type == 'user':
378 obj_id = safe_int(request.POST.get('user_id'))
366 obj_id = safe_int(request.POST.get('user_id'))
379 elif obj_type == 'user_group':
367 elif obj_type == 'user_group':
380 obj_id = safe_int(request.POST.get('user_group_id'))
368 obj_id = safe_int(request.POST.get('user_group_id'))
381
369
382 if not request.authuser.is_admin:
383 if obj_type == 'user' and request.authuser.user_id == obj_id:
384 msg = _('Cannot revoke permission for yourself as admin')
385 webutils.flash(msg, category='warning')
386 raise Exception('revoke admin permission on self')
387 recursive = request.POST.get('recursive', 'none')
370 recursive = request.POST.get('recursive', 'none')
388 if obj_type == 'user':
371 if obj_type == 'user':
389 RepoGroupModel().delete_permission(repo_group=group_name,
372 RepoGroupModel().delete_permission(repo_group=group_name,
390 obj=obj_id, obj_type='user',
373 obj=obj_id, obj_type='user',
391 recursive=recursive)
374 recursive=recursive)
392 elif obj_type == 'user_group':
375 elif obj_type == 'user_group':
393 RepoGroupModel().delete_permission(repo_group=group_name,
376 RepoGroupModel().delete_permission(repo_group=group_name,
394 obj=obj_id,
377 obj=obj_id,
395 obj_type='user_group',
378 obj_type='user_group',
396 recursive=recursive)
379 recursive=recursive)
397
380
398 meta.Session().commit()
381 meta.Session().commit()
399 except Exception:
382 except Exception:
400 log.error(traceback.format_exc())
383 log.error(traceback.format_exc())
401 webutils.flash(_('An error occurred during revoking of permission'),
384 webutils.flash(_('An error occurred during revoking of permission'),
402 category='error')
385 category='error')
403 raise HTTPInternalServerError()
386 raise HTTPInternalServerError()
This diff has been collapsed as it changes many lines, (3500 lines changed) Show them Hide them
@@ -1,4300 +1,2206 b''
1 {
1 {
2 "name": "kallithea",
2 "name": "kallithea",
3 "lockfileVersion": 2,
3 "lockfileVersion": 3,
4 "requires": true,
4 "requires": true,
5 "packages": {
5 "packages": {
6 "": {
6 "": {
7 "name": "kallithea",
7 "name": "kallithea",
8 "dependencies": {
8 "dependencies": {
9 "at.js": "1.5.4",
9 "at.js": "1.5",
10 "bootstrap": "3.3.7",
10 "bootstrap": "3",
11 "codemirror": "5.49.0",
11 "codemirror": "5",
12 "datatables.net": "1.10.20",
12 "datatables.net": "1",
13 "datatables.net-bs": "1.10.20",
13 "datatables.net-bs": "1",
14 "jquery": "3.4.1",
14 "jquery": "3",
15 "jquery.caret": "0.3.1",
15 "jquery.caret": "0.3",
16 "jquery.flot": "0.8.3",
16 "jquery.flot": "0.8",
17 "select2": "3.5.1",
17 "select2": "3",
18 "select2-bootstrap-css": "1.4.6"
18 "select2-bootstrap-css": "1.4.6"
19 },
19 },
20 "devDependencies": {
20 "devDependencies": {
21 "eslint": "6.8.0",
21 "eslint": "6",
22 "eslint-plugin-html": "6.0.0",
22 "eslint-plugin-html": "6",
23 "less": "3.10.3",
23 "less": "3",
24 "less-plugin-clean-css": "1.5.1",
24 "less-plugin-clean-css": "1.5",
25 "license-checker": "25.0.1"
25 "license-checker": "25"
26 }
26 }
27 },
27 },
28 "node_modules/@babel/code-frame": {
28 "node_modules/@babel/code-frame": {
29 "version": "7.8.3",
29 "version": "7.24.7",
30 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
30 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
31 "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
31 "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
32 "dev": true,
32 "dev": true,
33 "dependencies": {
33 "dependencies": {
34 "@babel/highlight": "^7.8.3"
34 "@babel/highlight": "^7.24.7",
35 "picocolors": "^1.0.0"
36 },
37 "engines": {
38 "node": ">=6.9.0"
39 }
40 },
41 "node_modules/@babel/helper-validator-identifier": {
42 "version": "7.24.7",
43 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
44 "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
45 "dev": true,
46 "engines": {
47 "node": ">=6.9.0"
35 }
48 }
36 },
49 },
37 "node_modules/@babel/highlight": {
50 "node_modules/@babel/highlight": {
38 "version": "7.8.3",
51 "version": "7.24.7",
39 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
52 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
40 "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
53 "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
41 "dev": true,
54 "dev": true,
42 "dependencies": {
55 "dependencies": {
43 "chalk": "^2.0.0",
56 "@babel/helper-validator-identifier": "^7.24.7",
44 "esutils": "^2.0.2",
57 "chalk": "^2.4.2",
45 "js-tokens": "^4.0.0"
58 "js-tokens": "^4.0.0",
59 "picocolors": "^1.0.0"
60 },
61 "engines": {
62 "node": ">=6.9.0"
46 }
63 }
47 },
64 },
48 "node_modules/abbrev": {
65 "node_modules/abbrev": {
49 "version": "1.1.1",
66 "version": "1.1.1",
50 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
67 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
51 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
68 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
52 "dev": true
69 "dev": true
53 },
70 },
54 "node_modules/acorn": {
71 "node_modules/acorn": {
55 "version": "7.1.0",
72 "version": "7.4.1",
56 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
73 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
57 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
74 "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
58 "dev": true,
75 "dev": true,
59 "bin": {
76 "bin": {
60 "acorn": "bin/acorn"
77 "acorn": "bin/acorn"
61 },
78 },
62 "engines": {
79 "engines": {
63 "node": ">=0.4.0"
80 "node": ">=0.4.0"
64 }
81 }
65 },
82 },
66 "node_modules/acorn-jsx": {
83 "node_modules/acorn-jsx": {
67 "version": "5.1.0",
84 "version": "5.3.2",
68 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
85 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
69 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
86 "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
70 "dev": true,
87 "dev": true,
71 "peerDependencies": {
88 "peerDependencies": {
72 "acorn": "^6.0.0 || ^7.0.0"
89 "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
73 }
90 }
74 },
91 },
75 "node_modules/ajv": {
92 "node_modules/ajv": {
76 "version": "6.10.2",
93 "version": "6.12.6",
77 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
94 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
78 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
95 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
79 "dev": true,
96 "dev": true,
80 "dependencies": {
97 "dependencies": {
81 "fast-deep-equal": "^2.0.1",
98 "fast-deep-equal": "^3.1.1",
82 "fast-json-stable-stringify": "^2.0.0",
99 "fast-json-stable-stringify": "^2.0.0",
83 "json-schema-traverse": "^0.4.1",
100 "json-schema-traverse": "^0.4.1",
84 "uri-js": "^4.2.2"
101 "uri-js": "^4.2.2"
102 },
103 "funding": {
104 "type": "github",
105 "url": "https://github.com/sponsors/epoberezkin"
85 }
106 }
86 },
107 },
87 "node_modules/amdefine": {
108 "node_modules/amdefine": {
88 "version": "1.0.1",
109 "version": "1.0.1",
89 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
110 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
90 "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
111 "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
91 "dev": true,
112 "dev": true,
92 "engines": {
113 "engines": {
93 "node": ">=0.4.2"
114 "node": ">=0.4.2"
94 }
115 }
95 },
116 },
96 "node_modules/ansi-escapes": {
117 "node_modules/ansi-escapes": {
97 "version": "4.3.0",
118 "version": "4.3.2",
98 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
119 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
99 "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
120 "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
100 "dev": true,
121 "dev": true,
101 "dependencies": {
122 "dependencies": {
102 "type-fest": "^0.8.1"
123 "type-fest": "^0.21.3"
103 },
124 },
104 "engines": {
125 "engines": {
105 "node": ">=8"
126 "node": ">=8"
127 },
128 "funding": {
129 "url": "https://github.com/sponsors/sindresorhus"
130 }
131 },
132 "node_modules/ansi-escapes/node_modules/type-fest": {
133 "version": "0.21.3",
134 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
135 "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
136 "dev": true,
137 "engines": {
138 "node": ">=10"
139 },
140 "funding": {
141 "url": "https://github.com/sponsors/sindresorhus"
106 }
142 }
107 },
143 },
108 "node_modules/ansi-regex": {
144 "node_modules/ansi-regex": {
109 "version": "5.0.0",
145 "version": "4.1.1",
110 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
146 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
111 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
147 "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
112 "dev": true,
148 "dev": true,
113 "engines": {
149 "engines": {
114 "node": ">=8"
150 "node": ">=6"
115 }
151 }
116 },
152 },
117 "node_modules/ansi-styles": {
153 "node_modules/ansi-styles": {
118 "version": "3.2.1",
154 "version": "3.2.1",
119 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
155 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
120 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
156 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
121 "dev": true,
157 "dev": true,
122 "dependencies": {
158 "dependencies": {
123 "color-convert": "^1.9.0"
159 "color-convert": "^1.9.0"
124 },
160 },
125 "engines": {
161 "engines": {
126 "node": ">=4"
162 "node": ">=4"
127 }
163 }
128 },
164 },
129 "node_modules/argparse": {
165 "node_modules/argparse": {
130 "version": "1.0.10",
166 "version": "1.0.10",
131 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
167 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
132 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
168 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
133 "dev": true,
169 "dev": true,
134 "dependencies": {
170 "dependencies": {
135 "sprintf-js": "~1.0.2"
171 "sprintf-js": "~1.0.2"
136 }
172 }
137 },
173 },
138 "node_modules/array-find-index": {
174 "node_modules/array-find-index": {
139 "version": "1.0.2",
175 "version": "1.0.2",
140 "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
176 "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
141 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
177 "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
142 "dev": true,
178 "dev": true,
143 "engines": {
179 "engines": {
144 "node": ">=0.10.0"
180 "node": ">=0.10.0"
145 }
181 }
146 },
182 },
147 "node_modules/asap": {
183 "node_modules/asap": {
148 "version": "2.0.6",
184 "version": "2.0.6",
149 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
185 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
150 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
186 "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
151 "dev": true
187 "dev": true
152 },
188 },
153 "node_modules/asn1": {
154 "version": "0.2.4",
155 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
156 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
157 "dev": true,
158 "optional": true,
159 "dependencies": {
160 "safer-buffer": "~2.1.0"
161 }
162 },
163 "node_modules/assert-plus": {
164 "version": "1.0.0",
165 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
166 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
167 "dev": true,
168 "optional": true,
169 "engines": {
170 "node": ">=0.8"
171 }
172 },
173 "node_modules/astral-regex": {
189 "node_modules/astral-regex": {
174 "version": "1.0.0",
190 "version": "1.0.0",
175 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
191 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
176 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
192 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
177 "dev": true,
193 "dev": true,
178 "engines": {
194 "engines": {
179 "node": ">=4"
195 "node": ">=4"
180 }
196 }
181 },
197 },
182 "node_modules/asynckit": {
183 "version": "0.4.0",
184 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
185 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
186 "dev": true,
187 "optional": true
188 },
189 "node_modules/at.js": {
198 "node_modules/at.js": {
190 "version": "1.5.4",
199 "version": "1.5.4",
191 "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
200 "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
192 "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
201 "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
193 "engines": {
202 "engines": {
194 "node": ">= 0.6.0"
203 "node": ">= 0.6.0"
195 },
204 },
196 "peerDependencies": {
205 "peerDependencies": {
197 "jquery": ">=1.7.0 <4.0.0"
206 "jquery": ">=1.7.0 <4.0.0"
198 }
207 }
199 },
208 },
200 "node_modules/aws-sign2": {
201 "version": "0.7.0",
202 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
203 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
204 "dev": true,
205 "optional": true,
206 "engines": {
207 "node": "*"
208 }
209 },
210 "node_modules/aws4": {
211 "version": "1.8.0",
212 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
213 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
214 "dev": true,
215 "optional": true
216 },
217 "node_modules/balanced-match": {
209 "node_modules/balanced-match": {
218 "version": "1.0.0",
210 "version": "1.0.2",
219 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
211 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
220 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
212 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
221 "dev": true
213 "dev": true
222 },
214 },
223 "node_modules/bcrypt-pbkdf": {
224 "version": "1.0.2",
225 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
226 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
227 "dev": true,
228 "optional": true,
229 "dependencies": {
230 "tweetnacl": "^0.14.3"
231 }
232 },
233 "node_modules/bootstrap": {
215 "node_modules/bootstrap": {
234 "version": "3.3.7",
216 "version": "3.4.1",
235 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
217 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
236 "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=",
218 "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
237 "engines": {
219 "engines": {
238 "node": ">=0.10.1"
220 "node": ">=6"
239 }
221 }
240 },
222 },
241 "node_modules/brace-expansion": {
223 "node_modules/brace-expansion": {
242 "version": "1.1.11",
224 "version": "1.1.11",
243 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
225 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
244 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
226 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
245 "dev": true,
227 "dev": true,
246 "dependencies": {
228 "dependencies": {
247 "balanced-match": "^1.0.0",
229 "balanced-match": "^1.0.0",
248 "concat-map": "0.0.1"
230 "concat-map": "0.0.1"
249 }
231 }
250 },
232 },
251 "node_modules/callsites": {
233 "node_modules/callsites": {
252 "version": "3.1.0",
234 "version": "3.1.0",
253 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
235 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
254 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
236 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
255 "dev": true,
237 "dev": true,
256 "engines": {
238 "engines": {
257 "node": ">=6"
239 "node": ">=6"
258 }
240 }
259 },
241 },
260 "node_modules/caseless": {
261 "version": "0.12.0",
262 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
263 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
264 "dev": true,
265 "optional": true
266 },
267 "node_modules/chalk": {
242 "node_modules/chalk": {
268 "version": "2.4.2",
243 "version": "2.4.2",
269 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
244 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
270 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
245 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
271 "dev": true,
246 "dev": true,
272 "dependencies": {
247 "dependencies": {
273 "ansi-styles": "^3.2.1",
248 "ansi-styles": "^3.2.1",
274 "escape-string-regexp": "^1.0.5",
249 "escape-string-regexp": "^1.0.5",
275 "supports-color": "^5.3.0"
250 "supports-color": "^5.3.0"
276 },
251 },
277 "engines": {
252 "engines": {
278 "node": ">=4"
253 "node": ">=4"
279 }
254 }
280 },
255 },
281 "node_modules/chardet": {
256 "node_modules/chardet": {
282 "version": "0.7.0",
257 "version": "0.7.0",
283 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
258 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
284 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
259 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
285 "dev": true
260 "dev": true
286 },
261 },
287 "node_modules/clean-css": {
262 "node_modules/clean-css": {
288 "version": "3.4.28",
263 "version": "3.4.28",
289 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
264 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
290 "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
265 "integrity": "sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw==",
291 "dev": true,
266 "dev": true,
292 "dependencies": {
267 "dependencies": {
293 "commander": "2.8.x",
268 "commander": "2.8.x",
294 "source-map": "0.4.x"
269 "source-map": "0.4.x"
295 },
270 },
296 "bin": {
271 "bin": {
297 "cleancss": "bin/cleancss"
272 "cleancss": "bin/cleancss"
298 },
273 },
299 "engines": {
274 "engines": {
300 "node": ">=0.10.0"
275 "node": ">=0.10.0"
301 }
276 }
302 },
277 },
303 "node_modules/clean-css/node_modules/source-map": {
278 "node_modules/clean-css/node_modules/source-map": {
304 "version": "0.4.4",
279 "version": "0.4.4",
305 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
280 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
306 "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
281 "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==",
307 "dev": true,
282 "dev": true,
308 "dependencies": {
283 "dependencies": {
309 "amdefine": ">=0.0.4"
284 "amdefine": ">=0.0.4"
310 },
285 },
311 "engines": {
286 "engines": {
312 "node": ">=0.8.0"
287 "node": ">=0.8.0"
313 }
288 }
314 },
289 },
315 "node_modules/cli-cursor": {
290 "node_modules/cli-cursor": {
316 "version": "3.1.0",
291 "version": "3.1.0",
317 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
292 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
318 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
293 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
319 "dev": true,
294 "dev": true,
320 "dependencies": {
295 "dependencies": {
321 "restore-cursor": "^3.1.0"
296 "restore-cursor": "^3.1.0"
322 },
297 },
323 "engines": {
298 "engines": {
324 "node": ">=8"
299 "node": ">=8"
325 }
300 }
326 },
301 },
327 "node_modules/cli-width": {
302 "node_modules/cli-width": {
328 "version": "2.2.0",
303 "version": "3.0.0",
329 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
304 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
330 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
305 "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
331 "dev": true
332 },
333 "node_modules/clone": {
334 "version": "2.1.2",
335 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
336 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
337 "dev": true,
306 "dev": true,
338 "engines": {
307 "engines": {
339 "node": ">=0.8"
308 "node": ">= 10"
340 }
309 }
341 },
310 },
342 "node_modules/codemirror": {
311 "node_modules/codemirror": {
343 "version": "5.49.0",
312 "version": "5.65.17",
344 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
313 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz",
345 "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
314 "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ=="
346 },
315 },
347 "node_modules/color-convert": {
316 "node_modules/color-convert": {
348 "version": "1.9.3",
317 "version": "1.9.3",
349 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
318 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
350 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
319 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
351 "dev": true,
320 "dev": true,
352 "dependencies": {
321 "dependencies": {
353 "color-name": "1.1.3"
322 "color-name": "1.1.3"
354 }
323 }
355 },
324 },
356 "node_modules/color-name": {
325 "node_modules/color-name": {
357 "version": "1.1.3",
326 "version": "1.1.3",
358 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
327 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
359 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
328 "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
360 "dev": true
329 "dev": true
361 },
330 },
362 "node_modules/combined-stream": {
363 "version": "1.0.8",
364 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
365 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
366 "dev": true,
367 "optional": true,
368 "dependencies": {
369 "delayed-stream": "~1.0.0"
370 },
371 "engines": {
372 "node": ">= 0.8"
373 }
374 },
375 "node_modules/commander": {
331 "node_modules/commander": {
376 "version": "2.8.1",
332 "version": "2.8.1",
377 "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
333 "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
378 "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
334 "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==",
379 "dev": true,
335 "dev": true,
380 "dependencies": {
336 "dependencies": {
381 "graceful-readlink": ">= 1.0.0"
337 "graceful-readlink": ">= 1.0.0"
382 },
338 },
383 "engines": {
339 "engines": {
384 "node": ">= 0.6.x"
340 "node": ">= 0.6.x"
385 }
341 }
386 },
342 },
387 "node_modules/concat-map": {
343 "node_modules/concat-map": {
388 "version": "0.0.1",
344 "version": "0.0.1",
389 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
345 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
390 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
346 "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
391 "dev": true
347 "dev": true
392 },
348 },
393 "node_modules/core-util-is": {
349 "node_modules/copy-anything": {
394 "version": "1.0.2",
350 "version": "2.0.6",
395 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
351 "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
396 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
352 "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
397 "dev": true,
353 "dev": true,
398 "optional": true
354 "dependencies": {
355 "is-what": "^3.14.1"
356 },
357 "funding": {
358 "url": "https://github.com/sponsors/mesqueeb"
359 }
399 },
360 },
400 "node_modules/cross-spawn": {
361 "node_modules/cross-spawn": {
401 "version": "6.0.5",
362 "version": "6.0.5",
402 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
363 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
403 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
364 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
404 "dev": true,
365 "dev": true,
405 "dependencies": {
366 "dependencies": {
406 "nice-try": "^1.0.4",
367 "nice-try": "^1.0.4",
407 "path-key": "^2.0.1",
368 "path-key": "^2.0.1",
408 "semver": "^5.5.0",
369 "semver": "^5.5.0",
409 "shebang-command": "^1.2.0",
370 "shebang-command": "^1.2.0",
410 "which": "^1.2.9"
371 "which": "^1.2.9"
411 },
372 },
412 "engines": {
373 "engines": {
413 "node": ">=4.8"
374 "node": ">=4.8"
414 }
375 }
415 },
376 },
416 "node_modules/dashdash": {
377 "node_modules/cross-spawn/node_modules/semver": {
417 "version": "1.14.1",
378 "version": "5.7.2",
418 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
379 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
419 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
380 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
420 "dev": true,
381 "dev": true,
421 "optional": true,
382 "bin": {
422 "dependencies": {
383 "semver": "bin/semver"
423 "assert-plus": "^1.0.0"
424 },
425 "engines": {
426 "node": ">=0.10"
427 }
384 }
428 },
385 },
429 "node_modules/datatables.net": {
386 "node_modules/datatables.net": {
430 "version": "1.10.20",
387 "version": "1.13.11",
431 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
388 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz",
432 "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
389 "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==",
433 "dependencies": {
390 "dependencies": {
434 "jquery": ">=1.7"
391 "jquery": "1.8 - 4"
435 }
392 }
436 },
393 },
437 "node_modules/datatables.net-bs": {
394 "node_modules/datatables.net-bs": {
438 "version": "1.10.20",
395 "version": "1.13.11",
439 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
396 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.13.11.tgz",
440 "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
397 "integrity": "sha512-oZeXzC2Z+pZc9Wpil6XuuwMPMfllSd+hWEauhKr8q7bTM5fGuBKzAVzSr7Tuo1OzMBZ6NkAb+HSBGCGUn5Qbhg==",
441 "dependencies": {
398 "dependencies": {
442 "datatables.net": "1.10.20",
399 "datatables.net": "1.13.11",
443 "jquery": ">=1.7"
400 "jquery": "1.8 - 4"
444 }
401 }
445 },
402 },
446 "node_modules/debug": {
403 "node_modules/debug": {
447 "version": "3.2.6",
404 "version": "4.3.5",
448 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
405 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
449 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
406 "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
450 "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
451 "dev": true,
407 "dev": true,
452 "dependencies": {
408 "dependencies": {
453 "ms": "^2.1.1"
409 "ms": "2.1.2"
410 },
411 "engines": {
412 "node": ">=6.0"
413 },
414 "peerDependenciesMeta": {
415 "supports-color": {
416 "optional": true
417 }
454 }
418 }
455 },
419 },
456 "node_modules/debuglog": {
420 "node_modules/debuglog": {
457 "version": "1.0.1",
421 "version": "1.0.1",
458 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
422 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
459 "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
423 "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
424 "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
460 "dev": true,
425 "dev": true,
461 "engines": {
426 "engines": {
462 "node": "*"
427 "node": "*"
463 }
428 }
464 },
429 },
465 "node_modules/deep-is": {
430 "node_modules/deep-is": {
466 "version": "0.1.3",
431 "version": "0.1.4",
467 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
432 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
468 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
433 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
469 "dev": true
434 "dev": true
470 },
435 },
471 "node_modules/delayed-stream": {
472 "version": "1.0.0",
473 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
474 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
475 "dev": true,
476 "optional": true,
477 "engines": {
478 "node": ">=0.4.0"
479 }
480 },
481 "node_modules/dezalgo": {
436 "node_modules/dezalgo": {
482 "version": "1.0.3",
437 "version": "1.0.4",
483 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
438 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
484 "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
439 "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
485 "dev": true,
440 "dev": true,
486 "dependencies": {
441 "dependencies": {
487 "asap": "^2.0.0",
442 "asap": "^2.0.0",
488 "wrappy": "1"
443 "wrappy": "1"
489 }
444 }
490 },
445 },
491 "node_modules/doctrine": {
446 "node_modules/doctrine": {
492 "version": "3.0.0",
447 "version": "3.0.0",
493 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
448 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
494 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
449 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
495 "dev": true,
450 "dev": true,
496 "dependencies": {
451 "dependencies": {
497 "esutils": "^2.0.2"
452 "esutils": "^2.0.2"
498 },
453 },
499 "engines": {
454 "engines": {
500 "node": ">=6.0.0"
455 "node": ">=6.0.0"
501 }
456 }
502 },
457 },
503 "node_modules/dom-serializer": {
458 "node_modules/dom-serializer": {
504 "version": "0.2.2",
459 "version": "1.4.1",
505 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
460 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
506 "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
461 "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
507 "dev": true,
462 "dev": true,
508 "dependencies": {
463 "dependencies": {
509 "domelementtype": "^2.0.1",
464 "domelementtype": "^2.0.1",
465 "domhandler": "^4.2.0",
510 "entities": "^2.0.0"
466 "entities": "^2.0.0"
511 }
512 },
467 },
513 "node_modules/dom-serializer/node_modules/domelementtype": {
468 "funding": {
514 "version": "2.0.1",
469 "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
515 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
470 }
516 "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
517 "dev": true
518 },
471 },
519 "node_modules/dom-serializer/node_modules/entities": {
472 "node_modules/dom-serializer/node_modules/entities": {
520 "version": "2.0.0",
473 "version": "2.2.0",
521 "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
474 "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
522 "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
475 "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
523 "dev": true
476 "dev": true,
477 "funding": {
478 "url": "https://github.com/fb55/entities?sponsor=1"
479 }
524 },
480 },
525 "node_modules/domelementtype": {
481 "node_modules/domelementtype": {
526 "version": "1.3.1",
482 "version": "2.3.0",
527 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
483 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
528 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
484 "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
529 "dev": true
485 "dev": true,
486 "funding": [
487 {
488 "type": "github",
489 "url": "https://github.com/sponsors/fb55"
490 }
491 ]
530 },
492 },
531 "node_modules/domhandler": {
493 "node_modules/domhandler": {
532 "version": "2.4.2",
494 "version": "4.3.1",
533 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
495 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
534 "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
496 "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
535 "dev": true,
497 "dev": true,
536 "dependencies": {
498 "dependencies": {
537 "domelementtype": "1"
499 "domelementtype": "^2.2.0"
500 },
501 "engines": {
502 "node": ">= 4"
503 },
504 "funding": {
505 "url": "https://github.com/fb55/domhandler?sponsor=1"
538 }
506 }
539 },
507 },
540 "node_modules/domutils": {
508 "node_modules/domutils": {
541 "version": "1.7.0",
509 "version": "2.8.0",
542 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
510 "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
543 "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
511 "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
544 "dev": true,
512 "dev": true,
545 "dependencies": {
513 "dependencies": {
546 "dom-serializer": "0",
514 "dom-serializer": "^1.0.1",
547 "domelementtype": "1"
515 "domelementtype": "^2.2.0",
548 }
516 "domhandler": "^4.2.0"
549 },
517 },
550 "node_modules/ecc-jsbn": {
518 "funding": {
551 "version": "0.1.2",
519 "url": "https://github.com/fb55/domutils?sponsor=1"
552 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
553 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
554 "dev": true,
555 "optional": true,
556 "dependencies": {
557 "jsbn": "~0.1.0",
558 "safer-buffer": "^2.1.0"
559 }
520 }
560 },
521 },
561 "node_modules/emoji-regex": {
522 "node_modules/emoji-regex": {
562 "version": "8.0.0",
523 "version": "8.0.0",
563 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
524 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
564 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
525 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
565 "dev": true
526 "dev": true
566 },
527 },
567 "node_modules/entities": {
528 "node_modules/entities": {
568 "version": "1.1.2",
529 "version": "3.0.1",
569 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
530 "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
570 "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
531 "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
571 "dev": true
532 "dev": true,
533 "engines": {
534 "node": ">=0.12"
535 },
536 "funding": {
537 "url": "https://github.com/fb55/entities?sponsor=1"
538 }
572 },
539 },
573 "node_modules/errno": {
540 "node_modules/errno": {
574 "version": "0.1.7",
541 "version": "0.1.8",
575 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
542 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
576 "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
543 "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
577 "dev": true,
544 "dev": true,
578 "optional": true,
545 "optional": true,
579 "dependencies": {
546 "dependencies": {
580 "prr": "~1.0.1"
547 "prr": "~1.0.1"
581 },
548 },
582 "bin": {
549 "bin": {
583 "errno": "cli.js"
550 "errno": "cli.js"
584 }
551 }
585 },
552 },
586 "node_modules/escape-string-regexp": {
553 "node_modules/escape-string-regexp": {
587 "version": "1.0.5",
554 "version": "1.0.5",
588 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
555 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
589 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
556 "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
590 "dev": true,
557 "dev": true,
591 "engines": {
558 "engines": {
592 "node": ">=0.8.0"
559 "node": ">=0.8.0"
593 }
560 }
594 },
561 },
595 "node_modules/eslint": {
562 "node_modules/eslint": {
596 "version": "6.8.0",
563 "version": "6.8.0",
597 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
564 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
598 "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
565 "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
599 "dev": true,
566 "dev": true,
600 "dependencies": {
567 "dependencies": {
601 "@babel/code-frame": "^7.0.0",
568 "@babel/code-frame": "^7.0.0",
602 "ajv": "^6.10.0",
569 "ajv": "^6.10.0",
603 "chalk": "^2.1.0",
570 "chalk": "^2.1.0",
604 "cross-spawn": "^6.0.5",
571 "cross-spawn": "^6.0.5",
605 "debug": "^4.0.1",
572 "debug": "^4.0.1",
606 "doctrine": "^3.0.0",
573 "doctrine": "^3.0.0",
607 "eslint-scope": "^5.0.0",
574 "eslint-scope": "^5.0.0",
608 "eslint-utils": "^1.4.3",
575 "eslint-utils": "^1.4.3",
609 "eslint-visitor-keys": "^1.1.0",
576 "eslint-visitor-keys": "^1.1.0",
610 "espree": "^6.1.2",
577 "espree": "^6.1.2",
611 "esquery": "^1.0.1",
578 "esquery": "^1.0.1",
612 "esutils": "^2.0.2",
579 "esutils": "^2.0.2",
613 "file-entry-cache": "^5.0.1",
580 "file-entry-cache": "^5.0.1",
614 "functional-red-black-tree": "^1.0.1",
581 "functional-red-black-tree": "^1.0.1",
615 "glob-parent": "^5.0.0",
582 "glob-parent": "^5.0.0",
616 "globals": "^12.1.0",
583 "globals": "^12.1.0",
617 "ignore": "^4.0.6",
584 "ignore": "^4.0.6",
618 "import-fresh": "^3.0.0",
585 "import-fresh": "^3.0.0",
619 "imurmurhash": "^0.1.4",
586 "imurmurhash": "^0.1.4",
620 "inquirer": "^7.0.0",
587 "inquirer": "^7.0.0",
621 "is-glob": "^4.0.0",
588 "is-glob": "^4.0.0",
622 "js-yaml": "^3.13.1",
589 "js-yaml": "^3.13.1",
623 "json-stable-stringify-without-jsonify": "^1.0.1",
590 "json-stable-stringify-without-jsonify": "^1.0.1",
624 "levn": "^0.3.0",
591 "levn": "^0.3.0",
625 "lodash": "^4.17.14",
592 "lodash": "^4.17.14",
626 "minimatch": "^3.0.4",
593 "minimatch": "^3.0.4",
627 "mkdirp": "^0.5.1",
594 "mkdirp": "^0.5.1",
628 "natural-compare": "^1.4.0",
595 "natural-compare": "^1.4.0",
629 "optionator": "^0.8.3",
596 "optionator": "^0.8.3",
630 "progress": "^2.0.0",
597 "progress": "^2.0.0",
631 "regexpp": "^2.0.1",
598 "regexpp": "^2.0.1",
632 "semver": "^6.1.2",
599 "semver": "^6.1.2",
633 "strip-ansi": "^5.2.0",
600 "strip-ansi": "^5.2.0",
634 "strip-json-comments": "^3.0.1",
601 "strip-json-comments": "^3.0.1",
635 "table": "^5.2.3",
602 "table": "^5.2.3",
636 "text-table": "^0.2.0",
603 "text-table": "^0.2.0",
637 "v8-compile-cache": "^2.0.3"
604 "v8-compile-cache": "^2.0.3"
638 },
605 },
639 "bin": {
606 "bin": {
640 "eslint": "bin/eslint.js"
607 "eslint": "bin/eslint.js"
641 },
608 },
642 "engines": {
609 "engines": {
643 "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
610 "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
644 },
611 },
645 "funding": {
612 "funding": {
646 "url": "https://opencollective.com/eslint"
613 "url": "https://opencollective.com/eslint"
647 }
614 }
648 },
615 },
649 "node_modules/eslint-plugin-html": {
616 "node_modules/eslint-plugin-html": {
650 "version": "6.0.0",
617 "version": "6.2.0",
651 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
618 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.2.0.tgz",
652 "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
619 "integrity": "sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==",
653 "dev": true,
620 "dev": true,
654 "dependencies": {
621 "dependencies": {
655 "htmlparser2": "^3.10.1"
622 "htmlparser2": "^7.1.2"
656 }
623 }
657 },
624 },
658 "node_modules/eslint-scope": {
625 "node_modules/eslint-scope": {
659 "version": "5.0.0",
626 "version": "5.1.1",
660 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
627 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
661 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
628 "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
662 "dev": true,
629 "dev": true,
663 "dependencies": {
630 "dependencies": {
664 "esrecurse": "^4.1.0",
631 "esrecurse": "^4.3.0",
665 "estraverse": "^4.1.1"
632 "estraverse": "^4.1.1"
666 },
633 },
667 "engines": {
634 "engines": {
668 "node": ">=8.0.0"
635 "node": ">=8.0.0"
669 }
636 }
670 },
637 },
671 "node_modules/eslint-utils": {
638 "node_modules/eslint-utils": {
672 "version": "1.4.3",
639 "version": "1.4.3",
673 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
640 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
674 "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
641 "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
675 "dev": true,
642 "dev": true,
676 "dependencies": {
643 "dependencies": {
677 "eslint-visitor-keys": "^1.1.0"
644 "eslint-visitor-keys": "^1.1.0"
678 },
645 },
679 "engines": {
646 "engines": {
680 "node": ">=6"
647 "node": ">=6"
681 }
648 }
682 },
649 },
683 "node_modules/eslint-visitor-keys": {
650 "node_modules/eslint-visitor-keys": {
684 "version": "1.1.0",
651 "version": "1.3.0",
685 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
652 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
686 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
653 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
687 "dev": true,
654 "dev": true,
688 "engines": {
655 "engines": {
689 "node": ">=4"
656 "node": ">=4"
690 }
657 }
691 },
658 },
692 "node_modules/eslint/node_modules/debug": {
659 "node_modules/espree": {
693 "version": "4.1.1",
660 "version": "6.2.1",
694 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
661 "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
695 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
662 "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
696 "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
697 "dev": true,
663 "dev": true,
698 "dependencies": {
664 "dependencies": {
699 "ms": "^2.1.1"
665 "acorn": "^7.1.1",
700 }
666 "acorn-jsx": "^5.2.0",
701 },
702 "node_modules/eslint/node_modules/semver": {
703 "version": "6.3.0",
704 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
705 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
706 "dev": true,
707 "bin": {
708 "semver": "bin/semver.js"
709 }
710 },
711 "node_modules/espree": {
712 "version": "6.1.2",
713 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
714 "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
715 "dev": true,
716 "dependencies": {
717 "acorn": "^7.1.0",
718 "acorn-jsx": "^5.1.0",
719 "eslint-visitor-keys": "^1.1.0"
667 "eslint-visitor-keys": "^1.1.0"
720 },
668 },
721 "engines": {
669 "engines": {
722 "node": ">=6.0.0"
670 "node": ">=6.0.0"
723 }
671 }
724 },
672 },
725 "node_modules/esprima": {
673 "node_modules/esprima": {
726 "version": "4.0.1",
674 "version": "4.0.1",
727 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
675 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
728 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
676 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
729 "dev": true,
677 "dev": true,
730 "bin": {
678 "bin": {
731 "esparse": "bin/esparse.js",
679 "esparse": "bin/esparse.js",
732 "esvalidate": "bin/esvalidate.js"
680 "esvalidate": "bin/esvalidate.js"
733 },
681 },
734 "engines": {
682 "engines": {
735 "node": ">=4"
683 "node": ">=4"
736 }
684 }
737 },
685 },
738 "node_modules/esquery": {
686 "node_modules/esquery": {
739 "version": "1.1.0",
687 "version": "1.6.0",
740 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
688 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
741 "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
689 "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
742 "dev": true,
690 "dev": true,
743 "dependencies": {
691 "dependencies": {
744 "estraverse": "^4.0.0"
692 "estraverse": "^5.1.0"
745 },
693 },
746 "engines": {
694 "engines": {
747 "node": ">=0.6"
695 "node": ">=0.10"
696 }
697 },
698 "node_modules/esquery/node_modules/estraverse": {
699 "version": "5.3.0",
700 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
701 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
702 "dev": true,
703 "engines": {
704 "node": ">=4.0"
748 }
705 }
749 },
706 },
750 "node_modules/esrecurse": {
707 "node_modules/esrecurse": {
751 "version": "4.2.1",
708 "version": "4.3.0",
752 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
709 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
753 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
710 "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
754 "dev": true,
711 "dev": true,
755 "dependencies": {
712 "dependencies": {
756 "estraverse": "^4.1.0"
713 "estraverse": "^5.2.0"
714 },
715 "engines": {
716 "node": ">=4.0"
717 }
757 },
718 },
719 "node_modules/esrecurse/node_modules/estraverse": {
720 "version": "5.3.0",
721 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
722 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
723 "dev": true,
758 "engines": {
724 "engines": {
759 "node": ">=4.0"
725 "node": ">=4.0"
760 }
726 }
761 },
727 },
762 "node_modules/estraverse": {
728 "node_modules/estraverse": {
763 "version": "4.3.0",
729 "version": "4.3.0",
764 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
730 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
765 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
731 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
766 "dev": true,
732 "dev": true,
767 "engines": {
733 "engines": {
768 "node": ">=4.0"
734 "node": ">=4.0"
769 }
735 }
770 },
736 },
771 "node_modules/esutils": {
737 "node_modules/esutils": {
772 "version": "2.0.3",
738 "version": "2.0.3",
773 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
739 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
774 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
740 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
775 "dev": true,
741 "dev": true,
776 "engines": {
742 "engines": {
777 "node": ">=0.10.0"
743 "node": ">=0.10.0"
778 }
744 }
779 },
745 },
780 "node_modules/extend": {
781 "version": "3.0.2",
782 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
783 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
784 "dev": true,
785 "optional": true
786 },
787 "node_modules/external-editor": {
746 "node_modules/external-editor": {
788 "version": "3.1.0",
747 "version": "3.1.0",
789 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
748 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
790 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
749 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
791 "dev": true,
750 "dev": true,
792 "dependencies": {
751 "dependencies": {
793 "chardet": "^0.7.0",
752 "chardet": "^0.7.0",
794 "iconv-lite": "^0.4.24",
753 "iconv-lite": "^0.4.24",
795 "tmp": "^0.0.33"
754 "tmp": "^0.0.33"
796 },
755 },
797 "engines": {
756 "engines": {
798 "node": ">=4"
757 "node": ">=4"
799 }
758 }
800 },
759 },
801 "node_modules/extsprintf": {
802 "version": "1.3.0",
803 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
804 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
805 "dev": true,
806 "engines": [
807 "node >=0.6.0"
808 ],
809 "optional": true
810 },
811 "node_modules/fast-deep-equal": {
760 "node_modules/fast-deep-equal": {
812 "version": "2.0.1",
761 "version": "3.1.3",
813 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
762 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
814 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
763 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
815 "dev": true
764 "dev": true
816 },
765 },
817 "node_modules/fast-json-stable-stringify": {
766 "node_modules/fast-json-stable-stringify": {
818 "version": "2.0.0",
767 "version": "2.1.0",
819 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
768 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
820 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
769 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
821 "dev": true
770 "dev": true
822 },
771 },
823 "node_modules/fast-levenshtein": {
772 "node_modules/fast-levenshtein": {
824 "version": "2.0.6",
773 "version": "2.0.6",
825 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
774 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
826 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
775 "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
827 "dev": true
776 "dev": true
828 },
777 },
829 "node_modules/figures": {
778 "node_modules/figures": {
830 "version": "3.2.0",
779 "version": "3.2.0",
831 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
780 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
832 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
781 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
833 "dev": true,
782 "dev": true,
834 "dependencies": {
783 "dependencies": {
835 "escape-string-regexp": "^1.0.5"
784 "escape-string-regexp": "^1.0.5"
836 },
785 },
837 "engines": {
786 "engines": {
838 "node": ">=8"
787 "node": ">=8"
839 },
788 },
840 "funding": {
789 "funding": {
841 "url": "https://github.com/sponsors/sindresorhus"
790 "url": "https://github.com/sponsors/sindresorhus"
842 }
791 }
843 },
792 },
844 "node_modules/file-entry-cache": {
793 "node_modules/file-entry-cache": {
845 "version": "5.0.1",
794 "version": "5.0.1",
846 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
795 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
847 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
796 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
848 "dev": true,
797 "dev": true,
849 "dependencies": {
798 "dependencies": {
850 "flat-cache": "^2.0.1"
799 "flat-cache": "^2.0.1"
851 },
800 },
852 "engines": {
801 "engines": {
853 "node": ">=4"
802 "node": ">=4"
854 }
803 }
855 },
804 },
856 "node_modules/flat-cache": {
805 "node_modules/flat-cache": {
857 "version": "2.0.1",
806 "version": "2.0.1",
858 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
807 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
859 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
808 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
860 "dev": true,
809 "dev": true,
861 "dependencies": {
810 "dependencies": {
862 "flatted": "^2.0.0",
811 "flatted": "^2.0.0",
863 "rimraf": "2.6.3",
812 "rimraf": "2.6.3",
864 "write": "1.0.3"
813 "write": "1.0.3"
865 },
814 },
866 "engines": {
815 "engines": {
867 "node": ">=4"
816 "node": ">=4"
868 }
817 }
869 },
818 },
870 "node_modules/flatted": {
819 "node_modules/flatted": {
871 "version": "2.0.1",
820 "version": "2.0.2",
872 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
821 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
873 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
822 "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
874 "dev": true
823 "dev": true
875 },
824 },
876 "node_modules/forever-agent": {
877 "version": "0.6.1",
878 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
879 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
880 "dev": true,
881 "optional": true,
882 "engines": {
883 "node": "*"
884 }
885 },
886 "node_modules/form-data": {
887 "version": "2.3.3",
888 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
889 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
890 "dev": true,
891 "optional": true,
892 "dependencies": {
893 "asynckit": "^0.4.0",
894 "combined-stream": "^1.0.6",
895 "mime-types": "^2.1.12"
896 },
897 "engines": {
898 "node": ">= 0.12"
899 }
900 },
901 "node_modules/fs.realpath": {
825 "node_modules/fs.realpath": {
902 "version": "1.0.0",
826 "version": "1.0.0",
903 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
827 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
904 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
828 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
905 "dev": true
829 "dev": true
906 },
830 },
831 "node_modules/function-bind": {
832 "version": "1.1.2",
833 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
834 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
835 "dev": true,
836 "funding": {
837 "url": "https://github.com/sponsors/ljharb"
838 }
839 },
907 "node_modules/functional-red-black-tree": {
840 "node_modules/functional-red-black-tree": {
908 "version": "1.0.1",
841 "version": "1.0.1",
909 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
842 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
910 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
843 "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
911 "dev": true
844 "dev": true
912 },
845 },
913 "node_modules/getpass": {
914 "version": "0.1.7",
915 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
916 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
917 "dev": true,
918 "optional": true,
919 "dependencies": {
920 "assert-plus": "^1.0.0"
921 }
922 },
923 "node_modules/glob": {
846 "node_modules/glob": {
924 "version": "7.1.6",
847 "version": "7.2.3",
925 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
848 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
926 "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
849 "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
850 "deprecated": "Glob versions prior to v9 are no longer supported",
927 "dev": true,
851 "dev": true,
928 "dependencies": {
852 "dependencies": {
929 "fs.realpath": "^1.0.0",
853 "fs.realpath": "^1.0.0",
930 "inflight": "^1.0.4",
854 "inflight": "^1.0.4",
931 "inherits": "2",
855 "inherits": "2",
932 "minimatch": "^3.0.4",
856 "minimatch": "^3.1.1",
933 "once": "^1.3.0",
857 "once": "^1.3.0",
934 "path-is-absolute": "^1.0.0"
858 "path-is-absolute": "^1.0.0"
935 },
859 },
936 "engines": {
860 "engines": {
937 "node": "*"
861 "node": "*"
938 },
862 },
939 "funding": {
863 "funding": {
940 "url": "https://github.com/sponsors/isaacs"
864 "url": "https://github.com/sponsors/isaacs"
941 }
865 }
942 },
866 },
943 "node_modules/glob-parent": {
867 "node_modules/glob-parent": {
944 "version": "5.1.0",
868 "version": "5.1.2",
945 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
869 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
946 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
870 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
947 "dev": true,
871 "dev": true,
948 "dependencies": {
872 "dependencies": {
949 "is-glob": "^4.0.1"
873 "is-glob": "^4.0.1"
950 },
874 },
951 "engines": {
875 "engines": {
952 "node": ">= 6"
876 "node": ">= 6"
953 }
877 }
954 },
878 },
955 "node_modules/globals": {
879 "node_modules/globals": {
956 "version": "12.3.0",
880 "version": "12.4.0",
957 "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
881 "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
958 "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
882 "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
959 "dev": true,
883 "dev": true,
960 "dependencies": {
884 "dependencies": {
961 "type-fest": "^0.8.1"
885 "type-fest": "^0.8.1"
962 },
886 },
963 "engines": {
887 "engines": {
964 "node": ">=8"
888 "node": ">=8"
889 },
890 "funding": {
891 "url": "https://github.com/sponsors/sindresorhus"
965 }
892 }
966 },
893 },
967 "node_modules/graceful-fs": {
894 "node_modules/graceful-fs": {
968 "version": "4.2.3",
895 "version": "4.2.11",
969 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
896 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
970 "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
897 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
971 "dev": true
898 "dev": true
972 },
899 },
973 "node_modules/graceful-readlink": {
900 "node_modules/graceful-readlink": {
974 "version": "1.0.1",
901 "version": "1.0.1",
975 "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
902 "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
976 "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
903 "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==",
977 "dev": true
904 "dev": true
978 },
905 },
979 "node_modules/har-schema": {
980 "version": "2.0.0",
981 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
982 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
983 "dev": true,
984 "optional": true,
985 "engines": {
986 "node": ">=4"
987 }
988 },
989 "node_modules/har-validator": {
990 "version": "5.1.3",
991 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
992 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
993 "deprecated": "this library is no longer supported",
994 "dev": true,
995 "optional": true,
996 "dependencies": {
997 "ajv": "^6.5.5",
998 "har-schema": "^2.0.0"
999 },
1000 "engines": {
1001 "node": ">=6"
1002 }
1003 },
1004 "node_modules/has-flag": {
906 "node_modules/has-flag": {
1005 "version": "3.0.0",
907 "version": "3.0.0",
1006 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
908 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1007 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
909 "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1008 "dev": true,
910 "dev": true,
1009 "engines": {
911 "engines": {
1010 "node": ">=4"
912 "node": ">=4"
1011 }
913 }
1012 },
914 },
915 "node_modules/hasown": {
916 "version": "2.0.2",
917 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
918 "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
919 "dev": true,
920 "dependencies": {
921 "function-bind": "^1.1.2"
922 },
923 "engines": {
924 "node": ">= 0.4"
925 }
926 },
1013 "node_modules/hosted-git-info": {
927 "node_modules/hosted-git-info": {
1014 "version": "2.8.5",
928 "version": "2.8.9",
1015 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
929 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
1016 "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
930 "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
1017 "dev": true
931 "dev": true
1018 },
932 },
1019 "node_modules/htmlparser2": {
933 "node_modules/htmlparser2": {
1020 "version": "3.10.1",
934 "version": "7.2.0",
1021 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
935 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
1022 "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
936 "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==",
1023 "dev": true,
937 "dev": true,
1024 "dependencies": {
938 "funding": [
1025 "domelementtype": "^1.3.1",
939 "https://github.com/fb55/htmlparser2?sponsor=1",
1026 "domhandler": "^2.3.0",
940 {
1027 "domutils": "^1.5.1",
941 "type": "github",
1028 "entities": "^1.1.1",
942 "url": "https://github.com/sponsors/fb55"
1029 "inherits": "^2.0.1",
1030 "readable-stream": "^3.1.1"
1031 }
943 }
1032 },
944 ],
1033 "node_modules/http-signature": {
1034 "version": "1.2.0",
1035 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1036 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1037 "dev": true,
1038 "optional": true,
1039 "dependencies": {
945 "dependencies": {
1040 "assert-plus": "^1.0.0",
946 "domelementtype": "^2.0.1",
1041 "jsprim": "^1.2.2",
947 "domhandler": "^4.2.2",
1042 "sshpk": "^1.7.0"
948 "domutils": "^2.8.0",
1043 },
949 "entities": "^3.0.1"
1044 "engines": {
1045 "node": ">=0.8",
1046 "npm": ">=1.3.7"
1047 }
950 }
1048 },
951 },
1049 "node_modules/iconv-lite": {
952 "node_modules/iconv-lite": {
1050 "version": "0.4.24",
953 "version": "0.4.24",
1051 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
954 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1052 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
955 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1053 "dev": true,
956 "dev": true,
1054 "dependencies": {
957 "dependencies": {
1055 "safer-buffer": ">= 2.1.2 < 3"
958 "safer-buffer": ">= 2.1.2 < 3"
1056 },
959 },
1057 "engines": {
960 "engines": {
1058 "node": ">=0.10.0"
961 "node": ">=0.10.0"
1059 }
962 }
1060 },
963 },
1061 "node_modules/ignore": {
964 "node_modules/ignore": {
1062 "version": "4.0.6",
965 "version": "4.0.6",
1063 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
966 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1064 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
967 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1065 "dev": true,
968 "dev": true,
1066 "engines": {
969 "engines": {
1067 "node": ">= 4"
970 "node": ">= 4"
1068 }
971 }
1069 },
972 },
1070 "node_modules/image-size": {
973 "node_modules/image-size": {
1071 "version": "0.5.5",
974 "version": "0.5.5",
1072 "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
975 "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
1073 "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
976 "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
1074 "dev": true,
977 "dev": true,
1075 "optional": true,
978 "optional": true,
1076 "bin": {
979 "bin": {
1077 "image-size": "bin/image-size.js"
980 "image-size": "bin/image-size.js"
1078 },
981 },
1079 "engines": {
982 "engines": {
1080 "node": ">=0.10.0"
983 "node": ">=0.10.0"
1081 }
984 }
1082 },
985 },
1083 "node_modules/import-fresh": {
986 "node_modules/import-fresh": {
1084 "version": "3.2.1",
987 "version": "3.3.0",
1085 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
988 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1086 "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
989 "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1087 "dev": true,
990 "dev": true,
1088 "dependencies": {
991 "dependencies": {
1089 "parent-module": "^1.0.0",
992 "parent-module": "^1.0.0",
1090 "resolve-from": "^4.0.0"
993 "resolve-from": "^4.0.0"
1091 },
994 },
1092 "engines": {
995 "engines": {
1093 "node": ">=6"
996 "node": ">=6"
997 },
998 "funding": {
999 "url": "https://github.com/sponsors/sindresorhus"
1094 }
1000 }
1095 },
1001 },
1096 "node_modules/imurmurhash": {
1002 "node_modules/imurmurhash": {
1097 "version": "0.1.4",
1003 "version": "0.1.4",
1098 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1004 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1099 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1005 "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1100 "dev": true,
1006 "dev": true,
1101 "engines": {
1007 "engines": {
1102 "node": ">=0.8.19"
1008 "node": ">=0.8.19"
1103 }
1009 }
1104 },
1010 },
1105 "node_modules/inflight": {
1011 "node_modules/inflight": {
1106 "version": "1.0.6",
1012 "version": "1.0.6",
1107 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1013 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1108 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1014 "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1015 "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
1109 "dev": true,
1016 "dev": true,
1110 "dependencies": {
1017 "dependencies": {
1111 "once": "^1.3.0",
1018 "once": "^1.3.0",
1112 "wrappy": "1"
1019 "wrappy": "1"
1113 }
1020 }
1114 },
1021 },
1115 "node_modules/inherits": {
1022 "node_modules/inherits": {
1116 "version": "2.0.4",
1023 "version": "2.0.4",
1117 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1024 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1118 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1025 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1119 "dev": true
1026 "dev": true
1120 },
1027 },
1121 "node_modules/inquirer": {
1028 "node_modules/inquirer": {
1122 "version": "7.0.4",
1029 "version": "7.3.3",
1123 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
1030 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
1124 "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
1031 "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
1125 "dev": true,
1032 "dev": true,
1126 "dependencies": {
1033 "dependencies": {
1127 "ansi-escapes": "^4.2.1",
1034 "ansi-escapes": "^4.2.1",
1128 "chalk": "^2.4.2",
1035 "chalk": "^4.1.0",
1129 "cli-cursor": "^3.1.0",
1036 "cli-cursor": "^3.1.0",
1130 "cli-width": "^2.0.0",
1037 "cli-width": "^3.0.0",
1131 "external-editor": "^3.0.3",
1038 "external-editor": "^3.0.3",
1132 "figures": "^3.0.0",
1039 "figures": "^3.0.0",
1133 "lodash": "^4.17.15",
1040 "lodash": "^4.17.19",
1134 "mute-stream": "0.0.8",
1041 "mute-stream": "0.0.8",
1135 "run-async": "^2.2.0",
1042 "run-async": "^2.4.0",
1136 "rxjs": "^6.5.3",
1043 "rxjs": "^6.6.0",
1137 "string-width": "^4.1.0",
1044 "string-width": "^4.1.0",
1138 "strip-ansi": "^5.1.0",
1045 "strip-ansi": "^6.0.0",
1139 "through": "^2.3.6"
1046 "through": "^2.3.6"
1140 },
1047 },
1141 "engines": {
1048 "engines": {
1142 "node": ">=6.0.0"
1049 "node": ">=8.0.0"
1050 }
1051 },
1052 "node_modules/inquirer/node_modules/ansi-regex": {
1053 "version": "5.0.1",
1054 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1055 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1056 "dev": true,
1057 "engines": {
1058 "node": ">=8"
1059 }
1060 },
1061 "node_modules/inquirer/node_modules/ansi-styles": {
1062 "version": "4.3.0",
1063 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1064 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1065 "dev": true,
1066 "dependencies": {
1067 "color-convert": "^2.0.1"
1068 },
1069 "engines": {
1070 "node": ">=8"
1071 },
1072 "funding": {
1073 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1074 }
1075 },
1076 "node_modules/inquirer/node_modules/chalk": {
1077 "version": "4.1.2",
1078 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1079 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1080 "dev": true,
1081 "dependencies": {
1082 "ansi-styles": "^4.1.0",
1083 "supports-color": "^7.1.0"
1084 },
1085 "engines": {
1086 "node": ">=10"
1087 },
1088 "funding": {
1089 "url": "https://github.com/chalk/chalk?sponsor=1"
1090 }
1091 },
1092 "node_modules/inquirer/node_modules/color-convert": {
1093 "version": "2.0.1",
1094 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1095 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1096 "dev": true,
1097 "dependencies": {
1098 "color-name": "~1.1.4"
1099 },
1100 "engines": {
1101 "node": ">=7.0.0"
1102 }
1103 },
1104 "node_modules/inquirer/node_modules/color-name": {
1105 "version": "1.1.4",
1106 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1107 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1108 "dev": true
1109 },
1110 "node_modules/inquirer/node_modules/has-flag": {
1111 "version": "4.0.0",
1112 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1113 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1114 "dev": true,
1115 "engines": {
1116 "node": ">=8"
1117 }
1118 },
1119 "node_modules/inquirer/node_modules/strip-ansi": {
1120 "version": "6.0.1",
1121 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1122 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1123 "dev": true,
1124 "dependencies": {
1125 "ansi-regex": "^5.0.1"
1126 },
1127 "engines": {
1128 "node": ">=8"
1129 }
1130 },
1131 "node_modules/inquirer/node_modules/supports-color": {
1132 "version": "7.2.0",
1133 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1134 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1135 "dev": true,
1136 "dependencies": {
1137 "has-flag": "^4.0.0"
1138 },
1139 "engines": {
1140 "node": ">=8"
1141 }
1142 },
1143 "node_modules/is-core-module": {
1144 "version": "2.15.0",
1145 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
1146 "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
1147 "dev": true,
1148 "dependencies": {
1149 "hasown": "^2.0.2"
1150 },
1151 "engines": {
1152 "node": ">= 0.4"
1153 },
1154 "funding": {
1155 "url": "https://github.com/sponsors/ljharb"
1143 }
1156 }
1144 },
1157 },
1145 "node_modules/is-extglob": {
1158 "node_modules/is-extglob": {
1146 "version": "2.1.1",
1159 "version": "2.1.1",
1147 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1160 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1148 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1161 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1149 "dev": true,
1162 "dev": true,
1150 "engines": {
1163 "engines": {
1151 "node": ">=0.10.0"
1164 "node": ">=0.10.0"
1152 }
1165 }
1153 },
1166 },
1154 "node_modules/is-fullwidth-code-point": {
1167 "node_modules/is-fullwidth-code-point": {
1155 "version": "3.0.0",
1168 "version": "3.0.0",
1156 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1169 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1157 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1170 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1158 "dev": true,
1171 "dev": true,
1159 "engines": {
1172 "engines": {
1160 "node": ">=8"
1173 "node": ">=8"
1161 }
1174 }
1162 },
1175 },
1163 "node_modules/is-glob": {
1176 "node_modules/is-glob": {
1164 "version": "4.0.1",
1177 "version": "4.0.3",
1165 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
1178 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1166 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
1179 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1167 "dev": true,
1180 "dev": true,
1168 "dependencies": {
1181 "dependencies": {
1169 "is-extglob": "^2.1.1"
1182 "is-extglob": "^2.1.1"
1170 },
1183 },
1171 "engines": {
1184 "engines": {
1172 "node": ">=0.10.0"
1185 "node": ">=0.10.0"
1173 }
1186 }
1174 },
1187 },
1175 "node_modules/is-promise": {
1188 "node_modules/is-what": {
1176 "version": "2.1.0",
1189 "version": "3.14.1",
1177 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1190 "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
1178 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1191 "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
1179 "dev": true
1192 "dev": true
1180 },
1193 },
1181 "node_modules/is-typedarray": {
1182 "version": "1.0.0",
1183 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1184 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1185 "dev": true,
1186 "optional": true
1187 },
1188 "node_modules/isexe": {
1194 "node_modules/isexe": {
1189 "version": "2.0.0",
1195 "version": "2.0.0",
1190 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1196 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1191 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1197 "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1192 "dev": true
1198 "dev": true
1193 },
1199 },
1194 "node_modules/isstream": {
1195 "version": "0.1.2",
1196 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1197 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1198 "dev": true,
1199 "optional": true
1200 },
1201 "node_modules/jquery": {
1200 "node_modules/jquery": {
1202 "version": "3.4.1",
1201 "version": "3.7.1",
1203 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
1202 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
1204 "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
1203 "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
1205 },
1204 },
1206 "node_modules/jquery.caret": {
1205 "node_modules/jquery.caret": {
1207 "version": "0.3.1",
1206 "version": "0.3.1",
1208 "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
1207 "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
1209 "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
1208 "integrity": "sha512-nS2mjMZzP4e4tIOgeTLSs+jFhUsUVZUPgkUMpi4DlJq9SgKEg6w2jf7q8joMJp6v+voJHXrH8rzAnbyxWHwAeA=="
1210 },
1209 },
1211 "node_modules/jquery.flot": {
1210 "node_modules/jquery.flot": {
1212 "version": "0.8.3",
1211 "version": "0.8.3",
1213 "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
1212 "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
1214 "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
1213 "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
1215 },
1214 },
1216 "node_modules/js-tokens": {
1215 "node_modules/js-tokens": {
1217 "version": "4.0.0",
1216 "version": "4.0.0",
1218 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1217 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1219 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1218 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1220 "dev": true
1219 "dev": true
1221 },
1220 },
1222 "node_modules/js-yaml": {
1221 "node_modules/js-yaml": {
1223 "version": "3.13.1",
1222 "version": "3.14.1",
1224 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
1223 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1225 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
1224 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1226 "dev": true,
1225 "dev": true,
1227 "dependencies": {
1226 "dependencies": {
1228 "argparse": "^1.0.7",
1227 "argparse": "^1.0.7",
1229 "esprima": "^4.0.0"
1228 "esprima": "^4.0.0"
1230 },
1229 },
1231 "bin": {
1230 "bin": {
1232 "js-yaml": "bin/js-yaml.js"
1231 "js-yaml": "bin/js-yaml.js"
1233 }
1232 }
1234 },
1233 },
1235 "node_modules/jsbn": {
1234 "node_modules/json-parse-even-better-errors": {
1236 "version": "0.1.1",
1235 "version": "2.3.1",
1237 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1236 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1238 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1237 "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1239 "dev": true,
1240 "optional": true
1241 },
1242 "node_modules/json-parse-better-errors": {
1243 "version": "1.0.2",
1244 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1245 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
1246 "dev": true
1238 "dev": true
1247 },
1239 },
1248 "node_modules/json-schema": {
1249 "version": "0.2.3",
1250 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1251 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1252 "dev": true,
1253 "optional": true
1254 },
1255 "node_modules/json-schema-traverse": {
1240 "node_modules/json-schema-traverse": {
1256 "version": "0.4.1",
1241 "version": "0.4.1",
1257 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1242 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1258 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1243 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1259 "dev": true
1244 "dev": true
1260 },
1245 },
1261 "node_modules/json-stable-stringify-without-jsonify": {
1246 "node_modules/json-stable-stringify-without-jsonify": {
1262 "version": "1.0.1",
1247 "version": "1.0.1",
1263 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1248 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1264 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1249 "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
1265 "dev": true
1250 "dev": true
1266 },
1251 },
1267 "node_modules/json-stringify-safe": {
1268 "version": "5.0.1",
1269 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1270 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1271 "dev": true,
1272 "optional": true
1273 },
1274 "node_modules/jsprim": {
1275 "version": "1.4.1",
1276 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1277 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1278 "dev": true,
1279 "engines": [
1280 "node >=0.6.0"
1281 ],
1282 "optional": true,
1283 "dependencies": {
1284 "assert-plus": "1.0.0",
1285 "extsprintf": "1.3.0",
1286 "json-schema": "0.2.3",
1287 "verror": "1.10.0"
1288 }
1289 },
1290 "node_modules/less": {
1252 "node_modules/less": {
1291 "version": "3.10.3",
1253 "version": "3.13.1",
1292 "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
1254 "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
1293 "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
1255 "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
1294 "dev": true,
1256 "dev": true,
1295 "dependencies": {
1257 "dependencies": {
1296 "clone": "^2.1.2"
1258 "copy-anything": "^2.0.1",
1259 "tslib": "^1.10.0"
1297 },
1260 },
1298 "bin": {
1261 "bin": {
1299 "lessc": "bin/lessc"
1262 "lessc": "bin/lessc"
1300 },
1263 },
1301 "engines": {
1264 "engines": {
1302 "node": ">=6"
1265 "node": ">=6"
1303 },
1266 },
1304 "optionalDependencies": {
1267 "optionalDependencies": {
1305 "errno": "^0.1.1",
1268 "errno": "^0.1.1",
1306 "graceful-fs": "^4.1.2",
1269 "graceful-fs": "^4.1.2",
1307 "image-size": "~0.5.0",
1270 "image-size": "~0.5.0",
1271 "make-dir": "^2.1.0",
1308 "mime": "^1.4.1",
1272 "mime": "^1.4.1",
1309 "mkdirp": "^0.5.0",
1273 "native-request": "^1.0.5",
1310 "promise": "^7.1.1",
1311 "request": "^2.83.0",
1312 "source-map": "~0.6.0"
1274 "source-map": "~0.6.0"
1313 }
1275 }
1314 },
1276 },
1315 "node_modules/less-plugin-clean-css": {
1277 "node_modules/less-plugin-clean-css": {
1316 "version": "1.5.1",
1278 "version": "1.5.1",
1317 "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
1279 "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
1318 "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
1280 "integrity": "sha512-Pc68AFHAEJO3aAoRvnUTW5iAiAv6y+TQsWLTTwVNqjiDno6xCvxz1AtfQl7Y0MZSpHPalFajM1EU4RB5UVINpw==",
1319 "dev": true,
1281 "dev": true,
1320 "dependencies": {
1282 "dependencies": {
1321 "clean-css": "^3.0.1"
1283 "clean-css": "^3.0.1"
1322 },
1284 },
1323 "engines": {
1285 "engines": {
1324 "node": ">=0.4.2"
1286 "node": ">=0.4.2"
1325 }
1287 }
1326 },
1288 },
1327 "node_modules/levn": {
1289 "node_modules/levn": {
1328 "version": "0.3.0",
1290 "version": "0.3.0",
1329 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1291 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1330 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1292 "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
1331 "dev": true,
1293 "dev": true,
1332 "dependencies": {
1294 "dependencies": {
1333 "prelude-ls": "~1.1.2",
1295 "prelude-ls": "~1.1.2",
1334 "type-check": "~0.3.2"
1296 "type-check": "~0.3.2"
1335 },
1297 },
1336 "engines": {
1298 "engines": {
1337 "node": ">= 0.8.0"
1299 "node": ">= 0.8.0"
1338 }
1300 }
1339 },
1301 },
1340 "node_modules/license-checker": {
1302 "node_modules/license-checker": {
1341 "version": "25.0.1",
1303 "version": "25.0.1",
1342 "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
1304 "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
1343 "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
1305 "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
1344 "dev": true,
1306 "dev": true,
1345 "dependencies": {
1307 "dependencies": {
1346 "chalk": "^2.4.1",
1308 "chalk": "^2.4.1",
1347 "debug": "^3.1.0",
1309 "debug": "^3.1.0",
1348 "mkdirp": "^0.5.1",
1310 "mkdirp": "^0.5.1",
1349 "nopt": "^4.0.1",
1311 "nopt": "^4.0.1",
1350 "read-installed": "~4.0.3",
1312 "read-installed": "~4.0.3",
1351 "semver": "^5.5.0",
1313 "semver": "^5.5.0",
1352 "spdx-correct": "^3.0.0",
1314 "spdx-correct": "^3.0.0",
1353 "spdx-expression-parse": "^3.0.0",
1315 "spdx-expression-parse": "^3.0.0",
1354 "spdx-satisfies": "^4.0.0",
1316 "spdx-satisfies": "^4.0.0",
1355 "treeify": "^1.1.0"
1317 "treeify": "^1.1.0"
1356 },
1318 },
1357 "bin": {
1319 "bin": {
1358 "license-checker": "bin/license-checker"
1320 "license-checker": "bin/license-checker"
1359 }
1321 }
1360 },
1322 },
1323 "node_modules/license-checker/node_modules/debug": {
1324 "version": "3.2.7",
1325 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1326 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1327 "dev": true,
1328 "dependencies": {
1329 "ms": "^2.1.1"
1330 }
1331 },
1332 "node_modules/license-checker/node_modules/semver": {
1333 "version": "5.7.2",
1334 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1335 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1336 "dev": true,
1337 "bin": {
1338 "semver": "bin/semver"
1339 }
1340 },
1361 "node_modules/lodash": {
1341 "node_modules/lodash": {
1362 "version": "4.17.15",
1342 "version": "4.17.21",
1363 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
1343 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1364 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
1344 "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1365 "dev": true
1345 "dev": true
1366 },
1346 },
1347 "node_modules/make-dir": {
1348 "version": "2.1.0",
1349 "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
1350 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
1351 "dev": true,
1352 "optional": true,
1353 "dependencies": {
1354 "pify": "^4.0.1",
1355 "semver": "^5.6.0"
1356 },
1357 "engines": {
1358 "node": ">=6"
1359 }
1360 },
1361 "node_modules/make-dir/node_modules/semver": {
1362 "version": "5.7.2",
1363 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1364 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1365 "dev": true,
1366 "optional": true,
1367 "bin": {
1368 "semver": "bin/semver"
1369 }
1370 },
1367 "node_modules/mime": {
1371 "node_modules/mime": {
1368 "version": "1.6.0",
1372 "version": "1.6.0",
1369 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1373 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1370 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1374 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1371 "dev": true,
1375 "dev": true,
1372 "optional": true,
1376 "optional": true,
1373 "bin": {
1377 "bin": {
1374 "mime": "cli.js"
1378 "mime": "cli.js"
1375 },
1379 },
1376 "engines": {
1380 "engines": {
1377 "node": ">=4"
1381 "node": ">=4"
1378 }
1382 }
1379 },
1383 },
1380 "node_modules/mime-db": {
1381 "version": "1.40.0",
1382 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
1383 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
1384 "dev": true,
1385 "optional": true,
1386 "engines": {
1387 "node": ">= 0.6"
1388 }
1389 },
1390 "node_modules/mime-types": {
1391 "version": "2.1.24",
1392 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
1393 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
1394 "dev": true,
1395 "optional": true,
1396 "dependencies": {
1397 "mime-db": "1.40.0"
1398 },
1399 "engines": {
1400 "node": ">= 0.6"
1401 }
1402 },
1403 "node_modules/mimic-fn": {
1384 "node_modules/mimic-fn": {
1404 "version": "2.1.0",
1385 "version": "2.1.0",
1405 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1386 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
1406 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1387 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
1407 "dev": true,
1388 "dev": true,
1408 "engines": {
1389 "engines": {
1409 "node": ">=6"
1390 "node": ">=6"
1410 }
1391 }
1411 },
1392 },
1412 "node_modules/minimatch": {
1393 "node_modules/minimatch": {
1413 "version": "3.0.4",
1394 "version": "3.1.2",
1414 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1395 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1415 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1396 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1416 "dev": true,
1397 "dev": true,
1417 "dependencies": {
1398 "dependencies": {
1418 "brace-expansion": "^1.1.7"
1399 "brace-expansion": "^1.1.7"
1419 },
1400 },
1420 "engines": {
1401 "engines": {
1421 "node": "*"
1402 "node": "*"
1422 }
1403 }
1423 },
1404 },
1424 "node_modules/minimist": {
1405 "node_modules/minimist": {
1425 "version": "0.0.8",
1406 "version": "1.2.8",
1426 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1407 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1427 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1408 "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1428 "dev": true
1409 "dev": true,
1410 "funding": {
1411 "url": "https://github.com/sponsors/ljharb"
1412 }
1429 },
1413 },
1430 "node_modules/mkdirp": {
1414 "node_modules/mkdirp": {
1431 "version": "0.5.1",
1415 "version": "0.5.6",
1432 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1416 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1433 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1417 "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1434 "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
1435 "dev": true,
1418 "dev": true,
1436 "dependencies": {
1419 "dependencies": {
1437 "minimist": "0.0.8"
1420 "minimist": "^1.2.6"
1438 },
1421 },
1439 "bin": {
1422 "bin": {
1440 "mkdirp": "bin/cmd.js"
1423 "mkdirp": "bin/cmd.js"
1441 }
1424 }
1442 },
1425 },
1443 "node_modules/ms": {
1426 "node_modules/ms": {
1444 "version": "2.1.2",
1427 "version": "2.1.2",
1445 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1428 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1446 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1429 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1447 "dev": true
1430 "dev": true
1448 },
1431 },
1449 "node_modules/mute-stream": {
1432 "node_modules/mute-stream": {
1450 "version": "0.0.8",
1433 "version": "0.0.8",
1451 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
1434 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
1452 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
1435 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
1453 "dev": true
1436 "dev": true
1454 },
1437 },
1438 "node_modules/native-request": {
1439 "version": "1.1.0",
1440 "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
1441 "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
1442 "dev": true,
1443 "optional": true
1444 },
1455 "node_modules/natural-compare": {
1445 "node_modules/natural-compare": {
1456 "version": "1.4.0",
1446 "version": "1.4.0",
1457 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1447 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1458 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1448 "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
1459 "dev": true
1449 "dev": true
1460 },
1450 },
1461 "node_modules/nice-try": {
1451 "node_modules/nice-try": {
1462 "version": "1.0.5",
1452 "version": "1.0.5",
1463 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1453 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
1464 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1454 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
1465 "dev": true
1455 "dev": true
1466 },
1456 },
1467 "node_modules/nopt": {
1457 "node_modules/nopt": {
1468 "version": "4.0.1",
1458 "version": "4.0.3",
1469 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
1459 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
1470 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
1460 "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
1471 "dev": true,
1461 "dev": true,
1472 "dependencies": {
1462 "dependencies": {
1473 "abbrev": "1",
1463 "abbrev": "1",
1474 "osenv": "^0.1.4"
1464 "osenv": "^0.1.4"
1475 },
1465 },
1476 "bin": {
1466 "bin": {
1477 "nopt": "bin/nopt.js"
1467 "nopt": "bin/nopt.js"
1478 }
1468 }
1479 },
1469 },
1480 "node_modules/normalize-package-data": {
1470 "node_modules/normalize-package-data": {
1481 "version": "2.5.0",
1471 "version": "2.5.0",
1482 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1472 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1483 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1473 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1484 "dev": true,
1474 "dev": true,
1485 "dependencies": {
1475 "dependencies": {
1486 "hosted-git-info": "^2.1.4",
1476 "hosted-git-info": "^2.1.4",
1487 "resolve": "^1.10.0",
1477 "resolve": "^1.10.0",
1488 "semver": "2 || 3 || 4 || 5",
1478 "semver": "2 || 3 || 4 || 5",
1489 "validate-npm-package-license": "^3.0.1"
1479 "validate-npm-package-license": "^3.0.1"
1490 }
1480 }
1491 },
1481 },
1492 "node_modules/oauth-sign": {
1482 "node_modules/normalize-package-data/node_modules/semver": {
1493 "version": "0.9.0",
1483 "version": "5.7.2",
1494 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1484 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1495 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
1485 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1496 "dev": true,
1486 "dev": true,
1497 "optional": true,
1487 "bin": {
1498 "engines": {
1488 "semver": "bin/semver"
1499 "node": "*"
1500 }
1489 }
1501 },
1490 },
1491 "node_modules/npm-normalize-package-bin": {
1492 "version": "1.0.1",
1493 "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
1494 "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
1495 "dev": true
1496 },
1502 "node_modules/once": {
1497 "node_modules/once": {
1503 "version": "1.4.0",
1498 "version": "1.4.0",
1504 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1499 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1505 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1500 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1506 "dev": true,
1501 "dev": true,
1507 "dependencies": {
1502 "dependencies": {
1508 "wrappy": "1"
1503 "wrappy": "1"
1509 }
1504 }
1510 },
1505 },
1511 "node_modules/onetime": {
1506 "node_modules/onetime": {
1512 "version": "5.1.0",
1507 "version": "5.1.2",
1513 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
1508 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
1514 "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
1509 "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
1515 "dev": true,
1510 "dev": true,
1516 "dependencies": {
1511 "dependencies": {
1517 "mimic-fn": "^2.1.0"
1512 "mimic-fn": "^2.1.0"
1518 },
1513 },
1519 "engines": {
1514 "engines": {
1520 "node": ">=6"
1515 "node": ">=6"
1516 },
1517 "funding": {
1518 "url": "https://github.com/sponsors/sindresorhus"
1521 }
1519 }
1522 },
1520 },
1523 "node_modules/optionator": {
1521 "node_modules/optionator": {
1524 "version": "0.8.3",
1522 "version": "0.8.3",
1525 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1523 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1526 "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1524 "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1527 "dev": true,
1525 "dev": true,
1528 "dependencies": {
1526 "dependencies": {
1529 "deep-is": "~0.1.3",
1527 "deep-is": "~0.1.3",
1530 "fast-levenshtein": "~2.0.6",
1528 "fast-levenshtein": "~2.0.6",
1531 "levn": "~0.3.0",
1529 "levn": "~0.3.0",
1532 "prelude-ls": "~1.1.2",
1530 "prelude-ls": "~1.1.2",
1533 "type-check": "~0.3.2",
1531 "type-check": "~0.3.2",
1534 "word-wrap": "~1.2.3"
1532 "word-wrap": "~1.2.3"
1535 },
1533 },
1536 "engines": {
1534 "engines": {
1537 "node": ">= 0.8.0"
1535 "node": ">= 0.8.0"
1538 }
1536 }
1539 },
1537 },
1540 "node_modules/os-homedir": {
1538 "node_modules/os-homedir": {
1541 "version": "1.0.2",
1539 "version": "1.0.2",
1542 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1540 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1543 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1541 "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
1544 "dev": true,
1542 "dev": true,
1545 "engines": {
1543 "engines": {
1546 "node": ">=0.10.0"
1544 "node": ">=0.10.0"
1547 }
1545 }
1548 },
1546 },
1549 "node_modules/os-tmpdir": {
1547 "node_modules/os-tmpdir": {
1550 "version": "1.0.2",
1548 "version": "1.0.2",
1551 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1549 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1552 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1550 "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
1553 "dev": true,
1551 "dev": true,
1554 "engines": {
1552 "engines": {
1555 "node": ">=0.10.0"
1553 "node": ">=0.10.0"
1556 }
1554 }
1557 },
1555 },
1558 "node_modules/osenv": {
1556 "node_modules/osenv": {
1559 "version": "0.1.5",
1557 "version": "0.1.5",
1560 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
1558 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
1561 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
1559 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
1560 "deprecated": "This package is no longer supported.",
1562 "dev": true,
1561 "dev": true,
1563 "dependencies": {
1562 "dependencies": {
1564 "os-homedir": "^1.0.0",
1563 "os-homedir": "^1.0.0",
1565 "os-tmpdir": "^1.0.0"
1564 "os-tmpdir": "^1.0.0"
1566 }
1565 }
1567 },
1566 },
1568 "node_modules/parent-module": {
1567 "node_modules/parent-module": {
1569 "version": "1.0.1",
1568 "version": "1.0.1",
1570 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1569 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1571 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1570 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1572 "dev": true,
1571 "dev": true,
1573 "dependencies": {
1572 "dependencies": {
1574 "callsites": "^3.0.0"
1573 "callsites": "^3.0.0"
1575 },
1574 },
1576 "engines": {
1575 "engines": {
1577 "node": ">=6"
1576 "node": ">=6"
1578 }
1577 }
1579 },
1578 },
1580 "node_modules/path-is-absolute": {
1579 "node_modules/path-is-absolute": {
1581 "version": "1.0.1",
1580 "version": "1.0.1",
1582 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1581 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1583 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1582 "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1584 "dev": true,
1583 "dev": true,
1585 "engines": {
1584 "engines": {
1586 "node": ">=0.10.0"
1585 "node": ">=0.10.0"
1587 }
1586 }
1588 },
1587 },
1589 "node_modules/path-key": {
1588 "node_modules/path-key": {
1590 "version": "2.0.1",
1589 "version": "2.0.1",
1591 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1590 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
1592 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
1591 "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
1593 "dev": true,
1592 "dev": true,
1594 "engines": {
1593 "engines": {
1595 "node": ">=4"
1594 "node": ">=4"
1596 }
1595 }
1597 },
1596 },
1598 "node_modules/path-parse": {
1597 "node_modules/path-parse": {
1599 "version": "1.0.6",
1598 "version": "1.0.7",
1600 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1599 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1601 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1600 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1602 "dev": true
1601 "dev": true
1603 },
1602 },
1604 "node_modules/performance-now": {
1603 "node_modules/picocolors": {
1605 "version": "2.1.0",
1604 "version": "1.0.1",
1606 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1605 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
1607 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
1606 "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
1607 "dev": true
1608 },
1609 "node_modules/pify": {
1610 "version": "4.0.1",
1611 "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
1612 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
1608 "dev": true,
1613 "dev": true,
1609 "optional": true
1614 "optional": true,
1615 "engines": {
1616 "node": ">=6"
1617 }
1610 },
1618 },
1611 "node_modules/prelude-ls": {
1619 "node_modules/prelude-ls": {
1612 "version": "1.1.2",
1620 "version": "1.1.2",
1613 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1621 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1614 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1622 "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
1615 "dev": true,
1623 "dev": true,
1616 "engines": {
1624 "engines": {
1617 "node": ">= 0.8.0"
1625 "node": ">= 0.8.0"
1618 }
1626 }
1619 },
1627 },
1620 "node_modules/progress": {
1628 "node_modules/progress": {
1621 "version": "2.0.3",
1629 "version": "2.0.3",
1622 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1630 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1623 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1631 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1624 "dev": true,
1632 "dev": true,
1625 "engines": {
1633 "engines": {
1626 "node": ">=0.4.0"
1634 "node": ">=0.4.0"
1627 }
1635 }
1628 },
1636 },
1629 "node_modules/promise": {
1630 "version": "7.3.1",
1631 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
1632 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
1633 "dev": true,
1634 "optional": true,
1635 "dependencies": {
1636 "asap": "~2.0.3"
1637 }
1638 },
1639 "node_modules/prr": {
1637 "node_modules/prr": {
1640 "version": "1.0.1",
1638 "version": "1.0.1",
1641 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
1639 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
1642 "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
1640 "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
1643 "dev": true,
1644 "optional": true
1645 },
1646 "node_modules/psl": {
1647 "version": "1.4.0",
1648 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
1649 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
1650 "dev": true,
1641 "dev": true,
1651 "optional": true
1642 "optional": true
1652 },
1643 },
1653 "node_modules/punycode": {
1644 "node_modules/punycode": {
1654 "version": "2.1.1",
1645 "version": "2.3.1",
1655 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1646 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1656 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1647 "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1657 "dev": true,
1648 "dev": true,
1658 "engines": {
1649 "engines": {
1659 "node": ">=6"
1650 "node": ">=6"
1660 }
1651 }
1661 },
1652 },
1662 "node_modules/qs": {
1663 "version": "6.5.2",
1664 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1665 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1666 "dev": true,
1667 "optional": true,
1668 "engines": {
1669 "node": ">=0.6"
1670 }
1671 },
1672 "node_modules/read-installed": {
1653 "node_modules/read-installed": {
1673 "version": "4.0.3",
1654 "version": "4.0.3",
1674 "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
1655 "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
1675 "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
1656 "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==",
1657 "deprecated": "This package is no longer supported.",
1676 "dev": true,
1658 "dev": true,
1677 "dependencies": {
1659 "dependencies": {
1678 "debuglog": "^1.0.1",
1660 "debuglog": "^1.0.1",
1679 "read-package-json": "^2.0.0",
1661 "read-package-json": "^2.0.0",
1680 "readdir-scoped-modules": "^1.0.0",
1662 "readdir-scoped-modules": "^1.0.0",
1681 "semver": "2 || 3 || 4 || 5",
1663 "semver": "2 || 3 || 4 || 5",
1682 "slide": "~1.1.3",
1664 "slide": "~1.1.3",
1683 "util-extend": "^1.0.1"
1665 "util-extend": "^1.0.1"
1684 },
1666 },
1685 "optionalDependencies": {
1667 "optionalDependencies": {
1686 "graceful-fs": "^4.1.2"
1668 "graceful-fs": "^4.1.2"
1687 }
1669 }
1688 },
1670 },
1671 "node_modules/read-installed/node_modules/semver": {
1672 "version": "5.7.2",
1673 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1674 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1675 "dev": true,
1676 "bin": {
1677 "semver": "bin/semver"
1678 }
1679 },
1689 "node_modules/read-package-json": {
1680 "node_modules/read-package-json": {
1690 "version": "2.1.0",
1681 "version": "2.1.2",
1691 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
1682 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
1692 "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
1683 "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
1684 "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.",
1693 "dev": true,
1685 "dev": true,
1694 "dependencies": {
1686 "dependencies": {
1695 "glob": "^7.1.1",
1687 "glob": "^7.1.1",
1696 "json-parse-better-errors": "^1.0.1",
1688 "json-parse-even-better-errors": "^2.3.0",
1697 "normalize-package-data": "^2.0.0",
1689 "normalize-package-data": "^2.0.0",
1698 "slash": "^1.0.0"
1690 "npm-normalize-package-bin": "^1.0.0"
1699 },
1700 "optionalDependencies": {
1701 "graceful-fs": "^4.1.2"
1702 }
1703 },
1704 "node_modules/readable-stream": {
1705 "version": "3.6.0",
1706 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
1707 "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
1708 "dev": true,
1709 "dependencies": {
1710 "inherits": "^2.0.3",
1711 "string_decoder": "^1.1.1",
1712 "util-deprecate": "^1.0.1"
1713 },
1714 "engines": {
1715 "node": ">= 6"
1716 }
1691 }
1717 },
1692 },
1718 "node_modules/readdir-scoped-modules": {
1693 "node_modules/readdir-scoped-modules": {
1719 "version": "1.1.0",
1694 "version": "1.1.0",
1720 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
1695 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
1721 "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
1696 "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
1697 "deprecated": "This functionality has been moved to @npmcli/fs",
1722 "dev": true,
1698 "dev": true,
1723 "dependencies": {
1699 "dependencies": {
1724 "debuglog": "^1.0.1",
1700 "debuglog": "^1.0.1",
1725 "dezalgo": "^1.0.0",
1701 "dezalgo": "^1.0.0",
1726 "graceful-fs": "^4.1.2",
1702 "graceful-fs": "^4.1.2",
1727 "once": "^1.3.0"
1703 "once": "^1.3.0"
1728 }
1704 }
1729 },
1705 },
1730 "node_modules/regexpp": {
1706 "node_modules/regexpp": {
1731 "version": "2.0.1",
1707 "version": "2.0.1",
1732 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
1708 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
1733 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
1709 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
1734 "dev": true,
1710 "dev": true,
1735 "engines": {
1711 "engines": {
1736 "node": ">=6.5.0"
1712 "node": ">=6.5.0"
1737 }
1713 }
1738 },
1714 },
1739 "node_modules/request": {
1740 "version": "2.88.0",
1741 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
1742 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
1743 "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
1744 "dev": true,
1745 "optional": true,
1746 "dependencies": {
1747 "aws-sign2": "~0.7.0",
1748 "aws4": "^1.8.0",
1749 "caseless": "~0.12.0",
1750 "combined-stream": "~1.0.6",
1751 "extend": "~3.0.2",
1752 "forever-agent": "~0.6.1",
1753 "form-data": "~2.3.2",
1754 "har-validator": "~5.1.0",
1755 "http-signature": "~1.2.0",
1756 "is-typedarray": "~1.0.0",
1757 "isstream": "~0.1.2",
1758 "json-stringify-safe": "~5.0.1",
1759 "mime-types": "~2.1.19",
1760 "oauth-sign": "~0.9.0",
1761 "performance-now": "^2.1.0",
1762 "qs": "~6.5.2",
1763 "safe-buffer": "^5.1.2",
1764 "tough-cookie": "~2.4.3",
1765 "tunnel-agent": "^0.6.0",
1766 "uuid": "^3.3.2"
1767 },
1768 "engines": {
1769 "node": ">= 4"
1770 }
1771 },
1772 "node_modules/resolve": {
1715 "node_modules/resolve": {
1773 "version": "1.12.0",
1716 "version": "1.22.8",
1774 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
1717 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
1775 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
1718 "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
1776 "dev": true,
1719 "dev": true,
1777 "dependencies": {
1720 "dependencies": {
1778 "path-parse": "^1.0.6"
1721 "is-core-module": "^2.13.0",
1722 "path-parse": "^1.0.7",
1723 "supports-preserve-symlinks-flag": "^1.0.0"
1724 },
1725 "bin": {
1726 "resolve": "bin/resolve"
1727 },
1728 "funding": {
1729 "url": "https://github.com/sponsors/ljharb"
1779 }
1730 }
1780 },
1731 },
1781 "node_modules/resolve-from": {
1732 "node_modules/resolve-from": {
1782 "version": "4.0.0",
1733 "version": "4.0.0",
1783 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1734 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1784 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1735 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1785 "dev": true,
1736 "dev": true,
1786 "engines": {
1737 "engines": {
1787 "node": ">=4"
1738 "node": ">=4"
1788 }
1739 }
1789 },
1740 },
1790 "node_modules/restore-cursor": {
1741 "node_modules/restore-cursor": {
1791 "version": "3.1.0",
1742 "version": "3.1.0",
1792 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
1743 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
1793 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
1744 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
1794 "dev": true,
1745 "dev": true,
1795 "dependencies": {
1746 "dependencies": {
1796 "onetime": "^5.1.0",
1747 "onetime": "^5.1.0",
1797 "signal-exit": "^3.0.2"
1748 "signal-exit": "^3.0.2"
1798 },
1749 },
1799 "engines": {
1750 "engines": {
1800 "node": ">=8"
1751 "node": ">=8"
1801 }
1752 }
1802 },
1753 },
1803 "node_modules/rimraf": {
1754 "node_modules/rimraf": {
1804 "version": "2.6.3",
1755 "version": "2.6.3",
1805 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1756 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1806 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1757 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1758 "deprecated": "Rimraf versions prior to v4 are no longer supported",
1807 "dev": true,
1759 "dev": true,
1808 "dependencies": {
1760 "dependencies": {
1809 "glob": "^7.1.3"
1761 "glob": "^7.1.3"
1810 },
1762 },
1811 "bin": {
1763 "bin": {
1812 "rimraf": "bin.js"
1764 "rimraf": "bin.js"
1813 }
1765 }
1814 },
1766 },
1815 "node_modules/run-async": {
1767 "node_modules/run-async": {
1816 "version": "2.3.0",
1768 "version": "2.4.1",
1817 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
1769 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
1818 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
1770 "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
1819 "dev": true,
1771 "dev": true,
1820 "dependencies": {
1821 "is-promise": "^2.1.0"
1822 },
1823 "engines": {
1772 "engines": {
1824 "node": ">=0.12.0"
1773 "node": ">=0.12.0"
1825 }
1774 }
1826 },
1775 },
1827 "node_modules/rxjs": {
1776 "node_modules/rxjs": {
1828 "version": "6.5.4",
1777 "version": "6.6.7",
1829 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
1778 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
1830 "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
1779 "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
1831 "dev": true,
1780 "dev": true,
1832 "dependencies": {
1781 "dependencies": {
1833 "tslib": "^1.9.0"
1782 "tslib": "^1.9.0"
1834 },
1783 },
1835 "engines": {
1784 "engines": {
1836 "npm": ">=2.0.0"
1785 "npm": ">=2.0.0"
1837 }
1786 }
1838 },
1787 },
1839 "node_modules/safe-buffer": {
1840 "version": "5.2.0",
1841 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
1842 "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
1843 "dev": true
1844 },
1845 "node_modules/safer-buffer": {
1788 "node_modules/safer-buffer": {
1846 "version": "2.1.2",
1789 "version": "2.1.2",
1847 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1790 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1848 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1791 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1849 "dev": true
1792 "dev": true
1850 },
1793 },
1851 "node_modules/select2": {
1794 "node_modules/select2": {
1852 "version": "3.5.1",
1795 "version": "3.5.1",
1853 "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
1796 "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
1854 "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
1797 "integrity": "sha512-IFX3UFPpPyK1I1Kuw1R1x+upMyNAZbMlkFhiTnRCRR7ii0KU1brmJMLa3GZcrMWCHiQlm0eKqb6i4XO4pqOrGQ=="
1855 },
1798 },
1856 "node_modules/select2-bootstrap-css": {
1799 "node_modules/select2-bootstrap-css": {
1857 "version": "1.4.6",
1800 "version": "1.4.6",
1858 "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
1801 "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
1859 "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
1802 "integrity": "sha512-BBsisfivUYjwhj3QdWNS15sBqC/DHoszRC4B3GIzJwMNO1pT1uVvwDm5u2TLXi7oj/3S4vIeQ6yAuMa86d7c9A=="
1860 },
1803 },
1861 "node_modules/semver": {
1804 "node_modules/semver": {
1862 "version": "5.7.1",
1805 "version": "6.3.1",
1863 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1806 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1864 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1807 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1865 "dev": true,
1808 "dev": true,
1866 "bin": {
1809 "bin": {
1867 "semver": "bin/semver"
1810 "semver": "bin/semver.js"
1868 }
1811 }
1869 },
1812 },
1870 "node_modules/shebang-command": {
1813 "node_modules/shebang-command": {
1871 "version": "1.2.0",
1814 "version": "1.2.0",
1872 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1815 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
1873 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
1816 "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
1874 "dev": true,
1817 "dev": true,
1875 "dependencies": {
1818 "dependencies": {
1876 "shebang-regex": "^1.0.0"
1819 "shebang-regex": "^1.0.0"
1877 },
1820 },
1878 "engines": {
1821 "engines": {
1879 "node": ">=0.10.0"
1822 "node": ">=0.10.0"
1880 }
1823 }
1881 },
1824 },
1882 "node_modules/shebang-regex": {
1825 "node_modules/shebang-regex": {
1883 "version": "1.0.0",
1826 "version": "1.0.0",
1884 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1827 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1885 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1828 "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
1886 "dev": true,
1829 "dev": true,
1887 "engines": {
1830 "engines": {
1888 "node": ">=0.10.0"
1831 "node": ">=0.10.0"
1889 }
1832 }
1890 },
1833 },
1891 "node_modules/signal-exit": {
1834 "node_modules/signal-exit": {
1892 "version": "3.0.2",
1835 "version": "3.0.7",
1893 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1836 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1894 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1837 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1895 "dev": true
1838 "dev": true
1896 },
1839 },
1897 "node_modules/slash": {
1898 "version": "1.0.0",
1899 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
1900 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
1901 "dev": true,
1902 "engines": {
1903 "node": ">=0.10.0"
1904 }
1905 },
1906 "node_modules/slice-ansi": {
1840 "node_modules/slice-ansi": {
1907 "version": "2.1.0",
1841 "version": "2.1.0",
1908 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1842 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1909 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1843 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1910 "dev": true,
1844 "dev": true,
1911 "dependencies": {
1845 "dependencies": {
1912 "ansi-styles": "^3.2.0",
1846 "ansi-styles": "^3.2.0",
1913 "astral-regex": "^1.0.0",
1847 "astral-regex": "^1.0.0",
1914 "is-fullwidth-code-point": "^2.0.0"
1848 "is-fullwidth-code-point": "^2.0.0"
1915 },
1849 },
1916 "engines": {
1850 "engines": {
1917 "node": ">=6"
1851 "node": ">=6"
1918 }
1852 }
1919 },
1853 },
1920 "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
1854 "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
1921 "version": "2.0.0",
1855 "version": "2.0.0",
1922 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1856 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1923 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
1857 "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
1924 "dev": true,
1858 "dev": true,
1925 "engines": {
1859 "engines": {
1926 "node": ">=4"
1860 "node": ">=4"
1927 }
1861 }
1928 },
1862 },
1929 "node_modules/slide": {
1863 "node_modules/slide": {
1930 "version": "1.1.6",
1864 "version": "1.1.6",
1931 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
1865 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
1932 "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
1866 "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
1933 "dev": true,
1867 "dev": true,
1934 "engines": {
1868 "engines": {
1935 "node": "*"
1869 "node": "*"
1936 }
1870 }
1937 },
1871 },
1938 "node_modules/source-map": {
1872 "node_modules/source-map": {
1939 "version": "0.6.1",
1873 "version": "0.6.1",
1940 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1874 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1941 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1875 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1942 "dev": true,
1876 "dev": true,
1943 "optional": true,
1877 "optional": true,
1944 "engines": {
1878 "engines": {
1945 "node": ">=0.10.0"
1879 "node": ">=0.10.0"
1946 }
1880 }
1947 },
1881 },
1948 "node_modules/spdx-compare": {
1882 "node_modules/spdx-compare": {
1949 "version": "1.0.0",
1883 "version": "1.0.0",
1950 "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
1884 "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
1951 "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
1885 "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
1952 "dev": true,
1886 "dev": true,
1953 "dependencies": {
1887 "dependencies": {
1954 "array-find-index": "^1.0.2",
1888 "array-find-index": "^1.0.2",
1955 "spdx-expression-parse": "^3.0.0",
1889 "spdx-expression-parse": "^3.0.0",
1956 "spdx-ranges": "^2.0.0"
1890 "spdx-ranges": "^2.0.0"
1957 }
1891 }
1958 },
1892 },
1959 "node_modules/spdx-correct": {
1893 "node_modules/spdx-correct": {
1960 "version": "3.1.0",
1894 "version": "3.2.0",
1961 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
1895 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
1962 "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
1896 "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
1963 "dev": true,
1897 "dev": true,
1964 "dependencies": {
1898 "dependencies": {
1965 "spdx-expression-parse": "^3.0.0",
1899 "spdx-expression-parse": "^3.0.0",
1966 "spdx-license-ids": "^3.0.0"
1900 "spdx-license-ids": "^3.0.0"
1967 }
1901 }
1968 },
1902 },
1969 "node_modules/spdx-exceptions": {
1903 "node_modules/spdx-exceptions": {
1970 "version": "2.2.0",
1904 "version": "2.5.0",
1971 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
1905 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
1972 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
1906 "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
1973 "dev": true
1907 "dev": true
1974 },
1908 },
1975 "node_modules/spdx-expression-parse": {
1909 "node_modules/spdx-expression-parse": {
1976 "version": "3.0.0",
1910 "version": "3.0.1",
1977 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
1911 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
1978 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
1912 "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
1979 "dev": true,
1913 "dev": true,
1980 "dependencies": {
1914 "dependencies": {
1981 "spdx-exceptions": "^2.1.0",
1915 "spdx-exceptions": "^2.1.0",
1982 "spdx-license-ids": "^3.0.0"
1916 "spdx-license-ids": "^3.0.0"
1983 }
1917 }
1984 },
1918 },
1985 "node_modules/spdx-license-ids": {
1919 "node_modules/spdx-license-ids": {
1986 "version": "3.0.5",
1920 "version": "3.0.18",
1987 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
1921 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
1988 "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
1922 "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
1989 "dev": true
1923 "dev": true
1990 },
1924 },
1991 "node_modules/spdx-ranges": {
1925 "node_modules/spdx-ranges": {
1992 "version": "2.1.1",
1926 "version": "2.1.1",
1993 "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
1927 "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
1994 "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
1928 "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
1995 "dev": true
1929 "dev": true
1996 },
1930 },
1997 "node_modules/spdx-satisfies": {
1931 "node_modules/spdx-satisfies": {
1998 "version": "4.0.1",
1932 "version": "4.0.1",
1999 "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
1933 "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
2000 "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
1934 "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
2001 "dev": true,
1935 "dev": true,
2002 "dependencies": {
1936 "dependencies": {
2003 "spdx-compare": "^1.0.0",
1937 "spdx-compare": "^1.0.0",
2004 "spdx-expression-parse": "^3.0.0",
1938 "spdx-expression-parse": "^3.0.0",
2005 "spdx-ranges": "^2.0.0"
1939 "spdx-ranges": "^2.0.0"
2006 }
1940 }
2007 },
1941 },
2008 "node_modules/sprintf-js": {
1942 "node_modules/sprintf-js": {
2009 "version": "1.0.3",
1943 "version": "1.0.3",
2010 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1944 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2011 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1945 "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
2012 "dev": true
1946 "dev": true
2013 },
1947 },
2014 "node_modules/sshpk": {
2015 "version": "1.16.1",
2016 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
2017 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
2018 "dev": true,
2019 "optional": true,
2020 "dependencies": {
2021 "asn1": "~0.2.3",
2022 "assert-plus": "^1.0.0",
2023 "bcrypt-pbkdf": "^1.0.0",
2024 "dashdash": "^1.12.0",
2025 "ecc-jsbn": "~0.1.1",
2026 "getpass": "^0.1.1",
2027 "jsbn": "~0.1.0",
2028 "safer-buffer": "^2.0.2",
2029 "tweetnacl": "~0.14.0"
2030 },
2031 "bin": {
2032 "sshpk-conv": "bin/sshpk-conv",
2033 "sshpk-sign": "bin/sshpk-sign",
2034 "sshpk-verify": "bin/sshpk-verify"
2035 },
2036 "engines": {
2037 "node": ">=0.10.0"
2038 }
2039 },
2040 "node_modules/string_decoder": {
2041 "version": "1.3.0",
2042 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
2043 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
2044 "dev": true,
2045 "dependencies": {
2046 "safe-buffer": "~5.2.0"
2047 }
2048 },
2049 "node_modules/string-width": {
1948 "node_modules/string-width": {
2050 "version": "4.2.0",
1949 "version": "4.2.3",
2051 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
1950 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2052 "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
1951 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2053 "dev": true,
1952 "dev": true,
2054 "dependencies": {
1953 "dependencies": {
2055 "emoji-regex": "^8.0.0",
1954 "emoji-regex": "^8.0.0",
2056 "is-fullwidth-code-point": "^3.0.0",
1955 "is-fullwidth-code-point": "^3.0.0",
2057 "strip-ansi": "^6.0.0"
1956 "strip-ansi": "^6.0.1"
2058 },
1957 },
2059 "engines": {
1958 "engines": {
2060 "node": ">=8"
1959 "node": ">=8"
2061 }
1960 }
2062 },
1961 },
1962 "node_modules/string-width/node_modules/ansi-regex": {
1963 "version": "5.0.1",
1964 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1965 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1966 "dev": true,
1967 "engines": {
1968 "node": ">=8"
1969 }
1970 },
2063 "node_modules/string-width/node_modules/strip-ansi": {
1971 "node_modules/string-width/node_modules/strip-ansi": {
2064 "version": "6.0.0",
1972 "version": "6.0.1",
2065 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
1973 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2066 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
1974 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2067 "dev": true,
1975 "dev": true,
2068 "dependencies": {
1976 "dependencies": {
2069 "ansi-regex": "^5.0.0"
1977 "ansi-regex": "^5.0.1"
2070 },
1978 },
2071 "engines": {
1979 "engines": {
2072 "node": ">=8"
1980 "node": ">=8"
2073 }
1981 }
2074 },
1982 },
2075 "node_modules/strip-ansi": {
1983 "node_modules/strip-ansi": {
2076 "version": "5.2.0",
1984 "version": "5.2.0",
2077 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1985 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
2078 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1986 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2079 "dev": true,
1987 "dev": true,
2080 "dependencies": {
1988 "dependencies": {
2081 "ansi-regex": "^4.1.0"
1989 "ansi-regex": "^4.1.0"
2082 },
1990 },
2083 "engines": {
1991 "engines": {
2084 "node": ">=6"
1992 "node": ">=6"
2085 }
1993 }
2086 },
1994 },
2087 "node_modules/strip-ansi/node_modules/ansi-regex": {
2088 "version": "4.1.0",
2089 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
2090 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
2091 "dev": true,
2092 "engines": {
2093 "node": ">=6"
2094 }
2095 },
2096 "node_modules/strip-json-comments": {
1995 "node_modules/strip-json-comments": {
2097 "version": "3.0.1",
1996 "version": "3.1.1",
2098 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
1997 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
2099 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
1998 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2100 "dev": true,
1999 "dev": true,
2101 "engines": {
2000 "engines": {
2102 "node": ">=8"
2001 "node": ">=8"
2002 },
2003 "funding": {
2004 "url": "https://github.com/sponsors/sindresorhus"
2103 }
2005 }
2104 },
2006 },
2105 "node_modules/supports-color": {
2007 "node_modules/supports-color": {
2106 "version": "5.5.0",
2008 "version": "5.5.0",
2107 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2009 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2108 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2010 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2109 "dev": true,
2011 "dev": true,
2110 "dependencies": {
2012 "dependencies": {
2111 "has-flag": "^3.0.0"
2013 "has-flag": "^3.0.0"
2112 },
2014 },
2113 "engines": {
2015 "engines": {
2114 "node": ">=4"
2016 "node": ">=4"
2115 }
2017 }
2116 },
2018 },
2019 "node_modules/supports-preserve-symlinks-flag": {
2020 "version": "1.0.0",
2021 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2022 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2023 "dev": true,
2024 "engines": {
2025 "node": ">= 0.4"
2026 },
2027 "funding": {
2028 "url": "https://github.com/sponsors/ljharb"
2029 }
2030 },
2117 "node_modules/table": {
2031 "node_modules/table": {
2118 "version": "5.4.6",
2032 "version": "5.4.6",
2119 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2033 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
2120 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2034 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
2121 "dev": true,
2035 "dev": true,
2122 "dependencies": {
2036 "dependencies": {
2123 "ajv": "^6.10.2",
2037 "ajv": "^6.10.2",
2124 "lodash": "^4.17.14",
2038 "lodash": "^4.17.14",
2125 "slice-ansi": "^2.1.0",
2039 "slice-ansi": "^2.1.0",
2126 "string-width": "^3.0.0"
2040 "string-width": "^3.0.0"
2127 },
2041 },
2128 "engines": {
2042 "engines": {
2129 "node": ">=6.0.0"
2043 "node": ">=6.0.0"
2130 }
2044 }
2131 },
2045 },
2132 "node_modules/table/node_modules/emoji-regex": {
2046 "node_modules/table/node_modules/emoji-regex": {
2133 "version": "7.0.3",
2047 "version": "7.0.3",
2134 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2048 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
2135 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2049 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2136 "dev": true
2050 "dev": true
2137 },
2051 },
2138 "node_modules/table/node_modules/is-fullwidth-code-point": {
2052 "node_modules/table/node_modules/is-fullwidth-code-point": {
2139 "version": "2.0.0",
2053 "version": "2.0.0",
2140 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2054 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2141 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2055 "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
2142 "dev": true,
2056 "dev": true,
2143 "engines": {
2057 "engines": {
2144 "node": ">=4"
2058 "node": ">=4"
2145 }
2059 }
2146 },
2060 },
2147 "node_modules/table/node_modules/string-width": {
2061 "node_modules/table/node_modules/string-width": {
2148 "version": "3.1.0",
2062 "version": "3.1.0",
2149 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2063 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
2150 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2064 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2151 "dev": true,
2065 "dev": true,
2152 "dependencies": {
2066 "dependencies": {
2153 "emoji-regex": "^7.0.1",
2067 "emoji-regex": "^7.0.1",
2154 "is-fullwidth-code-point": "^2.0.0",
2068 "is-fullwidth-code-point": "^2.0.0",
2155 "strip-ansi": "^5.1.0"
2069 "strip-ansi": "^5.1.0"
2156 },
2070 },
2157 "engines": {
2071 "engines": {
2158 "node": ">=6"
2072 "node": ">=6"
2159 }
2073 }
2160 },
2074 },
2161 "node_modules/text-table": {
2075 "node_modules/text-table": {
2162 "version": "0.2.0",
2076 "version": "0.2.0",
2163 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2077 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2164 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
2078 "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
2165 "dev": true
2079 "dev": true
2166 },
2080 },
2167 "node_modules/through": {
2081 "node_modules/through": {
2168 "version": "2.3.8",
2082 "version": "2.3.8",
2169 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2083 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2170 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2084 "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
2171 "dev": true
2085 "dev": true
2172 },
2086 },
2173 "node_modules/tmp": {
2087 "node_modules/tmp": {
2174 "version": "0.0.33",
2088 "version": "0.0.33",
2175 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2089 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
2176 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2090 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
2177 "dev": true,
2091 "dev": true,
2178 "dependencies": {
2092 "dependencies": {
2179 "os-tmpdir": "~1.0.2"
2093 "os-tmpdir": "~1.0.2"
2180 },
2094 },
2181 "engines": {
2095 "engines": {
2182 "node": ">=0.6.0"
2096 "node": ">=0.6.0"
2183 }
2097 }
2184 },
2098 },
2185 "node_modules/tough-cookie": {
2186 "version": "2.4.3",
2187 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
2188 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
2189 "dev": true,
2190 "optional": true,
2191 "dependencies": {
2192 "psl": "^1.1.24",
2193 "punycode": "^1.4.1"
2194 },
2195 "engines": {
2196 "node": ">=0.8"
2197 }
2198 },
2199 "node_modules/tough-cookie/node_modules/punycode": {
2200 "version": "1.4.1",
2201 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2202 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2203 "dev": true,
2204 "optional": true
2205 },
2206 "node_modules/treeify": {
2099 "node_modules/treeify": {
2207 "version": "1.1.0",
2100 "version": "1.1.0",
2208 "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
2101 "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
2209 "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
2102 "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
2210 "dev": true,
2103 "dev": true,
2211 "engines": {
2104 "engines": {
2212 "node": ">=0.6"
2105 "node": ">=0.6"
2213 }
2106 }
2214 },
2107 },
2215 "node_modules/tslib": {
2108 "node_modules/tslib": {
2216 "version": "1.11.0",
2109 "version": "1.14.1",
2217 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
2110 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
2218 "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
2111 "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
2219 "dev": true
2112 "dev": true
2220 },
2113 },
2221 "node_modules/tunnel-agent": {
2222 "version": "0.6.0",
2223 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
2224 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
2225 "dev": true,
2226 "optional": true,
2227 "dependencies": {
2228 "safe-buffer": "^5.0.1"
2229 },
2230 "engines": {
2231 "node": "*"
2232 }
2233 },
2234 "node_modules/tweetnacl": {
2235 "version": "0.14.5",
2236 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
2237 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
2238 "dev": true,
2239 "optional": true
2240 },
2241 "node_modules/type-check": {
2114 "node_modules/type-check": {
2242 "version": "0.3.2",
2115 "version": "0.3.2",
2243 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2116 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2244 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2117 "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
2245 "dev": true,
2118 "dev": true,
2246 "dependencies": {
2119 "dependencies": {
2247 "prelude-ls": "~1.1.2"
2120 "prelude-ls": "~1.1.2"
2248 },
2121 },
2249 "engines": {
2122 "engines": {
2250 "node": ">= 0.8.0"
2123 "node": ">= 0.8.0"
2251 }
2124 }
2252 },
2125 },
2253 "node_modules/type-fest": {
2126 "node_modules/type-fest": {
2254 "version": "0.8.1",
2127 "version": "0.8.1",
2255 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
2128 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
2256 "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
2129 "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
2257 "dev": true,
2130 "dev": true,
2258 "engines": {
2131 "engines": {
2259 "node": ">=8"
2132 "node": ">=8"
2260 }
2133 }
2261 },
2134 },
2262 "node_modules/uri-js": {
2135 "node_modules/uri-js": {
2263 "version": "4.2.2",
2136 "version": "4.4.1",
2264 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
2137 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2265 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
2138 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2266 "dev": true,
2139 "dev": true,
2267 "dependencies": {
2140 "dependencies": {
2268 "punycode": "^2.1.0"
2141 "punycode": "^2.1.0"
2269 }
2142 }
2270 },
2143 },
2271 "node_modules/util-deprecate": {
2272 "version": "1.0.2",
2273 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2274 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2275 "dev": true
2276 },
2277 "node_modules/util-extend": {
2144 "node_modules/util-extend": {
2278 "version": "1.0.3",
2145 "version": "1.0.3",
2279 "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
2146 "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
2280 "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
2147 "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
2281 "dev": true
2148 "dev": true
2282 },
2149 },
2283 "node_modules/uuid": {
2284 "version": "3.3.3",
2285 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
2286 "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
2287 "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
2288 "dev": true,
2289 "optional": true,
2290 "bin": {
2291 "uuid": "bin/uuid"
2292 }
2293 },
2294 "node_modules/v8-compile-cache": {
2150 "node_modules/v8-compile-cache": {
2295 "version": "2.1.0",
2151 "version": "2.4.0",
2296 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
2152 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
2297 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
2153 "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
2298 "dev": true
2154 "dev": true
2299 },
2155 },
2300 "node_modules/validate-npm-package-license": {
2156 "node_modules/validate-npm-package-license": {
2301 "version": "3.0.4",
2157 "version": "3.0.4",
2302 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2158 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2303 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2159 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2304 "dev": true,
2160 "dev": true,
2305 "dependencies": {
2161 "dependencies": {
2306 "spdx-correct": "^3.0.0",
2162 "spdx-correct": "^3.0.0",
2307 "spdx-expression-parse": "^3.0.0"
2163 "spdx-expression-parse": "^3.0.0"
2308 }
2164 }
2309 },
2165 },
2310 "node_modules/verror": {
2311 "version": "1.10.0",
2312 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
2313 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
2314 "dev": true,
2315 "engines": [
2316 "node >=0.6.0"
2317 ],
2318 "optional": true,
2319 "dependencies": {
2320 "assert-plus": "^1.0.0",
2321 "core-util-is": "1.0.2",
2322 "extsprintf": "^1.2.0"
2323 }
2324 },
2325 "node_modules/which": {
2166 "node_modules/which": {
2326 "version": "1.3.1",
2167 "version": "1.3.1",
2327 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2168 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2328 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2169 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2329 "dev": true,
2170 "dev": true,
2330 "dependencies": {
2171 "dependencies": {
2331 "isexe": "^2.0.0"
2172 "isexe": "^2.0.0"
2332 },
2173 },
2333 "bin": {
2174 "bin": {
2334 "which": "bin/which"
2175 "which": "bin/which"
2335 }
2176 }
2336 },
2177 },
2337 "node_modules/word-wrap": {
2178 "node_modules/word-wrap": {
2338 "version": "1.2.3",
2179 "version": "1.2.5",
2339 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
2180 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
2340 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
2181 "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
2341 "dev": true,
2182 "dev": true,
2342 "engines": {
2183 "engines": {
2343 "node": ">=0.10.0"
2184 "node": ">=0.10.0"
2344 }
2185 }
2345 },
2186 },
2346 "node_modules/wrappy": {
2187 "node_modules/wrappy": {
2347 "version": "1.0.2",
2188 "version": "1.0.2",
2348 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2189 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2349 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2190 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2350 "dev": true
2191 "dev": true
2351 },
2192 },
2352 "node_modules/write": {
2193 "node_modules/write": {
2353 "version": "1.0.3",
2194 "version": "1.0.3",
2354 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
2195 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
2355 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
2196 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
2356 "dev": true,
2197 "dev": true,
2357 "dependencies": {
2198 "dependencies": {
2358 "mkdirp": "^0.5.1"
2199 "mkdirp": "^0.5.1"
2359 },
2200 },
2360 "engines": {
2201 "engines": {
2361 "node": ">=4"
2202 "node": ">=4"
2362 }
2203 }
2363 }
2204 }
2364 },
2365 "dependencies": {
2366 "@babel/code-frame": {
2367 "version": "7.8.3",
2368 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
2369 "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
2370 "dev": true,
2371 "requires": {
2372 "@babel/highlight": "^7.8.3"
2373 }
2374 },
2375 "@babel/highlight": {
2376 "version": "7.8.3",
2377 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
2378 "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
2379 "dev": true,
2380 "requires": {
2381 "chalk": "^2.0.0",
2382 "esutils": "^2.0.2",
2383 "js-tokens": "^4.0.0"
2384 }
2385 },
2386 "abbrev": {
2387 "version": "1.1.1",
2388 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
2389 "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
2390 "dev": true
2391 },
2392 "acorn": {
2393 "version": "7.1.0",
2394 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
2395 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
2396 "dev": true
2397 },
2398 "acorn-jsx": {
2399 "version": "5.1.0",
2400 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
2401 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
2402 "dev": true,
2403 "requires": {}
2404 },
2405 "ajv": {
2406 "version": "6.10.2",
2407 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
2408 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
2409 "dev": true,
2410 "requires": {
2411 "fast-deep-equal": "^2.0.1",
2412 "fast-json-stable-stringify": "^2.0.0",
2413 "json-schema-traverse": "^0.4.1",
2414 "uri-js": "^4.2.2"
2415 }
2416 },
2417 "amdefine": {
2418 "version": "1.0.1",
2419 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
2420 "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
2421 "dev": true
2422 },
2423 "ansi-escapes": {
2424 "version": "4.3.0",
2425 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
2426 "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
2427 "dev": true,
2428 "requires": {
2429 "type-fest": "^0.8.1"
2430 }
2431 },
2432 "ansi-regex": {
2433 "version": "5.0.0",
2434 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
2435 "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
2436 "dev": true
2437 },
2438 "ansi-styles": {
2439 "version": "3.2.1",
2440 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2441 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2442 "dev": true,
2443 "requires": {
2444 "color-convert": "^1.9.0"
2445 }
2446 },
2447 "argparse": {
2448 "version": "1.0.10",
2449 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
2450 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
2451 "dev": true,
2452 "requires": {
2453 "sprintf-js": "~1.0.2"
2454 }
2455 },
2456 "array-find-index": {
2457 "version": "1.0.2",
2458 "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
2459 "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
2460 "dev": true
2461 },
2462 "asap": {
2463 "version": "2.0.6",
2464 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
2465 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
2466 "dev": true
2467 },
2468 "asn1": {
2469 "version": "0.2.4",
2470 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
2471 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
2472 "dev": true,
2473 "optional": true,
2474 "requires": {
2475 "safer-buffer": "~2.1.0"
2476 }
2477 },
2478 "assert-plus": {
2479 "version": "1.0.0",
2480 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
2481 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
2482 "dev": true,
2483 "optional": true
2484 },
2485 "astral-regex": {
2486 "version": "1.0.0",
2487 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
2488 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
2489 "dev": true
2490 },
2491 "asynckit": {
2492 "version": "0.4.0",
2493 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
2494 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
2495 "dev": true,
2496 "optional": true
2497 },
2498 "at.js": {
2499 "version": "1.5.4",
2500 "resolved": "https://registry.npmjs.org/at.js/-/at.js-1.5.4.tgz",
2501 "integrity": "sha512-G8mgUb/PqShPoH8AyjuxsTGvIr1o716BtQUKDM44C8qN2W615y7KGJ68MlTGamd0J0D/m28emUkzagaHTdrGZw==",
2502 "requires": {}
2503 },
2504 "aws-sign2": {
2505 "version": "0.7.0",
2506 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
2507 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
2508 "dev": true,
2509 "optional": true
2510 },
2511 "aws4": {
2512 "version": "1.8.0",
2513 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
2514 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
2515 "dev": true,
2516 "optional": true
2517 },
2518 "balanced-match": {
2519 "version": "1.0.0",
2520 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
2521 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
2522 "dev": true
2523 },
2524 "bcrypt-pbkdf": {
2525 "version": "1.0.2",
2526 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
2527 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
2528 "dev": true,
2529 "optional": true,
2530 "requires": {
2531 "tweetnacl": "^0.14.3"
2532 }
2533 },
2534 "bootstrap": {
2535 "version": "3.3.7",
2536 "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
2537 "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
2538 },
2539 "brace-expansion": {
2540 "version": "1.1.11",
2541 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
2542 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2543 "dev": true,
2544 "requires": {
2545 "balanced-match": "^1.0.0",
2546 "concat-map": "0.0.1"
2547 }
2548 },
2549 "callsites": {
2550 "version": "3.1.0",
2551 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
2552 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
2553 "dev": true
2554 },
2555 "caseless": {
2556 "version": "0.12.0",
2557 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
2558 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
2559 "dev": true,
2560 "optional": true
2561 },
2562 "chalk": {
2563 "version": "2.4.2",
2564 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2565 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2566 "dev": true,
2567 "requires": {
2568 "ansi-styles": "^3.2.1",
2569 "escape-string-regexp": "^1.0.5",
2570 "supports-color": "^5.3.0"
2571 }
2572 },
2573 "chardet": {
2574 "version": "0.7.0",
2575 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
2576 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
2577 "dev": true
2578 },
2579 "clean-css": {
2580 "version": "3.4.28",
2581 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
2582 "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
2583 "dev": true,
2584 "requires": {
2585 "commander": "2.8.x",
2586 "source-map": "0.4.x"
2587 },
2588 "dependencies": {
2589 "source-map": {
2590 "version": "0.4.4",
2591 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
2592 "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
2593 "dev": true,
2594 "requires": {
2595 "amdefine": ">=0.0.4"
2596 }
2597 }
2598 }
2599 },
2600 "cli-cursor": {
2601 "version": "3.1.0",
2602 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
2603 "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
2604 "dev": true,
2605 "requires": {
2606 "restore-cursor": "^3.1.0"
2607 }
2608 },
2609 "cli-width": {
2610 "version": "2.2.0",
2611 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
2612 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
2613 "dev": true
2614 },
2615 "clone": {
2616 "version": "2.1.2",
2617 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
2618 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
2619 "dev": true
2620 },
2621 "codemirror": {
2622 "version": "5.49.0",
2623 "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.49.0.tgz",
2624 "integrity": "sha512-Hyzr0HToBdZpLBN9dYFO/KlJAsKH37/cXVHPAqa+imml0R92tb9AkmsvjnXL+SluEvjjdfkDgRjc65NG5jnMYA=="
2625 },
2626 "color-convert": {
2627 "version": "1.9.3",
2628 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2629 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2630 "dev": true,
2631 "requires": {
2632 "color-name": "1.1.3"
2633 }
2634 },
2635 "color-name": {
2636 "version": "1.1.3",
2637 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2638 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
2639 "dev": true
2640 },
2641 "combined-stream": {
2642 "version": "1.0.8",
2643 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
2644 "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
2645 "dev": true,
2646 "optional": true,
2647 "requires": {
2648 "delayed-stream": "~1.0.0"
2649 }
2650 },
2651 "commander": {
2652 "version": "2.8.1",
2653 "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
2654 "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
2655 "dev": true,
2656 "requires": {
2657 "graceful-readlink": ">= 1.0.0"
2658 }
2659 },
2660 "concat-map": {
2661 "version": "0.0.1",
2662 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2663 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
2664 "dev": true
2665 },
2666 "core-util-is": {
2667 "version": "1.0.2",
2668 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
2669 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
2670 "dev": true,
2671 "optional": true
2672 },
2673 "cross-spawn": {
2674 "version": "6.0.5",
2675 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
2676 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
2677 "dev": true,
2678 "requires": {
2679 "nice-try": "^1.0.4",
2680 "path-key": "^2.0.1",
2681 "semver": "^5.5.0",
2682 "shebang-command": "^1.2.0",
2683 "which": "^1.2.9"
2684 }
2685 },
2686 "dashdash": {
2687 "version": "1.14.1",
2688 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
2689 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
2690 "dev": true,
2691 "optional": true,
2692 "requires": {
2693 "assert-plus": "^1.0.0"
2694 }
2695 },
2696 "datatables.net": {
2697 "version": "1.10.20",
2698 "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.10.20.tgz",
2699 "integrity": "sha512-4E4S7tTU607N3h0fZPkGmAtr9mwy462u+VJ6gxYZ8MxcRIjZqHy3Dv1GNry7i3zQCktTdWbULVKBbkAJkuHEnQ==",
2700 "requires": {
2701 "jquery": ">=1.7"
2702 }
2703 },
2704 "datatables.net-bs": {
2705 "version": "1.10.20",
2706 "resolved": "https://registry.npmjs.org/datatables.net-bs/-/datatables.net-bs-1.10.20.tgz",
2707 "integrity": "sha512-NsMoOOYZ6NlteOpzhltw21lXsNdhjIMbIOxnqmcrb62ntl8eL9pYzk2AeiDXBlIKY4e550ZrExCq3CYKQ9myEg==",
2708 "requires": {
2709 "datatables.net": "1.10.20",
2710 "jquery": ">=1.7"
2711 }
2712 },
2713 "debug": {
2714 "version": "3.2.6",
2715 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
2716 "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
2717 "dev": true,
2718 "requires": {
2719 "ms": "^2.1.1"
2720 }
2721 },
2722 "debuglog": {
2723 "version": "1.0.1",
2724 "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
2725 "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
2726 "dev": true
2727 },
2728 "deep-is": {
2729 "version": "0.1.3",
2730 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
2731 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
2732 "dev": true
2733 },
2734 "delayed-stream": {
2735 "version": "1.0.0",
2736 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2737 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
2738 "dev": true,
2739 "optional": true
2740 },
2741 "dezalgo": {
2742 "version": "1.0.3",
2743 "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
2744 "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
2745 "dev": true,
2746 "requires": {
2747 "asap": "^2.0.0",
2748 "wrappy": "1"
2749 }
2750 },
2751 "doctrine": {
2752 "version": "3.0.0",
2753 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
2754 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
2755 "dev": true,
2756 "requires": {
2757 "esutils": "^2.0.2"
2758 }
2759 },
2760 "dom-serializer": {
2761 "version": "0.2.2",
2762 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
2763 "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
2764 "dev": true,
2765 "requires": {
2766 "domelementtype": "^2.0.1",
2767 "entities": "^2.0.0"
2768 },
2769 "dependencies": {
2770 "domelementtype": {
2771 "version": "2.0.1",
2772 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
2773 "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
2774 "dev": true
2775 },
2776 "entities": {
2777 "version": "2.0.0",
2778 "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
2779 "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
2780 "dev": true
2781 }
2782 }
2783 },
2784 "domelementtype": {
2785 "version": "1.3.1",
2786 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
2787 "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
2788 "dev": true
2789 },
2790 "domhandler": {
2791 "version": "2.4.2",
2792 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
2793 "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
2794 "dev": true,
2795 "requires": {
2796 "domelementtype": "1"
2797 }
2798 },
2799 "domutils": {
2800 "version": "1.7.0",
2801 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
2802 "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
2803 "dev": true,
2804 "requires": {
2805 "dom-serializer": "0",
2806 "domelementtype": "1"
2807 }
2808 },
2809 "ecc-jsbn": {
2810 "version": "0.1.2",
2811 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
2812 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
2813 "dev": true,
2814 "optional": true,
2815 "requires": {
2816 "jsbn": "~0.1.0",
2817 "safer-buffer": "^2.1.0"
2818 }
2819 },
2820 "emoji-regex": {
2821 "version": "8.0.0",
2822 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2823 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2824 "dev": true
2825 },
2826 "entities": {
2827 "version": "1.1.2",
2828 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
2829 "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
2830 "dev": true
2831 },
2832 "errno": {
2833 "version": "0.1.7",
2834 "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
2835 "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
2836 "dev": true,
2837 "optional": true,
2838 "requires": {
2839 "prr": "~1.0.1"
2840 }
2841 },
2842 "escape-string-regexp": {
2843 "version": "1.0.5",
2844 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2845 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
2846 "dev": true
2847 },
2848 "eslint": {
2849 "version": "6.8.0",
2850 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
2851 "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
2852 "dev": true,
2853 "requires": {
2854 "@babel/code-frame": "^7.0.0",
2855 "ajv": "^6.10.0",
2856 "chalk": "^2.1.0",
2857 "cross-spawn": "^6.0.5",
2858 "debug": "^4.0.1",
2859 "doctrine": "^3.0.0",
2860 "eslint-scope": "^5.0.0",
2861 "eslint-utils": "^1.4.3",
2862 "eslint-visitor-keys": "^1.1.0",
2863 "espree": "^6.1.2",
2864 "esquery": "^1.0.1",
2865 "esutils": "^2.0.2",
2866 "file-entry-cache": "^5.0.1",
2867 "functional-red-black-tree": "^1.0.1",
2868 "glob-parent": "^5.0.0",
2869 "globals": "^12.1.0",
2870 "ignore": "^4.0.6",
2871 "import-fresh": "^3.0.0",
2872 "imurmurhash": "^0.1.4",
2873 "inquirer": "^7.0.0",
2874 "is-glob": "^4.0.0",
2875 "js-yaml": "^3.13.1",
2876 "json-stable-stringify-without-jsonify": "^1.0.1",
2877 "levn": "^0.3.0",
2878 "lodash": "^4.17.14",
2879 "minimatch": "^3.0.4",
2880 "mkdirp": "^0.5.1",
2881 "natural-compare": "^1.4.0",
2882 "optionator": "^0.8.3",
2883 "progress": "^2.0.0",
2884 "regexpp": "^2.0.1",
2885 "semver": "^6.1.2",
2886 "strip-ansi": "^5.2.0",
2887 "strip-json-comments": "^3.0.1",
2888 "table": "^5.2.3",
2889 "text-table": "^0.2.0",
2890 "v8-compile-cache": "^2.0.3"
2891 },
2892 "dependencies": {
2893 "debug": {
2894 "version": "4.1.1",
2895 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
2896 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
2897 "dev": true,
2898 "requires": {
2899 "ms": "^2.1.1"
2900 }
2901 },
2902 "semver": {
2903 "version": "6.3.0",
2904 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2905 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2906 "dev": true
2907 }
2205 }
2908 }
2206 }
2909 },
2910 "eslint-plugin-html": {
2911 "version": "6.0.0",
2912 "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.0.tgz",
2913 "integrity": "sha512-PQcGippOHS+HTbQCStmH5MY1BF2MaU8qW/+Mvo/8xTa/ioeMXdSP+IiaBw2+nh0KEMfYQKuTz1Zo+vHynjwhbg==",
2914 "dev": true,
2915 "requires": {
2916 "htmlparser2": "^3.10.1"
2917 }
2918 },
2919 "eslint-scope": {
2920 "version": "5.0.0",
2921 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
2922 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
2923 "dev": true,
2924 "requires": {
2925 "esrecurse": "^4.1.0",
2926 "estraverse": "^4.1.1"
2927 }
2928 },
2929 "eslint-utils": {
2930 "version": "1.4.3",
2931 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
2932 "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
2933 "dev": true,
2934 "requires": {
2935 "eslint-visitor-keys": "^1.1.0"
2936 }
2937 },
2938 "eslint-visitor-keys": {
2939 "version": "1.1.0",
2940 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
2941 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
2942 "dev": true
2943 },
2944 "espree": {
2945 "version": "6.1.2",
2946 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
2947 "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
2948 "dev": true,
2949 "requires": {
2950 "acorn": "^7.1.0",
2951 "acorn-jsx": "^5.1.0",
2952 "eslint-visitor-keys": "^1.1.0"
2953 }
2954 },
2955 "esprima": {
2956 "version": "4.0.1",
2957 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
2958 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
2959 "dev": true
2960 },
2961 "esquery": {
2962 "version": "1.1.0",
2963 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
2964 "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
2965 "dev": true,
2966 "requires": {
2967 "estraverse": "^4.0.0"
2968 }
2969 },
2970 "esrecurse": {
2971 "version": "4.2.1",
2972 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
2973 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
2974 "dev": true,
2975 "requires": {
2976 "estraverse": "^4.1.0"
2977 }
2978 },
2979 "estraverse": {
2980 "version": "4.3.0",
2981 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
2982 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
2983 "dev": true
2984 },
2985 "esutils": {
2986 "version": "2.0.3",
2987 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2988 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2989 "dev": true
2990 },
2991 "extend": {
2992 "version": "3.0.2",
2993 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
2994 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
2995 "dev": true,
2996 "optional": true
2997 },
2998 "external-editor": {
2999 "version": "3.1.0",
3000 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
3001 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
3002 "dev": true,
3003 "requires": {
3004 "chardet": "^0.7.0",
3005 "iconv-lite": "^0.4.24",
3006 "tmp": "^0.0.33"
3007 }
3008 },
3009 "extsprintf": {
3010 "version": "1.3.0",
3011 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
3012 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
3013 "dev": true,
3014 "optional": true
3015 },
3016 "fast-deep-equal": {
3017 "version": "2.0.1",
3018 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
3019 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
3020 "dev": true
3021 },
3022 "fast-json-stable-stringify": {
3023 "version": "2.0.0",
3024 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
3025 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
3026 "dev": true
3027 },
3028 "fast-levenshtein": {
3029 "version": "2.0.6",
3030 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
3031 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
3032 "dev": true
3033 },
3034 "figures": {
3035 "version": "3.2.0",
3036 "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
3037 "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
3038 "dev": true,
3039 "requires": {
3040 "escape-string-regexp": "^1.0.5"
3041 }
3042 },
3043 "file-entry-cache": {
3044 "version": "5.0.1",
3045 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
3046 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
3047 "dev": true,
3048 "requires": {
3049 "flat-cache": "^2.0.1"
3050 }
3051 },
3052 "flat-cache": {
3053 "version": "2.0.1",
3054 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
3055 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
3056 "dev": true,
3057 "requires": {
3058 "flatted": "^2.0.0",
3059 "rimraf": "2.6.3",
3060 "write": "1.0.3"
3061 }
3062 },
3063 "flatted": {
3064 "version": "2.0.1",
3065 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
3066 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
3067 "dev": true
3068 },
3069 "forever-agent": {
3070 "version": "0.6.1",
3071 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
3072 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
3073 "dev": true,
3074 "optional": true
3075 },
3076 "form-data": {
3077 "version": "2.3.3",
3078 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
3079 "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
3080 "dev": true,
3081 "optional": true,
3082 "requires": {
3083 "asynckit": "^0.4.0",
3084 "combined-stream": "^1.0.6",
3085 "mime-types": "^2.1.12"
3086 }
3087 },
3088 "fs.realpath": {
3089 "version": "1.0.0",
3090 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
3091 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
3092 "dev": true
3093 },
3094 "functional-red-black-tree": {
3095 "version": "1.0.1",
3096 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
3097 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
3098 "dev": true
3099 },
3100 "getpass": {
3101 "version": "0.1.7",
3102 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
3103 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
3104 "dev": true,
3105 "optional": true,
3106 "requires": {
3107 "assert-plus": "^1.0.0"
3108 }
3109 },
3110 "glob": {
3111 "version": "7.1.6",
3112 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
3113 "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
3114 "dev": true,
3115 "requires": {
3116 "fs.realpath": "^1.0.0",
3117 "inflight": "^1.0.4",
3118 "inherits": "2",
3119 "minimatch": "^3.0.4",
3120 "once": "^1.3.0",
3121 "path-is-absolute": "^1.0.0"
3122 }
3123 },
3124 "glob-parent": {
3125 "version": "5.1.0",
3126 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
3127 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
3128 "dev": true,
3129 "requires": {
3130 "is-glob": "^4.0.1"
3131 }
3132 },
3133 "globals": {
3134 "version": "12.3.0",
3135 "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
3136 "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
3137 "dev": true,
3138 "requires": {
3139 "type-fest": "^0.8.1"
3140 }
3141 },
3142 "graceful-fs": {
3143 "version": "4.2.3",
3144 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
3145 "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
3146 "dev": true
3147 },
3148 "graceful-readlink": {
3149 "version": "1.0.1",
3150 "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
3151 "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
3152 "dev": true
3153 },
3154 "har-schema": {
3155 "version": "2.0.0",
3156 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
3157 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
3158 "dev": true,
3159 "optional": true
3160 },
3161 "har-validator": {
3162 "version": "5.1.3",
3163 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
3164 "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
3165 "dev": true,
3166 "optional": true,
3167 "requires": {
3168 "ajv": "^6.5.5",
3169 "har-schema": "^2.0.0"
3170 }
3171 },
3172 "has-flag": {
3173 "version": "3.0.0",
3174 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
3175 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
3176 "dev": true
3177 },
3178 "hosted-git-info": {
3179 "version": "2.8.5",
3180 "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
3181 "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
3182 "dev": true
3183 },
3184 "htmlparser2": {
3185 "version": "3.10.1",
3186 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
3187 "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
3188 "dev": true,
3189 "requires": {
3190 "domelementtype": "^1.3.1",
3191 "domhandler": "^2.3.0",
3192 "domutils": "^1.5.1",
3193 "entities": "^1.1.1",
3194 "inherits": "^2.0.1",
3195 "readable-stream": "^3.1.1"
3196 }
3197 },
3198 "http-signature": {
3199 "version": "1.2.0",
3200 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
3201 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
3202 "dev": true,
3203 "optional": true,
3204 "requires": {
3205 "assert-plus": "^1.0.0",
3206 "jsprim": "^1.2.2",
3207 "sshpk": "^1.7.0"
3208 }
3209 },
3210 "iconv-lite": {
3211 "version": "0.4.24",
3212 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
3213 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
3214 "dev": true,
3215 "requires": {
3216 "safer-buffer": ">= 2.1.2 < 3"
3217 }
3218 },
3219 "ignore": {
3220 "version": "4.0.6",
3221 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
3222 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
3223 "dev": true
3224 },
3225 "image-size": {
3226 "version": "0.5.5",
3227 "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
3228 "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
3229 "dev": true,
3230 "optional": true
3231 },
3232 "import-fresh": {
3233 "version": "3.2.1",
3234 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
3235 "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
3236 "dev": true,
3237 "requires": {
3238 "parent-module": "^1.0.0",
3239 "resolve-from": "^4.0.0"
3240 }
3241 },
3242 "imurmurhash": {
3243 "version": "0.1.4",
3244 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
3245 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
3246 "dev": true
3247 },
3248 "inflight": {
3249 "version": "1.0.6",
3250 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
3251 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
3252 "dev": true,
3253 "requires": {
3254 "once": "^1.3.0",
3255 "wrappy": "1"
3256 }
3257 },
3258 "inherits": {
3259 "version": "2.0.4",
3260 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3261 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
3262 "dev": true
3263 },
3264 "inquirer": {
3265 "version": "7.0.4",
3266 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
3267 "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
3268 "dev": true,
3269 "requires": {
3270 "ansi-escapes": "^4.2.1",
3271 "chalk": "^2.4.2",
3272 "cli-cursor": "^3.1.0",
3273 "cli-width": "^2.0.0",
3274 "external-editor": "^3.0.3",
3275 "figures": "^3.0.0",
3276 "lodash": "^4.17.15",
3277 "mute-stream": "0.0.8",
3278 "run-async": "^2.2.0",
3279 "rxjs": "^6.5.3",
3280 "string-width": "^4.1.0",
3281 "strip-ansi": "^5.1.0",
3282 "through": "^2.3.6"
3283 }
3284 },
3285 "is-extglob": {
3286 "version": "2.1.1",
3287 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
3288 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
3289 "dev": true
3290 },
3291 "is-fullwidth-code-point": {
3292 "version": "3.0.0",
3293 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
3294 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
3295 "dev": true
3296 },
3297 "is-glob": {
3298 "version": "4.0.1",
3299 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
3300 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
3301 "dev": true,
3302 "requires": {
3303 "is-extglob": "^2.1.1"
3304 }
3305 },
3306 "is-promise": {
3307 "version": "2.1.0",
3308 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
3309 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
3310 "dev": true
3311 },
3312 "is-typedarray": {
3313 "version": "1.0.0",
3314 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
3315 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3316 "dev": true,
3317 "optional": true
3318 },
3319 "isexe": {
3320 "version": "2.0.0",
3321 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
3322 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
3323 "dev": true
3324 },
3325 "isstream": {
3326 "version": "0.1.2",
3327 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
3328 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
3329 "dev": true,
3330 "optional": true
3331 },
3332 "jquery": {
3333 "version": "3.4.1",
3334 "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
3335 "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
3336 },
3337 "jquery.caret": {
3338 "version": "0.3.1",
3339 "resolved": "https://registry.npmjs.org/jquery.caret/-/jquery.caret-0.3.1.tgz",
3340 "integrity": "sha1-nAkzGPrzJ+/zIugmyp8yQTaLx7g="
3341 },
3342 "jquery.flot": {
3343 "version": "0.8.3",
3344 "resolved": "https://registry.npmjs.org/jquery.flot/-/jquery.flot-0.8.3.tgz",
3345 "integrity": "sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg=="
3346 },
3347 "js-tokens": {
3348 "version": "4.0.0",
3349 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
3350 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
3351 "dev": true
3352 },
3353 "js-yaml": {
3354 "version": "3.13.1",
3355 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
3356 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
3357 "dev": true,
3358 "requires": {
3359 "argparse": "^1.0.7",
3360 "esprima": "^4.0.0"
3361 }
3362 },
3363 "jsbn": {
3364 "version": "0.1.1",
3365 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
3366 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
3367 "dev": true,
3368 "optional": true
3369 },
3370 "json-parse-better-errors": {
3371 "version": "1.0.2",
3372 "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
3373 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
3374 "dev": true
3375 },
3376 "json-schema": {
3377 "version": "0.2.3",
3378 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
3379 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
3380 "dev": true,
3381 "optional": true
3382 },
3383 "json-schema-traverse": {
3384 "version": "0.4.1",
3385 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
3386 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
3387 "dev": true
3388 },
3389 "json-stable-stringify-without-jsonify": {
3390 "version": "1.0.1",
3391 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
3392 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
3393 "dev": true
3394 },
3395 "json-stringify-safe": {
3396 "version": "5.0.1",
3397 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
3398 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
3399 "dev": true,
3400 "optional": true
3401 },
3402 "jsprim": {
3403 "version": "1.4.1",
3404 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
3405 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
3406 "dev": true,
3407 "optional": true,
3408 "requires": {
3409 "assert-plus": "1.0.0",
3410 "extsprintf": "1.3.0",
3411 "json-schema": "0.2.3",
3412 "verror": "1.10.0"
3413 }
3414 },
3415 "less": {
3416 "version": "3.10.3",
3417 "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
3418 "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
3419 "dev": true,
3420 "requires": {
3421 "clone": "^2.1.2",
3422 "errno": "^0.1.1",
3423 "graceful-fs": "^4.1.2",
3424 "image-size": "~0.5.0",
3425 "mime": "^1.4.1",
3426 "mkdirp": "^0.5.0",
3427 "promise": "^7.1.1",
3428 "request": "^2.83.0",
3429 "source-map": "~0.6.0"
3430 }
3431 },
3432 "less-plugin-clean-css": {
3433 "version": "1.5.1",
3434 "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.5.1.tgz",
3435 "integrity": "sha1-zFeveqM5iVflbezr5jy2DCNClwM=",
3436 "dev": true,
3437 "requires": {
3438 "clean-css": "^3.0.1"
3439 }
3440 },
3441 "levn": {
3442 "version": "0.3.0",
3443 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
3444 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
3445 "dev": true,
3446 "requires": {
3447 "prelude-ls": "~1.1.2",
3448 "type-check": "~0.3.2"
3449 }
3450 },
3451 "license-checker": {
3452 "version": "25.0.1",
3453 "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz",
3454 "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==",
3455 "dev": true,
3456 "requires": {
3457 "chalk": "^2.4.1",
3458 "debug": "^3.1.0",
3459 "mkdirp": "^0.5.1",
3460 "nopt": "^4.0.1",
3461 "read-installed": "~4.0.3",
3462 "semver": "^5.5.0",
3463 "spdx-correct": "^3.0.0",
3464 "spdx-expression-parse": "^3.0.0",
3465 "spdx-satisfies": "^4.0.0",
3466 "treeify": "^1.1.0"
3467 }
3468 },
3469 "lodash": {
3470 "version": "4.17.15",
3471 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
3472 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
3473 "dev": true
3474 },
3475 "mime": {
3476 "version": "1.6.0",
3477 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3478 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
3479 "dev": true,
3480 "optional": true
3481 },
3482 "mime-db": {
3483 "version": "1.40.0",
3484 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
3485 "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
3486 "dev": true,
3487 "optional": true
3488 },
3489 "mime-types": {
3490 "version": "2.1.24",
3491 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
3492 "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
3493 "dev": true,
3494 "optional": true,
3495 "requires": {
3496 "mime-db": "1.40.0"
3497 }
3498 },
3499 "mimic-fn": {
3500 "version": "2.1.0",
3501 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
3502 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
3503 "dev": true
3504 },
3505 "minimatch": {
3506 "version": "3.0.4",
3507 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
3508 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
3509 "dev": true,
3510 "requires": {
3511 "brace-expansion": "^1.1.7"
3512 }
3513 },
3514 "minimist": {
3515 "version": "0.0.8",
3516 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
3517 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
3518 "dev": true
3519 },
3520 "mkdirp": {
3521 "version": "0.5.1",
3522 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
3523 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
3524 "dev": true,
3525 "requires": {
3526 "minimist": "0.0.8"
3527 }
3528 },
3529 "ms": {
3530 "version": "2.1.2",
3531 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3532 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
3533 "dev": true
3534 },
3535 "mute-stream": {
3536 "version": "0.0.8",
3537 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
3538 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
3539 "dev": true
3540 },
3541 "natural-compare": {
3542 "version": "1.4.0",
3543 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3544 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
3545 "dev": true
3546 },
3547 "nice-try": {
3548 "version": "1.0.5",
3549 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
3550 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
3551 "dev": true
3552 },
3553 "nopt": {
3554 "version": "4.0.1",
3555 "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
3556 "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
3557 "dev": true,
3558 "requires": {
3559 "abbrev": "1",
3560 "osenv": "^0.1.4"
3561 }
3562 },
3563 "normalize-package-data": {
3564 "version": "2.5.0",
3565 "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
3566 "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
3567 "dev": true,
3568 "requires": {
3569 "hosted-git-info": "^2.1.4",
3570 "resolve": "^1.10.0",
3571 "semver": "2 || 3 || 4 || 5",
3572 "validate-npm-package-license": "^3.0.1"
3573 }
3574 },
3575 "oauth-sign": {
3576 "version": "0.9.0",
3577 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
3578 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
3579 "dev": true,
3580 "optional": true
3581 },
3582 "once": {
3583 "version": "1.4.0",
3584 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3585 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
3586 "dev": true,
3587 "requires": {
3588 "wrappy": "1"
3589 }
3590 },
3591 "onetime": {
3592 "version": "5.1.0",
3593 "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
3594 "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
3595 "dev": true,
3596 "requires": {
3597 "mimic-fn": "^2.1.0"
3598 }
3599 },
3600 "optionator": {
3601 "version": "0.8.3",
3602 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
3603 "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
3604 "dev": true,
3605 "requires": {
3606 "deep-is": "~0.1.3",
3607 "fast-levenshtein": "~2.0.6",
3608 "levn": "~0.3.0",
3609 "prelude-ls": "~1.1.2",
3610 "type-check": "~0.3.2",
3611 "word-wrap": "~1.2.3"
3612 }
3613 },
3614 "os-homedir": {
3615 "version": "1.0.2",
3616 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
3617 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
3618 "dev": true
3619 },
3620 "os-tmpdir": {
3621 "version": "1.0.2",
3622 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
3623 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
3624 "dev": true
3625 },
3626 "osenv": {
3627 "version": "0.1.5",
3628 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
3629 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
3630 "dev": true,
3631 "requires": {
3632 "os-homedir": "^1.0.0",
3633 "os-tmpdir": "^1.0.0"
3634 }
3635 },
3636 "parent-module": {
3637 "version": "1.0.1",
3638 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3639 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3640 "dev": true,
3641 "requires": {
3642 "callsites": "^3.0.0"
3643 }
3644 },
3645 "path-is-absolute": {
3646 "version": "1.0.1",
3647 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3648 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
3649 "dev": true
3650 },
3651 "path-key": {
3652 "version": "2.0.1",
3653 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
3654 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
3655 "dev": true
3656 },
3657 "path-parse": {
3658 "version": "1.0.6",
3659 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
3660 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
3661 "dev": true
3662 },
3663 "performance-now": {
3664 "version": "2.1.0",
3665 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
3666 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
3667 "dev": true,
3668 "optional": true
3669 },
3670 "prelude-ls": {
3671 "version": "1.1.2",
3672 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
3673 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
3674 "dev": true
3675 },
3676 "progress": {
3677 "version": "2.0.3",
3678 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
3679 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
3680 "dev": true
3681 },
3682 "promise": {
3683 "version": "7.3.1",
3684 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
3685 "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
3686 "dev": true,
3687 "optional": true,
3688 "requires": {
3689 "asap": "~2.0.3"
3690 }
3691 },
3692 "prr": {
3693 "version": "1.0.1",
3694 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
3695 "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
3696 "dev": true,
3697 "optional": true
3698 },
3699 "psl": {
3700 "version": "1.4.0",
3701 "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
3702 "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
3703 "dev": true,
3704 "optional": true
3705 },
3706 "punycode": {
3707 "version": "2.1.1",
3708 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3709 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3710 "dev": true
3711 },
3712 "qs": {
3713 "version": "6.5.2",
3714 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
3715 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
3716 "dev": true,
3717 "optional": true
3718 },
3719 "read-installed": {
3720 "version": "4.0.3",
3721 "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz",
3722 "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=",
3723 "dev": true,
3724 "requires": {
3725 "debuglog": "^1.0.1",
3726 "graceful-fs": "^4.1.2",
3727 "read-package-json": "^2.0.0",
3728 "readdir-scoped-modules": "^1.0.0",
3729 "semver": "2 || 3 || 4 || 5",
3730 "slide": "~1.1.3",
3731 "util-extend": "^1.0.1"
3732 }
3733 },
3734 "read-package-json": {
3735 "version": "2.1.0",
3736 "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz",
3737 "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==",
3738 "dev": true,
3739 "requires": {
3740 "glob": "^7.1.1",
3741 "graceful-fs": "^4.1.2",
3742 "json-parse-better-errors": "^1.0.1",
3743 "normalize-package-data": "^2.0.0",
3744 "slash": "^1.0.0"
3745 }
3746 },
3747 "readable-stream": {
3748 "version": "3.6.0",
3749 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
3750 "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
3751 "dev": true,
3752 "requires": {
3753 "inherits": "^2.0.3",
3754 "string_decoder": "^1.1.1",
3755 "util-deprecate": "^1.0.1"
3756 }
3757 },
3758 "readdir-scoped-modules": {
3759 "version": "1.1.0",
3760 "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
3761 "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
3762 "dev": true,
3763 "requires": {
3764 "debuglog": "^1.0.1",
3765 "dezalgo": "^1.0.0",
3766 "graceful-fs": "^4.1.2",
3767 "once": "^1.3.0"
3768 }
3769 },
3770 "regexpp": {
3771 "version": "2.0.1",
3772 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
3773 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
3774 "dev": true
3775 },
3776 "request": {
3777 "version": "2.88.0",
3778 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
3779 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
3780 "dev": true,
3781 "optional": true,
3782 "requires": {
3783 "aws-sign2": "~0.7.0",
3784 "aws4": "^1.8.0",
3785 "caseless": "~0.12.0",
3786 "combined-stream": "~1.0.6",
3787 "extend": "~3.0.2",
3788 "forever-agent": "~0.6.1",
3789 "form-data": "~2.3.2",
3790 "har-validator": "~5.1.0",
3791 "http-signature": "~1.2.0",
3792 "is-typedarray": "~1.0.0",
3793 "isstream": "~0.1.2",
3794 "json-stringify-safe": "~5.0.1",
3795 "mime-types": "~2.1.19",
3796 "oauth-sign": "~0.9.0",
3797 "performance-now": "^2.1.0",
3798 "qs": "~6.5.2",
3799 "safe-buffer": "^5.1.2",
3800 "tough-cookie": "~2.4.3",
3801 "tunnel-agent": "^0.6.0",
3802 "uuid": "^3.3.2"
3803 }
3804 },
3805 "resolve": {
3806 "version": "1.12.0",
3807 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
3808 "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
3809 "dev": true,
3810 "requires": {
3811 "path-parse": "^1.0.6"
3812 }
3813 },
3814 "resolve-from": {
3815 "version": "4.0.0",
3816 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3817 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3818 "dev": true
3819 },
3820 "restore-cursor": {
3821 "version": "3.1.0",
3822 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
3823 "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
3824 "dev": true,
3825 "requires": {
3826 "onetime": "^5.1.0",
3827 "signal-exit": "^3.0.2"
3828 }
3829 },
3830 "rimraf": {
3831 "version": "2.6.3",
3832 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
3833 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
3834 "dev": true,
3835 "requires": {
3836 "glob": "^7.1.3"
3837 }
3838 },
3839 "run-async": {
3840 "version": "2.3.0",
3841 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
3842 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
3843 "dev": true,
3844 "requires": {
3845 "is-promise": "^2.1.0"
3846 }
3847 },
3848 "rxjs": {
3849 "version": "6.5.4",
3850 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
3851 "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
3852 "dev": true,
3853 "requires": {
3854 "tslib": "^1.9.0"
3855 }
3856 },
3857 "safe-buffer": {
3858 "version": "5.2.0",
3859 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
3860 "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
3861 "dev": true
3862 },
3863 "safer-buffer": {
3864 "version": "2.1.2",
3865 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3866 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3867 "dev": true
3868 },
3869 "select2": {
3870 "version": "3.5.1",
3871 "resolved": "https://registry.npmjs.org/select2/-/select2-3.5.1.tgz",
3872 "integrity": "sha1-8oGUibvGX9bTKL5yu+K5XdfofP4="
3873 },
3874 "select2-bootstrap-css": {
3875 "version": "1.4.6",
3876 "resolved": "https://registry.npmjs.org/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz",
3877 "integrity": "sha1-XPtoJG9SmcoYWOAe/XiIBMc0mX4="
3878 },
3879 "semver": {
3880 "version": "5.7.1",
3881 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
3882 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
3883 "dev": true
3884 },
3885 "shebang-command": {
3886 "version": "1.2.0",
3887 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
3888 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
3889 "dev": true,
3890 "requires": {
3891 "shebang-regex": "^1.0.0"
3892 }
3893 },
3894 "shebang-regex": {
3895 "version": "1.0.0",
3896 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
3897 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
3898 "dev": true
3899 },
3900 "signal-exit": {
3901 "version": "3.0.2",
3902 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
3903 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3904 "dev": true
3905 },
3906 "slash": {
3907 "version": "1.0.0",
3908 "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
3909 "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
3910 "dev": true
3911 },
3912 "slice-ansi": {
3913 "version": "2.1.0",
3914 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
3915 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
3916 "dev": true,
3917 "requires": {
3918 "ansi-styles": "^3.2.0",
3919 "astral-regex": "^1.0.0",
3920 "is-fullwidth-code-point": "^2.0.0"
3921 },
3922 "dependencies": {
3923 "is-fullwidth-code-point": {
3924 "version": "2.0.0",
3925 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
3926 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
3927 "dev": true
3928 }
3929 }
3930 },
3931 "slide": {
3932 "version": "1.1.6",
3933 "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
3934 "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
3935 "dev": true
3936 },
3937 "source-map": {
3938 "version": "0.6.1",
3939 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3940 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3941 "dev": true,
3942 "optional": true
3943 },
3944 "spdx-compare": {
3945 "version": "1.0.0",
3946 "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz",
3947 "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==",
3948 "dev": true,
3949 "requires": {
3950 "array-find-index": "^1.0.2",
3951 "spdx-expression-parse": "^3.0.0",
3952 "spdx-ranges": "^2.0.0"
3953 }
3954 },
3955 "spdx-correct": {
3956 "version": "3.1.0",
3957 "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
3958 "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
3959 "dev": true,
3960 "requires": {
3961 "spdx-expression-parse": "^3.0.0",
3962 "spdx-license-ids": "^3.0.0"
3963 }
3964 },
3965 "spdx-exceptions": {
3966 "version": "2.2.0",
3967 "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
3968 "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
3969 "dev": true
3970 },
3971 "spdx-expression-parse": {
3972 "version": "3.0.0",
3973 "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
3974 "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
3975 "dev": true,
3976 "requires": {
3977 "spdx-exceptions": "^2.1.0",
3978 "spdx-license-ids": "^3.0.0"
3979 }
3980 },
3981 "spdx-license-ids": {
3982 "version": "3.0.5",
3983 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
3984 "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
3985 "dev": true
3986 },
3987 "spdx-ranges": {
3988 "version": "2.1.1",
3989 "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz",
3990 "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==",
3991 "dev": true
3992 },
3993 "spdx-satisfies": {
3994 "version": "4.0.1",
3995 "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz",
3996 "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==",
3997 "dev": true,
3998 "requires": {
3999 "spdx-compare": "^1.0.0",
4000 "spdx-expression-parse": "^3.0.0",
4001 "spdx-ranges": "^2.0.0"
4002 }
4003 },
4004 "sprintf-js": {
4005 "version": "1.0.3",
4006 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
4007 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
4008 "dev": true
4009 },
4010 "sshpk": {
4011 "version": "1.16.1",
4012 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
4013 "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
4014 "dev": true,
4015 "optional": true,
4016 "requires": {
4017 "asn1": "~0.2.3",
4018 "assert-plus": "^1.0.0",
4019 "bcrypt-pbkdf": "^1.0.0",
4020 "dashdash": "^1.12.0",
4021 "ecc-jsbn": "~0.1.1",
4022 "getpass": "^0.1.1",
4023 "jsbn": "~0.1.0",
4024 "safer-buffer": "^2.0.2",
4025 "tweetnacl": "~0.14.0"
4026 }
4027 },
4028 "string_decoder": {
4029 "version": "1.3.0",
4030 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
4031 "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
4032 "dev": true,
4033 "requires": {
4034 "safe-buffer": "~5.2.0"
4035 }
4036 },
4037 "string-width": {
4038 "version": "4.2.0",
4039 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
4040 "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
4041 "dev": true,
4042 "requires": {
4043 "emoji-regex": "^8.0.0",
4044 "is-fullwidth-code-point": "^3.0.0",
4045 "strip-ansi": "^6.0.0"
4046 },
4047 "dependencies": {
4048 "strip-ansi": {
4049 "version": "6.0.0",
4050 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
4051 "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
4052 "dev": true,
4053 "requires": {
4054 "ansi-regex": "^5.0.0"
4055 }
4056 }
4057 }
4058 },
4059 "strip-ansi": {
4060 "version": "5.2.0",
4061 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
4062 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
4063 "dev": true,
4064 "requires": {
4065 "ansi-regex": "^4.1.0"
4066 },
4067 "dependencies": {
4068 "ansi-regex": {
4069 "version": "4.1.0",
4070 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
4071 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
4072 "dev": true
4073 }
4074 }
4075 },
4076 "strip-json-comments": {
4077 "version": "3.0.1",
4078 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
4079 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
4080 "dev": true
4081 },
4082 "supports-color": {
4083 "version": "5.5.0",
4084 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4085 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4086 "dev": true,
4087 "requires": {
4088 "has-flag": "^3.0.0"
4089 }
4090 },
4091 "table": {
4092 "version": "5.4.6",
4093 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
4094 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
4095 "dev": true,
4096 "requires": {
4097 "ajv": "^6.10.2",
4098 "lodash": "^4.17.14",
4099 "slice-ansi": "^2.1.0",
4100 "string-width": "^3.0.0"
4101 },
4102 "dependencies": {
4103 "emoji-regex": {
4104 "version": "7.0.3",
4105 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
4106 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
4107 "dev": true
4108 },
4109 "is-fullwidth-code-point": {
4110 "version": "2.0.0",
4111 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
4112 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
4113 "dev": true
4114 },
4115 "string-width": {
4116 "version": "3.1.0",
4117 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
4118 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
4119 "dev": true,
4120 "requires": {
4121 "emoji-regex": "^7.0.1",
4122 "is-fullwidth-code-point": "^2.0.0",
4123 "strip-ansi": "^5.1.0"
4124 }
4125 }
4126 }
4127 },
4128 "text-table": {
4129 "version": "0.2.0",
4130 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
4131 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
4132 "dev": true
4133 },
4134 "through": {
4135 "version": "2.3.8",
4136 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
4137 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
4138 "dev": true
4139 },
4140 "tmp": {
4141 "version": "0.0.33",
4142 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
4143 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
4144 "dev": true,
4145 "requires": {
4146 "os-tmpdir": "~1.0.2"
4147 }
4148 },
4149 "tough-cookie": {
4150 "version": "2.4.3",
4151 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
4152 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
4153 "dev": true,
4154 "optional": true,
4155 "requires": {
4156 "psl": "^1.1.24",
4157 "punycode": "^1.4.1"
4158 },
4159 "dependencies": {
4160 "punycode": {
4161 "version": "1.4.1",
4162 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
4163 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
4164 "dev": true,
4165 "optional": true
4166 }
4167 }
4168 },
4169 "treeify": {
4170 "version": "1.1.0",
4171 "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz",
4172 "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==",
4173 "dev": true
4174 },
4175 "tslib": {
4176 "version": "1.11.0",
4177 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.0.tgz",
4178 "integrity": "sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==",
4179 "dev": true
4180 },
4181 "tunnel-agent": {
4182 "version": "0.6.0",
4183 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
4184 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
4185 "dev": true,
4186 "optional": true,
4187 "requires": {
4188 "safe-buffer": "^5.0.1"
4189 }
4190 },
4191 "tweetnacl": {
4192 "version": "0.14.5",
4193 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
4194 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
4195 "dev": true,
4196 "optional": true
4197 },
4198 "type-check": {
4199 "version": "0.3.2",
4200 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
4201 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
4202 "dev": true,
4203 "requires": {
4204 "prelude-ls": "~1.1.2"
4205 }
4206 },
4207 "type-fest": {
4208 "version": "0.8.1",
4209 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
4210 "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
4211 "dev": true
4212 },
4213 "uri-js": {
4214 "version": "4.2.2",
4215 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
4216 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
4217 "dev": true,
4218 "requires": {
4219 "punycode": "^2.1.0"
4220 }
4221 },
4222 "util-deprecate": {
4223 "version": "1.0.2",
4224 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4225 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
4226 "dev": true
4227 },
4228 "util-extend": {
4229 "version": "1.0.3",
4230 "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
4231 "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=",
4232 "dev": true
4233 },
4234 "uuid": {
4235 "version": "3.3.3",
4236 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
4237 "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
4238 "dev": true,
4239 "optional": true
4240 },
4241 "v8-compile-cache": {
4242 "version": "2.1.0",
4243 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
4244 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
4245 "dev": true
4246 },
4247 "validate-npm-package-license": {
4248 "version": "3.0.4",
4249 "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
4250 "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
4251 "dev": true,
4252 "requires": {
4253 "spdx-correct": "^3.0.0",
4254 "spdx-expression-parse": "^3.0.0"
4255 }
4256 },
4257 "verror": {
4258 "version": "1.10.0",
4259 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
4260 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
4261 "dev": true,
4262 "optional": true,
4263 "requires": {
4264 "assert-plus": "^1.0.0",
4265 "core-util-is": "1.0.2",
4266 "extsprintf": "^1.2.0"
4267 }
4268 },
4269 "which": {
4270 "version": "1.3.1",
4271 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
4272 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
4273 "dev": true,
4274 "requires": {
4275 "isexe": "^2.0.0"
4276 }
4277 },
4278 "word-wrap": {
4279 "version": "1.2.3",
4280 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
4281 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
4282 "dev": true
4283 },
4284 "wrappy": {
4285 "version": "1.0.2",
4286 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4287 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
4288 "dev": true
4289 },
4290 "write": {
4291 "version": "1.0.3",
4292 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
4293 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
4294 "dev": true,
4295 "requires": {
4296 "mkdirp": "^0.5.1"
4297 }
4298 }
4299 }
4300 }
@@ -1,23 +1,23 b''
1 {
1 {
2 "name": "kallithea",
2 "name": "kallithea",
3 "private": true,
3 "private": true,
4 "dependencies": {
4 "dependencies": {
5 "at.js": "1.5.4",
5 "at.js": "1.5",
6 "bootstrap": "3.3.7",
6 "bootstrap": "3",
7 "codemirror": "5.49.0",
7 "codemirror": "5",
8 "datatables.net": "1.10.20",
8 "datatables.net": "1",
9 "datatables.net-bs": "1.10.20",
9 "datatables.net-bs": "1",
10 "jquery": "3.4.1",
10 "jquery": "3",
11 "jquery.caret": "0.3.1",
11 "jquery.caret": "0.3",
12 "jquery.flot": "0.8.3",
12 "jquery.flot": "0.8",
13 "select2": "3.5.1",
13 "select2": "3",
14 "select2-bootstrap-css": "1.4.6"
14 "select2-bootstrap-css": "1.4.6"
15 },
15 },
16 "devDependencies": {
16 "devDependencies": {
17 "eslint": "6.8.0",
17 "eslint": "6",
18 "eslint-plugin-html": "6.0.0",
18 "eslint-plugin-html": "6",
19 "less": "3.10.3",
19 "less": "3",
20 "less-plugin-clean-css": "1.5.1",
20 "less-plugin-clean-css": "1.5",
21 "license-checker": "25.0.1"
21 "license-checker": "25"
22 }
22 }
23 }
23 }
@@ -1,2539 +1,2539 b''
1 # Copyright (C) 2016 Various authors, licensing as GPLv3
1 # Copyright (C) 2016 Various authors, licensing as GPLv3
2 # This file is distributed under the same license as the Kallithea project.
2 # This file is distributed under the same license as the Kallithea project.
3
3
4 msgid ""
4 msgid ""
5 msgstr ""
5 msgstr ""
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 "Language: be\n"
7 "Language: be\n"
8 "MIME-Version: 1.0\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
12 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
13
13
14 msgid "Repository not found in the filesystem"
14 msgid "Repository not found in the filesystem"
15 msgstr "Рэпазітар не знойдзены на файлавай сістэме"
15 msgstr "Рэпазітар не знойдзены на файлавай сістэме"
16
16
17 msgid "There are no changesets yet"
17 msgid "There are no changesets yet"
18 msgstr "Яшчэ не было змен"
18 msgstr "Яшчэ не было змен"
19
19
20 msgid "Changeset for %s %s not found in %s"
20 msgid "Changeset for %s %s not found in %s"
21 msgstr "Набор змен для %s %s не знойдзены ў %s"
21 msgstr "Набор змен для %s %s не знойдзены ў %s"
22
22
23 msgid "None"
23 msgid "None"
24 msgstr "Нічога"
24 msgstr "Нічога"
25
25
26 msgid "(closed)"
26 msgid "(closed)"
27 msgstr "(зачынена)"
27 msgstr "(зачынена)"
28
28
29 msgid "Successfully deleted pull request %s"
29 msgid "Successfully deleted pull request %s"
30 msgstr "Pull-запыт %s паспяхова выдалены"
30 msgstr "Pull-запыт %s паспяхова выдалены"
31
31
32 msgid "Such revision does not exist for this repository"
32 msgid "Such revision does not exist for this repository"
33 msgstr "Няма такой рэвізіі ў гэтым рэпазітары"
33 msgstr "Няма такой рэвізіі ў гэтым рэпазітары"
34
34
35 msgid "Could not find other repository %s"
35 msgid "Could not find other repository %s"
36 msgstr "Не атрымалася знайсці іншы рэпазітар %s"
36 msgstr "Не атрымалася знайсці іншы рэпазітар %s"
37
37
38 msgid "Cannot compare repositories of different types"
38 msgid "Cannot compare repositories of different types"
39 msgstr "Немагчыма параўноўваць рэпазітары розных тыпаў"
39 msgstr "Немагчыма параўноўваць рэпазітары розных тыпаў"
40
40
41 msgid "Cannot compare repositories without using common ancestor"
41 msgid "Cannot compare repositories without using common ancestor"
42 msgstr "Немагчыма параўноўваць рэпазітары без агульнага продка"
42 msgstr "Немагчыма параўноўваць рэпазітары без агульнага продка"
43
43
44 msgid "No response"
44 msgid "No response"
45 msgstr "Няма адказу"
45 msgstr "Няма адказу"
46
46
47 msgid "Unknown error"
47 msgid "Unknown error"
48 msgstr "Невядомая памылка"
48 msgstr "Невядомая памылка"
49
49
50 msgid ""
50 msgid ""
51 "The request could not be understood by the server due to malformed syntax."
51 "The request could not be understood by the server due to malformed syntax."
52 msgstr "Запыт не распазнаны серверам з-за няправільнага сінтаксісу."
52 msgstr "Запыт не распазнаны серверам з-за няправільнага сінтаксісу."
53
53
54 msgid "Unauthorized access to resource"
54 msgid "Unauthorized access to resource"
55 msgstr "Несанкцыянаваны доступ да рэсурсу"
55 msgstr "Несанкцыянаваны доступ да рэсурсу"
56
56
57 msgid "You don't have permission to view this page"
57 msgid "You don't have permission to view this page"
58 msgstr "У вас няма правоў для прагляду гэтай старонкі"
58 msgstr "У вас няма правоў для прагляду гэтай старонкі"
59
59
60 msgid "The resource could not be found"
60 msgid "The resource could not be found"
61 msgstr "Рэсурс не знойдзены"
61 msgstr "Рэсурс не знойдзены"
62
62
63 msgid ""
63 msgid ""
64 "The server encountered an unexpected condition which prevented it from "
64 "The server encountered an unexpected condition which prevented it from "
65 "fulfilling the request."
65 "fulfilling the request."
66 msgstr ""
66 msgstr ""
67 "Сервер не можа выканаць запыт з-за нечаканых умоваў, якія ўзніклі падчас "
67 "Сервер не можа выканаць запыт з-за нечаканых умоваў, якія ўзніклі падчас "
68 "яго спрацавання."
68 "яго спрацавання."
69
69
70 msgid "%s committed on %s"
70 msgid "%s committed on %s"
71 msgstr "%s выканаў каміт у %s"
71 msgstr "%s выканаў каміт у %s"
72
72
73 msgid "Changeset was too big and was cut off..."
73 msgid "Changeset was too big and was cut off..."
74 msgstr "Змены апынуліся занадта вялікімі і былі скарочаныя..."
74 msgstr "Змены апынуліся занадта вялікімі і былі скарочаныя..."
75
75
76 msgid "%s %s feed"
76 msgid "%s %s feed"
77 msgstr "Стужка навін %s %s"
77 msgstr "Стужка навін %s %s"
78
78
79 msgid "Changes on %s repository"
79 msgid "Changes on %s repository"
80 msgstr "Змены ў рэпазітары %s"
80 msgstr "Змены ў рэпазітары %s"
81
81
82 msgid "Click here to add new file"
82 msgid "Click here to add new file"
83 msgstr "Націсніце каб дадаць новы файл"
83 msgstr "Націсніце каб дадаць новы файл"
84
84
85 msgid "%s at %s"
85 msgid "%s at %s"
86 msgstr "%s (%s)"
86 msgstr "%s (%s)"
87
87
88 msgid "You can only delete files with revision being a valid branch"
88 msgid "You can only delete files with revision being a valid branch"
89 msgstr "Вы можаце выдаляць файлы толькі ў рэвізіі, злучанай з існай галінай"
89 msgstr "Вы можаце выдаляць файлы толькі ў рэвізіі, злучанай з існай галінай"
90
90
91 msgid "Deleted file %s via Kallithea"
91 msgid "Deleted file %s via Kallithea"
92 msgstr "Файл %s выдалены з дапамогай Kallithea"
92 msgstr "Файл %s выдалены з дапамогай Kallithea"
93
93
94 msgid "Successfully deleted file %s"
94 msgid "Successfully deleted file %s"
95 msgstr "Файл %s выдалены"
95 msgstr "Файл %s выдалены"
96
96
97 msgid "Error occurred during commit"
97 msgid "Error occurred during commit"
98 msgstr "Падчас каміта адбылася памылка"
98 msgstr "Падчас каміта адбылася памылка"
99
99
100 msgid "You can only edit files with revision being a valid branch"
100 msgid "You can only edit files with revision being a valid branch"
101 msgstr ""
101 msgstr ""
102 "Вы можаце рэдагаваць файлы толькі ў рэвізіі, злучанай з існай галінай"
102 "Вы можаце рэдагаваць файлы толькі ў рэвізіі, злучанай з існай галінай"
103
103
104 msgid "Edited file %s via Kallithea"
104 msgid "Edited file %s via Kallithea"
105 msgstr "Файл %s адрэдагаваны з дапамогай Kallithea"
105 msgstr "Файл %s адрэдагаваны з дапамогай Kallithea"
106
106
107 msgid "No changes"
107 msgid "No changes"
108 msgstr "Без змен"
108 msgstr "Без змен"
109
109
110 msgid "Successfully committed to %s"
110 msgid "Successfully committed to %s"
111 msgstr "Змены захаваныя ў %s"
111 msgstr "Змены захаваныя ў %s"
112
112
113 msgid "Added file via Kallithea"
113 msgid "Added file via Kallithea"
114 msgstr "Файл дададзены з дапамогай Kallithea"
114 msgstr "Файл дададзены з дапамогай Kallithea"
115
115
116 msgid "No content"
116 msgid "No content"
117 msgstr "Пуста"
117 msgstr "Пуста"
118
118
119 msgid "No filename"
119 msgid "No filename"
120 msgstr "Безназоўны"
120 msgstr "Безназоўны"
121
121
122 msgid "Location must be relative path and must not contain .. in path"
122 msgid "Location must be relative path and must not contain .. in path"
123 msgstr ""
123 msgstr ""
124 "Размяшчэнне павінна быць адносным шляхам, і не можа ўтрымліваць \"..\" у "
124 "Размяшчэнне павінна быць адносным шляхам, і не можа ўтрымліваць \"..\" у "
125 "шляхі"
125 "шляхі"
126
126
127 msgid "Downloads disabled"
127 msgid "Downloads disabled"
128 msgstr "Магчымасць спампоўваць адключаная"
128 msgstr "Магчымасць спампоўваць адключаная"
129
129
130 msgid "Unknown revision %s"
130 msgid "Unknown revision %s"
131 msgstr "Невядомая рэвізія %s"
131 msgstr "Невядомая рэвізія %s"
132
132
133 msgid "Empty repository"
133 msgid "Empty repository"
134 msgstr "Пусты рэпазітар"
134 msgstr "Пусты рэпазітар"
135
135
136 msgid "Unknown archive type"
136 msgid "Unknown archive type"
137 msgstr "Невядомы тып архіва"
137 msgstr "Невядомы тып архіва"
138
138
139 msgid "Changesets"
139 msgid "Changesets"
140 msgstr "Набор змен"
140 msgstr "Набор змен"
141
141
142 msgid "Branches"
142 msgid "Branches"
143 msgstr "Галіны"
143 msgstr "Галіны"
144
144
145 msgid "Tags"
145 msgid "Tags"
146 msgstr "Тэгі"
146 msgstr "Тэгі"
147
147
148 msgid "An error occurred during repository forking %s"
148 msgid "An error occurred during repository forking %s"
149 msgstr "Памылка падчас стварэння форка рэпазітара %s"
149 msgstr "Памылка падчас стварэння форка рэпазітара %s"
150
150
151 msgid "Groups"
151 msgid "Groups"
152 msgstr "Групы"
152 msgstr "Групы"
153
153
154 msgid "Repositories"
154 msgid "Repositories"
155 msgstr "Рэпазітары"
155 msgstr "Рэпазітары"
156
156
157 msgid "Branch"
157 msgid "Branch"
158 msgstr "Галіна"
158 msgstr "Галіна"
159
159
160 msgid "Closed Branches"
160 msgid "Closed Branches"
161 msgstr "Зачыненыя галіны"
161 msgstr "Зачыненыя галіны"
162
162
163 msgid "Tag"
163 msgid "Tag"
164 msgstr "Тэгі"
164 msgstr "Тэгі"
165
165
166 msgid "Bookmark"
166 msgid "Bookmark"
167 msgstr "Закладкі"
167 msgstr "Закладкі"
168
168
169 msgid "Public Journal"
169 msgid "Public Journal"
170 msgstr "Публічны журнал"
170 msgstr "Публічны журнал"
171
171
172 msgid "Journal"
172 msgid "Journal"
173 msgstr "Журнал"
173 msgstr "Журнал"
174
174
175 msgid "Bad captcha"
175 msgid "Bad captcha"
176 msgstr "Няслушная капча"
176 msgstr "Няслушная капча"
177
177
178 msgid "You have successfully registered with %s"
178 msgid "You have successfully registered with %s"
179 msgstr "Рэгістрацыя ў %s прайшла паспяхова"
179 msgstr "Рэгістрацыя ў %s прайшла паспяхова"
180
180
181 msgid "A password reset confirmation code has been sent"
181 msgid "A password reset confirmation code has been sent"
182 msgstr "Код для скідання пароля адпраўлены"
182 msgstr "Код для скідання пароля адпраўлены"
183
183
184 msgid "Invalid password reset token"
184 msgid "Invalid password reset token"
185 msgstr "Няслушны код скідання пароля"
185 msgstr "Няслушны код скідання пароля"
186
186
187 msgid "Successfully updated password"
187 msgid "Successfully updated password"
188 msgstr "Пароль абноўлены"
188 msgstr "Пароль абноўлены"
189
189
190 msgid "Invalid reviewer \"%s\" specified"
190 msgid "Invalid reviewer \"%s\" specified"
191 msgstr "Няслушны рэцэнзент \"%s\""
191 msgstr "Няслушны рэцэнзент \"%s\""
192
192
193 msgid "%s (closed)"
193 msgid "%s (closed)"
194 msgstr "%s (зачынена)"
194 msgstr "%s (зачынена)"
195
195
196 msgid "Changeset"
196 msgid "Changeset"
197 msgstr "Змены"
197 msgstr "Змены"
198
198
199 msgid "Special"
199 msgid "Special"
200 msgstr "Адмысловы"
200 msgstr "Адмысловы"
201
201
202 msgid "Peer branches"
202 msgid "Peer branches"
203 msgstr "Галіны ўдзельніка"
203 msgstr "Галіны ўдзельніка"
204
204
205 msgid "Bookmarks"
205 msgid "Bookmarks"
206 msgstr "Закладкі"
206 msgstr "Закладкі"
207
207
208 msgid "Error creating pull request: %s"
208 msgid "Error creating pull request: %s"
209 msgstr "Памылка пры стварэнні pull-запыту: %s"
209 msgstr "Памылка пры стварэнні pull-запыту: %s"
210
210
211 msgid "Error occurred while creating pull request"
211 msgid "Error occurred while creating pull request"
212 msgstr "Адбылася памылка пры стварэнні pull-запыту"
212 msgstr "Адбылася памылка пры стварэнні pull-запыту"
213
213
214 msgid "Successfully opened new pull request"
214 msgid "Successfully opened new pull request"
215 msgstr "Pull-запыт створаны паспяхова"
215 msgstr "Pull-запыт створаны паспяхова"
216
216
217 msgid "No description"
217 msgid "No description"
218 msgstr "Няма апісання"
218 msgstr "Няма апісання"
219
219
220 msgid "Pull request updated"
220 msgid "Pull request updated"
221 msgstr "Pull-запыт абноўлены"
221 msgstr "Pull-запыт абноўлены"
222
222
223 msgid "Successfully deleted pull request"
223 msgid "Successfully deleted pull request"
224 msgstr "Pull-запыт паспяхова выдалены"
224 msgstr "Pull-запыт паспяхова выдалены"
225
225
226 msgid "This pull request has already been merged to %s."
226 msgid "This pull request has already been merged to %s."
227 msgstr "Гэты pull-запыт ужо прыняты на галіну %s."
227 msgstr "Гэты pull-запыт ужо прыняты на галіну %s."
228
228
229 msgid "This pull request has been closed and can not be updated."
229 msgid "This pull request has been closed and can not be updated."
230 msgstr "Гэты pull-запыт быў зачынены і не можа быць абноўлены."
230 msgstr "Гэты pull-запыт быў зачынены і не можа быць абноўлены."
231
231
232 msgid "Note: Branch %s has another head: %s."
232 msgid "Note: Branch %s has another head: %s."
233 msgstr "Увага: Галіна %s мае яшчэ адну верхавіну: %s."
233 msgstr "Увага: Галіна %s мае яшчэ адну верхавіну: %s."
234
234
235 msgid "Invalid search query. Try quoting it."
235 msgid "Invalid search query. Try quoting it."
236 msgstr "Недапушчальны пошукавы запыт. Паспрабуйце скласці яго ў двукоссі."
236 msgstr "Недапушчальны пошукавы запыт. Паспрабуйце скласці яго ў двукоссі."
237
237
238 msgid "An error occurred during search operation."
238 msgid "An error occurred during search operation."
239 msgstr "Памылка пры выкананні гэтага пошуку."
239 msgstr "Памылка пры выкананні гэтага пошуку."
240
240
241 msgid "No data ready yet"
241 msgid "No data ready yet"
242 msgstr "Няма дадзеных"
242 msgstr "Няма дадзеных"
243
243
244 msgid "Statistics are disabled for this repository"
244 msgid "Statistics are disabled for this repository"
245 msgstr "Статыстычныя дадзеныя адключаны для гэтага рэпазітара"
245 msgstr "Статыстычныя дадзеныя адключаны для гэтага рэпазітара"
246
246
247 msgid "Auth settings updated successfully"
247 msgid "Auth settings updated successfully"
248 msgstr "Налады аўтарызацыі паспяхова абноўлены"
248 msgstr "Налады аўтарызацыі паспяхова абноўлены"
249
249
250 msgid "error occurred during update of auth settings"
250 msgid "error occurred during update of auth settings"
251 msgstr "памылка пры абнаўленні налад аўтарызацыі"
251 msgstr "памылка пры абнаўленні налад аўтарызацыі"
252
252
253 msgid "Default settings updated successfully"
253 msgid "Default settings updated successfully"
254 msgstr "Стандартныя налады паспяхова абноўлены"
254 msgstr "Стандартныя налады паспяхова абноўлены"
255
255
256 msgid "Error occurred during update of defaults"
256 msgid "Error occurred during update of defaults"
257 msgstr "Памылка пры абнаўленні стандартных налад"
257 msgstr "Памылка пры абнаўленні стандартных налад"
258
258
259 msgid "Forever"
259 msgid "Forever"
260 msgstr "Назаўжды"
260 msgstr "Назаўжды"
261
261
262 msgid "5 minutes"
262 msgid "5 minutes"
263 msgstr "5 хвілін"
263 msgstr "5 хвілін"
264
264
265 msgid "1 hour"
265 msgid "1 hour"
266 msgstr "1 гадзіна"
266 msgstr "1 гадзіна"
267
267
268 msgid "1 day"
268 msgid "1 day"
269 msgstr "1 дзень"
269 msgstr "1 дзень"
270
270
271 msgid "1 month"
271 msgid "1 month"
272 msgstr "1 месяц"
272 msgstr "1 месяц"
273
273
274 msgid "Lifetime"
274 msgid "Lifetime"
275 msgstr "Тэрмін"
275 msgstr "Тэрмін"
276
276
277 msgid "Error occurred during gist creation"
277 msgid "Error occurred during gist creation"
278 msgstr "Адбылася памылка падчас стварэння gist-запіса"
278 msgstr "Адбылася памылка падчас стварэння gist-запіса"
279
279
280 msgid "Deleted gist %s"
280 msgid "Deleted gist %s"
281 msgstr "Gist-запіс %s выдалены"
281 msgstr "Gist-запіс %s выдалены"
282
282
283 msgid "Unmodified"
283 msgid "Unmodified"
284 msgstr "Без змен"
284 msgstr "Без змен"
285
285
286 msgid "Successfully updated gist content"
286 msgid "Successfully updated gist content"
287 msgstr "Gist-запіс абноўлены"
287 msgstr "Gist-запіс абноўлены"
288
288
289 msgid "Successfully updated gist data"
289 msgid "Successfully updated gist data"
290 msgstr "Gist-запіс абноўлены"
290 msgstr "Gist-запіс абноўлены"
291
291
292 msgid "Error occurred during update of gist %s"
292 msgid "Error occurred during update of gist %s"
293 msgstr "Памылка пры абнаўленні gist-запісу %s"
293 msgstr "Памылка пры абнаўленні gist-запісу %s"
294
294
295 msgid "You can't edit this user since it's crucial for entire application"
295 msgid "You can't edit this user since it's crucial for entire application"
296 msgstr ""
296 msgstr ""
297 "Вы не можаце змяніць дадзеныя гэтага карыстальніка, паколькі ён важны для "
297 "Вы не можаце змяніць дадзеныя гэтага карыстальніка, паколькі ён важны для "
298 "працы ўсёй праграмы"
298 "працы ўсёй праграмы"
299
299
300 msgid "Your account was updated successfully"
300 msgid "Your account was updated successfully"
301 msgstr "Ваш уліковы запіс паспяхова абноўлены"
301 msgstr "Ваш уліковы запіс паспяхова абноўлены"
302
302
303 msgid "Error occurred during update of user %s"
303 msgid "Error occurred during update of user %s"
304 msgstr "Памылка пры абнаўленні карыстальніка %s"
304 msgstr "Памылка пры абнаўленні карыстальніка %s"
305
305
306 msgid "Error occurred during update of user password"
306 msgid "Error occurred during update of user password"
307 msgstr "Памылка пры абнаўленні пароля"
307 msgstr "Памылка пры абнаўленні пароля"
308
308
309 msgid "Added email %s to user"
309 msgid "Added email %s to user"
310 msgstr "Карыстальніку дададзены e-mail %s"
310 msgstr "Карыстальніку дададзены e-mail %s"
311
311
312 msgid "An error occurred during email saving"
312 msgid "An error occurred during email saving"
313 msgstr "Памылка пры захаванні e-mail"
313 msgstr "Памылка пры захаванні e-mail"
314
314
315 msgid "Removed email from user"
315 msgid "Removed email from user"
316 msgstr "E-mail карыстальніка выдалены"
316 msgstr "E-mail карыстальніка выдалены"
317
317
318 msgid "API key successfully created"
318 msgid "API key successfully created"
319 msgstr "API-ключ паспяхова створаны"
319 msgstr "API-ключ паспяхова створаны"
320
320
321 msgid "API key successfully reset"
321 msgid "API key successfully reset"
322 msgstr "API-ключ паспяхова скінуты"
322 msgstr "API-ключ паспяхова скінуты"
323
323
324 msgid "API key successfully deleted"
324 msgid "API key successfully deleted"
325 msgstr "API-ключ паспяхова выдалены"
325 msgstr "API-ключ паспяхова выдалены"
326
326
327 msgid "Read"
327 msgid "Read"
328 msgstr "Чытанне"
328 msgstr "Чытанне"
329
329
330 msgid "Write"
330 msgid "Write"
331 msgstr "Запіс"
331 msgstr "Запіс"
332
332
333 msgid "Admin"
333 msgid "Admin"
334 msgstr "Адміністратар"
334 msgstr "Адміністратар"
335
335
336 msgid "Disabled"
336 msgid "Disabled"
337 msgstr "Адключана"
337 msgstr "Адключана"
338
338
339 msgid "Allowed with manual account activation"
339 msgid "Allowed with manual account activation"
340 msgstr "Дазволена, з ручной актывацыяй уліковага запісу"
340 msgstr "Дазволена, з ручной актывацыяй уліковага запісу"
341
341
342 msgid "Allowed with automatic account activation"
342 msgid "Allowed with automatic account activation"
343 msgstr "Дазволена, з аўтаматычнай актывацыяй уліковага запісу"
343 msgstr "Дазволена, з аўтаматычнай актывацыяй уліковага запісу"
344
344
345 msgid "Manual activation of external account"
345 msgid "Manual activation of external account"
346 msgstr "Ручная актывацыя вонкавага ўліковага запісу"
346 msgstr "Ручная актывацыя вонкавага ўліковага запісу"
347
347
348 msgid "Automatic activation of external account"
348 msgid "Automatic activation of external account"
349 msgstr "Аўтаматычная актывацыя вонкавага ўліковага запісу"
349 msgstr "Аўтаматычная актывацыя вонкавага ўліковага запісу"
350
350
351 msgid "Enabled"
351 msgid "Enabled"
352 msgstr "Уключана"
352 msgstr "Уключана"
353
353
354 msgid "Global permissions updated successfully"
354 msgid "Global permissions updated successfully"
355 msgstr "Глабальныя прывілеі паспяхова абноўленыя"
355 msgstr "Глабальныя прывілеі паспяхова абноўленыя"
356
356
357 msgid "Error occurred during update of permissions"
357 msgid "Error occurred during update of permissions"
358 msgstr "Адбылася памылка падчас абнаўлення прывілеяў"
358 msgstr "Адбылася памылка падчас абнаўлення прывілеяў"
359
359
360 msgid "Error occurred during creation of repository group %s"
360 msgid "Error occurred during creation of repository group %s"
361 msgstr "Адбылася памылка пры стварэнні групы рэпазітароў %s"
361 msgstr "Адбылася памылка пры стварэнні групы рэпазітароў %s"
362
362
363 msgid "Created repository group %s"
363 msgid "Created repository group %s"
364 msgstr "Створаная новая група рэпазітароў %s"
364 msgstr "Створаная новая група рэпазітароў %s"
365
365
366 msgid "Updated repository group %s"
366 msgid "Updated repository group %s"
367 msgstr "Група рэпазітароў %s абноўленая"
367 msgstr "Група рэпазітароў %s абноўленая"
368
368
369 msgid "Error occurred during update of repository group %s"
369 msgid "Error occurred during update of repository group %s"
370 msgstr "Адбылася памылка пры абнаўленні групы рэпазітароў %s"
370 msgstr "Адбылася памылка пры абнаўленні групы рэпазітароў %s"
371
371
372 msgid "This group contains %s repositories and cannot be deleted"
372 msgid "This group contains %s repositories and cannot be deleted"
373 msgstr "Група ўтрымлівае %s рэпазітароў і не можа быць выдаленая"
373 msgstr "Група ўтрымлівае %s рэпазітароў і не можа быць выдаленая"
374
374
375 msgid "This group contains %s subgroups and cannot be deleted"
375 msgid "This group contains %s subgroups and cannot be deleted"
376 msgstr "Група ўтрымлівае ў сабе %s падгруп і не можа быць выдаленая"
376 msgstr "Група ўтрымлівае ў сабе %s падгруп і не можа быць выдаленая"
377
377
378 msgid "Removed repository group %s"
378 msgid "Removed repository group %s"
379 msgstr "Група рэпазітароў %s выдаленая"
379 msgstr "Група рэпазітароў %s выдаленая"
380
380
381 msgid "Error occurred during deletion of repository group %s"
381 msgid "Error occurred during deletion of repository group %s"
382 msgstr "Памылка пры выдаленні групы рэпазітароў %s"
382 msgstr "Памылка пры выдаленні групы рэпазітароў %s"
383
383
384 msgid "Cannot revoke permission for yourself as admin"
385 msgstr "Адміністратар не можа адклікаць свае прывелеі"
386
387 msgid "Repository group permissions updated"
384 msgid "Repository group permissions updated"
388 msgstr "Прывілеі групы рэпазітароў абноўленыя"
385 msgstr "Прывілеі групы рэпазітароў абноўленыя"
389
386
390 msgid "An error occurred during revoking of permission"
387 msgid "An error occurred during revoking of permission"
391 msgstr "Памылка пры водгуку прывелея"
388 msgstr "Памылка пры водгуку прывелея"
392
389
393 msgid "Error creating repository %s"
390 msgid "Error creating repository %s"
394 msgstr "Памылка пры стварэнні рэпазітара %s"
391 msgstr "Памылка пры стварэнні рэпазітара %s"
395
392
396 msgid "Created repository %s from %s"
393 msgid "Created repository %s from %s"
397 msgstr "Рэпазітар %s створаны з %s"
394 msgstr "Рэпазітар %s створаны з %s"
398
395
399 msgid "Forked repository %s as %s"
396 msgid "Forked repository %s as %s"
400 msgstr "Зроблены форк рэпазітара %s на %s"
397 msgstr "Зроблены форк рэпазітара %s на %s"
401
398
402 msgid "Created repository %s"
399 msgid "Created repository %s"
403 msgstr "Рэпазітар %s створаны"
400 msgstr "Рэпазітар %s створаны"
404
401
405 msgid "Repository %s updated successfully"
402 msgid "Repository %s updated successfully"
406 msgstr "Рэпазітар %s паспяхова абноўлены"
403 msgstr "Рэпазітар %s паспяхова абноўлены"
407
404
408 msgid "Error occurred during update of repository %s"
405 msgid "Error occurred during update of repository %s"
409 msgstr "Памылка падчас абнаўлення рэпазітара %s"
406 msgstr "Памылка падчас абнаўлення рэпазітара %s"
410
407
411 msgid "Detached %s forks"
408 msgid "Detached %s forks"
412 msgstr "Форкі %s адлучаныя"
409 msgstr "Форкі %s адлучаныя"
413
410
414 msgid "Deleted %s forks"
411 msgid "Deleted %s forks"
415 msgstr "Выдаленыя форки рэпазітара %s"
412 msgstr "Выдаленыя форки рэпазітара %s"
416
413
417 msgid "Deleted repository %s"
414 msgid "Deleted repository %s"
418 msgstr "Рэпазітар %s выдалены"
415 msgstr "Рэпазітар %s выдалены"
419
416
420 msgid "Cannot delete repository %s which still has forks"
417 msgid "Cannot delete repository %s which still has forks"
421 msgstr "Немагчыма выдаліць %s, ён усё яшчэ мае форкі"
418 msgstr "Немагчыма выдаліць %s, ён усё яшчэ мае форкі"
422
419
423 msgid "An error occurred during deletion of %s"
420 msgid "An error occurred during deletion of %s"
424 msgstr "Памылка падчас выдалення %s"
421 msgstr "Памылка падчас выдалення %s"
425
422
426 msgid "Repository permissions updated"
423 msgid "Repository permissions updated"
427 msgstr "Прывілеі рэпазітара абноўленыя"
424 msgstr "Прывілеі рэпазітара абноўленыя"
428
425
429 msgid "An error occurred during removal of field"
426 msgid "An error occurred during removal of field"
430 msgstr "Памылка пры выдаленні поля"
427 msgstr "Памылка пры выдаленні поля"
431
428
432 msgid "-- Not a fork --"
429 msgid "-- Not a fork --"
433 msgstr "-- Не форк --"
430 msgstr "-- Не форк --"
434
431
435 msgid "Updated repository visibility in public journal"
432 msgid "Updated repository visibility in public journal"
436 msgstr "Бачнасць рэпазітара ў публічным часопісе абноўлена"
433 msgstr "Бачнасць рэпазітара ў публічным часопісе абноўлена"
437
434
438 msgid "An error occurred during setting this repository in public journal"
435 msgid "An error occurred during setting this repository in public journal"
439 msgstr "Памылка пры даданні рэпазітара ў агульнадаступны часопіс"
436 msgstr "Памылка пры даданні рэпазітара ў агульнадаступны часопіс"
440
437
441 msgid "Nothing"
438 msgid "Nothing"
442 msgstr "Нічога"
439 msgstr "Нічога"
443
440
444 msgid "Marked repository %s as fork of %s"
441 msgid "Marked repository %s as fork of %s"
445 msgstr "Рэпазітар %s адзначаны як форк %s"
442 msgstr "Рэпазітар %s адзначаны як форк %s"
446
443
447 msgid "An error occurred during this operation"
444 msgid "An error occurred during this operation"
448 msgstr "Памылка пры выкананні аперацыі"
445 msgstr "Памылка пры выкананні аперацыі"
449
446
450 msgid "Pulled from remote location"
447 msgid "Pulled from remote location"
451 msgstr "Занесеныя змены з аддаленага рэпазітара"
448 msgstr "Занесеныя змены з аддаленага рэпазітара"
452
449
453 msgid "An error occurred during pull from remote location"
450 msgid "An error occurred during pull from remote location"
454 msgstr "Памылка пры занясенні змен з аддаленага рэпазітара"
451 msgstr "Памылка пры занясенні змен з аддаленага рэпазітара"
455
452
456 msgid "An error occurred during deletion of repository stats"
453 msgid "An error occurred during deletion of repository stats"
457 msgstr "Адбылася памылка пры выдаленні статыстыкі рэпазітара"
454 msgstr "Адбылася памылка пры выдаленні статыстыкі рэпазітара"
458
455
459 msgid "Updated VCS settings"
456 msgid "Updated VCS settings"
460 msgstr "Абноўлены налады VCS"
457 msgstr "Абноўлены налады VCS"
461
458
462 msgid "Error occurred while updating application settings"
459 msgid "Error occurred while updating application settings"
463 msgstr "Памылка пры абнаўленні наладаў праграмы"
460 msgstr "Памылка пры абнаўленні наладаў праграмы"
464
461
465 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
462 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
466 msgstr "Рэпазітары паспяхова перасканаваныя, дададзена: %s, выдалена: %s."
463 msgstr "Рэпазітары паспяхова перасканаваныя, дададзена: %s, выдалена: %s."
467
464
468 msgid "Invalidated %s repositories"
465 msgid "Invalidated %s repositories"
469 msgstr "Скінуць кэш для %s рэпазітароў"
466 msgstr "Скінуць кэш для %s рэпазітароў"
470
467
471 msgid "Updated application settings"
468 msgid "Updated application settings"
472 msgstr "Абноўленыя налады праграмы"
469 msgstr "Абноўленыя налады праграмы"
473
470
474 msgid "Updated visualisation settings"
471 msgid "Updated visualisation settings"
475 msgstr "Налады візуалізацыі абноўленыя"
472 msgstr "Налады візуалізацыі абноўленыя"
476
473
477 msgid "Error occurred during updating visualisation settings"
474 msgid "Error occurred during updating visualisation settings"
478 msgstr "Адбылася памылка пры абнаўленні наладаў візуалізацыі"
475 msgstr "Адбылася памылка пры абнаўленні наладаў візуалізацыі"
479
476
480 msgid "Please enter email address"
477 msgid "Please enter email address"
481 msgstr "Калі ласка, увядзіце e-mail-адрас"
478 msgstr "Калі ласка, увядзіце e-mail-адрас"
482
479
483 msgid "Send email task created"
480 msgid "Send email task created"
484 msgstr "Задача адпраўкі e-mail створаная"
481 msgstr "Задача адпраўкі e-mail створаная"
485
482
486 msgid "Added new hook"
483 msgid "Added new hook"
487 msgstr "Дададзены новы хук"
484 msgstr "Дададзены новы хук"
488
485
489 msgid "Updated hooks"
486 msgid "Updated hooks"
490 msgstr "Абноўленыя хукі"
487 msgstr "Абноўленыя хукі"
491
488
492 msgid "Error occurred during hook creation"
489 msgid "Error occurred during hook creation"
493 msgstr "Памылка пры стварэнні хука"
490 msgstr "Памылка пры стварэнні хука"
494
491
495 msgid "Whoosh reindex task scheduled"
492 msgid "Whoosh reindex task scheduled"
496 msgstr "Запланаванае пераіндэксаванне базы Whoosh"
493 msgstr "Запланаванае пераіндэксаванне базы Whoosh"
497
494
498 msgid "Created user group %s"
495 msgid "Created user group %s"
499 msgstr "Створана група карыстальнікаў %s"
496 msgstr "Створана група карыстальнікаў %s"
500
497
501 msgid "Error occurred during creation of user group %s"
498 msgid "Error occurred during creation of user group %s"
502 msgstr "Памылка пры стварэнні групы карыстальнікаў %s"
499 msgstr "Памылка пры стварэнні групы карыстальнікаў %s"
503
500
504 msgid "Updated user group %s"
501 msgid "Updated user group %s"
505 msgstr "Група карыстальнікаў %s абноўленая"
502 msgstr "Група карыстальнікаў %s абноўленая"
506
503
507 msgid "Error occurred during update of user group %s"
504 msgid "Error occurred during update of user group %s"
508 msgstr "Памылка пры абнаўленні групы карыстальнікаў %s"
505 msgstr "Памылка пры абнаўленні групы карыстальнікаў %s"
509
506
510 msgid "Successfully deleted user group"
507 msgid "Successfully deleted user group"
511 msgstr "Група карыстальнікаў паспяхова выдаленая"
508 msgstr "Група карыстальнікаў паспяхова выдаленая"
512
509
513 msgid "An error occurred during deletion of user group"
510 msgid "An error occurred during deletion of user group"
514 msgstr "Памылка пры выдаленні групы карыстальнікаў"
511 msgstr "Памылка пры выдаленні групы карыстальнікаў"
515
512
516 msgid "Target group cannot be the same"
513 msgid "Target group cannot be the same"
517 msgstr "Мэтавая група не можа быць той жа самай"
514 msgstr "Мэтавая група не можа быць той жа самай"
518
515
519 msgid "User group permissions updated"
516 msgid "User group permissions updated"
520 msgstr "Прывілеі групы карыстальнікаў абноўленыя"
517 msgstr "Прывілеі групы карыстальнікаў абноўленыя"
521
518
519 msgid "Cannot revoke permission for yourself as admin"
520 msgstr "Адміністратар не можа адклікаць свае прывелеі"
521
522 msgid "Updated permissions"
522 msgid "Updated permissions"
523 msgstr "Абноўленыя прывілеі"
523 msgstr "Абноўленыя прывілеі"
524
524
525 msgid "An error occurred during permissions saving"
525 msgid "An error occurred during permissions saving"
526 msgstr "Памылка пры захаванні прывілеяў"
526 msgstr "Памылка пры захаванні прывілеяў"
527
527
528 msgid "Created user %s"
528 msgid "Created user %s"
529 msgstr "Карыстальнік %s створаны"
529 msgstr "Карыстальнік %s створаны"
530
530
531 msgid "Error occurred during creation of user %s"
531 msgid "Error occurred during creation of user %s"
532 msgstr "Памылка пры стварэнні карыстальніка %s"
532 msgstr "Памылка пры стварэнні карыстальніка %s"
533
533
534 msgid "User updated successfully"
534 msgid "User updated successfully"
535 msgstr "Карыстальнік паспяхова абноўлены"
535 msgstr "Карыстальнік паспяхова абноўлены"
536
536
537 msgid "Successfully deleted user"
537 msgid "Successfully deleted user"
538 msgstr "Карыстальнік паспяхова выдалены"
538 msgstr "Карыстальнік паспяхова выдалены"
539
539
540 msgid "An error occurred during deletion of user"
540 msgid "An error occurred during deletion of user"
541 msgstr "Памылка пры выдаленні карыстальніка"
541 msgstr "Памылка пры выдаленні карыстальніка"
542
542
543 msgid "Added IP address %s to user whitelist"
543 msgid "Added IP address %s to user whitelist"
544 msgstr "Дададзены IP %s у белы спіс карыстальніка"
544 msgstr "Дададзены IP %s у белы спіс карыстальніка"
545
545
546 msgid "An error occurred while adding IP address"
546 msgid "An error occurred while adding IP address"
547 msgstr "Адбылася памылка пры захаванні IP"
547 msgstr "Адбылася памылка пры захаванні IP"
548
548
549 msgid "Removed IP address from user whitelist"
549 msgid "Removed IP address from user whitelist"
550 msgstr "Выдалены IP %s з белага спісу карыстальніка"
550 msgstr "Выдалены IP %s з белага спісу карыстальніка"
551
551
552 msgid "You need to be a registered user to perform this action"
552 msgid "You need to be a registered user to perform this action"
553 msgstr ""
553 msgstr ""
554 "Вы павінны быць зарэгістраваным карыстальнікам, каб выканаць гэта дзеянне"
554 "Вы павінны быць зарэгістраваным карыстальнікам, каб выканаць гэта дзеянне"
555
555
556 msgid "You need to be signed in to view this page"
556 msgid "You need to be signed in to view this page"
557 msgstr "Старонка даступная толькі аўтарызаваным карыстальнікам"
557 msgstr "Старонка даступная толькі аўтарызаваным карыстальнікам"
558
558
559 msgid "Binary file"
559 msgid "Binary file"
560 msgstr "Двайковы файл"
560 msgstr "Двайковы файл"
561
561
562 msgid ""
562 msgid ""
563 "Changeset was too big and was cut off, use diff menu to display this diff"
563 "Changeset was too big and was cut off, use diff menu to display this diff"
564 msgstr ""
564 msgstr ""
565 "Набор змены апынуўся занадта вялікімі і быў падрэзаны, выкарыстоўвайце "
565 "Набор змены апынуўся занадта вялікімі і быў падрэзаны, выкарыстоўвайце "
566 "меню параўнання для паказу выніку параўнання"
566 "меню параўнання для паказу выніку параўнання"
567
567
568 msgid "No changes detected"
568 msgid "No changes detected"
569 msgstr "Змен не выяўлена"
569 msgstr "Змен не выяўлена"
570
570
571 msgid "Increase diff context to %(num)s lines"
571 msgid "Increase diff context to %(num)s lines"
572 msgstr "Павялічыць кантэкст да %(num)s радкоў"
572 msgstr "Павялічыць кантэкст да %(num)s радкоў"
573
573
574 msgid "Deleted branch: %s"
574 msgid "Deleted branch: %s"
575 msgstr "Выдаленая галіна: %s"
575 msgstr "Выдаленая галіна: %s"
576
576
577 msgid "Created tag: %s"
577 msgid "Created tag: %s"
578 msgstr "Створаны тэг: %s"
578 msgstr "Створаны тэг: %s"
579
579
580 msgid "Changeset %s not found"
580 msgid "Changeset %s not found"
581 msgstr "Набор змен %s не знойдзены"
581 msgstr "Набор змен %s не знойдзены"
582
582
583 msgid "Show all combined changesets %s->%s"
583 msgid "Show all combined changesets %s->%s"
584 msgstr "Паказаць адрозненні разам %s->%s"
584 msgstr "Паказаць адрозненні разам %s->%s"
585
585
586 msgid "Compare view"
586 msgid "Compare view"
587 msgstr "Параўнанне"
587 msgstr "Параўнанне"
588
588
589 msgid "and"
589 msgid "and"
590 msgstr "і"
590 msgstr "і"
591
591
592 msgid "%s more"
592 msgid "%s more"
593 msgstr "на %s больш"
593 msgstr "на %s больш"
594
594
595 msgid "revisions"
595 msgid "revisions"
596 msgstr "версіі"
596 msgstr "версіі"
597
597
598 msgid "Fork name %s"
598 msgid "Fork name %s"
599 msgstr "Імя форка %s"
599 msgstr "Імя форка %s"
600
600
601 msgid "Pull request %s"
601 msgid "Pull request %s"
602 msgstr "Pull-запыт %s"
602 msgstr "Pull-запыт %s"
603
603
604 msgid "[deleted] repository"
604 msgid "[deleted] repository"
605 msgstr "[выдалены] рэпазітар"
605 msgstr "[выдалены] рэпазітар"
606
606
607 msgid "[created] repository"
607 msgid "[created] repository"
608 msgstr "[створаны] рэпазітар"
608 msgstr "[створаны] рэпазітар"
609
609
610 msgid "[created] repository as fork"
610 msgid "[created] repository as fork"
611 msgstr "[створаны] рэпазітар як форк"
611 msgstr "[створаны] рэпазітар як форк"
612
612
613 msgid "[forked] repository"
613 msgid "[forked] repository"
614 msgstr "[форкнуты] рэпазітар"
614 msgstr "[форкнуты] рэпазітар"
615
615
616 msgid "[updated] repository"
616 msgid "[updated] repository"
617 msgstr "[абноўлены] рэпазітар"
617 msgstr "[абноўлены] рэпазітар"
618
618
619 msgid "[downloaded] archive from repository"
619 msgid "[downloaded] archive from repository"
620 msgstr "[загружаны] архіў з рэпазітара"
620 msgstr "[загружаны] архіў з рэпазітара"
621
621
622 msgid "[delete] repository"
622 msgid "[delete] repository"
623 msgstr "[выдалены] рэпазітар"
623 msgstr "[выдалены] рэпазітар"
624
624
625 msgid "[created] user"
625 msgid "[created] user"
626 msgstr "[створаны] карыстальнік"
626 msgstr "[створаны] карыстальнік"
627
627
628 msgid "[updated] user"
628 msgid "[updated] user"
629 msgstr "[абноўлены] карыстальнік"
629 msgstr "[абноўлены] карыстальнік"
630
630
631 msgid "[created] user group"
631 msgid "[created] user group"
632 msgstr "[створана] група карыстальнікаў"
632 msgstr "[створана] група карыстальнікаў"
633
633
634 msgid "[updated] user group"
634 msgid "[updated] user group"
635 msgstr "[абноўлена] група карыстальнікаў"
635 msgstr "[абноўлена] група карыстальнікаў"
636
636
637 msgid "[commented] on revision in repository"
637 msgid "[commented] on revision in repository"
638 msgstr "[каментар] да рэвізіі ў рэпазітары"
638 msgstr "[каментар] да рэвізіі ў рэпазітары"
639
639
640 msgid "[commented] on pull request for"
640 msgid "[commented] on pull request for"
641 msgstr "[каментар] у pull-запыце для"
641 msgstr "[каментар] у pull-запыце для"
642
642
643 msgid "[closed] pull request for"
643 msgid "[closed] pull request for"
644 msgstr "[зачынены] pull-запыт для"
644 msgstr "[зачынены] pull-запыт для"
645
645
646 msgid "[pushed] into"
646 msgid "[pushed] into"
647 msgstr "[адпраўлена] у"
647 msgstr "[адпраўлена] у"
648
648
649 msgid "[committed via Kallithea] into repository"
649 msgid "[committed via Kallithea] into repository"
650 msgstr "[каміт праз Kallithea] у рэпазітары"
650 msgstr "[каміт праз Kallithea] у рэпазітары"
651
651
652 msgid "[pulled from remote] into repository"
652 msgid "[pulled from remote] into repository"
653 msgstr "[занесены з аддаленага рэпазітара] у рэпазітар"
653 msgstr "[занесены з аддаленага рэпазітара] у рэпазітар"
654
654
655 msgid "[pulled] from"
655 msgid "[pulled] from"
656 msgstr "[занесены] з"
656 msgstr "[занесены] з"
657
657
658 msgid "[started following] repository"
658 msgid "[started following] repository"
659 msgstr "[дададзены ў назіранні] рэпазітар"
659 msgstr "[дададзены ў назіранні] рэпазітар"
660
660
661 msgid "[stopped following] repository"
661 msgid "[stopped following] repository"
662 msgstr "[выдалены з назірання] рэпазітар"
662 msgstr "[выдалены з назірання] рэпазітар"
663
663
664 msgid " and %s more"
664 msgid " and %s more"
665 msgstr " і на %s больш"
665 msgstr " і на %s больш"
666
666
667 msgid "No files"
667 msgid "No files"
668 msgstr "Няма файлаў"
668 msgstr "Няма файлаў"
669
669
670 msgid "new file"
670 msgid "new file"
671 msgstr "новы файл"
671 msgstr "новы файл"
672
672
673 msgid "mod"
673 msgid "mod"
674 msgstr "зменены"
674 msgstr "зменены"
675
675
676 msgid "del"
676 msgid "del"
677 msgstr "выдалены"
677 msgstr "выдалены"
678
678
679 msgid "rename"
679 msgid "rename"
680 msgstr "пераназваны"
680 msgstr "пераназваны"
681
681
682 msgid "chmod"
682 msgid "chmod"
683 msgstr "chmod"
683 msgstr "chmod"
684
684
685 msgid "%d year"
685 msgid "%d year"
686 msgid_plural "%d years"
686 msgid_plural "%d years"
687 msgstr[0] "%d год"
687 msgstr[0] "%d год"
688 msgstr[1] "%d гады"
688 msgstr[1] "%d гады"
689 msgstr[2] "%d гадоў"
689 msgstr[2] "%d гадоў"
690
690
691 msgid "%d month"
691 msgid "%d month"
692 msgid_plural "%d months"
692 msgid_plural "%d months"
693 msgstr[0] "%d месяц"
693 msgstr[0] "%d месяц"
694 msgstr[1] "%d месяцы"
694 msgstr[1] "%d месяцы"
695 msgstr[2] "%d месяцаў"
695 msgstr[2] "%d месяцаў"
696
696
697 msgid "%d day"
697 msgid "%d day"
698 msgid_plural "%d days"
698 msgid_plural "%d days"
699 msgstr[0] "%d дзень"
699 msgstr[0] "%d дзень"
700 msgstr[1] "%d дні"
700 msgstr[1] "%d дні"
701 msgstr[2] "%d дзён"
701 msgstr[2] "%d дзён"
702
702
703 msgid "%d hour"
703 msgid "%d hour"
704 msgid_plural "%d hours"
704 msgid_plural "%d hours"
705 msgstr[0] "%d гадзіна"
705 msgstr[0] "%d гадзіна"
706 msgstr[1] "%d гадзіны"
706 msgstr[1] "%d гадзіны"
707 msgstr[2] "%d гадзін"
707 msgstr[2] "%d гадзін"
708
708
709 msgid "%d minute"
709 msgid "%d minute"
710 msgid_plural "%d minutes"
710 msgid_plural "%d minutes"
711 msgstr[0] "%d хвіліна"
711 msgstr[0] "%d хвіліна"
712 msgstr[1] "%d хвіліны"
712 msgstr[1] "%d хвіліны"
713 msgstr[2] "%d хвілін"
713 msgstr[2] "%d хвілін"
714
714
715 msgid "%d second"
715 msgid "%d second"
716 msgid_plural "%d seconds"
716 msgid_plural "%d seconds"
717 msgstr[0] "%d секунда"
717 msgstr[0] "%d секунда"
718 msgstr[1] "%d секунды"
718 msgstr[1] "%d секунды"
719 msgstr[2] "%d секунд"
719 msgstr[2] "%d секунд"
720
720
721 msgid "in %s"
721 msgid "in %s"
722 msgstr "у %s"
722 msgstr "у %s"
723
723
724 msgid "%s ago"
724 msgid "%s ago"
725 msgstr "%s назад"
725 msgstr "%s назад"
726
726
727 msgid "in %s and %s"
727 msgid "in %s and %s"
728 msgstr "у %s і %s"
728 msgstr "у %s і %s"
729
729
730 msgid "%s and %s ago"
730 msgid "%s and %s ago"
731 msgstr "%s і %s назад"
731 msgstr "%s і %s назад"
732
732
733 msgid "just now"
733 msgid "just now"
734 msgstr "цяпер"
734 msgstr "цяпер"
735
735
736 msgid "top level"
736 msgid "top level"
737 msgstr "верхні ўзровень"
737 msgstr "верхні ўзровень"
738
738
739 msgid "Kallithea Administrator"
739 msgid "Kallithea Administrator"
740 msgstr "Адміністратар Kallithea"
740 msgstr "Адміністратар Kallithea"
741
741
742 msgid "Only admins can create user groups"
742 msgid "Only admins can create user groups"
743 msgstr "Толькі адміністратары могуць ствараць групы карыстальнікаў"
743 msgstr "Толькі адміністратары могуць ствараць групы карыстальнікаў"
744
744
745 msgid "Non-admins can create user groups"
745 msgid "Non-admins can create user groups"
746 msgstr "Неадміністратары могуць ствараць групы карыстальнікаў"
746 msgstr "Неадміністратары могуць ствараць групы карыстальнікаў"
747
747
748 msgid "Only admins can create top level repositories"
748 msgid "Only admins can create top level repositories"
749 msgstr "Толькі адміністратары могуць ствараць рэпазітары верхняга ўзроўню"
749 msgstr "Толькі адміністратары могуць ствараць рэпазітары верхняга ўзроўню"
750
750
751 msgid "Non-admins can create top level repositories"
751 msgid "Non-admins can create top level repositories"
752 msgstr "Неадміністратары могуць ствараць рэпазітары верхняга ўзроўню"
752 msgstr "Неадміністратары могуць ствараць рэпазітары верхняга ўзроўню"
753
753
754 msgid "Only admins can fork repositories"
754 msgid "Only admins can fork repositories"
755 msgstr "Месцазнаходжанне рэпазітароў"
755 msgstr "Месцазнаходжанне рэпазітароў"
756
756
757 msgid "Registration disabled"
757 msgid "Registration disabled"
758 msgstr "Рэгістрацыя адключаная"
758 msgstr "Рэгістрацыя адключаная"
759
759
760 msgid "User registration with manual account activation"
760 msgid "User registration with manual account activation"
761 msgstr "Рэгістрацыя карыстальніка з ручной актывацыяй уліковага запісу"
761 msgstr "Рэгістрацыя карыстальніка з ручной актывацыяй уліковага запісу"
762
762
763 msgid "User registration with automatic account activation"
763 msgid "User registration with automatic account activation"
764 msgstr "Рэгістрацыя карыстальніка з аўтаматычнай актывацыяй"
764 msgstr "Рэгістрацыя карыстальніка з аўтаматычнай актывацыяй"
765
765
766 msgid "Not reviewed"
766 msgid "Not reviewed"
767 msgstr "Не прагледжана"
767 msgstr "Не прагледжана"
768
768
769 msgid "Under review"
769 msgid "Under review"
770 msgstr "На разглядзе"
770 msgstr "На разглядзе"
771
771
772 msgid "Approved"
772 msgid "Approved"
773 msgstr "Ухвалена"
773 msgstr "Ухвалена"
774
774
775 msgid "Please enter a login"
775 msgid "Please enter a login"
776 msgstr "Калі ласка, увядзіце лагін"
776 msgstr "Калі ласка, увядзіце лагін"
777
777
778 msgid "Enter a value %(min)i characters long or more"
778 msgid "Enter a value %(min)i characters long or more"
779 msgstr "Увядзіце значэнне даўжынёй не меней %(min)i знакаў"
779 msgstr "Увядзіце значэнне даўжынёй не меней %(min)i знакаў"
780
780
781 msgid "Please enter a password"
781 msgid "Please enter a password"
782 msgstr "Калі ласка, увядзіце пароль"
782 msgstr "Калі ласка, увядзіце пароль"
783
783
784 msgid "Enter %(min)i characters or more"
784 msgid "Enter %(min)i characters or more"
785 msgstr "Увядзіце не меней %(min)i знакаў"
785 msgstr "Увядзіце не меней %(min)i знакаў"
786
786
787 msgid "Name must not contain only digits"
787 msgid "Name must not contain only digits"
788 msgstr "Імя не можа ўтрымліваць толькі лічбы"
788 msgstr "Імя не можа ўтрымліваць толькі лічбы"
789
789
790 msgid "New user %(new_username)s registered"
790 msgid "New user %(new_username)s registered"
791 msgstr "Новы карыстальнік \"%(new_username)s\" зарэгістраваны"
791 msgstr "Новы карыстальнік \"%(new_username)s\" зарэгістраваны"
792
792
793 msgid "Closing"
793 msgid "Closing"
794 msgstr "Зачынены"
794 msgstr "Зачынены"
795
795
796 msgid "latest tip"
796 msgid "latest tip"
797 msgstr "апошняя версія"
797 msgstr "апошняя версія"
798
798
799 msgid ""
799 msgid ""
800 "You can't remove this user since it is crucial for the entire application"
800 "You can't remove this user since it is crucial for the entire application"
801 msgstr ""
801 msgstr ""
802 "Вы не можаце выдаліць карыстальніка, паколькі гэта крытычна для працы "
802 "Вы не можаце выдаліць карыстальніка, паколькі гэта крытычна для працы "
803 "ўсёй праграмы"
803 "ўсёй праграмы"
804
804
805 msgid ""
805 msgid ""
806 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
806 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
807 "owners or remove those repositories: %s"
807 "owners or remove those repositories: %s"
808 msgstr ""
808 msgstr ""
809 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s рэпазітароў і "
809 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s рэпазітароў і "
810 "таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтыя "
810 "таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтыя "
811 "рэпазітары: %s"
811 "рэпазітары: %s"
812
812
813 msgid ""
813 msgid ""
814 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
814 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
815 "owners or remove those repository groups: %s"
815 "owners or remove those repository groups: %s"
816 msgstr ""
816 msgstr ""
817 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп рэпазітароў "
817 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп рэпазітароў "
818 "і таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтая "
818 "і таму не можа быць выдалены. Змяніце ўладальніка ці выдаліце гэтая "
819 "групы: %s"
819 "групы: %s"
820
820
821 msgid ""
821 msgid ""
822 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
822 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
823 "owners or remove those user groups: %s"
823 "owners or remove those user groups: %s"
824 msgstr ""
824 msgstr ""
825 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп "
825 "Карыстальнік \"%s\" усё яшчэ з'яўляецца ўладальнікам %s груп "
826 "карыстальнікаў і таму не можа быць выдалены. Змяніце ўладальніка ці "
826 "карыстальнікаў і таму не можа быць выдалены. Змяніце ўладальніка ці "
827 "выдаліце гэтыя групы: %s"
827 "выдаліце гэтыя групы: %s"
828
828
829 msgid "Password reset link"
829 msgid "Password reset link"
830 msgstr "Спасылка скіду пароля"
830 msgstr "Спасылка скіду пароля"
831
831
832 msgid "Password reset notification"
832 msgid "Password reset notification"
833 msgstr "Паведамленне пра скіданне пароля"
833 msgstr "Паведамленне пра скіданне пароля"
834
834
835 msgid "Value cannot be an empty list"
835 msgid "Value cannot be an empty list"
836 msgstr "Значэнне не можа быць пустым спісам"
836 msgstr "Значэнне не можа быць пустым спісам"
837
837
838 msgid "Username \"%(username)s\" already exists"
838 msgid "Username \"%(username)s\" already exists"
839 msgstr "Карыстальнік з імем \"%(username)s\" ужо існуе"
839 msgstr "Карыстальнік з імем \"%(username)s\" ужо існуе"
840
840
841 msgid "Username \"%(username)s\" cannot be used"
841 msgid "Username \"%(username)s\" cannot be used"
842 msgstr "Імя \"%(username)s\" недапушчальнае"
842 msgstr "Імя \"%(username)s\" недапушчальнае"
843
843
844 msgid ""
844 msgid ""
845 "Username may only contain alphanumeric characters underscores, periods or "
845 "Username may only contain alphanumeric characters underscores, periods or "
846 "dashes and must begin with an alphanumeric character or underscore"
846 "dashes and must begin with an alphanumeric character or underscore"
847 msgstr ""
847 msgstr ""
848 "Імя карыстальніка можа ўтрымоўваць толькі літары, лічбы, знакі "
848 "Імя карыстальніка можа ўтрымоўваць толькі літары, лічбы, знакі "
849 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары, "
849 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары, "
850 "лічбы або са знака падкрэслення"
850 "лічбы або са знака падкрэслення"
851
851
852 msgid "Username %(username)s is not valid"
852 msgid "Username %(username)s is not valid"
853 msgstr "Імя \"%(username)s\" недапушчальнае"
853 msgstr "Імя \"%(username)s\" недапушчальнае"
854
854
855 msgid "Invalid user group name"
855 msgid "Invalid user group name"
856 msgstr "Няслушнае імя групы карыстальнікаў"
856 msgstr "Няслушнае імя групы карыстальнікаў"
857
857
858 msgid "User group \"%(usergroup)s\" already exists"
858 msgid "User group \"%(usergroup)s\" already exists"
859 msgstr "Група карыстальнікаў \"%(usergroup)s\" ужо існуе"
859 msgstr "Група карыстальнікаў \"%(usergroup)s\" ужо існуе"
860
860
861 msgid ""
861 msgid ""
862 "user group name may only contain alphanumeric characters underscores, "
862 "user group name may only contain alphanumeric characters underscores, "
863 "periods or dashes and must begin with alphanumeric character"
863 "periods or dashes and must begin with alphanumeric character"
864 msgstr ""
864 msgstr ""
865 "імя групы карыстальнікаў можа ўтрымоўваць толькі літары, лічбы, знакі "
865 "імя групы карыстальнікаў можа ўтрымоўваць толькі літары, лічбы, знакі "
866 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары "
866 "падкрэслення, кропкі і працяжнік; а гэтак жа павінна пачынацца з літары "
867 "ці лічбы"
867 "ці лічбы"
868
868
869 msgid "Cannot assign this group as parent"
869 msgid "Cannot assign this group as parent"
870 msgstr "Немагчыма выкарыстоўваць гэту групу як бацькоўскую"
870 msgstr "Немагчыма выкарыстоўваць гэту групу як бацькоўскую"
871
871
872 msgid "Group \"%(group_name)s\" already exists"
872 msgid "Group \"%(group_name)s\" already exists"
873 msgstr "Група \"%(group_name)s\" ужо існуе"
873 msgstr "Група \"%(group_name)s\" ужо існуе"
874
874
875 msgid "Repository with name \"%(group_name)s\" already exists"
875 msgid "Repository with name \"%(group_name)s\" already exists"
876 msgstr "Рэпазітар з імем \"%(group_name)s\" ужо існуе"
876 msgstr "Рэпазітар з імем \"%(group_name)s\" ужо існуе"
877
877
878 msgid "Invalid characters (non-ascii) in password"
878 msgid "Invalid characters (non-ascii) in password"
879 msgstr "Недапушчальныя знакі (не ascii) у паролі"
879 msgstr "Недапушчальныя знакі (не ascii) у паролі"
880
880
881 msgid "Invalid old password"
881 msgid "Invalid old password"
882 msgstr "Няслушна зададзены стары пароль"
882 msgstr "Няслушна зададзены стары пароль"
883
883
884 msgid "Passwords do not match"
884 msgid "Passwords do not match"
885 msgstr "Паролі не супадаюць"
885 msgstr "Паролі не супадаюць"
886
886
887 msgid "Invalid username or password"
887 msgid "Invalid username or password"
888 msgstr "Няслушнае імя ці пароль"
888 msgstr "Няслушнае імя ці пароль"
889
889
890 msgid "Repository name %(repo)s is not allowed"
890 msgid "Repository name %(repo)s is not allowed"
891 msgstr "Імя рэпазітара %(repo)s забароненае"
891 msgstr "Імя рэпазітара %(repo)s забароненае"
892
892
893 msgid "Repository named %(repo)s already exists"
893 msgid "Repository named %(repo)s already exists"
894 msgstr "Рэпазітар %(repo)s ужо існуе"
894 msgstr "Рэпазітар %(repo)s ужо існуе"
895
895
896 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
896 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
897 msgstr "Рэпазітар \"%(repo)s\" ужо існуе ў групе \"%(group)s\""
897 msgstr "Рэпазітар \"%(repo)s\" ужо існуе ў групе \"%(group)s\""
898
898
899 msgid "Repository group with name \"%(repo)s\" already exists"
899 msgid "Repository group with name \"%(repo)s\" already exists"
900 msgstr "Група рэпазітароў \"%(repo)s\" ужо існуе"
900 msgstr "Група рэпазітароў \"%(repo)s\" ужо існуе"
901
901
902 msgid "Invalid repository URL"
902 msgid "Invalid repository URL"
903 msgstr "Няслушны URL рэпазітара"
903 msgstr "Няслушны URL рэпазітара"
904
904
905 msgid "Fork has to be the same type as parent"
905 msgid "Fork has to be the same type as parent"
906 msgstr "Тып форка будзе супадаць з бацькоўскім"
906 msgstr "Тып форка будзе супадаць з бацькоўскім"
907
907
908 msgid "You don't have permissions to create repository in this group"
908 msgid "You don't have permissions to create repository in this group"
909 msgstr "У вас недастаткова правоў для стварэння рэпазітароў у гэтай групе"
909 msgstr "У вас недастаткова правоў для стварэння рэпазітароў у гэтай групе"
910
910
911 msgid "no permission to create repository in root location"
911 msgid "no permission to create repository in root location"
912 msgstr "недастаткова правоў для стварэння рэпазітара ў каранёвым каталогу"
912 msgstr "недастаткова правоў для стварэння рэпазітара ў каранёвым каталогу"
913
913
914 msgid "You don't have permissions to create a group in this location"
914 msgid "You don't have permissions to create a group in this location"
915 msgstr "У Вас недастаткова прывілеяў для стварэння групы ў гэтым месцы"
915 msgstr "У Вас недастаткова прывілеяў для стварэння групы ў гэтым месцы"
916
916
917 msgid "This username or user group name is not valid"
917 msgid "This username or user group name is not valid"
918 msgstr "Дадзенае імя карыстальніка ці групы карыстальнікаў недапушчальна"
918 msgstr "Дадзенае імя карыстальніка ці групы карыстальнікаў недапушчальна"
919
919
920 msgid "This is not a valid path"
920 msgid "This is not a valid path"
921 msgstr "Гэты шлях хібны"
921 msgstr "Гэты шлях хібны"
922
922
923 msgid "This email address is already in use"
923 msgid "This email address is already in use"
924 msgstr "Гэты e-mail ужо ўжываецца"
924 msgstr "Гэты e-mail ужо ўжываецца"
925
925
926 msgid "Email address \"%(email)s\" not found"
926 msgid "Email address \"%(email)s\" not found"
927 msgstr "Email-адрас \"%(email)s\" не знойдзены"
927 msgstr "Email-адрас \"%(email)s\" не знойдзены"
928
928
929 msgid ""
929 msgid ""
930 "The LDAP Login attribute of the CN must be specified - this is the name "
930 "The LDAP Login attribute of the CN must be specified - this is the name "
931 "of the attribute that is equivalent to \"username\""
931 "of the attribute that is equivalent to \"username\""
932 msgstr ""
932 msgstr ""
933 "Для ўваходу па LDAP павінна быць паказана значэнне атрыбута CN - гэта "
933 "Для ўваходу па LDAP павінна быць паказана значэнне атрыбута CN - гэта "
934 "эквівалент імя карыстальніка"
934 "эквівалент імя карыстальніка"
935
935
936 msgid "Please enter a valid IPv4 or IPv6 address"
936 msgid "Please enter a valid IPv4 or IPv6 address"
937 msgstr "Калі ласка, увядзіце існы IPv4 ці IPv6 адрас"
937 msgstr "Калі ласка, увядзіце існы IPv4 ці IPv6 адрас"
938
938
939 msgid ""
939 msgid ""
940 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
940 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
941 msgstr ""
941 msgstr ""
942 "Значэнне маскі падсеткі павінна быць у межах ад 0 да 32 (%(bits)r - "
942 "Значэнне маскі падсеткі павінна быць у межах ад 0 да 32 (%(bits)r - "
943 "няслушна)"
943 "няслушна)"
944
944
945 msgid "Key name can only consist of letters, underscore, dash or numbers"
945 msgid "Key name can only consist of letters, underscore, dash or numbers"
946 msgstr ""
946 msgstr ""
947 "Ключавое імя можа толькі складацца з літар, знака падкрэслення, працяжнік "
947 "Ключавое імя можа толькі складацца з літар, знака падкрэслення, працяжнік "
948 "ці лікаў"
948 "ці лікаў"
949
949
950 msgid "Filename cannot be inside a directory"
950 msgid "Filename cannot be inside a directory"
951 msgstr "Файла няма ў каталогу"
951 msgstr "Файла няма ў каталогу"
952
952
953 msgid "About"
953 msgid "About"
954 msgstr "Пра праграму"
954 msgstr "Пра праграму"
955
955
956 msgid "Add Repository"
956 msgid "Add Repository"
957 msgstr "Дадаць рэпазітар"
957 msgstr "Дадаць рэпазітар"
958
958
959 msgid "Add Repository Group"
959 msgid "Add Repository Group"
960 msgstr "Дадаць групу рэпазітароў"
960 msgstr "Дадаць групу рэпазітароў"
961
961
962 msgid "You have admin right to this group, and can edit it"
962 msgid "You have admin right to this group, and can edit it"
963 msgstr ""
963 msgstr ""
964 "Вы маеце адміністратарскія правы на гэту групу і можаце рэдагаваць яе"
964 "Вы маеце адміністратарскія правы на гэту групу і можаце рэдагаваць яе"
965
965
966 msgid "Edit Repository Group"
966 msgid "Edit Repository Group"
967 msgstr "Змяніць групу рэпазітароў"
967 msgstr "Змяніць групу рэпазітароў"
968
968
969 msgid "Repository"
969 msgid "Repository"
970 msgstr "Рэпазітар"
970 msgstr "Рэпазітар"
971
971
972 msgid "Description"
972 msgid "Description"
973 msgstr "Апісанне"
973 msgstr "Апісанне"
974
974
975 msgid "Last Change"
975 msgid "Last Change"
976 msgstr "Апошняя змена"
976 msgstr "Апошняя змена"
977
977
978 msgid "Tip"
978 msgid "Tip"
979 msgstr "Стан"
979 msgstr "Стан"
980
980
981 msgid "Owner"
981 msgid "Owner"
982 msgstr "Уладальнік"
982 msgstr "Уладальнік"
983
983
984 msgid "Log In"
984 msgid "Log In"
985 msgstr "Увайсці"
985 msgstr "Увайсці"
986
986
987 msgid "Log In to %s"
987 msgid "Log In to %s"
988 msgstr "Увайсці ў %s"
988 msgstr "Увайсці ў %s"
989
989
990 msgid "Username"
990 msgid "Username"
991 msgstr "Імя карыстальніка"
991 msgstr "Імя карыстальніка"
992
992
993 msgid "Password"
993 msgid "Password"
994 msgstr "Пароль"
994 msgstr "Пароль"
995
995
996 msgid "Forgot your password?"
996 msgid "Forgot your password?"
997 msgstr "Забыліся на пароль?"
997 msgstr "Забыліся на пароль?"
998
998
999 msgid "Don't have an account?"
999 msgid "Don't have an account?"
1000 msgstr "Няма акаўнта?"
1000 msgstr "Няма акаўнта?"
1001
1001
1002 msgid "Sign In"
1002 msgid "Sign In"
1003 msgstr "Увайсці"
1003 msgstr "Увайсці"
1004
1004
1005 msgid "Password Reset"
1005 msgid "Password Reset"
1006 msgstr "Скінуць пароль"
1006 msgstr "Скінуць пароль"
1007
1007
1008 msgid "Reset Your Password to %s"
1008 msgid "Reset Your Password to %s"
1009 msgstr "Забыліся на пароль для %s?"
1009 msgstr "Забыліся на пароль для %s?"
1010
1010
1011 msgid "Reset Your Password"
1011 msgid "Reset Your Password"
1012 msgstr "Скінуць Ваш пароль"
1012 msgstr "Скінуць Ваш пароль"
1013
1013
1014 msgid "Email Address"
1014 msgid "Email Address"
1015 msgstr "Паштовы адрас"
1015 msgstr "Паштовы адрас"
1016
1016
1017 msgid "Captcha"
1017 msgid "Captcha"
1018 msgstr "Капча"
1018 msgstr "Капча"
1019
1019
1020 msgid "Send Password Reset Email"
1020 msgid "Send Password Reset Email"
1021 msgstr "Паслаць спасылку для скідання пароля"
1021 msgstr "Паслаць спасылку для скідання пароля"
1022
1022
1023 msgid ""
1023 msgid ""
1024 "A password reset link will be sent to the specified email address if it "
1024 "A password reset link will be sent to the specified email address if it "
1025 "is registered in the system."
1025 "is registered in the system."
1026 msgstr ""
1026 msgstr ""
1027 "Спасылка для скіду пароля будзе адпраўленая на адпаведны email-адрас, "
1027 "Спасылка для скіду пароля будзе адпраўленая на адпаведны email-адрас, "
1028 "калі ён зарэгістраваны ў сістэме."
1028 "калі ён зарэгістраваны ў сістэме."
1029
1029
1030 msgid "New Password"
1030 msgid "New Password"
1031 msgstr "Новы пароль"
1031 msgstr "Новы пароль"
1032
1032
1033 msgid "Confirm New Password"
1033 msgid "Confirm New Password"
1034 msgstr "Пацвердзіце новы пароль"
1034 msgstr "Пацвердзіце новы пароль"
1035
1035
1036 msgid "Sign Up"
1036 msgid "Sign Up"
1037 msgstr "Рэгістрацыя"
1037 msgstr "Рэгістрацыя"
1038
1038
1039 msgid "Sign Up to %s"
1039 msgid "Sign Up to %s"
1040 msgstr "Рэгістрацыя на %s"
1040 msgstr "Рэгістрацыя на %s"
1041
1041
1042 msgid "Re-enter password"
1042 msgid "Re-enter password"
1043 msgstr "Паўтарыце пароль"
1043 msgstr "Паўтарыце пароль"
1044
1044
1045 msgid "First Name"
1045 msgid "First Name"
1046 msgstr "Імя"
1046 msgstr "Імя"
1047
1047
1048 msgid "Last Name"
1048 msgid "Last Name"
1049 msgstr "Прозвішча"
1049 msgstr "Прозвішча"
1050
1050
1051 msgid "Email"
1051 msgid "Email"
1052 msgstr "E-mail"
1052 msgstr "E-mail"
1053
1053
1054 msgid "Please wait for an administrator to activate your account."
1054 msgid "Please wait for an administrator to activate your account."
1055 msgstr ""
1055 msgstr ""
1056 "Калі ласка, пачакайце, пакуль адміністратар пацвердзіць Вашу рэгістрацыю."
1056 "Калі ласка, пачакайце, пакуль адміністратар пацвердзіць Вашу рэгістрацыю."
1057
1057
1058 msgid "Admin Journal"
1058 msgid "Admin Journal"
1059 msgstr "Журнал адміністратара"
1059 msgstr "Журнал адміністратара"
1060
1060
1061 msgid "journal filter..."
1061 msgid "journal filter..."
1062 msgstr "Фільтр журнала..."
1062 msgstr "Фільтр журнала..."
1063
1063
1064 msgid "Filter"
1064 msgid "Filter"
1065 msgstr "Адфільтраваць"
1065 msgstr "Адфільтраваць"
1066
1066
1067 msgid "%s Entry"
1067 msgid "%s Entry"
1068 msgid_plural "%s Entries"
1068 msgid_plural "%s Entries"
1069 msgstr[0] "%s запіс"
1069 msgstr[0] "%s запіс"
1070 msgstr[1] "%s запісаў"
1070 msgstr[1] "%s запісаў"
1071 msgstr[2] "%s запісы"
1071 msgstr[2] "%s запісы"
1072
1072
1073 msgid "Action"
1073 msgid "Action"
1074 msgstr "Дзеянне"
1074 msgstr "Дзеянне"
1075
1075
1076 msgid "Date"
1076 msgid "Date"
1077 msgstr "Дата"
1077 msgstr "Дата"
1078
1078
1079 msgid "From IP"
1079 msgid "From IP"
1080 msgstr "З IP"
1080 msgstr "З IP"
1081
1081
1082 msgid "No actions yet"
1082 msgid "No actions yet"
1083 msgstr "Няма інфармацыі"
1083 msgstr "Няма інфармацыі"
1084
1084
1085 msgid "Authentication Settings"
1085 msgid "Authentication Settings"
1086 msgstr "Налады аўтэнтыфікацыі"
1086 msgstr "Налады аўтэнтыфікацыі"
1087
1087
1088 msgid "Authentication"
1088 msgid "Authentication"
1089 msgstr "Аўтэнтыфікацыя"
1089 msgstr "Аўтэнтыфікацыя"
1090
1090
1091 msgid "Authentication Plugins"
1091 msgid "Authentication Plugins"
1092 msgstr "Плагіны аўтэнтыфікацыі"
1092 msgstr "Плагіны аўтэнтыфікацыі"
1093
1093
1094 msgid "Enabled Plugins"
1094 msgid "Enabled Plugins"
1095 msgstr "Уключаныя плагіны"
1095 msgstr "Уключаныя плагіны"
1096
1096
1097 msgid ""
1097 msgid ""
1098 "Comma-separated list of plugins; Kallithea will try user authentication "
1098 "Comma-separated list of plugins; Kallithea will try user authentication "
1099 "in plugin order"
1099 "in plugin order"
1100 msgstr ""
1100 msgstr ""
1101 "Спіс плагінаў, падзеленых коскамі. Kallithea будзе спрабаваць "
1101 "Спіс плагінаў, падзеленых коскамі. Kallithea будзе спрабаваць "
1102 "аўтэнтыфікаваць карыстальніка ў парадку ўказання плагінаў"
1102 "аўтэнтыфікаваць карыстальніка ў парадку ўказання плагінаў"
1103
1103
1104 msgid "Available built-in plugins"
1104 msgid "Available built-in plugins"
1105 msgstr "Даступныя ўбудаваныя плагіны"
1105 msgstr "Даступныя ўбудаваныя плагіны"
1106
1106
1107 msgid "Plugin"
1107 msgid "Plugin"
1108 msgstr "Плагін"
1108 msgstr "Плагін"
1109
1109
1110 msgid "Save"
1110 msgid "Save"
1111 msgstr "Захаваць"
1111 msgstr "Захаваць"
1112
1112
1113 msgid "Repository Defaults"
1113 msgid "Repository Defaults"
1114 msgstr "Значэнні па змоўчанні"
1114 msgstr "Значэнні па змоўчанні"
1115
1115
1116 msgid "Type"
1116 msgid "Type"
1117 msgstr "Тып"
1117 msgstr "Тып"
1118
1118
1119 msgid "Private repository"
1119 msgid "Private repository"
1120 msgstr "Прыватны рэпазітар"
1120 msgstr "Прыватны рэпазітар"
1121
1121
1122 msgid ""
1122 msgid ""
1123 "Private repositories are only visible to people explicitly added as "
1123 "Private repositories are only visible to people explicitly added as "
1124 "collaborators."
1124 "collaborators."
1125 msgstr "Прыватныя рэпазітары бачныя толькі іх удзельнікам."
1125 msgstr "Прыватныя рэпазітары бачныя толькі іх удзельнікам."
1126
1126
1127 msgid "Enable statistics"
1127 msgid "Enable statistics"
1128 msgstr "Уключыць статыстыку"
1128 msgstr "Уключыць статыстыку"
1129
1129
1130 msgid "Enable statistics window on summary page."
1130 msgid "Enable statistics window on summary page."
1131 msgstr "Уключыць акно статыстыкі на старонцы «Агульныя звесткі»."
1131 msgstr "Уключыць акно статыстыкі на старонцы «Агульныя звесткі»."
1132
1132
1133 msgid "Enable downloads"
1133 msgid "Enable downloads"
1134 msgstr "Уключыць спампоўку"
1134 msgstr "Уключыць спампоўку"
1135
1135
1136 msgid "Enable download menu on summary page."
1136 msgid "Enable download menu on summary page."
1137 msgstr "Уключыць меню спампоўкі на старонцы «Агульныя звесткі»."
1137 msgstr "Уключыць меню спампоўкі на старонцы «Агульныя звесткі»."
1138
1138
1139 msgid "Edit Gist"
1139 msgid "Edit Gist"
1140 msgstr "Правіць gist-запіс"
1140 msgstr "Правіць gist-запіс"
1141
1141
1142 msgid "Gist description ..."
1142 msgid "Gist description ..."
1143 msgstr "Апісанне..."
1143 msgstr "Апісанне..."
1144
1144
1145 msgid "Expires"
1145 msgid "Expires"
1146 msgstr "Мінае"
1146 msgstr "Мінае"
1147
1147
1148 msgid "Never"
1148 msgid "Never"
1149 msgstr "Ніколі"
1149 msgstr "Ніколі"
1150
1150
1151 msgid "Update Gist"
1151 msgid "Update Gist"
1152 msgstr "Абнавіць"
1152 msgstr "Абнавіць"
1153
1153
1154 msgid "Cancel"
1154 msgid "Cancel"
1155 msgstr "Адмена"
1155 msgstr "Адмена"
1156
1156
1157 msgid "Private Gists for User %s"
1157 msgid "Private Gists for User %s"
1158 msgstr "Прыватны gist-запіс для карыстальніка %s"
1158 msgstr "Прыватны gist-запіс для карыстальніка %s"
1159
1159
1160 msgid "Public Gists for User %s"
1160 msgid "Public Gists for User %s"
1161 msgstr "Публічны gist-запіс для карыстальніка %s"
1161 msgstr "Публічны gist-запіс для карыстальніка %s"
1162
1162
1163 msgid "Public Gists"
1163 msgid "Public Gists"
1164 msgstr "Публічныя gist-запісы"
1164 msgstr "Публічныя gist-запісы"
1165
1165
1166 msgid "Create New Gist"
1166 msgid "Create New Gist"
1167 msgstr "Стварыць новы gist-запіс"
1167 msgstr "Стварыць новы gist-запіс"
1168
1168
1169 msgid "Created"
1169 msgid "Created"
1170 msgstr "Створаны"
1170 msgstr "Створаны"
1171
1171
1172 msgid "There are no gists yet"
1172 msgid "There are no gists yet"
1173 msgstr "Gist-запісы адсутнічаюць"
1173 msgstr "Gist-запісы адсутнічаюць"
1174
1174
1175 msgid "New Gist"
1175 msgid "New Gist"
1176 msgstr "Новы gist-запіс"
1176 msgstr "Новы gist-запіс"
1177
1177
1178 msgid "Reset"
1178 msgid "Reset"
1179 msgstr "Скінуць"
1179 msgstr "Скінуць"
1180
1180
1181 msgid "URL"
1181 msgid "URL"
1182 msgstr "URL"
1182 msgstr "URL"
1183
1183
1184 msgid "Delete"
1184 msgid "Delete"
1185 msgstr "Выдаліць"
1185 msgstr "Выдаліць"
1186
1186
1187 msgid "Confirm to delete this Gist"
1187 msgid "Confirm to delete this Gist"
1188 msgstr "Пацвердзіце выдаленне гэтага gist-запісу"
1188 msgstr "Пацвердзіце выдаленне гэтага gist-запісу"
1189
1189
1190 msgid "Edit"
1190 msgid "Edit"
1191 msgstr "Рэдагаваць"
1191 msgstr "Рэдагаваць"
1192
1192
1193 msgid "Show as Raw"
1193 msgid "Show as Raw"
1194 msgstr "Паказаць толькі тэкст"
1194 msgstr "Паказаць толькі тэкст"
1195
1195
1196 msgid "created"
1196 msgid "created"
1197 msgstr "створана"
1197 msgstr "створана"
1198
1198
1199 msgid "Show as raw"
1199 msgid "Show as raw"
1200 msgstr "Паказаць толькі тэкст"
1200 msgstr "Паказаць толькі тэкст"
1201
1201
1202 msgid "My Account"
1202 msgid "My Account"
1203 msgstr "Мой Акаўнт"
1203 msgstr "Мой Акаўнт"
1204
1204
1205 msgid "Profile"
1205 msgid "Profile"
1206 msgstr "Профіль"
1206 msgstr "Профіль"
1207
1207
1208 msgid "Email Addresses"
1208 msgid "Email Addresses"
1209 msgstr "E-mail адрэсы"
1209 msgstr "E-mail адрэсы"
1210
1210
1211 msgid "API Keys"
1211 msgid "API Keys"
1212 msgstr "API-ключы"
1212 msgstr "API-ключы"
1213
1213
1214 msgid "Owned Repositories"
1214 msgid "Owned Repositories"
1215 msgstr "Мае рэпазітары"
1215 msgstr "Мае рэпазітары"
1216
1216
1217 msgid "Show Permissions"
1217 msgid "Show Permissions"
1218 msgstr "Паказаць прывілеі"
1218 msgstr "Паказаць прывілеі"
1219
1219
1220 msgid "Built-in"
1220 msgid "Built-in"
1221 msgstr "Убудаваны"
1221 msgstr "Убудаваны"
1222
1222
1223 msgid "Confirm to reset this API key: %s"
1223 msgid "Confirm to reset this API key: %s"
1224 msgstr "Пацвердзіць скіданне гэтага API-ключа: %s"
1224 msgstr "Пацвердзіць скіданне гэтага API-ключа: %s"
1225
1225
1226 msgid "Expired"
1226 msgid "Expired"
1227 msgstr "Ануляваны"
1227 msgstr "Ануляваны"
1228
1228
1229 msgid "Confirm to remove this API key: %s"
1229 msgid "Confirm to remove this API key: %s"
1230 msgstr "Пацвердзіце выдаленне гэтага API-ключа: %s"
1230 msgstr "Пацвердзіце выдаленне гэтага API-ключа: %s"
1231
1231
1232 msgid "Remove"
1232 msgid "Remove"
1233 msgstr "Выдаліць"
1233 msgstr "Выдаліць"
1234
1234
1235 msgid "No additional API keys specified"
1235 msgid "No additional API keys specified"
1236 msgstr "Дадатковыя API-ключы не пазначаныя"
1236 msgstr "Дадатковыя API-ключы не пазначаныя"
1237
1237
1238 msgid "New API key"
1238 msgid "New API key"
1239 msgstr "Новы API-ключ"
1239 msgstr "Новы API-ключ"
1240
1240
1241 msgid "Add"
1241 msgid "Add"
1242 msgstr "Дадаць"
1242 msgstr "Дадаць"
1243
1243
1244 msgid "Primary"
1244 msgid "Primary"
1245 msgstr "Асноўны"
1245 msgstr "Асноўны"
1246
1246
1247 msgid "Confirm to delete this email: %s"
1247 msgid "Confirm to delete this email: %s"
1248 msgstr "Пацвердзіце выдаленне e-mail: %s"
1248 msgstr "Пацвердзіце выдаленне e-mail: %s"
1249
1249
1250 msgid "No additional emails specified."
1250 msgid "No additional emails specified."
1251 msgstr "Дадатковыя адрасы e-mail не пазначаны."
1251 msgstr "Дадатковыя адрасы e-mail не пазначаны."
1252
1252
1253 msgid "New email address"
1253 msgid "New email address"
1254 msgstr "Новы e-mail"
1254 msgstr "Новы e-mail"
1255
1255
1256 msgid "Change Your Account Password"
1256 msgid "Change Your Account Password"
1257 msgstr "Змена пароля"
1257 msgstr "Змена пароля"
1258
1258
1259 msgid "Current password"
1259 msgid "Current password"
1260 msgstr "Цяперашні пароль"
1260 msgstr "Цяперашні пароль"
1261
1261
1262 msgid "New password"
1262 msgid "New password"
1263 msgstr "Новы пароль"
1263 msgstr "Новы пароль"
1264
1264
1265 msgid "Confirm new password"
1265 msgid "Confirm new password"
1266 msgstr "Пацвердзіце новы пароль"
1266 msgstr "Пацвердзіце новы пароль"
1267
1267
1268 msgid "Current IP"
1268 msgid "Current IP"
1269 msgstr "Цяперашні IP-адрас"
1269 msgstr "Цяперашні IP-адрас"
1270
1270
1271 msgid "Avatars are disabled"
1271 msgid "Avatars are disabled"
1272 msgstr "Аватары адключаныя"
1272 msgstr "Аватары адключаныя"
1273
1273
1274 msgid "Repositories You Own"
1274 msgid "Repositories You Own"
1275 msgstr "Рэпазітары, дзе Вы — уладальнік"
1275 msgstr "Рэпазітары, дзе Вы — уладальнік"
1276
1276
1277 msgid "Name"
1277 msgid "Name"
1278 msgstr "Імя"
1278 msgstr "Імя"
1279
1279
1280 msgid "Repositories You are Watching"
1280 msgid "Repositories You are Watching"
1281 msgstr "Рэпазітары, за якімі Вы назіраеце"
1281 msgstr "Рэпазітары, за якімі Вы назіраеце"
1282
1282
1283 msgid "Default Permissions"
1283 msgid "Default Permissions"
1284 msgstr "Стандартныя прывілеі"
1284 msgstr "Стандартныя прывілеі"
1285
1285
1286 msgid "Global"
1286 msgid "Global"
1287 msgstr "Глабальныя"
1287 msgstr "Глабальныя"
1288
1288
1289 msgid "IP Whitelist"
1289 msgid "IP Whitelist"
1290 msgstr "Белы спіс IP"
1290 msgstr "Белы спіс IP"
1291
1291
1292 msgid "Anonymous access"
1292 msgid "Anonymous access"
1293 msgstr "Ананімны доступ"
1293 msgstr "Ананімны доступ"
1294
1294
1295 msgid ""
1295 msgid ""
1296 "All default permissions on each repository will be reset to chosen "
1296 "All default permissions on each repository will be reset to chosen "
1297 "permission, note that all custom default permission on repositories will "
1297 "permission, note that all custom default permission on repositories will "
1298 "be lost"
1298 "be lost"
1299 msgstr ""
1299 msgstr ""
1300 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнага рэпазітара. "
1300 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнага рэпазітара. "
1301 "Улічыце, што раней усталяваныя прывілеі па змоўчанні будуць скінутыя"
1301 "Улічыце, што раней усталяваныя прывілеі па змоўчанні будуць скінутыя"
1302
1302
1303 msgid "Repository group"
1303 msgid "Repository group"
1304 msgstr "Група рэпазітароў"
1304 msgstr "Група рэпазітароў"
1305
1305
1306 msgid ""
1306 msgid ""
1307 "All default permissions on each repository group will be reset to chosen "
1307 "All default permissions on each repository group will be reset to chosen "
1308 "permission, note that all custom default permission on repository groups "
1308 "permission, note that all custom default permission on repository groups "
1309 "will be lost"
1309 "will be lost"
1310 msgstr ""
1310 msgstr ""
1311 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1311 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1312 "рэпазітароў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1312 "рэпазітароў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1313 "груп рэпазітароў будуць скінутыя"
1313 "груп рэпазітароў будуць скінутыя"
1314
1314
1315 msgid "User group"
1315 msgid "User group"
1316 msgstr "Група карыстальнікаў"
1316 msgstr "Група карыстальнікаў"
1317
1317
1318 msgid ""
1318 msgid ""
1319 "All default permissions on each user group will be reset to chosen "
1319 "All default permissions on each user group will be reset to chosen "
1320 "permission, note that all custom default permission on user groups will "
1320 "permission, note that all custom default permission on user groups will "
1321 "be lost"
1321 "be lost"
1322 msgstr ""
1322 msgstr ""
1323 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1323 "Выбраныя прывілеі будуць усталяваныя па змоўчанні для кожнай групы "
1324 "карыстальнікаў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1324 "карыстальнікаў. Улічыце, што раней усталяваныя прывілеі па змоўчанні для "
1325 "груп карыстальнікаў будуць скінутыя"
1325 "груп карыстальнікаў будуць скінутыя"
1326
1326
1327 msgid "User group creation"
1327 msgid "User group creation"
1328 msgstr "Стварэнне груп карыстальнікаў"
1328 msgstr "Стварэнне груп карыстальнікаў"
1329
1329
1330 msgid "Repository forking"
1330 msgid "Repository forking"
1331 msgstr "Стварэнне форка рэпазітара"
1331 msgstr "Стварэнне форка рэпазітара"
1332
1332
1333 msgid "Registration"
1333 msgid "Registration"
1334 msgstr "Рэгістрацыя"
1334 msgstr "Рэгістрацыя"
1335
1335
1336 msgid "External auth account activation"
1336 msgid "External auth account activation"
1337 msgstr "Актывацыя іншага ўліковага запісу"
1337 msgstr "Актывацыя іншага ўліковага запісу"
1338
1338
1339 msgid "Confirm to delete this IP address: %s"
1339 msgid "Confirm to delete this IP address: %s"
1340 msgstr "Пацвердзіце выдаленне IP %s"
1340 msgstr "Пацвердзіце выдаленне IP %s"
1341
1341
1342 msgid "All IP addresses are allowed."
1342 msgid "All IP addresses are allowed."
1343 msgstr "Дазволены любыя IP-адрасы."
1343 msgstr "Дазволены любыя IP-адрасы."
1344
1344
1345 msgid "New IP address"
1345 msgid "New IP address"
1346 msgstr "Новы IP-адрас"
1346 msgstr "Новы IP-адрас"
1347
1347
1348 msgid "Repository Groups"
1348 msgid "Repository Groups"
1349 msgstr "Групы рэпазітароў"
1349 msgstr "Групы рэпазітароў"
1350
1350
1351 msgid "Group name"
1351 msgid "Group name"
1352 msgstr "Імя групы"
1352 msgstr "Імя групы"
1353
1353
1354 msgid "Group parent"
1354 msgid "Group parent"
1355 msgstr "Бацькоўская група"
1355 msgstr "Бацькоўская група"
1356
1356
1357 msgid "%s Repository Group Settings"
1357 msgid "%s Repository Group Settings"
1358 msgstr "Налады групы рэпазітароў %s"
1358 msgstr "Налады групы рэпазітароў %s"
1359
1359
1360 msgid "Add Child Group"
1360 msgid "Add Child Group"
1361 msgstr "Дадаць падгрупу"
1361 msgstr "Дадаць падгрупу"
1362
1362
1363 msgid "Settings"
1363 msgid "Settings"
1364 msgstr "Налады"
1364 msgstr "Налады"
1365
1365
1366 msgid "Advanced"
1366 msgid "Advanced"
1367 msgstr "Дадаткова"
1367 msgstr "Дадаткова"
1368
1368
1369 msgid "Permissions"
1369 msgid "Permissions"
1370 msgstr "Прывілеі"
1370 msgstr "Прывілеі"
1371
1371
1372 msgid "Repository Group: %s"
1372 msgid "Repository Group: %s"
1373 msgstr "Група рэпазітароў: %s"
1373 msgstr "Група рэпазітароў: %s"
1374
1374
1375 msgid "Top level repositories"
1375 msgid "Top level repositories"
1376 msgstr "Рэпазітары верхняга ўзроўню"
1376 msgstr "Рэпазітары верхняга ўзроўню"
1377
1377
1378 msgid "Created on"
1378 msgid "Created on"
1379 msgstr "Створана"
1379 msgstr "Створана"
1380
1380
1381 msgid "Confirm to delete this group: %s with %s repository"
1381 msgid "Confirm to delete this group: %s with %s repository"
1382 msgid_plural "Confirm to delete this group: %s with %s repositories"
1382 msgid_plural "Confirm to delete this group: %s with %s repositories"
1383 msgstr[0] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітар"
1383 msgstr[0] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітар"
1384 msgstr[1] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітара"
1384 msgstr[1] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітара"
1385 msgstr[2] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітароў"
1385 msgstr[2] "Пацвердзіце выдаленне групы %s, утрымоўвалай %s рэпазітароў"
1386
1386
1387 msgid "Delete this repository group"
1387 msgid "Delete this repository group"
1388 msgstr "Выдаліць гэту групу рэпазітароў"
1388 msgstr "Выдаліць гэту групу рэпазітароў"
1389
1389
1390 msgid "User/User Group"
1390 msgid "User/User Group"
1391 msgstr "Карыстальнік/група карыстальнікаў"
1391 msgstr "Карыстальнік/група карыстальнікаў"
1392
1392
1393 msgid "Default"
1393 msgid "Default"
1394 msgstr "Па змоўчанні"
1394 msgstr "Па змоўчанні"
1395
1395
1396 msgid "Revoke"
1396 msgid "Revoke"
1397 msgstr "Адклікаць"
1397 msgstr "Адклікаць"
1398
1398
1399 msgid "Add new"
1399 msgid "Add new"
1400 msgstr "Дадаць новы"
1400 msgstr "Дадаць новы"
1401
1401
1402 msgid "Both"
1402 msgid "Both"
1403 msgstr "Абедзьве"
1403 msgstr "Абедзьве"
1404
1404
1405 msgid "Remove this group"
1405 msgid "Remove this group"
1406 msgstr "Выдаліць гэту групу"
1406 msgstr "Выдаліць гэту групу"
1407
1407
1408 msgid "Confirm to delete this group"
1408 msgid "Confirm to delete this group"
1409 msgstr "Пацвердзіце выдаленне гэтай групы карыстальнікаў"
1409 msgstr "Пацвердзіце выдаленне гэтай групы карыстальнікаў"
1410
1410
1411 msgid "Repository Groups Administration"
1411 msgid "Repository Groups Administration"
1412 msgstr "Адміністраванне груп рэпазітароў"
1412 msgstr "Адміністраванне груп рэпазітароў"
1413
1413
1414 msgid "Number of Top-level Repositories"
1414 msgid "Number of Top-level Repositories"
1415 msgstr "Лік рэпазітароў верхняга ўзроўня"
1415 msgstr "Лік рэпазітароў верхняга ўзроўня"
1416
1416
1417 msgid "Type of repository to create."
1417 msgid "Type of repository to create."
1418 msgstr "Тып стваранага рэпазітара."
1418 msgstr "Тып стваранага рэпазітара."
1419
1419
1420 msgid "Repository URL"
1420 msgid "Repository URL"
1421 msgstr "URL рэпазітара"
1421 msgstr "URL рэпазітара"
1422
1422
1423 msgid ""
1423 msgid ""
1424 "Keep it short and to the point. Use a README file for longer descriptions."
1424 "Keep it short and to the point. Use a README file for longer descriptions."
1425 msgstr ""
1425 msgstr ""
1426 "Кароткае і асэнсаванае. Для разгорнутага апісання выкарыстоўвайце файл "
1426 "Кароткае і асэнсаванае. Для разгорнутага апісання выкарыстоўвайце файл "
1427 "README."
1427 "README."
1428
1428
1429 msgid "Optionally select a group to put this repository into."
1429 msgid "Optionally select a group to put this repository into."
1430 msgstr "Апцыянальна абраць групу, у якую змясціць дадзены рэпазітар."
1430 msgstr "Апцыянальна абраць групу, у якую змясціць дадзены рэпазітар."
1431
1431
1432 msgid "Landing revision"
1432 msgid "Landing revision"
1433 msgstr "Рэвізія для выгрузкі"
1433 msgstr "Рэвізія для выгрузкі"
1434
1434
1435 msgid "%s Creating Repository"
1435 msgid "%s Creating Repository"
1436 msgstr "Стварэнне рэпазітара %s"
1436 msgstr "Стварэнне рэпазітара %s"
1437
1437
1438 msgid "Creating repository"
1438 msgid "Creating repository"
1439 msgstr "Стварэнне рэпазітара"
1439 msgstr "Стварэнне рэпазітара"
1440
1440
1441 msgid "%s Repository Settings"
1441 msgid "%s Repository Settings"
1442 msgstr "Налады рэпазітара %s"
1442 msgstr "Налады рэпазітара %s"
1443
1443
1444 msgid "Extra Fields"
1444 msgid "Extra Fields"
1445 msgstr "Дадатковыя палі"
1445 msgstr "Дадатковыя палі"
1446
1446
1447 msgid "Remote"
1447 msgid "Remote"
1448 msgstr "Выдалены"
1448 msgstr "Выдалены"
1449
1449
1450 msgid "Statistics"
1450 msgid "Statistics"
1451 msgstr "Статыстыка"
1451 msgstr "Статыстыка"
1452
1452
1453 msgid "Parent"
1453 msgid "Parent"
1454 msgstr "Бацькоўская група"
1454 msgstr "Бацькоўская група"
1455
1455
1456 msgid "Set"
1456 msgid "Set"
1457 msgstr "Набор"
1457 msgstr "Набор"
1458
1458
1459 msgid "Manually set this repository as a fork of another from the list."
1459 msgid "Manually set this repository as a fork of another from the list."
1460 msgstr "Уручную зрабіць гэты рэпазітар форкам выбранага са спісу."
1460 msgstr "Уручную зрабіць гэты рэпазітар форкам выбранага са спісу."
1461
1461
1462 msgid "Public Journal Visibility"
1462 msgid "Public Journal Visibility"
1463 msgstr "Доступ да публічнага журналу"
1463 msgstr "Доступ да публічнага журналу"
1464
1464
1465 msgid "Remove from public journal"
1465 msgid "Remove from public journal"
1466 msgstr "Выдаліць з агульнадаступнага журналу"
1466 msgstr "Выдаліць з агульнадаступнага журналу"
1467
1467
1468 msgid "Add to Public Journal"
1468 msgid "Add to Public Journal"
1469 msgstr "Дадаць у публічны журнал"
1469 msgstr "Дадаць у публічны журнал"
1470
1470
1471 msgid ""
1471 msgid ""
1472 "All actions done in this repository will be visible to everyone in the "
1472 "All actions done in this repository will be visible to everyone in the "
1473 "public journal."
1473 "public journal."
1474 msgstr ""
1474 msgstr ""
1475 "Усе выконваемыя з гэтым рэпазітаром дзеянні будуць адлюстроўвацца ў "
1475 "Усе выконваемыя з гэтым рэпазітаром дзеянні будуць адлюстроўвацца ў "
1476 "публічным журнал."
1476 "публічным журнал."
1477
1477
1478 msgid "Confirm to delete this repository: %s"
1478 msgid "Confirm to delete this repository: %s"
1479 msgstr "Пацвердзіце выдаленне гэтага рэпазітара: %s"
1479 msgstr "Пацвердзіце выдаленне гэтага рэпазітара: %s"
1480
1480
1481 msgid "Delete this Repository"
1481 msgid "Delete this Repository"
1482 msgstr "Выдаліць гэты рэпазітар"
1482 msgstr "Выдаліць гэты рэпазітар"
1483
1483
1484 msgid "This repository has %s fork"
1484 msgid "This repository has %s fork"
1485 msgid_plural "This repository has %s forks"
1485 msgid_plural "This repository has %s forks"
1486 msgstr[0] "Дадзены рэпазітар мае %s копію"
1486 msgstr[0] "Дадзены рэпазітар мае %s копію"
1487 msgstr[1] "Дадзены рэпазітар мае %s копіі"
1487 msgstr[1] "Дадзены рэпазітар мае %s копіі"
1488 msgstr[2] "Дадзены рэпазітар мае %s копій"
1488 msgstr[2] "Дадзены рэпазітар мае %s копій"
1489
1489
1490 msgid "Detach forks"
1490 msgid "Detach forks"
1491 msgstr "Адлучыць форкі"
1491 msgstr "Адлучыць форкі"
1492
1492
1493 msgid "Delete forks"
1493 msgid "Delete forks"
1494 msgstr "Выдаліць форкі"
1494 msgstr "Выдаліць форкі"
1495
1495
1496 msgid "Key"
1496 msgid "Key"
1497 msgstr "Ключ"
1497 msgstr "Ключ"
1498
1498
1499 msgid "Confirm to delete this field: %s"
1499 msgid "Confirm to delete this field: %s"
1500 msgstr "Пацвердзіце выдаленне гэтага поля: %s"
1500 msgstr "Пацвердзіце выдаленне гэтага поля: %s"
1501
1501
1502 msgid "New field key"
1502 msgid "New field key"
1503 msgstr "Ключ"
1503 msgstr "Ключ"
1504
1504
1505 msgid "New field label"
1505 msgid "New field label"
1506 msgstr "Імя поля"
1506 msgstr "Імя поля"
1507
1507
1508 msgid "Enter short label"
1508 msgid "Enter short label"
1509 msgstr "Увядзіце кароткае імя поля"
1509 msgstr "Увядзіце кароткае імя поля"
1510
1510
1511 msgid "New field description"
1511 msgid "New field description"
1512 msgstr "Апісанне поля"
1512 msgstr "Апісанне поля"
1513
1513
1514 msgid "Enter description of a field"
1514 msgid "Enter description of a field"
1515 msgstr "Увядзіце апісанне поля"
1515 msgstr "Увядзіце апісанне поля"
1516
1516
1517 msgid "Extra fields are disabled."
1517 msgid "Extra fields are disabled."
1518 msgstr "Дадатковыя палі адключаныя."
1518 msgstr "Дадатковыя палі адключаныя."
1519
1519
1520 msgid "Private Repository"
1520 msgid "Private Repository"
1521 msgstr "Прыватны рэпазітар"
1521 msgstr "Прыватны рэпазітар"
1522
1522
1523 msgid "Remote repository URL"
1523 msgid "Remote repository URL"
1524 msgstr "URL аддаленага рэпазітара"
1524 msgstr "URL аддаленага рэпазітара"
1525
1525
1526 msgid "Pull Changes from Remote Repository"
1526 msgid "Pull Changes from Remote Repository"
1527 msgstr "Занесці змены з аддаленага рэпазітара"
1527 msgstr "Занесці змены з аддаленага рэпазітара"
1528
1528
1529 msgid "Confirm to pull changes from remote repository."
1529 msgid "Confirm to pull changes from remote repository."
1530 msgstr "Пацвердзіце спампоўку змен з аддаленага рэпазітара."
1530 msgstr "Пацвердзіце спампоўку змен з аддаленага рэпазітара."
1531
1531
1532 msgid "Remote repository"
1532 msgid "Remote repository"
1533 msgstr "Аддалены рэпазітар"
1533 msgstr "Аддалены рэпазітар"
1534
1534
1535 msgid "Change owner of this repository."
1535 msgid "Change owner of this repository."
1536 msgstr "Змяніць уладальніка рэпазітара."
1536 msgstr "Змяніць уладальніка рэпазітара."
1537
1537
1538 msgid "Reset Statistics"
1538 msgid "Reset Statistics"
1539 msgstr "Скід статыстыкі"
1539 msgstr "Скід статыстыкі"
1540
1540
1541 msgid "Confirm to remove current statistics."
1541 msgid "Confirm to remove current statistics."
1542 msgstr "Пацвердзіце скіданне статыстыкі."
1542 msgstr "Пацвердзіце скіданне статыстыкі."
1543
1543
1544 msgid "Repositories Administration"
1544 msgid "Repositories Administration"
1545 msgstr "Адміністраванне рэпазітароў"
1545 msgstr "Адміністраванне рэпазітароў"
1546
1546
1547 msgid "State"
1547 msgid "State"
1548 msgstr "Стан"
1548 msgstr "Стан"
1549
1549
1550 msgid "Settings Administration"
1550 msgid "Settings Administration"
1551 msgstr "Адміністраванне налад"
1551 msgstr "Адміністраванне налад"
1552
1552
1553 msgid "Hooks"
1553 msgid "Hooks"
1554 msgstr "Хукі"
1554 msgstr "Хукі"
1555
1555
1556 msgid "Full Text Search"
1556 msgid "Full Text Search"
1557 msgstr "Паўнатэкставы пошук"
1557 msgstr "Паўнатэкставы пошук"
1558
1558
1559 msgid "System Info"
1559 msgid "System Info"
1560 msgstr "Інфармацыя пра сістэму"
1560 msgstr "Інфармацыя пра сістэму"
1561
1561
1562 msgid "Send test email to"
1562 msgid "Send test email to"
1563 msgstr "Адаслаць тэставае паведамленне на"
1563 msgstr "Адаслаць тэставае паведамленне на"
1564
1564
1565 msgid "Send"
1565 msgid "Send"
1566 msgstr "Адправіць"
1566 msgstr "Адправіць"
1567
1567
1568 msgid "Site branding"
1568 msgid "Site branding"
1569 msgstr "Брэндынг сайта"
1569 msgstr "Брэндынг сайта"
1570
1570
1571 msgid "HTTP authentication realm"
1571 msgid "HTTP authentication realm"
1572 msgstr "Прывітанне для HTTP-аўтэнтыфікацыі"
1572 msgstr "Прывітанне для HTTP-аўтэнтыфікацыі"
1573
1573
1574 msgid "Save Settings"
1574 msgid "Save Settings"
1575 msgstr "Захаваць налады"
1575 msgstr "Захаваць налады"
1576
1576
1577 msgid "Failed to remove hook"
1577 msgid "Failed to remove hook"
1578 msgstr "Не атрымалася выдаліць хук"
1578 msgstr "Не атрымалася выдаліць хук"
1579
1579
1580 msgid "Delete records of missing repositories"
1580 msgid "Delete records of missing repositories"
1581 msgstr "Сцерці запісы пра выдаленыя рэпазітары"
1581 msgstr "Сцерці запісы пра выдаленыя рэпазітары"
1582
1582
1583 msgid "Invalidate cache for all repositories"
1583 msgid "Invalidate cache for all repositories"
1584 msgstr "Скінуць кэш для ўсіх рэпазітароў"
1584 msgstr "Скінуць кэш для ўсіх рэпазітароў"
1585
1585
1586 msgid "Check this to reload data and clear cache keys for all repositories."
1586 msgid "Check this to reload data and clear cache keys for all repositories."
1587 msgstr "Скінуць кэш для ўсіх рэпазітароў."
1587 msgstr "Скінуць кэш для ўсіх рэпазітароў."
1588
1588
1589 msgid "Index build option"
1589 msgid "Index build option"
1590 msgstr "Опцыі стварэння індэксу"
1590 msgstr "Опцыі стварэння індэксу"
1591
1591
1592 msgid "Build from scratch"
1592 msgid "Build from scratch"
1593 msgstr "Зборка з нуля"
1593 msgstr "Зборка з нуля"
1594
1594
1595 msgid "Reindex"
1595 msgid "Reindex"
1596 msgstr "Перабудаваць індэкс"
1596 msgstr "Перабудаваць індэкс"
1597
1597
1598 msgid "Checking for updates..."
1598 msgid "Checking for updates..."
1599 msgstr "Праверка абнаўленняў..."
1599 msgstr "Праверка абнаўленняў..."
1600
1600
1601 msgid "Kallithea version"
1601 msgid "Kallithea version"
1602 msgstr "Версія Kallithea"
1602 msgstr "Версія Kallithea"
1603
1603
1604 msgid "Platform"
1604 msgid "Platform"
1605 msgstr "Платформа"
1605 msgstr "Платформа"
1606
1606
1607 msgid "Git version"
1607 msgid "Git version"
1608 msgstr "Версія Git"
1608 msgstr "Версія Git"
1609
1609
1610 msgid "Show repository size after push"
1610 msgid "Show repository size after push"
1611 msgstr "Паказваць памер рэпазітара пасля адпраўкі"
1611 msgstr "Паказваць памер рэпазітара пасля адпраўкі"
1612
1612
1613 msgid "Update repository after push (hg update)"
1613 msgid "Update repository after push (hg update)"
1614 msgstr "Абнаўляць рэпазітар пасля адпраўкі (hg update)"
1614 msgstr "Абнаўляць рэпазітар пасля адпраўкі (hg update)"
1615
1615
1616 msgid "Mercurial extensions"
1616 msgid "Mercurial extensions"
1617 msgstr "Пашырэнні Mercurial"
1617 msgstr "Пашырэнні Mercurial"
1618
1618
1619 msgid "Enable largefiles extension"
1619 msgid "Enable largefiles extension"
1620 msgstr "Уключыць падтрымку вялікіх файлаў"
1620 msgstr "Уключыць падтрымку вялікіх файлаў"
1621
1621
1622 msgid "Location of repositories"
1622 msgid "Location of repositories"
1623 msgstr "Месцазнаходжанне рэпазітароў"
1623 msgstr "Месцазнаходжанне рэпазітароў"
1624
1624
1625 msgid ""
1625 msgid ""
1626 "Click to unlock. You must restart Kallithea in order to make this setting "
1626 "Click to unlock. You must restart Kallithea in order to make this setting "
1627 "take effect."
1627 "take effect."
1628 msgstr ""
1628 msgstr ""
1629 "Націсніце для разблакавання. Змены набудуць моц пасля перазагрузкі "
1629 "Націсніце для разблакавання. Змены набудуць моц пасля перазагрузкі "
1630 "Kallithea."
1630 "Kallithea."
1631
1631
1632 msgid "General"
1632 msgid "General"
1633 msgstr "Галоўнае"
1633 msgstr "Галоўнае"
1634
1634
1635 msgid "Use repository extra fields"
1635 msgid "Use repository extra fields"
1636 msgstr "Выкарыстоўваць дадатковыя палі ў рэпазітарах"
1636 msgstr "Выкарыстоўваць дадатковыя палі ў рэпазітарах"
1637
1637
1638 msgid "Allows storing additional customized fields per repository."
1638 msgid "Allows storing additional customized fields per repository."
1639 msgstr "Дазваляе захоўваць дадатковыя палі ў рэпазітарах."
1639 msgstr "Дазваляе захоўваць дадатковыя палі ў рэпазітарах."
1640
1640
1641 msgid "Show Kallithea version"
1641 msgid "Show Kallithea version"
1642 msgstr "Адлюстроўваць версію Kallithea"
1642 msgstr "Адлюстроўваць версію Kallithea"
1643
1643
1644 msgid ""
1644 msgid ""
1645 "Shows or hides a version number of Kallithea displayed in the footer."
1645 "Shows or hides a version number of Kallithea displayed in the footer."
1646 msgstr "Паказвае або хавае нумар версіі Kallithea ў ніжняй частцы старонкі."
1646 msgstr "Паказвае або хавае нумар версіі Kallithea ў ніжняй частцы старонкі."
1647
1647
1648 msgid "Icons"
1648 msgid "Icons"
1649 msgstr "Абразкі"
1649 msgstr "Абразкі"
1650
1650
1651 msgid "Show public repository icon on repositories"
1651 msgid "Show public repository icon on repositories"
1652 msgstr "Паказваць абразкі публічных рэпазітароў"
1652 msgstr "Паказваць абразкі публічных рэпазітароў"
1653
1653
1654 msgid "Show private repository icon on repositories"
1654 msgid "Show private repository icon on repositories"
1655 msgstr "Паказваць абразкі прыватных рэпазітароў"
1655 msgstr "Паказваць абразкі прыватных рэпазітароў"
1656
1656
1657 msgid "Show public/private icons next to repository names."
1657 msgid "Show public/private icons next to repository names."
1658 msgstr "Паказваць абразкі публічных рэпазітароў."
1658 msgstr "Паказваць абразкі публічных рэпазітароў."
1659
1659
1660 msgid "Meta Tagging"
1660 msgid "Meta Tagging"
1661 msgstr "Метатэгаванне"
1661 msgstr "Метатэгаванне"
1662
1662
1663 msgid "Add user group"
1663 msgid "Add user group"
1664 msgstr "Дадаць групу карыстальнікаў"
1664 msgstr "Дадаць групу карыстальнікаў"
1665
1665
1666 msgid "User Groups"
1666 msgid "User Groups"
1667 msgstr "Групы карыстальнікаў"
1667 msgstr "Групы карыстальнікаў"
1668
1668
1669 msgid "Add User Group"
1669 msgid "Add User Group"
1670 msgstr "Дадаць групу карыстальнікаў"
1670 msgstr "Дадаць групу карыстальнікаў"
1671
1671
1672 msgid "Short, optional description for this user group."
1672 msgid "Short, optional description for this user group."
1673 msgstr "Кароткае дадатковае апісанне для гэтай групы карыстальнікаў."
1673 msgstr "Кароткае дадатковае апісанне для гэтай групы карыстальнікаў."
1674
1674
1675 msgid "Active"
1675 msgid "Active"
1676 msgstr "Актыўны"
1676 msgstr "Актыўны"
1677
1677
1678 msgid "Show Members"
1678 msgid "Show Members"
1679 msgstr "Паказаць удзельнікаў"
1679 msgstr "Паказаць удзельнікаў"
1680
1680
1681 msgid "Members"
1681 msgid "Members"
1682 msgstr "Удзельнікі"
1682 msgstr "Удзельнікі"
1683
1683
1684 msgid "Confirm to delete this user group: %s"
1684 msgid "Confirm to delete this user group: %s"
1685 msgstr "Пацвердзіце выдаленне наступнай групы карыстальнікаў: %s"
1685 msgstr "Пацвердзіце выдаленне наступнай групы карыстальнікаў: %s"
1686
1686
1687 msgid "Delete this user group"
1687 msgid "Delete this user group"
1688 msgstr "Выдаліць гэтую групу карыстальнікаў"
1688 msgstr "Выдаліць гэтую групу карыстальнікаў"
1689
1689
1690 msgid "No members yet"
1690 msgid "No members yet"
1691 msgstr "Няма ўдзельнікаў"
1691 msgstr "Няма ўдзельнікаў"
1692
1692
1693 msgid "Chosen group members"
1693 msgid "Chosen group members"
1694 msgstr "Абраныя ўдзельнікі групы"
1694 msgstr "Абраныя ўдзельнікі групы"
1695
1695
1696 msgid "Available members"
1696 msgid "Available members"
1697 msgstr "Даступныя ўдзельнікі"
1697 msgstr "Даступныя ўдзельнікі"
1698
1698
1699 msgid "User Groups Administration"
1699 msgid "User Groups Administration"
1700 msgstr "Адміністраванне груп карыстальнікаў"
1700 msgstr "Адміністраванне груп карыстальнікаў"
1701
1701
1702 msgid "Add user"
1702 msgid "Add user"
1703 msgstr "Дадаць карыстальніка"
1703 msgstr "Дадаць карыстальніка"
1704
1704
1705 msgid "Users"
1705 msgid "Users"
1706 msgstr "Карыстальнікі"
1706 msgstr "Карыстальнікі"
1707
1707
1708 msgid "Add User"
1708 msgid "Add User"
1709 msgstr "Дадаць карыстальніка"
1709 msgstr "Дадаць карыстальніка"
1710
1710
1711 msgid "Password confirmation"
1711 msgid "Password confirmation"
1712 msgstr "Пацверджанне пароля"
1712 msgstr "Пацверджанне пароля"
1713
1713
1714 msgid "User: %s"
1714 msgid "User: %s"
1715 msgstr "Карыстальнік: %s"
1715 msgstr "Карыстальнік: %s"
1716
1716
1717 msgid "Last Login"
1717 msgid "Last Login"
1718 msgstr "Апошні ўваход"
1718 msgstr "Апошні ўваход"
1719
1719
1720 msgid "Confirm to delete this user: %s"
1720 msgid "Confirm to delete this user: %s"
1721 msgstr "Пацвердзіце выдаленне карыстальніка %s"
1721 msgstr "Пацвердзіце выдаленне карыстальніка %s"
1722
1722
1723 msgid "Delete this user"
1723 msgid "Delete this user"
1724 msgstr "Выдаліць гэтага карыстальніка"
1724 msgstr "Выдаліць гэтага карыстальніка"
1725
1725
1726 msgid "New password confirmation"
1726 msgid "New password confirmation"
1727 msgstr "Пацвердзіце новы пароль"
1727 msgstr "Пацвердзіце новы пароль"
1728
1728
1729 msgid "Users Administration"
1729 msgid "Users Administration"
1730 msgstr "Адміністраванне карыстальнікаў"
1730 msgstr "Адміністраванне карыстальнікаў"
1731
1731
1732 msgid "Server instance: %s"
1732 msgid "Server instance: %s"
1733 msgstr "Асобнік сервера: %s"
1733 msgstr "Асобнік сервера: %s"
1734
1734
1735 msgid "Support"
1735 msgid "Support"
1736 msgstr "Падтрымка"
1736 msgstr "Падтрымка"
1737
1737
1738 msgid "Mercurial repository"
1738 msgid "Mercurial repository"
1739 msgstr "Рэпазітар Mercurial"
1739 msgstr "Рэпазітар Mercurial"
1740
1740
1741 msgid "Git repository"
1741 msgid "Git repository"
1742 msgstr "Git рэпазітар"
1742 msgstr "Git рэпазітар"
1743
1743
1744 msgid "Create Fork"
1744 msgid "Create Fork"
1745 msgstr "Стварыць форк"
1745 msgstr "Стварыць форк"
1746
1746
1747 msgid "Summary"
1747 msgid "Summary"
1748 msgstr "Агульныя звесткі"
1748 msgstr "Агульныя звесткі"
1749
1749
1750 msgid "Changelog"
1750 msgid "Changelog"
1751 msgstr "Гісторыя змен"
1751 msgstr "Гісторыя змен"
1752
1752
1753 msgid "Files"
1753 msgid "Files"
1754 msgstr "Файлы"
1754 msgstr "Файлы"
1755
1755
1756 msgid "Show Pull Requests for %s"
1756 msgid "Show Pull Requests for %s"
1757 msgstr "Паказаць pull-запыты для %s"
1757 msgstr "Паказаць pull-запыты для %s"
1758
1758
1759 msgid "Pull Requests"
1759 msgid "Pull Requests"
1760 msgstr "Pull-запыты"
1760 msgstr "Pull-запыты"
1761
1761
1762 msgid "Options"
1762 msgid "Options"
1763 msgstr "Опцыі"
1763 msgstr "Опцыі"
1764
1764
1765 msgid "Compare Fork"
1765 msgid "Compare Fork"
1766 msgstr "Параўнаць форк"
1766 msgstr "Параўнаць форк"
1767
1767
1768 msgid "Compare"
1768 msgid "Compare"
1769 msgstr "Параўнаць"
1769 msgstr "Параўнаць"
1770
1770
1771 msgid "Search"
1771 msgid "Search"
1772 msgstr "Пошук"
1772 msgstr "Пошук"
1773
1773
1774 msgid "Follow"
1774 msgid "Follow"
1775 msgstr "Назіраць"
1775 msgstr "Назіраць"
1776
1776
1777 msgid "Unfollow"
1777 msgid "Unfollow"
1778 msgstr "Не назіраць"
1778 msgstr "Не назіраць"
1779
1779
1780 msgid "Fork"
1780 msgid "Fork"
1781 msgstr "Форк"
1781 msgstr "Форк"
1782
1782
1783 msgid "Create Pull Request"
1783 msgid "Create Pull Request"
1784 msgstr "Стварыць pull-запыт"
1784 msgstr "Стварыць pull-запыт"
1785
1785
1786 msgid "Switch To"
1786 msgid "Switch To"
1787 msgstr "Пераключыцца на"
1787 msgstr "Пераключыцца на"
1788
1788
1789 msgid "No matches found"
1789 msgid "No matches found"
1790 msgstr "Супадзенняў не знойдзена"
1790 msgstr "Супадзенняў не знойдзена"
1791
1791
1792 msgid "Show recent activity"
1792 msgid "Show recent activity"
1793 msgstr "Паказаць апошнюю актыўнасць"
1793 msgstr "Паказаць апошнюю актыўнасць"
1794
1794
1795 msgid "Public journal"
1795 msgid "Public journal"
1796 msgstr "Агульнадаступны журнал"
1796 msgstr "Агульнадаступны журнал"
1797
1797
1798 msgid "Show public gists"
1798 msgid "Show public gists"
1799 msgstr "Паказаць публічныя запісы"
1799 msgstr "Паказаць публічныя запісы"
1800
1800
1801 msgid "Gists"
1801 msgid "Gists"
1802 msgstr "Gist"
1802 msgstr "Gist"
1803
1803
1804 msgid "All Public Gists"
1804 msgid "All Public Gists"
1805 msgstr "Усе публічныя Gist-запісы"
1805 msgstr "Усе публічныя Gist-запісы"
1806
1806
1807 msgid "My Public Gists"
1807 msgid "My Public Gists"
1808 msgstr "Мае публічныя Gist-запісы"
1808 msgstr "Мае публічныя Gist-запісы"
1809
1809
1810 msgid "My Private Gists"
1810 msgid "My Private Gists"
1811 msgstr "Мае прыватныя Gist-запісы"
1811 msgstr "Мае прыватныя Gist-запісы"
1812
1812
1813 msgid "Search in repositories"
1813 msgid "Search in repositories"
1814 msgstr "Пошук па рэпазітарах"
1814 msgstr "Пошук па рэпазітарах"
1815
1815
1816 msgid "My Pull Requests"
1816 msgid "My Pull Requests"
1817 msgstr "Мае pull-запыты"
1817 msgstr "Мае pull-запыты"
1818
1818
1819 msgid "Not Logged In"
1819 msgid "Not Logged In"
1820 msgstr "Не аўтарызаваны"
1820 msgstr "Не аўтарызаваны"
1821
1821
1822 msgid "Login to Your Account"
1822 msgid "Login to Your Account"
1823 msgstr "Аўтарызавацца"
1823 msgstr "Аўтарызавацца"
1824
1824
1825 msgid "Log Out"
1825 msgid "Log Out"
1826 msgstr "Выйсці"
1826 msgstr "Выйсці"
1827
1827
1828 msgid "Create repositories"
1828 msgid "Create repositories"
1829 msgstr "Стварыць рэпазітары"
1829 msgstr "Стварыць рэпазітары"
1830
1830
1831 msgid "Select this option to allow repository creation for this user"
1831 msgid "Select this option to allow repository creation for this user"
1832 msgstr "Опцыя дазваляе карыстальніку ствараць рэпазітары"
1832 msgstr "Опцыя дазваляе карыстальніку ствараць рэпазітары"
1833
1833
1834 msgid "Create user groups"
1834 msgid "Create user groups"
1835 msgstr "Ствараць групы карыстальнікаў"
1835 msgstr "Ствараць групы карыстальнікаў"
1836
1836
1837 msgid "Select this option to allow user group creation for this user"
1837 msgid "Select this option to allow user group creation for this user"
1838 msgstr "Опцыя дазваляе карыстальніку ствараць групы карыстальнікаў"
1838 msgstr "Опцыя дазваляе карыстальніку ствараць групы карыстальнікаў"
1839
1839
1840 msgid "Fork repositories"
1840 msgid "Fork repositories"
1841 msgstr "Ствараць fork ад рэпазітароў"
1841 msgstr "Ствараць fork ад рэпазітароў"
1842
1842
1843 msgid "Select this option to allow repository forking for this user"
1843 msgid "Select this option to allow repository forking for this user"
1844 msgstr ""
1844 msgstr ""
1845 "Абярыце гэту опцыю каб дазволіць дадзенаму карыстальніку ствараць форкі "
1845 "Абярыце гэту опцыю каб дазволіць дадзенаму карыстальніку ствараць форкі "
1846 "рэпазітароў"
1846 "рэпазітароў"
1847
1847
1848 msgid "Show"
1848 msgid "Show"
1849 msgstr "Паказаць"
1849 msgstr "Паказаць"
1850
1850
1851 msgid "No permissions defined yet"
1851 msgid "No permissions defined yet"
1852 msgstr "Прывілеі яшчэ не прызначаныя"
1852 msgstr "Прывілеі яшчэ не прызначаныя"
1853
1853
1854 msgid "Permission"
1854 msgid "Permission"
1855 msgstr "Прывілей"
1855 msgstr "Прывілей"
1856
1856
1857 msgid "Edit Permission"
1857 msgid "Edit Permission"
1858 msgstr "Змяніць прывілеі"
1858 msgstr "Змяніць прывілеі"
1859
1859
1860 msgid "Submitting ..."
1860 msgid "Submitting ..."
1861 msgstr "Адпраўка..."
1861 msgstr "Адпраўка..."
1862
1862
1863 msgid "Add Another Comment"
1863 msgid "Add Another Comment"
1864 msgstr "Дадаць яшчэ адзін каментар"
1864 msgstr "Дадаць яшчэ адзін каментар"
1865
1865
1866 msgid "Stop following this repository"
1866 msgid "Stop following this repository"
1867 msgstr "Адмяніць назіранне за рэпазітаром"
1867 msgstr "Адмяніць назіранне за рэпазітаром"
1868
1868
1869 msgid "Start following this repository"
1869 msgid "Start following this repository"
1870 msgstr "Назіраць за рэпазітаром"
1870 msgstr "Назіраць за рэпазітаром"
1871
1871
1872 msgid "Group"
1872 msgid "Group"
1873 msgstr "Група"
1873 msgstr "Група"
1874
1874
1875 msgid "Loading ..."
1875 msgid "Loading ..."
1876 msgstr "Загрузка..."
1876 msgstr "Загрузка..."
1877
1877
1878 msgid "loading ..."
1878 msgid "loading ..."
1879 msgstr "загрузка..."
1879 msgstr "загрузка..."
1880
1880
1881 msgid "Search truncated"
1881 msgid "Search truncated"
1882 msgstr "Пошук усечаны"
1882 msgstr "Пошук усечаны"
1883
1883
1884 msgid "No matching files"
1884 msgid "No matching files"
1885 msgstr "Няма супадзенняў"
1885 msgstr "Няма супадзенняў"
1886
1886
1887 msgid "Open New Pull Request from {0}"
1887 msgid "Open New Pull Request from {0}"
1888 msgstr "Стварыць новы pull-запыт з {0}"
1888 msgstr "Стварыць новы pull-запыт з {0}"
1889
1889
1890 msgid "Open New Pull Request for {0}"
1890 msgid "Open New Pull Request for {0}"
1891 msgstr "Стварыць новы pull-запыт для {0}"
1891 msgstr "Стварыць новы pull-запыт для {0}"
1892
1892
1893 msgid "Show Selected Changesets {0}"
1893 msgid "Show Selected Changesets {0}"
1894 msgstr "Паказаць выбраныя наборы змен {0}"
1894 msgstr "Паказаць выбраныя наборы змен {0}"
1895
1895
1896 msgid "Selection Link"
1896 msgid "Selection Link"
1897 msgstr "Спасылка выбару"
1897 msgstr "Спасылка выбару"
1898
1898
1899 msgid "Collapse Diff"
1899 msgid "Collapse Diff"
1900 msgstr "Згарнуць параўнанне"
1900 msgstr "Згарнуць параўнанне"
1901
1901
1902 msgid "Expand Diff"
1902 msgid "Expand Diff"
1903 msgstr "Разгарнуць параўнанне"
1903 msgstr "Разгарнуць параўнанне"
1904
1904
1905 msgid "No revisions"
1905 msgid "No revisions"
1906 msgstr "Няма рэвізій"
1906 msgstr "Няма рэвізій"
1907
1907
1908 msgid "Failed to revoke permission"
1908 msgid "Failed to revoke permission"
1909 msgstr "Не атрымалася адклікаць прывілеі"
1909 msgstr "Не атрымалася адклікаць прывілеі"
1910
1910
1911 msgid "Confirm to revoke permission for {0}: {1}?"
1911 msgid "Confirm to revoke permission for {0}: {1}?"
1912 msgstr "Пацвердзіце выдаленне прывілею для {0}: {1}?"
1912 msgstr "Пацвердзіце выдаленне прывілею для {0}: {1}?"
1913
1913
1914 msgid "Select changeset"
1914 msgid "Select changeset"
1915 msgstr "Выбраць набор змен"
1915 msgstr "Выбраць набор змен"
1916
1916
1917 msgid "Specify changeset"
1917 msgid "Specify changeset"
1918 msgstr "Выбраць набор змен"
1918 msgstr "Выбраць набор змен"
1919
1919
1920 msgid "Click to sort ascending"
1920 msgid "Click to sort ascending"
1921 msgstr "Па ўзрастанні"
1921 msgstr "Па ўзрастанні"
1922
1922
1923 msgid "Click to sort descending"
1923 msgid "Click to sort descending"
1924 msgstr "Па змяншэнні"
1924 msgstr "Па змяншэнні"
1925
1925
1926 msgid "No records found."
1926 msgid "No records found."
1927 msgstr "Запісы не знойдзеныя."
1927 msgstr "Запісы не знойдзеныя."
1928
1928
1929 msgid "Data error."
1929 msgid "Data error."
1930 msgstr "Памылка дадзеных."
1930 msgstr "Памылка дадзеных."
1931
1931
1932 msgid "Loading..."
1932 msgid "Loading..."
1933 msgstr "Загрузка..."
1933 msgstr "Загрузка..."
1934
1934
1935 msgid "%s Changelog"
1935 msgid "%s Changelog"
1936 msgstr "Логі змен %s"
1936 msgstr "Логі змен %s"
1937
1937
1938 msgid "showing %d out of %d revision"
1938 msgid "showing %d out of %d revision"
1939 msgid_plural "showing %d out of %d revisions"
1939 msgid_plural "showing %d out of %d revisions"
1940 msgstr[0] "Паказана %d з %d рэвізій"
1940 msgstr[0] "Паказана %d з %d рэвізій"
1941 msgstr[1] "Паказаны %d з %d рэвізій"
1941 msgstr[1] "Паказаны %d з %d рэвізій"
1942 msgstr[2] "Паказаны %d з %d рэвізій"
1942 msgstr[2] "Паказаны %d з %d рэвізій"
1943
1943
1944 msgid "Clear selection"
1944 msgid "Clear selection"
1945 msgstr "Ачысціць выбар"
1945 msgstr "Ачысціць выбар"
1946
1946
1947 msgid "Go to tip of repository"
1947 msgid "Go to tip of repository"
1948 msgstr "Перайсці на верхавіну рэпазітара"
1948 msgstr "Перайсці на верхавіну рэпазітара"
1949
1949
1950 msgid "Compare fork with %s"
1950 msgid "Compare fork with %s"
1951 msgstr "Параўнаць fork з %s"
1951 msgstr "Параўнаць fork з %s"
1952
1952
1953 msgid "Compare fork with parent repository (%s)"
1953 msgid "Compare fork with parent repository (%s)"
1954 msgstr "Параўнаць форк з бацькоўскім рэпазітаром (%s)"
1954 msgstr "Параўнаць форк з бацькоўскім рэпазітаром (%s)"
1955
1955
1956 msgid "Branch filter:"
1956 msgid "Branch filter:"
1957 msgstr "Адфільтраваць галіну:"
1957 msgstr "Адфільтраваць галіну:"
1958
1958
1959 msgid "There are no changes yet"
1959 msgid "There are no changes yet"
1960 msgstr "Змен яшчэ няма"
1960 msgstr "Змен яшчэ няма"
1961
1961
1962 msgid "Removed"
1962 msgid "Removed"
1963 msgstr "Выдалена"
1963 msgstr "Выдалена"
1964
1964
1965 msgid "Changed"
1965 msgid "Changed"
1966 msgstr "Зменена"
1966 msgstr "Зменена"
1967
1967
1968 msgid "Added"
1968 msgid "Added"
1969 msgstr "Дададзена"
1969 msgstr "Дададзена"
1970
1970
1971 msgid "Affected %s files"
1971 msgid "Affected %s files"
1972 msgstr "Закранае %s файлаў"
1972 msgstr "Закранае %s файлаў"
1973
1973
1974 msgid ""
1974 msgid ""
1975 "Changeset status: %s by %s\n"
1975 "Changeset status: %s by %s\n"
1976 "Click to open associated pull request %s"
1976 "Click to open associated pull request %s"
1977 msgstr ""
1977 msgstr ""
1978 "Статус набору змен: %s ад %s\n"
1978 "Статус набору змен: %s ад %s\n"
1979 "Клікніце, каб адкрыць адпаведны pull-запыт %s"
1979 "Клікніце, каб адкрыць адпаведны pull-запыт %s"
1980
1980
1981 msgid "Changeset status: %s by %s"
1981 msgid "Changeset status: %s by %s"
1982 msgstr "Статус набору змен: %s ад %s"
1982 msgstr "Статус набору змен: %s ад %s"
1983
1983
1984 msgid "Expand commit message"
1984 msgid "Expand commit message"
1985 msgstr "Разгарнуць паведамленне"
1985 msgstr "Разгарнуць паведамленне"
1986
1986
1987 msgid "Bookmark %s"
1987 msgid "Bookmark %s"
1988 msgstr "Закладка %s"
1988 msgstr "Закладка %s"
1989
1989
1990 msgid "Tag %s"
1990 msgid "Tag %s"
1991 msgstr "Тэг %s"
1991 msgstr "Тэг %s"
1992
1992
1993 msgid "Branch %s"
1993 msgid "Branch %s"
1994 msgstr "Галіна %s"
1994 msgstr "Галіна %s"
1995
1995
1996 msgid "%s Changeset"
1996 msgid "%s Changeset"
1997 msgstr "%s Змены"
1997 msgstr "%s Змены"
1998
1998
1999 msgid "Changeset status"
1999 msgid "Changeset status"
2000 msgstr "Статус змен"
2000 msgstr "Статус змен"
2001
2001
2002 msgid "Raw diff"
2002 msgid "Raw diff"
2003 msgstr "Адлюстраваць у фармаце diff"
2003 msgstr "Адлюстраваць у фармаце diff"
2004
2004
2005 msgid "Patch diff"
2005 msgid "Patch diff"
2006 msgstr "Patch diff"
2006 msgstr "Patch diff"
2007
2007
2008 msgid "Download diff"
2008 msgid "Download diff"
2009 msgstr "Спампаваць diff"
2009 msgstr "Спампаваць diff"
2010
2010
2011 msgid "Grafted from:"
2011 msgid "Grafted from:"
2012 msgstr "Перанесена з:"
2012 msgstr "Перанесена з:"
2013
2013
2014 msgid "Replaced by:"
2014 msgid "Replaced by:"
2015 msgstr "Заменена:"
2015 msgstr "Заменена:"
2016
2016
2017 msgid "Preceded by:"
2017 msgid "Preceded by:"
2018 msgstr "Замяняе:"
2018 msgstr "Замяняе:"
2019
2019
2020 msgid "%s file changed"
2020 msgid "%s file changed"
2021 msgid_plural "%s files changed"
2021 msgid_plural "%s files changed"
2022 msgstr[0] "%s файл зменены"
2022 msgstr[0] "%s файл зменены"
2023 msgstr[1] "%s файлы зменена"
2023 msgstr[1] "%s файлы зменена"
2024 msgstr[2] "%s файлаў зменена"
2024 msgstr[2] "%s файлаў зменена"
2025
2025
2026 msgid "%s file changed with %s insertions and %s deletions"
2026 msgid "%s file changed with %s insertions and %s deletions"
2027 msgid_plural "%s files changed with %s insertions and %s deletions"
2027 msgid_plural "%s files changed with %s insertions and %s deletions"
2028 msgstr[0] "%s файл зменены: %s даданне, %s выдаленне"
2028 msgstr[0] "%s файл зменены: %s даданне, %s выдаленне"
2029 msgstr[1] "%s файлы зменена: %s даданні, %s выдаленні"
2029 msgstr[1] "%s файлы зменена: %s даданні, %s выдаленні"
2030 msgstr[2] "%s файлаў зменена: %s даданняў, %s выдаленняў"
2030 msgstr[2] "%s файлаў зменена: %s даданняў, %s выдаленняў"
2031
2031
2032 msgid "Show full diff anyway"
2032 msgid "Show full diff anyway"
2033 msgstr "Паказаць поўны diff"
2033 msgstr "Паказаць поўны diff"
2034
2034
2035 msgid "on pull request"
2035 msgid "on pull request"
2036 msgstr "у pull-запыце"
2036 msgstr "у pull-запыце"
2037
2037
2038 msgid "No title"
2038 msgid "No title"
2039 msgstr "Няма загалоўка"
2039 msgstr "Няма загалоўка"
2040
2040
2041 msgid "on this changeset"
2041 msgid "on this changeset"
2042 msgstr "на змене"
2042 msgstr "на змене"
2043
2043
2044 msgid "Delete comment?"
2044 msgid "Delete comment?"
2045 msgstr "Выдаліць каментар?"
2045 msgstr "Выдаліць каментар?"
2046
2046
2047 msgid "Status change"
2047 msgid "Status change"
2048 msgstr "Змена статусу"
2048 msgstr "Змена статусу"
2049
2049
2050 msgid "Set changeset status"
2050 msgid "Set changeset status"
2051 msgstr "Змяніць статус рэвізіі"
2051 msgstr "Змяніць статус рэвізіі"
2052
2052
2053 msgid "No change"
2053 msgid "No change"
2054 msgstr "Без змен"
2054 msgstr "Без змен"
2055
2055
2056 msgid "Finish pull request"
2056 msgid "Finish pull request"
2057 msgstr "Завяршыць pull-запыт"
2057 msgstr "Завяршыць pull-запыт"
2058
2058
2059 msgid "Close"
2059 msgid "Close"
2060 msgstr "Закрыць"
2060 msgstr "Закрыць"
2061
2061
2062 msgid "Comment"
2062 msgid "Comment"
2063 msgstr "Каментаваць"
2063 msgstr "Каментаваць"
2064
2064
2065 msgid "You need to be logged in to comment."
2065 msgid "You need to be logged in to comment."
2066 msgstr "Вам неабходна аўтарызавацца, каб пакідаць каментары."
2066 msgstr "Вам неабходна аўтарызавацца, каб пакідаць каментары."
2067
2067
2068 msgid "Login now"
2068 msgid "Login now"
2069 msgstr "Аўтарызавацца зараз"
2069 msgstr "Аўтарызавацца зараз"
2070
2070
2071 msgid "Hide"
2071 msgid "Hide"
2072 msgstr "Схаваць"
2072 msgstr "Схаваць"
2073
2073
2074 msgid "%d comment"
2074 msgid "%d comment"
2075 msgid_plural "%d comments"
2075 msgid_plural "%d comments"
2076 msgstr[0] "%d каментар"
2076 msgstr[0] "%d каментар"
2077 msgstr[1] "%d каментары"
2077 msgstr[1] "%d каментары"
2078 msgstr[2] "%d каментароў"
2078 msgstr[2] "%d каментароў"
2079
2079
2080 msgid "%s Changesets"
2080 msgid "%s Changesets"
2081 msgstr "%s Змены"
2081 msgstr "%s Змены"
2082
2082
2083 msgid "Changeset status: %s"
2083 msgid "Changeset status: %s"
2084 msgstr "Статус набору змен: %s"
2084 msgstr "Статус набору змен: %s"
2085
2085
2086 msgid "Files affected"
2086 msgid "Files affected"
2087 msgstr "Закранутыя файлы"
2087 msgstr "Закранутыя файлы"
2088
2088
2089 msgid "Deleted"
2089 msgid "Deleted"
2090 msgstr "Выдалены"
2090 msgstr "Выдалены"
2091
2091
2092 msgid "Renamed"
2092 msgid "Renamed"
2093 msgstr "Пераназваны"
2093 msgstr "Пераназваны"
2094
2094
2095 msgid "Show full diff for this file"
2095 msgid "Show full diff for this file"
2096 msgstr "Паказаць поўны diff для гэтага файла"
2096 msgstr "Паказаць поўны diff для гэтага файла"
2097
2097
2098 msgid "Show full side-by-side diff for this file"
2098 msgid "Show full side-by-side diff for this file"
2099 msgstr "Паказаць поўны diff для гэтага файла"
2099 msgstr "Паказаць поўны diff для гэтага файла"
2100
2100
2101 msgid "Show inline comments"
2101 msgid "Show inline comments"
2102 msgstr "Паказаць каментары ў радках"
2102 msgstr "Паказаць каментары ў радках"
2103
2103
2104 msgid "No changesets"
2104 msgid "No changesets"
2105 msgstr "Няма змен"
2105 msgstr "Няма змен"
2106
2106
2107 msgid "Show merge diff"
2107 msgid "Show merge diff"
2108 msgstr "Паказаць merge diff"
2108 msgstr "Паказаць merge diff"
2109
2109
2110 msgid "is"
2110 msgid "is"
2111 msgstr "адстае на"
2111 msgstr "адстае на"
2112
2112
2113 msgid "%s changesets"
2113 msgid "%s changesets"
2114 msgstr "%s змен"
2114 msgstr "%s змен"
2115
2115
2116 msgid "behind"
2116 msgid "behind"
2117 msgstr "ад"
2117 msgstr "ад"
2118
2118
2119 msgid "%s Compare"
2119 msgid "%s Compare"
2120 msgstr "%s Параўнаць"
2120 msgstr "%s Параўнаць"
2121
2121
2122 msgid "Compare Revisions"
2122 msgid "Compare Revisions"
2123 msgstr "Параўнаць рэвізіі"
2123 msgstr "Параўнаць рэвізіі"
2124
2124
2125 msgid "Showing %s commit"
2125 msgid "Showing %s commit"
2126 msgid_plural "Showing %s commits"
2126 msgid_plural "Showing %s commits"
2127 msgstr[0] "Паказаць %s commit"
2127 msgstr[0] "Паказаць %s commit"
2128 msgstr[1] "Паказаць %s commit'ы"
2128 msgstr[1] "Паказаць %s commit'ы"
2129 msgstr[2] "Паказаць %s commit'аў"
2129 msgstr[2] "Паказаць %s commit'аў"
2130
2130
2131 msgid "Show full diff"
2131 msgid "Show full diff"
2132 msgstr "Паказаць поўны diff"
2132 msgstr "Паказаць поўны diff"
2133
2133
2134 msgid "Public repository"
2134 msgid "Public repository"
2135 msgstr "Публічны рэпазітар"
2135 msgstr "Публічны рэпазітар"
2136
2136
2137 msgid "No changesets yet"
2137 msgid "No changesets yet"
2138 msgstr "Змен яшчэ не было"
2138 msgstr "Змен яшчэ не было"
2139
2139
2140 msgid "Subscribe to %s rss feed"
2140 msgid "Subscribe to %s rss feed"
2141 msgstr "Падпісацца на стужку RSS %s"
2141 msgstr "Падпісацца на стужку RSS %s"
2142
2142
2143 msgid "Subscribe to %s atom feed"
2143 msgid "Subscribe to %s atom feed"
2144 msgstr "Падпісацца на стужку Atom %s"
2144 msgstr "Падпісацца на стужку Atom %s"
2145
2145
2146 msgid "Creating"
2146 msgid "Creating"
2147 msgstr "Ствараецца"
2147 msgstr "Ствараецца"
2148
2148
2149 msgid "Hello %s"
2149 msgid "Hello %s"
2150 msgstr "Добры дзень, %s"
2150 msgstr "Добры дзень, %s"
2151
2151
2152 msgid "We have received a request to reset the password for your account."
2152 msgid "We have received a request to reset the password for your account."
2153 msgstr "Мы атрымалі запыт на скіданне пароля для вашага акаўнта."
2153 msgstr "Мы атрымалі запыт на скіданне пароля для вашага акаўнта."
2154
2154
2155 msgid "File diff"
2155 msgid "File diff"
2156 msgstr "Параўнанне файлаў"
2156 msgstr "Параўнанне файлаў"
2157
2157
2158 msgid "Ignore whitespace"
2158 msgid "Ignore whitespace"
2159 msgstr "Ігнараваць прабелы"
2159 msgstr "Ігнараваць прабелы"
2160
2160
2161 msgid "%s File Diff"
2161 msgid "%s File Diff"
2162 msgstr "Параўнанне файла %s"
2162 msgstr "Параўнанне файла %s"
2163
2163
2164 msgid "%s Files"
2164 msgid "%s Files"
2165 msgstr "%s Файлы"
2165 msgstr "%s Файлы"
2166
2166
2167 msgid "%s Files Add"
2167 msgid "%s Files Add"
2168 msgstr "%s Файлаў дададзена"
2168 msgstr "%s Файлаў дададзена"
2169
2169
2170 msgid "Add New File"
2170 msgid "Add New File"
2171 msgstr "Дадаць новы файл"
2171 msgstr "Дадаць новы файл"
2172
2172
2173 msgid "Location"
2173 msgid "Location"
2174 msgstr "Размяшчэнне"
2174 msgstr "Размяшчэнне"
2175
2175
2176 msgid "Enter filename..."
2176 msgid "Enter filename..."
2177 msgstr "Увядзіце імя файла..."
2177 msgstr "Увядзіце імя файла..."
2178
2178
2179 msgid "or"
2179 msgid "or"
2180 msgstr "ці"
2180 msgstr "ці"
2181
2181
2182 msgid "Upload File"
2182 msgid "Upload File"
2183 msgstr "Адаслаць файл"
2183 msgstr "Адаслаць файл"
2184
2184
2185 msgid "Create New File"
2185 msgid "Create New File"
2186 msgstr "Стварыць новы файл"
2186 msgstr "Стварыць новы файл"
2187
2187
2188 msgid "New file type"
2188 msgid "New file type"
2189 msgstr "Тып новага файла"
2189 msgstr "Тып новага файла"
2190
2190
2191 msgid "Commit Changes"
2191 msgid "Commit Changes"
2192 msgstr "Захаваць змены"
2192 msgstr "Захаваць змены"
2193
2193
2194 msgid "Loading file list..."
2194 msgid "Loading file list..."
2195 msgstr "Загружаецца спіс файлаў..."
2195 msgstr "Загружаецца спіс файлаў..."
2196
2196
2197 msgid "Size"
2197 msgid "Size"
2198 msgstr "Памер"
2198 msgstr "Памер"
2199
2199
2200 msgid "Last Revision"
2200 msgid "Last Revision"
2201 msgstr "Апошняя версія"
2201 msgstr "Апошняя версія"
2202
2202
2203 msgid "Last Modified"
2203 msgid "Last Modified"
2204 msgstr "Апошняя змена"
2204 msgstr "Апошняя змена"
2205
2205
2206 msgid "Last Committer"
2206 msgid "Last Committer"
2207 msgstr "Аўтар апошняй рэвізіі"
2207 msgstr "Аўтар апошняй рэвізіі"
2208
2208
2209 msgid "Delete file"
2209 msgid "Delete file"
2210 msgstr "Выдаліць файл"
2210 msgstr "Выдаліць файл"
2211
2211
2212 msgid "Edit file"
2212 msgid "Edit file"
2213 msgstr "Рэдагаваць файл"
2213 msgstr "Рэдагаваць файл"
2214
2214
2215 msgid "Source"
2215 msgid "Source"
2216 msgstr "Зыходны код"
2216 msgstr "Зыходны код"
2217
2217
2218 msgid "%s author"
2218 msgid "%s author"
2219 msgid_plural "%s authors"
2219 msgid_plural "%s authors"
2220 msgstr[0] "%s аўтар"
2220 msgstr[0] "%s аўтар"
2221 msgstr[1] "%s аўтараў"
2221 msgstr[1] "%s аўтараў"
2222 msgstr[2] "%s аўтара"
2222 msgstr[2] "%s аўтара"
2223
2223
2224 msgid "Show Full History"
2224 msgid "Show Full History"
2225 msgstr "Паказаць ўсю гісторыю"
2225 msgstr "Паказаць ўсю гісторыю"
2226
2226
2227 msgid "Show Authors"
2227 msgid "Show Authors"
2228 msgstr "Паказаць аўтараў"
2228 msgstr "Паказаць аўтараў"
2229
2229
2230 msgid "Editing binary files not allowed"
2230 msgid "Editing binary files not allowed"
2231 msgstr "Рэдагаванне бінарных файлаў забароненае"
2231 msgstr "Рэдагаванне бінарных файлаў забароненае"
2232
2232
2233 msgid "Editing files allowed only when on branch head revision"
2233 msgid "Editing files allowed only when on branch head revision"
2234 msgstr "Рэдагаванне файлаў дазволенае толькі ў HEAD-рэвізіі дадзенай галіны"
2234 msgstr "Рэдагаванне файлаў дазволенае толькі ў HEAD-рэвізіі дадзенай галіны"
2235
2235
2236 msgid "Binary file (%s)"
2236 msgid "Binary file (%s)"
2237 msgstr "Бінарны файл (%s)"
2237 msgstr "Бінарны файл (%s)"
2238
2238
2239 msgid "File is too big to display."
2239 msgid "File is too big to display."
2240 msgstr "Файл занадта вялікі для адлюстравання."
2240 msgstr "Файл занадта вялікі для адлюстравання."
2241
2241
2242 msgid "Show full annotation anyway."
2242 msgid "Show full annotation anyway."
2243 msgstr "Паказаць поўныя анатацыі."
2243 msgstr "Паказаць поўныя анатацыі."
2244
2244
2245 msgid "Show as raw."
2245 msgid "Show as raw."
2246 msgstr "Паказаць сырым."
2246 msgstr "Паказаць сырым."
2247
2247
2248 msgid "annotation"
2248 msgid "annotation"
2249 msgstr "анатацыя"
2249 msgstr "анатацыя"
2250
2250
2251 msgid "Go Back"
2251 msgid "Go Back"
2252 msgstr "Вярнуцца"
2252 msgstr "Вярнуцца"
2253
2253
2254 msgid "No files at given path"
2254 msgid "No files at given path"
2255 msgstr "Па зададзеным шляху файлы адсутнічаюць"
2255 msgstr "Па зададзеным шляху файлы адсутнічаюць"
2256
2256
2257 msgid "%s Followers"
2257 msgid "%s Followers"
2258 msgstr "%s Назіральнікі"
2258 msgstr "%s Назіральнікі"
2259
2259
2260 msgid "Followers"
2260 msgid "Followers"
2261 msgstr "Назіральнікі"
2261 msgstr "Назіральнікі"
2262
2262
2263 msgid "Started following -"
2263 msgid "Started following -"
2264 msgstr "Назіраць за рэпазітаром"
2264 msgstr "Назіраць за рэпазітаром"
2265
2265
2266 msgid "Fork name"
2266 msgid "Fork name"
2267 msgstr "Імя форка"
2267 msgstr "Імя форка"
2268
2268
2269 msgid "Default revision for files page, downloads, whoosh, and readme."
2269 msgid "Default revision for files page, downloads, whoosh, and readme."
2270 msgstr ""
2270 msgstr ""
2271 "Рэвізія па змаўчанні, з якой будзе вырабляцца выгрузка файлаў пры "
2271 "Рэвізія па змаўчанні, з якой будзе вырабляцца выгрузка файлаў пры "
2272 "спампоўцы."
2272 "спампоўцы."
2273
2273
2274 msgid "Private"
2274 msgid "Private"
2275 msgstr "Прыватны"
2275 msgstr "Прыватны"
2276
2276
2277 msgid "Copy permissions"
2277 msgid "Copy permissions"
2278 msgstr "Скапіяваць прывілеі"
2278 msgstr "Скапіяваць прывілеі"
2279
2279
2280 msgid "Copy permissions from forked repository"
2280 msgid "Copy permissions from forked repository"
2281 msgstr "Скапіяваць прывілеі з форкнутага рэпазітара"
2281 msgstr "Скапіяваць прывілеі з форкнутага рэпазітара"
2282
2282
2283 msgid "Update after clone"
2283 msgid "Update after clone"
2284 msgstr "Абнаўляць пасля кланавання"
2284 msgstr "Абнаўляць пасля кланавання"
2285
2285
2286 msgid "Checkout source after making a clone"
2286 msgid "Checkout source after making a clone"
2287 msgstr "Спампоўваць зыходнікі пасля стварэння клона"
2287 msgstr "Спампоўваць зыходнікі пасля стварэння клона"
2288
2288
2289 msgid "%s Forks"
2289 msgid "%s Forks"
2290 msgstr "Форкі %s"
2290 msgstr "Форкі %s"
2291
2291
2292 msgid "Forks"
2292 msgid "Forks"
2293 msgstr "Адгалінаванні"
2293 msgstr "Адгалінаванні"
2294
2294
2295 msgid "Forked"
2295 msgid "Forked"
2296 msgstr "Форкнута"
2296 msgstr "Форкнута"
2297
2297
2298 msgid "There are no forks yet"
2298 msgid "There are no forks yet"
2299 msgstr "Форкі яшчэ не створаныя"
2299 msgstr "Форкі яшчэ не створаныя"
2300
2300
2301 msgid "ATOM journal feed"
2301 msgid "ATOM journal feed"
2302 msgstr "Стужка часопіса Atom"
2302 msgstr "Стужка часопіса Atom"
2303
2303
2304 msgid "RSS journal feed"
2304 msgid "RSS journal feed"
2305 msgstr "Стужка часопіса RSS"
2305 msgstr "Стужка часопіса RSS"
2306
2306
2307 msgid "My Repositories"
2307 msgid "My Repositories"
2308 msgstr "Мае рэпазітары"
2308 msgstr "Мае рэпазітары"
2309
2309
2310 msgid "No entries yet"
2310 msgid "No entries yet"
2311 msgstr "Запісы адсутнічаюць"
2311 msgstr "Запісы адсутнічаюць"
2312
2312
2313 msgid "ATOM public journal feed"
2313 msgid "ATOM public journal feed"
2314 msgstr "Агульная стужка часопіса Atom"
2314 msgstr "Агульная стужка часопіса Atom"
2315
2315
2316 msgid "RSS public journal feed"
2316 msgid "RSS public journal feed"
2317 msgstr "Агульная стужка часопіса RSS"
2317 msgstr "Агульная стужка часопіса RSS"
2318
2318
2319 msgid "New Pull Request"
2319 msgid "New Pull Request"
2320 msgstr "Новы pull-запыт"
2320 msgstr "Новы pull-запыт"
2321
2321
2322 msgid "Title"
2322 msgid "Title"
2323 msgstr "Загаловак"
2323 msgstr "Загаловак"
2324
2324
2325 msgid "Write a short description on this pull request"
2325 msgid "Write a short description on this pull request"
2326 msgstr "Напісаць кароткае пісанне па гэтым запыце"
2326 msgstr "Напісаць кароткае пісанне па гэтым запыце"
2327
2327
2328 msgid "Changeset flow"
2328 msgid "Changeset flow"
2329 msgstr "Струмень змен"
2329 msgstr "Струмень змен"
2330
2330
2331 msgid "Origin repository"
2331 msgid "Origin repository"
2332 msgstr "Першапачатковы рэпазітар"
2332 msgstr "Першапачатковы рэпазітар"
2333
2333
2334 msgid "Revision"
2334 msgid "Revision"
2335 msgstr "Рэвізія"
2335 msgstr "Рэвізія"
2336
2336
2337 msgid "Destination repository"
2337 msgid "Destination repository"
2338 msgstr "Рэпазітар прызначэння"
2338 msgstr "Рэпазітар прызначэння"
2339
2339
2340 msgid "No entries"
2340 msgid "No entries"
2341 msgstr "Запісы отсуствуют"
2341 msgstr "Запісы отсуствуют"
2342
2342
2343 msgid "Vote"
2343 msgid "Vote"
2344 msgstr "Галасаваць"
2344 msgstr "Галасаваць"
2345
2345
2346 msgid "Age"
2346 msgid "Age"
2347 msgstr "Узрост"
2347 msgstr "Узрост"
2348
2348
2349 msgid "From"
2349 msgid "From"
2350 msgstr "Ад"
2350 msgstr "Ад"
2351
2351
2352 msgid "To"
2352 msgid "To"
2353 msgstr "Да"
2353 msgstr "Да"
2354
2354
2355 msgid "You voted: %s"
2355 msgid "You voted: %s"
2356 msgstr "Вы прагаласавалі: %s"
2356 msgstr "Вы прагаласавалі: %s"
2357
2357
2358 msgid "You didn't vote"
2358 msgid "You didn't vote"
2359 msgstr "Вы не галасавалі"
2359 msgstr "Вы не галасавалі"
2360
2360
2361 msgid "(no title)"
2361 msgid "(no title)"
2362 msgstr "(няма загалоўка)"
2362 msgstr "(няма загалоўка)"
2363
2363
2364 msgid "Closed"
2364 msgid "Closed"
2365 msgstr "Зачынена"
2365 msgstr "Зачынена"
2366
2366
2367 msgid "Delete Pull Request"
2367 msgid "Delete Pull Request"
2368 msgstr "Выдаліць pull-запыт"
2368 msgstr "Выдаліць pull-запыт"
2369
2369
2370 msgid "Confirm to delete this pull request"
2370 msgid "Confirm to delete this pull request"
2371 msgstr "Пацвердзіце выдаленне гэтага pull-request'а"
2371 msgstr "Пацвердзіце выдаленне гэтага pull-request'а"
2372
2372
2373 msgid "Confirm again to delete this pull request with %s comments"
2373 msgid "Confirm again to delete this pull request with %s comments"
2374 msgstr "Пацвердзіце выдаленне гэтага pull-запыту з %s каментарамі"
2374 msgstr "Пацвердзіце выдаленне гэтага pull-запыту з %s каментарамі"
2375
2375
2376 msgid "%s Pull Request %s"
2376 msgid "%s Pull Request %s"
2377 msgstr "%s зull-запыт %s"
2377 msgstr "%s зull-запыт %s"
2378
2378
2379 msgid "Pull request %s from %s#%s"
2379 msgid "Pull request %s from %s#%s"
2380 msgstr "Pull-запыт %s ад %s#%s"
2380 msgstr "Pull-запыт %s ад %s#%s"
2381
2381
2382 msgid "on"
2382 msgid "on"
2383 msgstr "на"
2383 msgstr "на"
2384
2384
2385 msgid "Target"
2385 msgid "Target"
2386 msgstr "Цэль"
2386 msgstr "Цэль"
2387
2387
2388 msgid "Pull changes"
2388 msgid "Pull changes"
2389 msgstr "Прыняць змены"
2389 msgstr "Прыняць змены"
2390
2390
2391 msgid "Save Changes"
2391 msgid "Save Changes"
2392 msgstr "Захаваць змены"
2392 msgstr "Захаваць змены"
2393
2393
2394 msgid "Cancel Changes"
2394 msgid "Cancel Changes"
2395 msgstr "Адмяніць змены"
2395 msgstr "Адмяніць змены"
2396
2396
2397 msgid "Remove reviewer"
2397 msgid "Remove reviewer"
2398 msgstr "Выдаліць рэцэнзента"
2398 msgstr "Выдаліць рэцэнзента"
2399
2399
2400 msgid "Potential Reviewers"
2400 msgid "Potential Reviewers"
2401 msgstr "Патэнцыйныя рэцэнзенты"
2401 msgstr "Патэнцыйныя рэцэнзенты"
2402
2402
2403 msgid "Common ancestor"
2403 msgid "Common ancestor"
2404 msgstr "Агульны продак"
2404 msgstr "Агульны продак"
2405
2405
2406 msgid "%s Pull Requests"
2406 msgid "%s Pull Requests"
2407 msgstr "%s pull-запыты"
2407 msgstr "%s pull-запыты"
2408
2408
2409 msgid "Pull Requests from '%s'"
2409 msgid "Pull Requests from '%s'"
2410 msgstr "Pull-запыты ад '%s'"
2410 msgstr "Pull-запыты ад '%s'"
2411
2411
2412 msgid "Pull Requests to '%s'"
2412 msgid "Pull Requests to '%s'"
2413 msgstr "Pull-запыты да '%s'"
2413 msgstr "Pull-запыты да '%s'"
2414
2414
2415 msgid "Open New Pull Request"
2415 msgid "Open New Pull Request"
2416 msgstr "Стварыць новы pull-запыт"
2416 msgstr "Стварыць новы pull-запыт"
2417
2417
2418 msgid "Show Pull Requests to %s"
2418 msgid "Show Pull Requests to %s"
2419 msgstr "Паказаць pull-запыты да %s"
2419 msgstr "Паказаць pull-запыты да %s"
2420
2420
2421 msgid "Show Pull Requests from '%s'"
2421 msgid "Show Pull Requests from '%s'"
2422 msgstr "Паказаць pull-запыты ад %s"
2422 msgstr "Паказаць pull-запыты ад %s"
2423
2423
2424 msgid "Search in All Repositories"
2424 msgid "Search in All Repositories"
2425 msgstr "Пошук па ўсіх рэпазітарах"
2425 msgstr "Пошук па ўсіх рэпазітарах"
2426
2426
2427 msgid "Search term"
2427 msgid "Search term"
2428 msgstr "Фраза для пошуку"
2428 msgstr "Фраза для пошуку"
2429
2429
2430 msgid "Search in"
2430 msgid "Search in"
2431 msgstr "Крытэр пошуку"
2431 msgstr "Крытэр пошуку"
2432
2432
2433 msgid "File contents"
2433 msgid "File contents"
2434 msgstr "Змест файлаў"
2434 msgstr "Змест файлаў"
2435
2435
2436 msgid "Commit messages"
2436 msgid "Commit messages"
2437 msgstr "Паведамленні камітаў"
2437 msgstr "Паведамленні камітаў"
2438
2438
2439 msgid "File names"
2439 msgid "File names"
2440 msgstr "Імя файла"
2440 msgstr "Імя файла"
2441
2441
2442 msgid "Permission denied"
2442 msgid "Permission denied"
2443 msgstr "Недастаткова правоў"
2443 msgstr "Недастаткова правоў"
2444
2444
2445 msgid "%s ATOM feed"
2445 msgid "%s ATOM feed"
2446 msgstr "Atom стужка рэпазітара %s"
2446 msgstr "Atom стужка рэпазітара %s"
2447
2447
2448 msgid "%s RSS feed"
2448 msgid "%s RSS feed"
2449 msgstr "RSS стужка рэпазітара %s"
2449 msgstr "RSS стужка рэпазітара %s"
2450
2450
2451 msgid "Enable"
2451 msgid "Enable"
2452 msgstr "Уключана"
2452 msgstr "Уключана"
2453
2453
2454 msgid "Stats gathered: "
2454 msgid "Stats gathered: "
2455 msgstr "Атрыманая статыстыка: "
2455 msgstr "Атрыманая статыстыка: "
2456
2456
2457 msgid "files"
2457 msgid "files"
2458 msgstr "файлы"
2458 msgstr "файлы"
2459
2459
2460 msgid "Show more"
2460 msgid "Show more"
2461 msgstr "Паказаць яшчэ"
2461 msgstr "Паказаць яшчэ"
2462
2462
2463 msgid "commits"
2463 msgid "commits"
2464 msgstr "commit'ы"
2464 msgstr "commit'ы"
2465
2465
2466 msgid "files added"
2466 msgid "files added"
2467 msgstr "файлы дададзены"
2467 msgstr "файлы дададзены"
2468
2468
2469 msgid "files changed"
2469 msgid "files changed"
2470 msgstr "файлы зменены"
2470 msgstr "файлы зменены"
2471
2471
2472 msgid "files removed"
2472 msgid "files removed"
2473 msgstr "файлы выдалены"
2473 msgstr "файлы выдалены"
2474
2474
2475 msgid "commit"
2475 msgid "commit"
2476 msgstr "commit"
2476 msgstr "commit"
2477
2477
2478 msgid "file added"
2478 msgid "file added"
2479 msgstr "файл выдалены"
2479 msgstr "файл выдалены"
2480
2480
2481 msgid "file changed"
2481 msgid "file changed"
2482 msgstr "файл зменены"
2482 msgstr "файл зменены"
2483
2483
2484 msgid "file removed"
2484 msgid "file removed"
2485 msgstr "файл выдалены"
2485 msgstr "файл выдалены"
2486
2486
2487 msgid "%s Summary"
2487 msgid "%s Summary"
2488 msgstr "%s агульныя звесткі"
2488 msgstr "%s агульныя звесткі"
2489
2489
2490 msgid "Fork of"
2490 msgid "Fork of"
2491 msgstr "Форк ад"
2491 msgstr "Форк ад"
2492
2492
2493 msgid "Clone from"
2493 msgid "Clone from"
2494 msgstr "Кланаваць з"
2494 msgstr "Кланаваць з"
2495
2495
2496 msgid "Clone URL"
2496 msgid "Clone URL"
2497 msgstr "URL для кланавання"
2497 msgstr "URL для кланавання"
2498
2498
2499 msgid "Trending files"
2499 msgid "Trending files"
2500 msgstr "Папулярныя файлы"
2500 msgstr "Папулярныя файлы"
2501
2501
2502 msgid "Download"
2502 msgid "Download"
2503 msgstr "Спампаваць"
2503 msgstr "Спампаваць"
2504
2504
2505 msgid "There are no downloads yet"
2505 msgid "There are no downloads yet"
2506 msgstr "Спамповак яшчэ няма"
2506 msgstr "Спамповак яшчэ няма"
2507
2507
2508 msgid "Downloads are disabled for this repository"
2508 msgid "Downloads are disabled for this repository"
2509 msgstr "Спампоўванне адключанае ў гэтым рэпазітары"
2509 msgstr "Спампоўванне адключанае ў гэтым рэпазітары"
2510
2510
2511 msgid "Download as zip"
2511 msgid "Download as zip"
2512 msgstr "Спампаваць у zip"
2512 msgstr "Спампаваць у zip"
2513
2513
2514 msgid "Check this to download archive with subrepos"
2514 msgid "Check this to download archive with subrepos"
2515 msgstr "Адзначце для спампоўкі архіва з даччынымі рэпазітарамі"
2515 msgstr "Адзначце для спампоўкі архіва з даччынымі рэпазітарамі"
2516
2516
2517 msgid "With subrepos"
2517 msgid "With subrepos"
2518 msgstr "З даччынымі рэпазітарамі"
2518 msgstr "З даччынымі рэпазітарамі"
2519
2519
2520 msgid "Feed"
2520 msgid "Feed"
2521 msgstr "Стужка навін"
2521 msgstr "Стужка навін"
2522
2522
2523 msgid "Latest Changes"
2523 msgid "Latest Changes"
2524 msgstr "Апошнія змены"
2524 msgstr "Апошнія змены"
2525
2525
2526 msgid "Quick Start"
2526 msgid "Quick Start"
2527 msgstr "Хуткі старт"
2527 msgstr "Хуткі старт"
2528
2528
2529 msgid "Add or upload files directly via Kallithea"
2529 msgid "Add or upload files directly via Kallithea"
2530 msgstr "Дадаць ці загрузіць файлы праз Kallithea"
2530 msgstr "Дадаць ці загрузіць файлы праз Kallithea"
2531
2531
2532 msgid "Push new repository"
2532 msgid "Push new repository"
2533 msgstr "Адправіць новы рэпазітар"
2533 msgstr "Адправіць новы рэпазітар"
2534
2534
2535 msgid "Existing repository?"
2535 msgid "Existing repository?"
2536 msgstr "Існы рэпазітар?"
2536 msgstr "Існы рэпазітар?"
2537
2537
2538 msgid "Download %s as %s"
2538 msgid "Download %s as %s"
2539 msgstr "Спампаваць %s як %s"
2539 msgstr "Спампаваць %s як %s"
@@ -1,856 +1,856 b''
1 # Copyright (C) 2017 Various authors, licensing as GPLv3
1 # Copyright (C) 2017 Various authors, licensing as GPLv3
2 # This file is distributed under the same license as the Kallithea project.
2 # This file is distributed under the same license as the Kallithea project.
3
3
4 msgid ""
4 msgid ""
5 msgstr ""
5 msgstr ""
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 "Language: da\n"
7 "Language: da\n"
8 "MIME-Version: 1.0\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
12
13 msgid ""
13 msgid ""
14 "CSRF token leak has been detected - all form tokens have been expired"
14 "CSRF token leak has been detected - all form tokens have been expired"
15 msgstr "CSRF-token lækage opdaget, alle form-tokens er invalideret"
15 msgstr "CSRF-token lækage opdaget, alle form-tokens er invalideret"
16
16
17 msgid "Repository not found in the filesystem"
17 msgid "Repository not found in the filesystem"
18 msgstr "Repository ikke fundet i filsystemet"
18 msgstr "Repository ikke fundet i filsystemet"
19
19
20 msgid "There are no changesets yet"
20 msgid "There are no changesets yet"
21 msgstr "Der er ingen changesets endnu"
21 msgstr "Der er ingen changesets endnu"
22
22
23 msgid "Changeset for %s %s not found in %s"
23 msgid "Changeset for %s %s not found in %s"
24 msgstr "Changeset for %s %s ikke fundet i %s"
24 msgstr "Changeset for %s %s ikke fundet i %s"
25
25
26 msgid "None"
26 msgid "None"
27 msgstr "Ingen"
27 msgstr "Ingen"
28
28
29 msgid "(closed)"
29 msgid "(closed)"
30 msgstr "(lukket)"
30 msgstr "(lukket)"
31
31
32 msgid "Successfully deleted pull request %s"
32 msgid "Successfully deleted pull request %s"
33 msgstr "Pull-forespørgsel %s slettet successfuldt"
33 msgstr "Pull-forespørgsel %s slettet successfuldt"
34
34
35 msgid "Such revision does not exist for this repository"
35 msgid "Such revision does not exist for this repository"
36 msgstr "En sådan revision findes ikke for dette repository"
36 msgstr "En sådan revision findes ikke for dette repository"
37
37
38 msgid "Could not find other repository %s"
38 msgid "Could not find other repository %s"
39 msgstr "Kunne ikke finde andet repository %s"
39 msgstr "Kunne ikke finde andet repository %s"
40
40
41 msgid "Cannot compare repositories of different types"
41 msgid "Cannot compare repositories of different types"
42 msgstr "Kan ikke sammenligne repositories af forskellige typer"
42 msgstr "Kan ikke sammenligne repositories af forskellige typer"
43
43
44 msgid "Cannot show empty diff"
44 msgid "Cannot show empty diff"
45 msgstr "Kan ikke vise en tom diff"
45 msgstr "Kan ikke vise en tom diff"
46
46
47 msgid "No ancestor found for merge diff"
47 msgid "No ancestor found for merge diff"
48 msgstr "Ingen forfader fundet for merge diff"
48 msgstr "Ingen forfader fundet for merge diff"
49
49
50 msgid "Multiple merge ancestors found for merge compare"
50 msgid "Multiple merge ancestors found for merge compare"
51 msgstr "Flere merge forfædre fundet for merge sammenligning"
51 msgstr "Flere merge forfædre fundet for merge sammenligning"
52
52
53 msgid "Cannot compare repositories without using common ancestor"
53 msgid "Cannot compare repositories without using common ancestor"
54 msgstr "Kan ikke sammenligne repositories uden en fælles forfader"
54 msgstr "Kan ikke sammenligne repositories uden en fælles forfader"
55
55
56 msgid "No response"
56 msgid "No response"
57 msgstr "Intet svar"
57 msgstr "Intet svar"
58
58
59 msgid "Unknown error"
59 msgid "Unknown error"
60 msgstr "Ukendt fejl"
60 msgstr "Ukendt fejl"
61
61
62 msgid ""
62 msgid ""
63 "The request could not be understood by the server due to malformed syntax."
63 "The request could not be understood by the server due to malformed syntax."
64 msgstr ""
64 msgstr ""
65 "Forespørgslen kunne ikke forstås af serveren på grund af fejlformet "
65 "Forespørgslen kunne ikke forstås af serveren på grund af fejlformet "
66 "syntaks."
66 "syntaks."
67
67
68 msgid "Unauthorized access to resource"
68 msgid "Unauthorized access to resource"
69 msgstr "Uautoriseret adgang til ressource"
69 msgstr "Uautoriseret adgang til ressource"
70
70
71 msgid "You don't have permission to view this page"
71 msgid "You don't have permission to view this page"
72 msgstr "Du har ikke tilladelse til at se denne side"
72 msgstr "Du har ikke tilladelse til at se denne side"
73
73
74 msgid "The resource could not be found"
74 msgid "The resource could not be found"
75 msgstr "Kunne ikke finde ressourcen"
75 msgstr "Kunne ikke finde ressourcen"
76
76
77 msgid ""
77 msgid ""
78 "The server encountered an unexpected condition which prevented it from "
78 "The server encountered an unexpected condition which prevented it from "
79 "fulfilling the request."
79 "fulfilling the request."
80 msgstr ""
80 msgstr ""
81 "Serveren stødte på en uventet tilstand, som forhindrede den i at opfylde "
81 "Serveren stødte på en uventet tilstand, som forhindrede den i at opfylde "
82 "anmodningen."
82 "anmodningen."
83
83
84 msgid "%s committed on %s"
84 msgid "%s committed on %s"
85 msgstr "%s committed den %s"
85 msgstr "%s committed den %s"
86
86
87 msgid "Changeset was too big and was cut off..."
87 msgid "Changeset was too big and was cut off..."
88 msgstr "Changesettet var for stor og blev afskåret..."
88 msgstr "Changesettet var for stor og blev afskåret..."
89
89
90 msgid "%s %s feed"
90 msgid "%s %s feed"
91 msgstr "Feed for %s %s"
91 msgstr "Feed for %s %s"
92
92
93 msgid "Changes on %s repository"
93 msgid "Changes on %s repository"
94 msgstr "Ændringer på repository %s"
94 msgstr "Ændringer på repository %s"
95
95
96 msgid "Click here to add new file"
96 msgid "Click here to add new file"
97 msgstr "Klik her for at tilføje en ny fil"
97 msgstr "Klik her for at tilføje en ny fil"
98
98
99 msgid "%s at %s"
99 msgid "%s at %s"
100 msgstr "%s fra %s"
100 msgstr "%s fra %s"
101
101
102 msgid "You can only delete files with revision being a valid branch"
102 msgid "You can only delete files with revision being a valid branch"
103 msgstr "Du kan kun slette filer, hvor revisionen er en gyldig branch"
103 msgstr "Du kan kun slette filer, hvor revisionen er en gyldig branch"
104
104
105 msgid "Deleted file %s via Kallithea"
105 msgid "Deleted file %s via Kallithea"
106 msgstr "Slettet fil %s via Kallithea"
106 msgstr "Slettet fil %s via Kallithea"
107
107
108 msgid "Successfully deleted file %s"
108 msgid "Successfully deleted file %s"
109 msgstr "Successfuldt slettet filen %s"
109 msgstr "Successfuldt slettet filen %s"
110
110
111 msgid "Error occurred during commit"
111 msgid "Error occurred during commit"
112 msgstr "Fejl opstået under commit"
112 msgstr "Fejl opstået under commit"
113
113
114 msgid "You can only edit files with revision being a valid branch"
114 msgid "You can only edit files with revision being a valid branch"
115 msgstr "Du kan kun redigere filer, hvor revisionen er en gyldig branch"
115 msgstr "Du kan kun redigere filer, hvor revisionen er en gyldig branch"
116
116
117 msgid "Edited file %s via Kallithea"
117 msgid "Edited file %s via Kallithea"
118 msgstr "Redigeret fil %s via Kallithea"
118 msgstr "Redigeret fil %s via Kallithea"
119
119
120 msgid "No changes"
120 msgid "No changes"
121 msgstr "Ingen ændringer"
121 msgstr "Ingen ændringer"
122
122
123 msgid "Successfully committed to %s"
123 msgid "Successfully committed to %s"
124 msgstr "Successfuldt committed til %s"
124 msgstr "Successfuldt committed til %s"
125
125
126 msgid "Added file via Kallithea"
126 msgid "Added file via Kallithea"
127 msgstr "Tilføjet fil via Kallithea"
127 msgstr "Tilføjet fil via Kallithea"
128
128
129 msgid "No content"
129 msgid "No content"
130 msgstr "Intet indhold"
130 msgstr "Intet indhold"
131
131
132 msgid "No filename"
132 msgid "No filename"
133 msgstr "Intet filnavn"
133 msgstr "Intet filnavn"
134
134
135 msgid "Location must be relative path and must not contain .. in path"
135 msgid "Location must be relative path and must not contain .. in path"
136 msgstr ""
136 msgstr ""
137 "Placeringen skal være en relativ sti og må ikke indeholde .. i stien"
137 "Placeringen skal være en relativ sti og må ikke indeholde .. i stien"
138
138
139 msgid "Downloads disabled"
139 msgid "Downloads disabled"
140 msgstr "Downloads er deaktiveret"
140 msgstr "Downloads er deaktiveret"
141
141
142 msgid "Unknown revision %s"
142 msgid "Unknown revision %s"
143 msgstr "Ukendt revision %s"
143 msgstr "Ukendt revision %s"
144
144
145 msgid "Empty repository"
145 msgid "Empty repository"
146 msgstr "Tomt repository"
146 msgstr "Tomt repository"
147
147
148 msgid "Unknown archive type"
148 msgid "Unknown archive type"
149 msgstr "Ukendt arkivtype"
149 msgstr "Ukendt arkivtype"
150
150
151 msgid "Tags"
151 msgid "Tags"
152 msgstr "Tags"
152 msgstr "Tags"
153
153
154 msgid "An error occurred during repository forking %s"
154 msgid "An error occurred during repository forking %s"
155 msgstr "Der opstod en fejl under repository forking %s"
155 msgstr "Der opstod en fejl under repository forking %s"
156
156
157 msgid "Groups"
157 msgid "Groups"
158 msgstr "Grupper"
158 msgstr "Grupper"
159
159
160 msgid "Closed Branches"
160 msgid "Closed Branches"
161 msgstr "Lukkede Branches"
161 msgstr "Lukkede Branches"
162
162
163 msgid "Tag"
163 msgid "Tag"
164 msgstr "Tag"
164 msgstr "Tag"
165
165
166 msgid "Bookmark"
166 msgid "Bookmark"
167 msgstr "Bogmærke"
167 msgstr "Bogmærke"
168
168
169 msgid "Public Journal"
169 msgid "Public Journal"
170 msgstr "Offentlig journal"
170 msgstr "Offentlig journal"
171
171
172 msgid "Journal"
172 msgid "Journal"
173 msgstr "Journal"
173 msgstr "Journal"
174
174
175 msgid "Bad captcha"
175 msgid "Bad captcha"
176 msgstr "Dårlig captcha"
176 msgstr "Dårlig captcha"
177
177
178 msgid "You have successfully registered with %s"
178 msgid "You have successfully registered with %s"
179 msgstr "Du har succesfuldt registreret med %s"
179 msgstr "Du har succesfuldt registreret med %s"
180
180
181 msgid "A password reset confirmation code has been sent"
181 msgid "A password reset confirmation code has been sent"
182 msgstr "En bekræftelseskode til ændring af adgangskode er sendt"
182 msgstr "En bekræftelseskode til ændring af adgangskode er sendt"
183
183
184 msgid "Invalid password reset token"
184 msgid "Invalid password reset token"
185 msgstr "Ugyldig token for ændring af adgangskode"
185 msgstr "Ugyldig token for ændring af adgangskode"
186
186
187 msgid "Successfully updated password"
187 msgid "Successfully updated password"
188 msgstr "Successfuld ændring af adgangskode"
188 msgstr "Successfuld ændring af adgangskode"
189
189
190 msgid "Invalid reviewer \"%s\" specified"
190 msgid "Invalid reviewer \"%s\" specified"
191 msgstr "Ugyldig reviewer \"%s\" angivet"
191 msgstr "Ugyldig reviewer \"%s\" angivet"
192
192
193 msgid "%s (closed)"
193 msgid "%s (closed)"
194 msgstr "%s (lukket)"
194 msgstr "%s (lukket)"
195
195
196 msgid "Special"
196 msgid "Special"
197 msgstr "Speciel"
197 msgstr "Speciel"
198
198
199 msgid "Bookmarks"
199 msgid "Bookmarks"
200 msgstr "Bogmærker"
200 msgstr "Bogmærker"
201
201
202 msgid "Error creating pull request: %s"
202 msgid "Error creating pull request: %s"
203 msgstr "Fejl ved oprettelse af pull-forespørgsel: %s"
203 msgstr "Fejl ved oprettelse af pull-forespørgsel: %s"
204
204
205 msgid "Error occurred while creating pull request"
205 msgid "Error occurred while creating pull request"
206 msgstr "Der opstod en fejl under oprettelse af pull-forespørgsel"
206 msgstr "Der opstod en fejl under oprettelse af pull-forespørgsel"
207
207
208 msgid "Successfully opened new pull request"
208 msgid "Successfully opened new pull request"
209 msgstr "Åbnede ny pull-forespørgsel med success"
209 msgstr "Åbnede ny pull-forespørgsel med success"
210
210
211 msgid "New pull request iteration created"
211 msgid "New pull request iteration created"
212 msgstr "Ny pull-forespørgsel iteration oprettet"
212 msgstr "Ny pull-forespørgsel iteration oprettet"
213
213
214 msgid "Meanwhile, the following reviewers have been added: %s"
214 msgid "Meanwhile, the following reviewers have been added: %s"
215 msgstr "I mellemtiden er de følgende reviewers tilføjet: %s"
215 msgstr "I mellemtiden er de følgende reviewers tilføjet: %s"
216
216
217 msgid "Meanwhile, the following reviewers have been removed: %s"
217 msgid "Meanwhile, the following reviewers have been removed: %s"
218 msgstr "I mellemtiden er de følgende reviewers fjernet: %s"
218 msgstr "I mellemtiden er de følgende reviewers fjernet: %s"
219
219
220 msgid "No description"
220 msgid "No description"
221 msgstr "Ingen beskrivelse"
221 msgstr "Ingen beskrivelse"
222
222
223 msgid "Pull request updated"
223 msgid "Pull request updated"
224 msgstr "Pull-forespørgsel opdateret"
224 msgstr "Pull-forespørgsel opdateret"
225
225
226 msgid "Successfully deleted pull request"
226 msgid "Successfully deleted pull request"
227 msgstr "Slettede pull-forespørgsel med success"
227 msgstr "Slettede pull-forespørgsel med success"
228
228
229 msgid "Revision %s not found in %s"
229 msgid "Revision %s not found in %s"
230 msgstr "Revision %s er ikke fundet i %s"
230 msgstr "Revision %s er ikke fundet i %s"
231
231
232 msgid "Error: changesets not found when displaying pull request from %s."
232 msgid "Error: changesets not found when displaying pull request from %s."
233 msgstr ""
233 msgstr ""
234 "Fejl: Changesets ikke fundet, ved visning af pull-forespørgsel fra %s."
234 "Fejl: Changesets ikke fundet, ved visning af pull-forespørgsel fra %s."
235
235
236 msgid "This pull request has already been merged to %s."
236 msgid "This pull request has already been merged to %s."
237 msgstr "Denne pull-forespørgsel er allerede merged til %s."
237 msgstr "Denne pull-forespørgsel er allerede merged til %s."
238
238
239 msgid "This pull request has been closed and can not be updated."
239 msgid "This pull request has been closed and can not be updated."
240 msgstr "Denne pull-forespørgsel er lukket og kan ikke opdateres."
240 msgstr "Denne pull-forespørgsel er lukket og kan ikke opdateres."
241
241
242 msgid "The following additional changes are available on %s:"
242 msgid "The following additional changes are available on %s:"
243 msgstr "Følgende yderligere ændringer er tilgængelige på %s:"
243 msgstr "Følgende yderligere ændringer er tilgængelige på %s:"
244
244
245 msgid "No additional changesets found for iterating on this pull request."
245 msgid "No additional changesets found for iterating on this pull request."
246 msgstr ""
246 msgstr ""
247 "Ingen yderligere changesets fundet ved iteration på denne pull-"
247 "Ingen yderligere changesets fundet ved iteration på denne pull-"
248 "forespørgsel."
248 "forespørgsel."
249
249
250 msgid "Note: Branch %s has another head: %s."
250 msgid "Note: Branch %s has another head: %s."
251 msgstr "Bemærk: Branch %s har et andet head: %s."
251 msgstr "Bemærk: Branch %s har et andet head: %s."
252
252
253 msgid "Git pull requests don't support iterating yet."
253 msgid "Git pull requests don't support iterating yet."
254 msgstr "Git pull-forespørgsler supportere ej iteration endnu."
254 msgstr "Git pull-forespørgsler supportere ej iteration endnu."
255
255
256 msgid ""
256 msgid ""
257 "Error: some changesets not found when displaying pull request from %s."
257 "Error: some changesets not found when displaying pull request from %s."
258 msgstr ""
258 msgstr ""
259 "Fejl: Nogle changesets kunne ikke findes ved visning af pull-forespørgsel "
259 "Fejl: Nogle changesets kunne ikke findes ved visning af pull-forespørgsel "
260 "fra %s."
260 "fra %s."
261
261
262 msgid "The diff can't be shown - the PR revisions could not be found."
262 msgid "The diff can't be shown - the PR revisions could not be found."
263 msgstr ""
263 msgstr ""
264 "Diff'en kunne ikke vises - pull-forespørgslens revisions kunne ikke "
264 "Diff'en kunne ikke vises - pull-forespørgslens revisions kunne ikke "
265 "findes."
265 "findes."
266
266
267 msgid "Invalid search query. Try quoting it."
267 msgid "Invalid search query. Try quoting it."
268 msgstr "Ugyldig søgning. Prøv at citere det."
268 msgstr "Ugyldig søgning. Prøv at citere det."
269
269
270 msgid "An error occurred during search operation."
270 msgid "An error occurred during search operation."
271 msgstr "Der opstod en fejl under søgning."
271 msgstr "Der opstod en fejl under søgning."
272
272
273 msgid "No data ready yet"
273 msgid "No data ready yet"
274 msgstr "Ingen data er klar endnu"
274 msgstr "Ingen data er klar endnu"
275
275
276 msgid "Statistics are disabled for this repository"
276 msgid "Statistics are disabled for this repository"
277 msgstr "Statistik er slået fra for dette repository"
277 msgstr "Statistik er slået fra for dette repository"
278
278
279 msgid "Auth settings updated successfully"
279 msgid "Auth settings updated successfully"
280 msgstr "Auth-indstillinger opdateret successfuldt"
280 msgstr "Auth-indstillinger opdateret successfuldt"
281
281
282 msgid "error occurred during update of auth settings"
282 msgid "error occurred during update of auth settings"
283 msgstr "Der opstod en fejl under opdatering af auth-indstillinger"
283 msgstr "Der opstod en fejl under opdatering af auth-indstillinger"
284
284
285 msgid "Default settings updated successfully"
285 msgid "Default settings updated successfully"
286 msgstr "Standard-indstillinger opdateret successfuldt"
286 msgstr "Standard-indstillinger opdateret successfuldt"
287
287
288 msgid "Error occurred during update of defaults"
288 msgid "Error occurred during update of defaults"
289 msgstr "Der opstod en fejl under opdatering af standarder"
289 msgstr "Der opstod en fejl under opdatering af standarder"
290
290
291 msgid "Forever"
291 msgid "Forever"
292 msgstr "For evigt"
292 msgstr "For evigt"
293
293
294 msgid "5 minutes"
294 msgid "5 minutes"
295 msgstr "5 minutter"
295 msgstr "5 minutter"
296
296
297 msgid "1 hour"
297 msgid "1 hour"
298 msgstr "1 time"
298 msgstr "1 time"
299
299
300 msgid "1 day"
300 msgid "1 day"
301 msgstr "1 dag"
301 msgstr "1 dag"
302
302
303 msgid "1 month"
303 msgid "1 month"
304 msgstr "1 måned"
304 msgstr "1 måned"
305
305
306 msgid "Lifetime"
306 msgid "Lifetime"
307 msgstr "Levetid"
307 msgstr "Levetid"
308
308
309 msgid "Error occurred during gist creation"
309 msgid "Error occurred during gist creation"
310 msgstr "Der opstod en fejl under oprettelse af gist"
310 msgstr "Der opstod en fejl under oprettelse af gist"
311
311
312 msgid "Deleted gist %s"
312 msgid "Deleted gist %s"
313 msgstr "Slettet gist %s"
313 msgstr "Slettet gist %s"
314
314
315 msgid "Unmodified"
315 msgid "Unmodified"
316 msgstr "Uændret"
316 msgstr "Uændret"
317
317
318 msgid "Successfully updated gist content"
318 msgid "Successfully updated gist content"
319 msgstr "Opdateret gist-indhold successfuldt"
319 msgstr "Opdateret gist-indhold successfuldt"
320
320
321 msgid "Successfully updated gist data"
321 msgid "Successfully updated gist data"
322 msgstr "Opdateret gist-data successfuldt"
322 msgstr "Opdateret gist-data successfuldt"
323
323
324 msgid "Error occurred during update of gist %s"
324 msgid "Error occurred during update of gist %s"
325 msgstr "Der opstod en fejl under opdatering af gist %s"
325 msgstr "Der opstod en fejl under opdatering af gist %s"
326
326
327 msgid "You can't edit this user since it's crucial for entire application"
327 msgid "You can't edit this user since it's crucial for entire application"
328 msgstr ""
328 msgstr ""
329 "Du kan ikke redigere denne bruger, da den er afgørende for hele "
329 "Du kan ikke redigere denne bruger, da den er afgørende for hele "
330 "applikationen"
330 "applikationen"
331
331
332 msgid "Your account was updated successfully"
332 msgid "Your account was updated successfully"
333 msgstr "Din konto er blevet opdateret successfuldt"
333 msgstr "Din konto er blevet opdateret successfuldt"
334
334
335 msgid "Error occurred during update of user %s"
335 msgid "Error occurred during update of user %s"
336 msgstr "Der opstod en fejl under opdatering af bruger %s"
336 msgstr "Der opstod en fejl under opdatering af bruger %s"
337
337
338 msgid "Error occurred during update of user password"
338 msgid "Error occurred during update of user password"
339 msgstr "Der opstod en fejl under opdatering af bruger adgangskode"
339 msgstr "Der opstod en fejl under opdatering af bruger adgangskode"
340
340
341 msgid "Added email %s to user"
341 msgid "Added email %s to user"
342 msgstr "Tilføjet email %s til bruger"
342 msgstr "Tilføjet email %s til bruger"
343
343
344 msgid "An error occurred during email saving"
344 msgid "An error occurred during email saving"
345 msgstr "Der opstod en fejl under tilføjelse af email"
345 msgstr "Der opstod en fejl under tilføjelse af email"
346
346
347 msgid "Removed email from user"
347 msgid "Removed email from user"
348 msgstr "Fjernet email fra brugeren"
348 msgstr "Fjernet email fra brugeren"
349
349
350 msgid "API key successfully created"
350 msgid "API key successfully created"
351 msgstr "API-nøgle oprettet successfuldt"
351 msgstr "API-nøgle oprettet successfuldt"
352
352
353 msgid "API key successfully reset"
353 msgid "API key successfully reset"
354 msgstr "API-nøgle nulstillet successfuldt"
354 msgstr "API-nøgle nulstillet successfuldt"
355
355
356 msgid "API key successfully deleted"
356 msgid "API key successfully deleted"
357 msgstr "API-nøgle slettet successfuldt"
357 msgstr "API-nøgle slettet successfuldt"
358
358
359 msgid "Read"
359 msgid "Read"
360 msgstr "Læs"
360 msgstr "Læs"
361
361
362 msgid "Write"
362 msgid "Write"
363 msgstr "Skriv"
363 msgstr "Skriv"
364
364
365 msgid "Admin"
365 msgid "Admin"
366 msgstr "Admin"
366 msgstr "Admin"
367
367
368 msgid "Disabled"
368 msgid "Disabled"
369 msgstr "Deaktiveret"
369 msgstr "Deaktiveret"
370
370
371 msgid "Allowed with manual account activation"
371 msgid "Allowed with manual account activation"
372 msgstr "Tilladt med manuel kontoaktivering"
372 msgstr "Tilladt med manuel kontoaktivering"
373
373
374 msgid "Allowed with automatic account activation"
374 msgid "Allowed with automatic account activation"
375 msgstr "Tilladt med automatisk kontoaktivering"
375 msgstr "Tilladt med automatisk kontoaktivering"
376
376
377 msgid "Manual activation of external account"
377 msgid "Manual activation of external account"
378 msgstr "Manuel aktivering af ekstern konto"
378 msgstr "Manuel aktivering af ekstern konto"
379
379
380 msgid "Automatic activation of external account"
380 msgid "Automatic activation of external account"
381 msgstr "Automatisk aktivering af ekstern konto"
381 msgstr "Automatisk aktivering af ekstern konto"
382
382
383 msgid "Enabled"
383 msgid "Enabled"
384 msgstr "Aktiveret"
384 msgstr "Aktiveret"
385
385
386 msgid "Global permissions updated successfully"
386 msgid "Global permissions updated successfully"
387 msgstr "Globale tilladelser opdateret"
387 msgstr "Globale tilladelser opdateret"
388
388
389 msgid "Error occurred during update of permissions"
389 msgid "Error occurred during update of permissions"
390 msgstr "Der opstod en fejl under opdatering af tilladelser"
390 msgstr "Der opstod en fejl under opdatering af tilladelser"
391
391
392 msgid "Error occurred during creation of repository group %s"
392 msgid "Error occurred during creation of repository group %s"
393 msgstr "Der opstod en fejl under oprettelse af repository-gruppen %s"
393 msgstr "Der opstod en fejl under oprettelse af repository-gruppen %s"
394
394
395 msgid "Created repository group %s"
395 msgid "Created repository group %s"
396 msgstr "Oprettet repository-gruppen %s"
396 msgstr "Oprettet repository-gruppen %s"
397
397
398 msgid "Updated repository group %s"
398 msgid "Updated repository group %s"
399 msgstr "Opdateret repository-gruppen %s"
399 msgstr "Opdateret repository-gruppen %s"
400
400
401 msgid "Error occurred during update of repository group %s"
401 msgid "Error occurred during update of repository group %s"
402 msgstr "Der opstod en fejl under opdatering af repository-gruppen %s"
402 msgstr "Der opstod en fejl under opdatering af repository-gruppen %s"
403
403
404 msgid "This group contains %s repositories and cannot be deleted"
404 msgid "This group contains %s repositories and cannot be deleted"
405 msgstr "Denne gruppe indeholder %s repositories og kan ikke slettes"
405 msgstr "Denne gruppe indeholder %s repositories og kan ikke slettes"
406
406
407 msgid "This group contains %s subgroups and cannot be deleted"
407 msgid "This group contains %s subgroups and cannot be deleted"
408 msgstr "Denne gruppe indeholder %s undergrupper og kan ikke slettes"
408 msgstr "Denne gruppe indeholder %s undergrupper og kan ikke slettes"
409
409
410 msgid "Removed repository group %s"
410 msgid "Removed repository group %s"
411 msgstr "Fjernet repository-gruppen %s"
411 msgstr "Fjernet repository-gruppen %s"
412
412
413 msgid "Error occurred during deletion of repository group %s"
413 msgid "Error occurred during deletion of repository group %s"
414 msgstr "Der opstod en fejl under sletning af repository-gruppen %s"
414 msgstr "Der opstod en fejl under sletning af repository-gruppen %s"
415
415
416 msgid "Cannot revoke permission for yourself as admin"
417 msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
418
419 msgid "Repository group permissions updated"
416 msgid "Repository group permissions updated"
420 msgstr "Repository-gruppe tilladelser opdateret"
417 msgstr "Repository-gruppe tilladelser opdateret"
421
418
422 msgid "An error occurred during revoking of permission"
419 msgid "An error occurred during revoking of permission"
423 msgstr "Der opstod en fejl under tilbagekaldelse af tilladelse"
420 msgstr "Der opstod en fejl under tilbagekaldelse af tilladelse"
424
421
425 msgid "Error creating repository %s"
422 msgid "Error creating repository %s"
426 msgstr "Fejl ved oprettelse af repository %s"
423 msgstr "Fejl ved oprettelse af repository %s"
427
424
428 msgid "Created repository %s from %s"
425 msgid "Created repository %s from %s"
429 msgstr "Oprettet repository %s fra %s"
426 msgstr "Oprettet repository %s fra %s"
430
427
431 msgid "Forked repository %s as %s"
428 msgid "Forked repository %s as %s"
432 msgstr "Forked repository %s som %s"
429 msgstr "Forked repository %s som %s"
433
430
434 msgid "Created repository %s"
431 msgid "Created repository %s"
435 msgstr "Oprettet repository %s"
432 msgstr "Oprettet repository %s"
436
433
437 msgid "Repository %s updated successfully"
434 msgid "Repository %s updated successfully"
438 msgstr "Repository %s opdateret"
435 msgstr "Repository %s opdateret"
439
436
440 msgid "Error occurred during update of repository %s"
437 msgid "Error occurred during update of repository %s"
441 msgstr "Der opstod en fejl under opdatering af repository %s"
438 msgstr "Der opstod en fejl under opdatering af repository %s"
442
439
443 msgid "Detached %s forks"
440 msgid "Detached %s forks"
444 msgstr "Fraskilt %s forks"
441 msgstr "Fraskilt %s forks"
445
442
446 msgid "Deleted %s forks"
443 msgid "Deleted %s forks"
447 msgstr "Slettet %s forks"
444 msgstr "Slettet %s forks"
448
445
449 msgid "Deleted repository %s"
446 msgid "Deleted repository %s"
450 msgstr "Slettet repository %s"
447 msgstr "Slettet repository %s"
451
448
452 msgid "Cannot delete repository %s which still has forks"
449 msgid "Cannot delete repository %s which still has forks"
453 msgstr "Kan ikke slette repository %s, da den stadig har forks"
450 msgstr "Kan ikke slette repository %s, da den stadig har forks"
454
451
455 msgid "An error occurred during deletion of %s"
452 msgid "An error occurred during deletion of %s"
456 msgstr "Der opstod en fejl under sletning af %s"
453 msgstr "Der opstod en fejl under sletning af %s"
457
454
458 msgid "Repository permissions updated"
455 msgid "Repository permissions updated"
459 msgstr "Repository tilladelser opdateret"
456 msgstr "Repository tilladelser opdateret"
460
457
461 msgid "Field validation error: %s"
458 msgid "Field validation error: %s"
462 msgstr "Feltvaliderings fejl: %s"
459 msgstr "Feltvaliderings fejl: %s"
463
460
464 msgid "An error occurred during creation of field: %r"
461 msgid "An error occurred during creation of field: %r"
465 msgstr "Der opstod en fejl under oprettelse af felt: %r"
462 msgstr "Der opstod en fejl under oprettelse af felt: %r"
466
463
467 msgid "An error occurred during removal of field"
464 msgid "An error occurred during removal of field"
468 msgstr "Der opstod en fejl under fjernelse af feltet"
465 msgstr "Der opstod en fejl under fjernelse af feltet"
469
466
470 msgid "-- Not a fork --"
467 msgid "-- Not a fork --"
471 msgstr "-- Ikke en fork --"
468 msgstr "-- Ikke en fork --"
472
469
473 msgid "Updated repository visibility in public journal"
470 msgid "Updated repository visibility in public journal"
474 msgstr "Opdateret repository's synlighed i den offentlige journal"
471 msgstr "Opdateret repository's synlighed i den offentlige journal"
475
472
476 msgid "An error occurred during setting this repository in public journal"
473 msgid "An error occurred during setting this repository in public journal"
477 msgstr ""
474 msgstr ""
478 "Der opstod en fejl under indstilling af dette repository, i den "
475 "Der opstod en fejl under indstilling af dette repository, i den "
479 "offentlige journal"
476 "offentlige journal"
480
477
481 msgid "Nothing"
478 msgid "Nothing"
482 msgstr "Intet"
479 msgstr "Intet"
483
480
484 msgid "Marked repository %s as fork of %s"
481 msgid "Marked repository %s as fork of %s"
485 msgstr "Mærket repository %s som fork af %s"
482 msgstr "Mærket repository %s som fork af %s"
486
483
487 msgid "An error occurred during this operation"
484 msgid "An error occurred during this operation"
488 msgstr "Der opstod en fejl under denne operation"
485 msgstr "Der opstod en fejl under denne operation"
489
486
490 msgid "An error occurred during pull from remote location"
487 msgid "An error occurred during pull from remote location"
491 msgstr "Der opstod en fejl under pull fra remote placering"
488 msgstr "Der opstod en fejl under pull fra remote placering"
492
489
493 msgid "An error occurred during deletion of repository stats"
490 msgid "An error occurred during deletion of repository stats"
494 msgstr "Der opstod en fejl under sletning af repository statistik"
491 msgstr "Der opstod en fejl under sletning af repository statistik"
495
492
496 msgid "Updated VCS settings"
493 msgid "Updated VCS settings"
497 msgstr "Opdateret VCS-indstillinger"
494 msgstr "Opdateret VCS-indstillinger"
498
495
499 msgid "Error occurred while updating application settings"
496 msgid "Error occurred while updating application settings"
500 msgstr "Der opstod en fejl ved opdatering af applikationsindstillinger"
497 msgstr "Der opstod en fejl ved opdatering af applikationsindstillinger"
501
498
502 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
499 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
503 msgstr "Repositories genscannet successfuldt. Tilføjet: %s. Fjernet: %s."
500 msgstr "Repositories genscannet successfuldt. Tilføjet: %s. Fjernet: %s."
504
501
505 msgid "Invalidated %s repositories"
502 msgid "Invalidated %s repositories"
506 msgstr "Ugyldiggjort %s repositories"
503 msgstr "Ugyldiggjort %s repositories"
507
504
508 msgid "Updated application settings"
505 msgid "Updated application settings"
509 msgstr "Opdateret applikationsindstillinger"
506 msgstr "Opdateret applikationsindstillinger"
510
507
511 msgid "Updated visualisation settings"
508 msgid "Updated visualisation settings"
512 msgstr "Opdateret visualiseringsindstillinger"
509 msgstr "Opdateret visualiseringsindstillinger"
513
510
514 msgid "Error occurred during updating visualisation settings"
511 msgid "Error occurred during updating visualisation settings"
515 msgstr "Der opstod en fejl under opdatering af visualiseringsindstillinger"
512 msgstr "Der opstod en fejl under opdatering af visualiseringsindstillinger"
516
513
517 msgid "Please enter email address"
514 msgid "Please enter email address"
518 msgstr "Indtast email-adresse"
515 msgstr "Indtast email-adresse"
519
516
520 msgid "Send email task created"
517 msgid "Send email task created"
521 msgstr "Send email-opgave oprettet"
518 msgstr "Send email-opgave oprettet"
522
519
523 msgid "Added new hook"
520 msgid "Added new hook"
524 msgstr "Tilføjet nyt hook"
521 msgstr "Tilføjet nyt hook"
525
522
526 msgid "Updated hooks"
523 msgid "Updated hooks"
527 msgstr "Opdateret hooks"
524 msgstr "Opdateret hooks"
528
525
529 msgid "Error occurred during hook creation"
526 msgid "Error occurred during hook creation"
530 msgstr "Der opstod en fejl under oprettelse af et hook"
527 msgstr "Der opstod en fejl under oprettelse af et hook"
531
528
532 msgid "Whoosh reindex task scheduled"
529 msgid "Whoosh reindex task scheduled"
533 msgstr "Whoosh reindex-opgave skeduleret"
530 msgstr "Whoosh reindex-opgave skeduleret"
534
531
535 msgid "Created user group %s"
532 msgid "Created user group %s"
536 msgstr "Oprettet brugergruppe %s"
533 msgstr "Oprettet brugergruppe %s"
537
534
538 msgid "Error occurred during creation of user group %s"
535 msgid "Error occurred during creation of user group %s"
539 msgstr "Der opstod en fejl under oprettelse af brugergruppe %s"
536 msgstr "Der opstod en fejl under oprettelse af brugergruppe %s"
540
537
541 msgid "Updated user group %s"
538 msgid "Updated user group %s"
542 msgstr "Opdateret brugergruppe %s"
539 msgstr "Opdateret brugergruppe %s"
543
540
544 msgid "Error occurred during update of user group %s"
541 msgid "Error occurred during update of user group %s"
545 msgstr "Der opstod en fejl under opdatering af brugergruppe %s"
542 msgstr "Der opstod en fejl under opdatering af brugergruppe %s"
546
543
547 msgid "Successfully deleted user group"
544 msgid "Successfully deleted user group"
548 msgstr "Brugergruppe slettet succesfuldt"
545 msgstr "Brugergruppe slettet succesfuldt"
549
546
550 msgid "An error occurred during deletion of user group"
547 msgid "An error occurred during deletion of user group"
551 msgstr "Der opstod en fejl under sletning af brugergruppe"
548 msgstr "Der opstod en fejl under sletning af brugergruppe"
552
549
553 msgid "User group permissions updated"
550 msgid "User group permissions updated"
554 msgstr "Brugergrupper-tilladelser opdateret"
551 msgstr "Brugergrupper-tilladelser opdateret"
555
552
553 msgid "Cannot revoke permission for yourself as admin"
554 msgstr "Kan ikke tilbagekalde tilladelse for én selv som admin"
555
556 msgid "Updated permissions"
556 msgid "Updated permissions"
557 msgstr "Tilladelser opdateret"
557 msgstr "Tilladelser opdateret"
558
558
559 msgid "An error occurred during permissions saving"
559 msgid "An error occurred during permissions saving"
560 msgstr "Der opstod en fejl under gemning af tilladelser"
560 msgstr "Der opstod en fejl under gemning af tilladelser"
561
561
562 msgid "Created user %s"
562 msgid "Created user %s"
563 msgstr "Bruger %s oprettet"
563 msgstr "Bruger %s oprettet"
564
564
565 msgid "Error occurred during creation of user %s"
565 msgid "Error occurred during creation of user %s"
566 msgstr "Der opstod en fejl under oprettelse af bruger %s"
566 msgstr "Der opstod en fejl under oprettelse af bruger %s"
567
567
568 msgid "User updated successfully"
568 msgid "User updated successfully"
569 msgstr "Bruger opdateret"
569 msgstr "Bruger opdateret"
570
570
571 msgid "Successfully deleted user"
571 msgid "Successfully deleted user"
572 msgstr "Slettet bruger"
572 msgstr "Slettet bruger"
573
573
574 msgid "An error occurred during deletion of user"
574 msgid "An error occurred during deletion of user"
575 msgstr "Der opstod en fejl under sletning af bruger %s"
575 msgstr "Der opstod en fejl under sletning af bruger %s"
576
576
577 msgid "The default user cannot be edited"
577 msgid "The default user cannot be edited"
578 msgstr "Standardbrugeren kan ikke redigeres"
578 msgstr "Standardbrugeren kan ikke redigeres"
579
579
580 msgid "Added IP address %s to user whitelist"
580 msgid "Added IP address %s to user whitelist"
581 msgstr "Tilføjet IP-adresse %s til bruger-whitelist"
581 msgstr "Tilføjet IP-adresse %s til bruger-whitelist"
582
582
583 msgid "An error occurred while adding IP address"
583 msgid "An error occurred while adding IP address"
584 msgstr "Der opstod en fejl under tilføjelse af IP-adresse"
584 msgstr "Der opstod en fejl under tilføjelse af IP-adresse"
585
585
586 msgid "Removed IP address from user whitelist"
586 msgid "Removed IP address from user whitelist"
587 msgstr "Fjernet IP-adresse fra bruger-whitelist"
587 msgstr "Fjernet IP-adresse fra bruger-whitelist"
588
588
589 msgid "You need to be a registered user to perform this action"
589 msgid "You need to be a registered user to perform this action"
590 msgstr "Du skal være registreret bruger for at kunne udføre denne handling"
590 msgstr "Du skal være registreret bruger for at kunne udføre denne handling"
591
591
592 msgid "You need to be signed in to view this page"
592 msgid "You need to be signed in to view this page"
593 msgstr "Du skal være logget ind for at se denne side"
593 msgstr "Du skal være logget ind for at se denne side"
594
594
595 msgid "Binary file"
595 msgid "Binary file"
596 msgstr "Binær fil"
596 msgstr "Binær fil"
597
597
598 msgid ""
598 msgid ""
599 "Changeset was too big and was cut off, use diff menu to display this diff"
599 "Changeset was too big and was cut off, use diff menu to display this diff"
600 msgstr ""
600 msgstr ""
601 "Changeset var for stor, og blev afskåret, brug diff menu for at få vist "
601 "Changeset var for stor, og blev afskåret, brug diff menu for at få vist "
602 "denne diff"
602 "denne diff"
603
603
604 msgid "No changes detected"
604 msgid "No changes detected"
605 msgstr "Ingen ændringer fundet"
605 msgstr "Ingen ændringer fundet"
606
606
607 msgid "Increase diff context to %(num)s lines"
607 msgid "Increase diff context to %(num)s lines"
608 msgstr "Øg diff konteksten med %(num)s linjer"
608 msgstr "Øg diff konteksten med %(num)s linjer"
609
609
610 msgid "Deleted branch: %s"
610 msgid "Deleted branch: %s"
611 msgstr "Slettet branch: %s"
611 msgstr "Slettet branch: %s"
612
612
613 msgid "Created tag: %s"
613 msgid "Created tag: %s"
614 msgstr "Oprettet tag: %s"
614 msgstr "Oprettet tag: %s"
615
615
616 msgid "Changeset %s not found"
616 msgid "Changeset %s not found"
617 msgstr "Changeset %s ikke fundet"
617 msgstr "Changeset %s ikke fundet"
618
618
619 msgid "Show all combined changesets %s->%s"
619 msgid "Show all combined changesets %s->%s"
620 msgstr "Vis alle kombineret changesets %s->%s"
620 msgstr "Vis alle kombineret changesets %s->%s"
621
621
622 msgid "Compare view"
622 msgid "Compare view"
623 msgstr "Sammenlign visning"
623 msgstr "Sammenlign visning"
624
624
625 msgid "and"
625 msgid "and"
626 msgstr "og"
626 msgstr "og"
627
627
628 msgid "%s more"
628 msgid "%s more"
629 msgstr "%s flere"
629 msgstr "%s flere"
630
630
631 msgid "revisions"
631 msgid "revisions"
632 msgstr "revisioner"
632 msgstr "revisioner"
633
633
634 msgid "Fork name %s"
634 msgid "Fork name %s"
635 msgstr "Fork-navn %s"
635 msgstr "Fork-navn %s"
636
636
637 msgid "Pull request %s"
637 msgid "Pull request %s"
638 msgstr "Pull-forespørgsel %s"
638 msgstr "Pull-forespørgsel %s"
639
639
640 msgid "[deleted] repository"
640 msgid "[deleted] repository"
641 msgstr "[slettet] repository"
641 msgstr "[slettet] repository"
642
642
643 msgid "[created] repository"
643 msgid "[created] repository"
644 msgstr "[oprettet] repository"
644 msgstr "[oprettet] repository"
645
645
646 msgid "[created] repository as fork"
646 msgid "[created] repository as fork"
647 msgstr "[oprettet] repository som fork"
647 msgstr "[oprettet] repository som fork"
648
648
649 msgid "[forked] repository"
649 msgid "[forked] repository"
650 msgstr "[forked] repository"
650 msgstr "[forked] repository"
651
651
652 msgid "[updated] repository"
652 msgid "[updated] repository"
653 msgstr "[opdateret] repository"
653 msgstr "[opdateret] repository"
654
654
655 msgid "[downloaded] archive from repository"
655 msgid "[downloaded] archive from repository"
656 msgstr "[hentet] arkiv fra repository"
656 msgstr "[hentet] arkiv fra repository"
657
657
658 msgid "[delete] repository"
658 msgid "[delete] repository"
659 msgstr "[slettet] repository"
659 msgstr "[slettet] repository"
660
660
661 msgid "[created] user"
661 msgid "[created] user"
662 msgstr "[oprettet] bruger"
662 msgstr "[oprettet] bruger"
663
663
664 msgid "[updated] user"
664 msgid "[updated] user"
665 msgstr "[opdateret] bruger"
665 msgstr "[opdateret] bruger"
666
666
667 msgid "[created] user group"
667 msgid "[created] user group"
668 msgstr "[oprettet] brugergruppe"
668 msgstr "[oprettet] brugergruppe"
669
669
670 msgid "[updated] user group"
670 msgid "[updated] user group"
671 msgstr "[opdateret] brugergruppe"
671 msgstr "[opdateret] brugergruppe"
672
672
673 msgid "[commented] on revision in repository"
673 msgid "[commented] on revision in repository"
674 msgstr "[kommenterede] på revision i repository"
674 msgstr "[kommenterede] på revision i repository"
675
675
676 msgid "[commented] on pull request for"
676 msgid "[commented] on pull request for"
677 msgstr "[kommenterede] på pull-forespørgsel for"
677 msgstr "[kommenterede] på pull-forespørgsel for"
678
678
679 msgid "[closed] pull request for"
679 msgid "[closed] pull request for"
680 msgstr "[lukket] pull-forespørgsel for"
680 msgstr "[lukket] pull-forespørgsel for"
681
681
682 msgid "[pushed] into"
682 msgid "[pushed] into"
683 msgstr "[pushed] ind i"
683 msgstr "[pushed] ind i"
684
684
685 msgid "[committed via Kallithea] into repository"
685 msgid "[committed via Kallithea] into repository"
686 msgstr "[committed via kallithea] ind i repository"
686 msgstr "[committed via kallithea] ind i repository"
687
687
688 msgid "[pulled from remote] into repository"
688 msgid "[pulled from remote] into repository"
689 msgstr "[pulled fra remote] ind i repository"
689 msgstr "[pulled fra remote] ind i repository"
690
690
691 msgid "[pulled] from"
691 msgid "[pulled] from"
692 msgstr "[pulled] fra"
692 msgstr "[pulled] fra"
693
693
694 msgid "[started following] repository"
694 msgid "[started following] repository"
695 msgstr "[begyndt at følge] repository"
695 msgstr "[begyndt at følge] repository"
696
696
697 msgid "[stopped following] repository"
697 msgid "[stopped following] repository"
698 msgstr "[stoppet at følge] repository"
698 msgstr "[stoppet at følge] repository"
699
699
700 msgid " and %s more"
700 msgid " and %s more"
701 msgstr " og %s flere"
701 msgstr " og %s flere"
702
702
703 msgid "No files"
703 msgid "No files"
704 msgstr "Ingen filer"
704 msgstr "Ingen filer"
705
705
706 msgid "new file"
706 msgid "new file"
707 msgstr "ny fil"
707 msgstr "ny fil"
708
708
709 msgid "mod"
709 msgid "mod"
710 msgstr "mod"
710 msgstr "mod"
711
711
712 msgid "del"
712 msgid "del"
713 msgstr "del"
713 msgstr "del"
714
714
715 msgid "rename"
715 msgid "rename"
716 msgstr "omdøb"
716 msgstr "omdøb"
717
717
718 msgid "chmod"
718 msgid "chmod"
719 msgstr "chmod"
719 msgstr "chmod"
720
720
721 msgid "in %s"
721 msgid "in %s"
722 msgstr "i %s"
722 msgstr "i %s"
723
723
724 msgid "%s ago"
724 msgid "%s ago"
725 msgstr "%s siden"
725 msgstr "%s siden"
726
726
727 msgid "in %s and %s"
727 msgid "in %s and %s"
728 msgstr "i %s og %s"
728 msgstr "i %s og %s"
729
729
730 msgid "%s and %s ago"
730 msgid "%s and %s ago"
731 msgstr "%s og %s siden"
731 msgstr "%s og %s siden"
732
732
733 msgid "just now"
733 msgid "just now"
734 msgstr "lige nu"
734 msgstr "lige nu"
735
735
736 msgid "top level"
736 msgid "top level"
737 msgstr "top-niveau"
737 msgstr "top-niveau"
738
738
739 msgid "Kallithea Administrator"
739 msgid "Kallithea Administrator"
740 msgstr "Kallithea Administrator"
740 msgstr "Kallithea Administrator"
741
741
742 msgid "Default user has no access to new repositories"
742 msgid "Default user has no access to new repositories"
743 msgstr "Standard-bruger har ikke adgang til nye repositories"
743 msgstr "Standard-bruger har ikke adgang til nye repositories"
744
744
745 msgid "Default user has read access to new repositories"
745 msgid "Default user has read access to new repositories"
746 msgstr "Standard-bruger har læse-adgang til nye repositories"
746 msgstr "Standard-bruger har læse-adgang til nye repositories"
747
747
748 msgid "Default user has write access to new repositories"
748 msgid "Default user has write access to new repositories"
749 msgstr "Standard-bruger har skrive-adgang til nye repositories"
749 msgstr "Standard-bruger har skrive-adgang til nye repositories"
750
750
751 msgid "Default user has admin access to new repositories"
751 msgid "Default user has admin access to new repositories"
752 msgstr "Standard-bruger har admin-adgang til nye repositories"
752 msgstr "Standard-bruger har admin-adgang til nye repositories"
753
753
754 msgid "Default user has no access to new repository groups"
754 msgid "Default user has no access to new repository groups"
755 msgstr "Standard-bruger har ikke adgang til nye repository-grupper"
755 msgstr "Standard-bruger har ikke adgang til nye repository-grupper"
756
756
757 msgid "Default user has read access to new repository groups"
757 msgid "Default user has read access to new repository groups"
758 msgstr "Standard-bruger har læse-adgang til nye repository-grupper"
758 msgstr "Standard-bruger har læse-adgang til nye repository-grupper"
759
759
760 msgid "Default user has write access to new repository groups"
760 msgid "Default user has write access to new repository groups"
761 msgstr "Standard-bruger har skrive-adgang til nye repository-grupper"
761 msgstr "Standard-bruger har skrive-adgang til nye repository-grupper"
762
762
763 msgid "Default user has admin access to new repository groups"
763 msgid "Default user has admin access to new repository groups"
764 msgstr "Standard-bruger har admin-adgang til nye repository-grupper"
764 msgstr "Standard-bruger har admin-adgang til nye repository-grupper"
765
765
766 msgid "Default user has no access to new user groups"
766 msgid "Default user has no access to new user groups"
767 msgstr "Standard-bruger har ikke adgang til nye brugergrupper"
767 msgstr "Standard-bruger har ikke adgang til nye brugergrupper"
768
768
769 msgid "Default user has read access to new user groups"
769 msgid "Default user has read access to new user groups"
770 msgstr "Standard-bruger har læse-adgang til nye brugergrupper"
770 msgstr "Standard-bruger har læse-adgang til nye brugergrupper"
771
771
772 msgid "Default user has write access to new user groups"
772 msgid "Default user has write access to new user groups"
773 msgstr "Standard-bruger har skrive-adgang til nye brugergrupper"
773 msgstr "Standard-bruger har skrive-adgang til nye brugergrupper"
774
774
775 msgid "Default user has admin access to new user groups"
775 msgid "Default user has admin access to new user groups"
776 msgstr "Standard-bruger har admin-adgang til nye brugergrupper"
776 msgstr "Standard-bruger har admin-adgang til nye brugergrupper"
777
777
778 msgid "Only admins can create user groups"
778 msgid "Only admins can create user groups"
779 msgstr "Kun administratorer kan oprette brugergrupper"
779 msgstr "Kun administratorer kan oprette brugergrupper"
780
780
781 msgid "Non-admins can create user groups"
781 msgid "Non-admins can create user groups"
782 msgstr "Ikke-administratorer kan oprette brugergrupper"
782 msgstr "Ikke-administratorer kan oprette brugergrupper"
783
783
784 msgid "Only admins can create top level repositories"
784 msgid "Only admins can create top level repositories"
785 msgstr "Kun administratorer kan oprette top-niveau repositories"
785 msgstr "Kun administratorer kan oprette top-niveau repositories"
786
786
787 msgid "Non-admins can create top level repositories"
787 msgid "Non-admins can create top level repositories"
788 msgstr "Ikke-administratorer kan oprette top-niveau repositories"
788 msgstr "Ikke-administratorer kan oprette top-niveau repositories"
789
789
790 msgid "Only admins can fork repositories"
790 msgid "Only admins can fork repositories"
791 msgstr "Kun admins kan fork repositories"
791 msgstr "Kun admins kan fork repositories"
792
792
793 msgid "Non-admins can fork repositories"
793 msgid "Non-admins can fork repositories"
794 msgstr "Ikke-administratorer kan forke repositories"
794 msgstr "Ikke-administratorer kan forke repositories"
795
795
796 msgid "Registration disabled"
796 msgid "Registration disabled"
797 msgstr "Registrering deaktiveret"
797 msgstr "Registrering deaktiveret"
798
798
799 msgid "User registration with manual account activation"
799 msgid "User registration with manual account activation"
800 msgstr "Brugerregistrering med manuel kontoaktivering"
800 msgstr "Brugerregistrering med manuel kontoaktivering"
801
801
802 msgid "User registration with automatic account activation"
802 msgid "User registration with automatic account activation"
803 msgstr "Brugerregistrering med automatisk kontoaktivering"
803 msgstr "Brugerregistrering med automatisk kontoaktivering"
804
804
805 msgid "Not reviewed"
805 msgid "Not reviewed"
806 msgstr "Ikke gennemgået"
806 msgstr "Ikke gennemgået"
807
807
808 msgid "Under review"
808 msgid "Under review"
809 msgstr "Under gennemgang"
809 msgstr "Under gennemgang"
810
810
811 msgid "Not approved"
811 msgid "Not approved"
812 msgstr "Ikke godkendt"
812 msgstr "Ikke godkendt"
813
813
814 msgid "Approved"
814 msgid "Approved"
815 msgstr "Godkendt"
815 msgstr "Godkendt"
816
816
817 msgid "Please enter a login"
817 msgid "Please enter a login"
818 msgstr "Indtast venligst et login"
818 msgstr "Indtast venligst et login"
819
819
820 msgid "Enter a value %(min)i characters long or more"
820 msgid "Enter a value %(min)i characters long or more"
821 msgstr "Indtast en værdi med mindst %(min)i tegn"
821 msgstr "Indtast en værdi med mindst %(min)i tegn"
822
822
823 msgid "Please enter a password"
823 msgid "Please enter a password"
824 msgstr "Skriv venligst et kodeord"
824 msgstr "Skriv venligst et kodeord"
825
825
826 msgid "Enter %(min)i characters or more"
826 msgid "Enter %(min)i characters or more"
827 msgstr "Indtast %(min)i tegn eller flere"
827 msgstr "Indtast %(min)i tegn eller flere"
828
828
829 msgid "Name must not contain only digits"
829 msgid "Name must not contain only digits"
830 msgstr "Navn må ikke kun indeholde cifre"
830 msgstr "Navn må ikke kun indeholde cifre"
831
831
832 msgid "New user %(new_username)s registered"
832 msgid "New user %(new_username)s registered"
833 msgstr "Ny bruger %(new_username)s registreret"
833 msgstr "Ny bruger %(new_username)s registreret"
834
834
835 msgid ""
835 msgid ""
836 "[Review] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
836 "[Review] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
837 "%(pr_source_branch)s by %(pr_owner_username)s"
837 "%(pr_source_branch)s by %(pr_owner_username)s"
838 msgstr ""
838 msgstr ""
839 "[Gennemgang] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
839 "[Gennemgang] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
840 "%(pr_source_branch)s af %(pr_owner_username)s"
840 "%(pr_source_branch)s af %(pr_owner_username)s"
841
841
842 msgid ""
842 msgid ""
843 "[Comment] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
843 "[Comment] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" from "
844 "%(pr_source_branch)s by %(pr_owner_username)s"
844 "%(pr_source_branch)s by %(pr_owner_username)s"
845 msgstr ""
845 msgstr ""
846 "[Kommentar] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
846 "[Kommentar] %(repo_name)s PR %(pr_nice_id)s \"%(pr_title_short)s\" fra "
847 "%(pr_source_branch)s af %(pr_owner_username)s"
847 "%(pr_source_branch)s af %(pr_owner_username)s"
848
848
849 msgid "Closing"
849 msgid "Closing"
850 msgstr "Lukning"
850 msgstr "Lukning"
851
851
852 msgid "Cannot create empty pull request"
852 msgid "Cannot create empty pull request"
853 msgstr "Kan ikke oprette en tom pull-forespørgsel"
853 msgstr "Kan ikke oprette en tom pull-forespørgsel"
854
854
855 msgid "Ignore whitespace"
855 msgid "Ignore whitespace"
856 msgstr "Ignorer mellemrum"
856 msgstr "Ignorer mellemrum"
@@ -1,2482 +1,2482 b''
1 # Copyright (C) 2014 RhodeCode GmbH, and others.
1 # Copyright (C) 2014 RhodeCode GmbH, and others.
2 # This file is distributed under the same license as the Kallithea project.
2 # This file is distributed under the same license as the Kallithea project.
3
3
4 msgid ""
4 msgid ""
5 msgstr ""
5 msgstr ""
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
6 "Report-Msgid-Bugs-To: translations@kallithea-scm.org\n"
7 "Language: de\n"
7 "Language: de\n"
8 "MIME-Version: 1.0\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
12
13 msgid ""
13 msgid ""
14 "CSRF token leak has been detected - all form tokens have been expired"
14 "CSRF token leak has been detected - all form tokens have been expired"
15 msgstr ""
15 msgstr ""
16 "Es wurde ein CSRF Leck entdeckt. Alle Formular Token sind abgelaufen"
16 "Es wurde ein CSRF Leck entdeckt. Alle Formular Token sind abgelaufen"
17
17
18 msgid "Repository not found in the filesystem"
18 msgid "Repository not found in the filesystem"
19 msgstr "Das Repository konnte nicht im Filesystem gefunden werden"
19 msgstr "Das Repository konnte nicht im Filesystem gefunden werden"
20
20
21 msgid "There are no changesets yet"
21 msgid "There are no changesets yet"
22 msgstr "Es gibt noch keine Änderungssätze"
22 msgstr "Es gibt noch keine Änderungssätze"
23
23
24 msgid "None"
24 msgid "None"
25 msgstr "Keine"
25 msgstr "Keine"
26
26
27 msgid "(closed)"
27 msgid "(closed)"
28 msgstr "(geschlossen)"
28 msgstr "(geschlossen)"
29
29
30 msgid "Successfully deleted pull request %s"
30 msgid "Successfully deleted pull request %s"
31 msgstr "Pull-Request %s erfolgreich gelöscht"
31 msgstr "Pull-Request %s erfolgreich gelöscht"
32
32
33 msgid "Such revision does not exist for this repository"
33 msgid "Such revision does not exist for this repository"
34 msgstr "Die angegebene Version existiert nicht in diesem Repository"
34 msgstr "Die angegebene Version existiert nicht in diesem Repository"
35
35
36 msgid "Cannot show empty diff"
36 msgid "Cannot show empty diff"
37 msgstr "Kann leeren diff nicht anzeigen"
37 msgstr "Kann leeren diff nicht anzeigen"
38
38
39 msgid "No ancestor found for merge diff"
39 msgid "No ancestor found for merge diff"
40 msgstr "Es konnte kein Vorfahre für den merge diff gefunden werden"
40 msgstr "Es konnte kein Vorfahre für den merge diff gefunden werden"
41
41
42 msgid "Multiple merge ancestors found for merge compare"
42 msgid "Multiple merge ancestors found for merge compare"
43 msgstr "Es wurden mehrere merge Vorfahren für den merge Vergleich gefunden"
43 msgstr "Es wurden mehrere merge Vorfahren für den merge Vergleich gefunden"
44
44
45 msgid "Cannot compare repositories without using common ancestor"
45 msgid "Cannot compare repositories without using common ancestor"
46 msgstr ""
46 msgstr ""
47 "Ohne einen gemeinsamen Vorfahren ist ein Vergleich der Repositories nicht "
47 "Ohne einen gemeinsamen Vorfahren ist ein Vergleich der Repositories nicht "
48 "möglich"
48 "möglich"
49
49
50 msgid "No response"
50 msgid "No response"
51 msgstr "Keine Rückmeldung"
51 msgstr "Keine Rückmeldung"
52
52
53 msgid "Unknown error"
53 msgid "Unknown error"
54 msgstr "Unbekannter Fehler"
54 msgstr "Unbekannter Fehler"
55
55
56 msgid ""
56 msgid ""
57 "The request could not be understood by the server due to malformed syntax."
57 "The request could not be understood by the server due to malformed syntax."
58 msgstr ""
58 msgstr ""
59 "Die Anfrage konnte wegen ungültiger Syntax vom Server nicht ausgewertet "
59 "Die Anfrage konnte wegen ungültiger Syntax vom Server nicht ausgewertet "
60 "werden."
60 "werden."
61
61
62 msgid "Unauthorized access to resource"
62 msgid "Unauthorized access to resource"
63 msgstr "Unauthorisierter Zugang zur Ressource"
63 msgstr "Unauthorisierter Zugang zur Ressource"
64
64
65 msgid "You don't have permission to view this page"
65 msgid "You don't have permission to view this page"
66 msgstr "Du hast keine Rechte, um diese Seite zu betrachten"
66 msgstr "Du hast keine Rechte, um diese Seite zu betrachten"
67
67
68 msgid "The resource could not be found"
68 msgid "The resource could not be found"
69 msgstr "Die Ressource konnte nicht gefunden werden"
69 msgstr "Die Ressource konnte nicht gefunden werden"
70
70
71 msgid ""
71 msgid ""
72 "The server encountered an unexpected condition which prevented it from "
72 "The server encountered an unexpected condition which prevented it from "
73 "fulfilling the request."
73 "fulfilling the request."
74 msgstr ""
74 msgstr ""
75 "Aufgrund einer unerwarteten Gegebenheit konnte der Server diese Anfrage "
75 "Aufgrund einer unerwarteten Gegebenheit konnte der Server diese Anfrage "
76 "nicht vollenden."
76 "nicht vollenden."
77
77
78 msgid "%s committed on %s"
78 msgid "%s committed on %s"
79 msgstr "%s committed am %s"
79 msgstr "%s committed am %s"
80
80
81 msgid "Changeset was too big and was cut off..."
81 msgid "Changeset was too big and was cut off..."
82 msgstr "Der Änderungssatz war zu groß und wurde abgeschnitten..."
82 msgstr "Der Änderungssatz war zu groß und wurde abgeschnitten..."
83
83
84 msgid "%s %s feed"
84 msgid "%s %s feed"
85 msgstr "%s %s Feed"
85 msgstr "%s %s Feed"
86
86
87 msgid "Changes on %s repository"
87 msgid "Changes on %s repository"
88 msgstr "Änderungen im %s Repository"
88 msgstr "Änderungen im %s Repository"
89
89
90 msgid "Click here to add new file"
90 msgid "Click here to add new file"
91 msgstr "Hier klicken, um eine neue Datei hinzuzufügen"
91 msgstr "Hier klicken, um eine neue Datei hinzuzufügen"
92
92
93 msgid "%s at %s"
93 msgid "%s at %s"
94 msgstr "%s auf %s"
94 msgstr "%s auf %s"
95
95
96 msgid "Deleted file %s via Kallithea"
96 msgid "Deleted file %s via Kallithea"
97 msgstr "Datei %s via Kallithea gelöscht"
97 msgstr "Datei %s via Kallithea gelöscht"
98
98
99 msgid "Successfully deleted file %s"
99 msgid "Successfully deleted file %s"
100 msgstr "Datei %s erfolgreich gelöscht"
100 msgstr "Datei %s erfolgreich gelöscht"
101
101
102 msgid "Error occurred during commit"
102 msgid "Error occurred during commit"
103 msgstr "Während des Commits trat ein Fehler auf"
103 msgstr "Während des Commits trat ein Fehler auf"
104
104
105 msgid "Edited file %s via Kallithea"
105 msgid "Edited file %s via Kallithea"
106 msgstr "Datei %s via Kallithea editiert"
106 msgstr "Datei %s via Kallithea editiert"
107
107
108 msgid "No changes"
108 msgid "No changes"
109 msgstr "Keine Änderungen"
109 msgstr "Keine Änderungen"
110
110
111 msgid "Successfully committed to %s"
111 msgid "Successfully committed to %s"
112 msgstr "Der Commit zu %s war erfolgreich"
112 msgstr "Der Commit zu %s war erfolgreich"
113
113
114 msgid "Added file via Kallithea"
114 msgid "Added file via Kallithea"
115 msgstr "Datei via Kallithea hinzugefügt"
115 msgstr "Datei via Kallithea hinzugefügt"
116
116
117 msgid "No content"
117 msgid "No content"
118 msgstr "Kein Inhalt"
118 msgstr "Kein Inhalt"
119
119
120 msgid "No filename"
120 msgid "No filename"
121 msgstr "Kein Dateiname"
121 msgstr "Kein Dateiname"
122
122
123 msgid "Location must be relative path and must not contain .. in path"
123 msgid "Location must be relative path and must not contain .. in path"
124 msgstr "Der Ort muss ein relativer Pfad sein und darf nicht .. enthalten"
124 msgstr "Der Ort muss ein relativer Pfad sein und darf nicht .. enthalten"
125
125
126 msgid "Downloads disabled"
126 msgid "Downloads disabled"
127 msgstr "Downloads gesperrt"
127 msgstr "Downloads gesperrt"
128
128
129 msgid "Unknown revision %s"
129 msgid "Unknown revision %s"
130 msgstr "Unbekannte Revision %s"
130 msgstr "Unbekannte Revision %s"
131
131
132 msgid "Empty repository"
132 msgid "Empty repository"
133 msgstr "Leeres Repository"
133 msgstr "Leeres Repository"
134
134
135 msgid "Unknown archive type"
135 msgid "Unknown archive type"
136 msgstr "Unbekannter Archivtyp"
136 msgstr "Unbekannter Archivtyp"
137
137
138 msgid "Changesets"
138 msgid "Changesets"
139 msgstr "Änderungssätze"
139 msgstr "Änderungssätze"
140
140
141 msgid "Branches"
141 msgid "Branches"
142 msgstr "Entwicklungszweige"
142 msgstr "Entwicklungszweige"
143
143
144 msgid "Tags"
144 msgid "Tags"
145 msgstr "Tags"
145 msgstr "Tags"
146
146
147 msgid "An error occurred during repository forking %s"
147 msgid "An error occurred during repository forking %s"
148 msgstr "Während des Forkens des Repositorys trat ein Fehler auf: %s"
148 msgstr "Während des Forkens des Repositorys trat ein Fehler auf: %s"
149
149
150 msgid "Groups"
150 msgid "Groups"
151 msgstr "Gruppen"
151 msgstr "Gruppen"
152
152
153 msgid "Repositories"
153 msgid "Repositories"
154 msgstr "Repositories"
154 msgstr "Repositories"
155
155
156 msgid "Branch"
156 msgid "Branch"
157 msgstr "Zweig"
157 msgstr "Zweig"
158
158
159 msgid "Closed Branches"
159 msgid "Closed Branches"
160 msgstr "Geschlossene Branches"
160 msgstr "Geschlossene Branches"
161
161
162 msgid "Tag"
162 msgid "Tag"
163 msgstr "Marke"
163 msgstr "Marke"
164
164
165 msgid "Bookmark"
165 msgid "Bookmark"
166 msgstr "Lesezeichen"
166 msgstr "Lesezeichen"
167
167
168 msgid "Public Journal"
168 msgid "Public Journal"
169 msgstr "Öffentliches Logbuch"
169 msgstr "Öffentliches Logbuch"
170
170
171 msgid "Journal"
171 msgid "Journal"
172 msgstr "Logbuch"
172 msgstr "Logbuch"
173
173
174 msgid "Bad captcha"
174 msgid "Bad captcha"
175 msgstr "Falsches Captcha"
175 msgstr "Falsches Captcha"
176
176
177 msgid "You have successfully registered with %s"
177 msgid "You have successfully registered with %s"
178 msgstr "Sie haben sich erfolgreich bei %s registriert"
178 msgstr "Sie haben sich erfolgreich bei %s registriert"
179
179
180 msgid "A password reset confirmation code has been sent"
180 msgid "A password reset confirmation code has been sent"
181 msgstr "Ihr Link um das Passwort zurückzusetzen wurde versendet"
181 msgstr "Ihr Link um das Passwort zurückzusetzen wurde versendet"
182
182
183 msgid "Invalid password reset token"
183 msgid "Invalid password reset token"
184 msgstr "Ungültiges Token zum Zurücksetzen des Passworts."
184 msgstr "Ungültiges Token zum Zurücksetzen des Passworts."
185
185
186 msgid "Successfully updated password"
186 msgid "Successfully updated password"
187 msgstr "Erfolgreich Kennwort geändert"
187 msgstr "Erfolgreich Kennwort geändert"
188
188
189 msgid "Invalid reviewer \"%s\" specified"
189 msgid "Invalid reviewer \"%s\" specified"
190 msgstr "Ungültigen Begutachter \"%s\" angegeben"
190 msgstr "Ungültigen Begutachter \"%s\" angegeben"
191
191
192 msgid "%s (closed)"
192 msgid "%s (closed)"
193 msgstr "%s (geschlossen)"
193 msgstr "%s (geschlossen)"
194
194
195 msgid "Changeset"
195 msgid "Changeset"
196 msgstr "Änderungssatz"
196 msgstr "Änderungssatz"
197
197
198 msgid "Special"
198 msgid "Special"
199 msgstr "Spezial"
199 msgstr "Spezial"
200
200
201 msgid "Peer branches"
201 msgid "Peer branches"
202 msgstr "Branches anderer"
202 msgstr "Branches anderer"
203
203
204 msgid "Bookmarks"
204 msgid "Bookmarks"
205 msgstr "Lesezeichen"
205 msgstr "Lesezeichen"
206
206
207 msgid "Error creating pull request: %s"
207 msgid "Error creating pull request: %s"
208 msgstr "Fehler beim Erstellen des Pull-Requests: %s"
208 msgstr "Fehler beim Erstellen des Pull-Requests: %s"
209
209
210 msgid "Error occurred while creating pull request"
210 msgid "Error occurred while creating pull request"
211 msgstr "Während des Erstellens des Pull Requests trat ein Fehler auf"
211 msgstr "Während des Erstellens des Pull Requests trat ein Fehler auf"
212
212
213 msgid "Successfully opened new pull request"
213 msgid "Successfully opened new pull request"
214 msgstr "Es wurde erfolgreich ein neuer Pullrequest eröffnet"
214 msgstr "Es wurde erfolgreich ein neuer Pullrequest eröffnet"
215
215
216 msgid "Meanwhile, the following reviewers have been added: %s"
216 msgid "Meanwhile, the following reviewers have been added: %s"
217 msgstr "Es wurden inzwischen folgende Begutachter hinzugefügt: %s"
217 msgstr "Es wurden inzwischen folgende Begutachter hinzugefügt: %s"
218
218
219 msgid "Meanwhile, the following reviewers have been removed: %s"
219 msgid "Meanwhile, the following reviewers have been removed: %s"
220 msgstr "Es wurden inzwischen folgende Begutachter entfernt: %s"
220 msgstr "Es wurden inzwischen folgende Begutachter entfernt: %s"
221
221
222 msgid "No description"
222 msgid "No description"
223 msgstr "Keine Beschreibung"
223 msgstr "Keine Beschreibung"
224
224
225 msgid "Pull request updated"
225 msgid "Pull request updated"
226 msgstr "Pull Request aktualisiert"
226 msgstr "Pull Request aktualisiert"
227
227
228 msgid "Successfully deleted pull request"
228 msgid "Successfully deleted pull request"
229 msgstr "Erfolgreich Pull-Request gelöscht"
229 msgstr "Erfolgreich Pull-Request gelöscht"
230
230
231 msgid "Revision %s not found in %s"
231 msgid "Revision %s not found in %s"
232 msgstr "Die Revision %s konnte in %s nicht gefunden werden"
232 msgstr "Die Revision %s konnte in %s nicht gefunden werden"
233
233
234 msgid "This pull request has already been merged to %s."
234 msgid "This pull request has already been merged to %s."
235 msgstr "Dieser Pull Request wurde bereits in %s integriert."
235 msgstr "Dieser Pull Request wurde bereits in %s integriert."
236
236
237 msgid "This pull request has been closed and can not be updated."
237 msgid "This pull request has been closed and can not be updated."
238 msgstr ""
238 msgstr ""
239 "Dieser Pull Request wurde geschlossen und kann daher nicht aktualisiert "
239 "Dieser Pull Request wurde geschlossen und kann daher nicht aktualisiert "
240 "werden."
240 "werden."
241
241
242 msgid "Note: Branch %s has another head: %s."
242 msgid "Note: Branch %s has another head: %s."
243 msgstr "Hinweis: Branch %s hat einen anderen Head: %s."
243 msgstr "Hinweis: Branch %s hat einen anderen Head: %s."
244
244
245 msgid "The diff can't be shown - the PR revisions could not be found."
245 msgid "The diff can't be shown - the PR revisions could not be found."
246 msgstr ""
246 msgstr ""
247 "Der diff kann nicht angezeigt werden. Die Pull Request Revisionen konnten "
247 "Der diff kann nicht angezeigt werden. Die Pull Request Revisionen konnten "
248 "nicht gefunden werden."
248 "nicht gefunden werden."
249
249
250 msgid "Invalid search query. Try quoting it."
250 msgid "Invalid search query. Try quoting it."
251 msgstr ""
251 msgstr ""
252 "Ungültige Suchanfrage. Versuchen sie es in Anführungzeichen zu setzen."
252 "Ungültige Suchanfrage. Versuchen sie es in Anführungzeichen zu setzen."
253
253
254 msgid "The server has no search index."
254 msgid "The server has no search index."
255 msgstr "Der Server hat keinen Suchindex."
255 msgstr "Der Server hat keinen Suchindex."
256
256
257 msgid "An error occurred during search operation."
257 msgid "An error occurred during search operation."
258 msgstr "Während der Suchoperation trat ein Fehler auf."
258 msgstr "Während der Suchoperation trat ein Fehler auf."
259
259
260 msgid "No data ready yet"
260 msgid "No data ready yet"
261 msgstr "Es stehen noch keine Daten zur Verfügung"
261 msgstr "Es stehen noch keine Daten zur Verfügung"
262
262
263 msgid "Statistics are disabled for this repository"
263 msgid "Statistics are disabled for this repository"
264 msgstr "Statistiken sind deaktiviert für dieses Repository"
264 msgstr "Statistiken sind deaktiviert für dieses Repository"
265
265
266 msgid "Auth settings updated successfully"
266 msgid "Auth settings updated successfully"
267 msgstr "Anmeldeeinstellungen erfolgreich geändert"
267 msgstr "Anmeldeeinstellungen erfolgreich geändert"
268
268
269 msgid "error occurred during update of auth settings"
269 msgid "error occurred during update of auth settings"
270 msgstr "Fehler bei der Änderung der Anmeldeeinstellungen aufgetreten"
270 msgstr "Fehler bei der Änderung der Anmeldeeinstellungen aufgetreten"
271
271
272 msgid "Default settings updated successfully"
272 msgid "Default settings updated successfully"
273 msgstr "Standardeinstellungen erfolgreich geupdated"
273 msgstr "Standardeinstellungen erfolgreich geupdated"
274
274
275 msgid "Error occurred during update of defaults"
275 msgid "Error occurred during update of defaults"
276 msgstr "Ein Fehler trat beim updaten der Standardeinstellungen auf"
276 msgstr "Ein Fehler trat beim updaten der Standardeinstellungen auf"
277
277
278 msgid "Forever"
278 msgid "Forever"
279 msgstr "Immer"
279 msgstr "Immer"
280
280
281 msgid "5 minutes"
281 msgid "5 minutes"
282 msgstr "5 Minuten"
282 msgstr "5 Minuten"
283
283
284 msgid "1 hour"
284 msgid "1 hour"
285 msgstr "1 Stunde"
285 msgstr "1 Stunde"
286
286
287 msgid "1 day"
287 msgid "1 day"
288 msgstr "1 Tag"
288 msgstr "1 Tag"
289
289
290 msgid "1 month"
290 msgid "1 month"
291 msgstr "1 Monat"
291 msgstr "1 Monat"
292
292
293 msgid "Lifetime"
293 msgid "Lifetime"
294 msgstr "Lebenszeit"
294 msgstr "Lebenszeit"
295
295
296 msgid "Error occurred during gist creation"
296 msgid "Error occurred during gist creation"
297 msgstr "Ein fehler trat auf bei der Erstellung des gist"
297 msgstr "Ein fehler trat auf bei der Erstellung des gist"
298
298
299 msgid "Deleted gist %s"
299 msgid "Deleted gist %s"
300 msgstr "gist %s gelöscht"
300 msgstr "gist %s gelöscht"
301
301
302 msgid "Unmodified"
302 msgid "Unmodified"
303 msgstr "Ungeändert"
303 msgstr "Ungeändert"
304
304
305 msgid "Successfully updated gist content"
305 msgid "Successfully updated gist content"
306 msgstr "Erfolgreich Kerninhalt aktualisiert"
306 msgstr "Erfolgreich Kerninhalt aktualisiert"
307
307
308 msgid "Successfully updated gist data"
308 msgid "Successfully updated gist data"
309 msgstr "Erfolgreich Kerndaten aktualisiert"
309 msgstr "Erfolgreich Kerndaten aktualisiert"
310
310
311 msgid "Error occurred during update of gist %s"
311 msgid "Error occurred during update of gist %s"
312 msgstr "Fehler beim Aktualisieren der Kerndaten %s"
312 msgstr "Fehler beim Aktualisieren der Kerndaten %s"
313
313
314 msgid "You can't edit this user since it's crucial for entire application"
314 msgid "You can't edit this user since it's crucial for entire application"
315 msgstr ""
315 msgstr ""
316 "Sie können diesen Benutzer nicht editieren, da er von entscheidender "
316 "Sie können diesen Benutzer nicht editieren, da er von entscheidender "
317 "Bedeutung für die ganze Applikation ist"
317 "Bedeutung für die ganze Applikation ist"
318
318
319 msgid "Your account was updated successfully"
319 msgid "Your account was updated successfully"
320 msgstr "Ihr Konto wurde erfolgreich aktualisiert"
320 msgstr "Ihr Konto wurde erfolgreich aktualisiert"
321
321
322 msgid "Error occurred during update of user %s"
322 msgid "Error occurred during update of user %s"
323 msgstr "Fehler beim Aktualisieren der Benutzer %s"
323 msgstr "Fehler beim Aktualisieren der Benutzer %s"
324
324
325 msgid "Error occurred during update of user password"
325 msgid "Error occurred during update of user password"
326 msgstr "Fehler bei der Änderung des Kennworts"
326 msgstr "Fehler bei der Änderung des Kennworts"
327
327
328 msgid "Added email %s to user"
328 msgid "Added email %s to user"
329 msgstr "Die E-Mail-Addresse %s wurde zum Benutzer hinzugefügt"
329 msgstr "Die E-Mail-Addresse %s wurde zum Benutzer hinzugefügt"
330
330
331 msgid "An error occurred during email saving"
331 msgid "An error occurred during email saving"
332 msgstr "Währen der Speicherung der E-Mail-Addresse trat ein Fehler auf"
332 msgstr "Währen der Speicherung der E-Mail-Addresse trat ein Fehler auf"
333
333
334 msgid "Removed email from user"
334 msgid "Removed email from user"
335 msgstr "Die E-Mail-Addresse wurde vom Benutzer entfernt"
335 msgstr "Die E-Mail-Addresse wurde vom Benutzer entfernt"
336
336
337 msgid "API key successfully created"
337 msgid "API key successfully created"
338 msgstr "API Key wurde erfolgreich erstellt"
338 msgstr "API Key wurde erfolgreich erstellt"
339
339
340 msgid "API key successfully reset"
340 msgid "API key successfully reset"
341 msgstr "API-Schlüssel erfolgreich zurückgesetzt"
341 msgstr "API-Schlüssel erfolgreich zurückgesetzt"
342
342
343 msgid "API key successfully deleted"
343 msgid "API key successfully deleted"
344 msgstr "API-Schlüssel erfolgreich gelöscht"
344 msgstr "API-Schlüssel erfolgreich gelöscht"
345
345
346 msgid "Read"
346 msgid "Read"
347 msgstr "Lesen"
347 msgstr "Lesen"
348
348
349 msgid "Write"
349 msgid "Write"
350 msgstr "Schreiben"
350 msgstr "Schreiben"
351
351
352 msgid "Admin"
352 msgid "Admin"
353 msgstr "Admin"
353 msgstr "Admin"
354
354
355 msgid "Disabled"
355 msgid "Disabled"
356 msgstr "Deaktiviert"
356 msgstr "Deaktiviert"
357
357
358 msgid "Allowed with manual account activation"
358 msgid "Allowed with manual account activation"
359 msgstr "Erlaubt mit manueller Kontoaktivierung"
359 msgstr "Erlaubt mit manueller Kontoaktivierung"
360
360
361 msgid "Allowed with automatic account activation"
361 msgid "Allowed with automatic account activation"
362 msgstr "Erlaubt mit automatischer Kontoaktivierung"
362 msgstr "Erlaubt mit automatischer Kontoaktivierung"
363
363
364 msgid "Manual activation of external account"
364 msgid "Manual activation of external account"
365 msgstr "Manuelle Aktivierung externen Kontos"
365 msgstr "Manuelle Aktivierung externen Kontos"
366
366
367 msgid "Automatic activation of external account"
367 msgid "Automatic activation of external account"
368 msgstr "Automatische Aktivierung externen Kontos"
368 msgstr "Automatische Aktivierung externen Kontos"
369
369
370 msgid "Enabled"
370 msgid "Enabled"
371 msgstr "Aktiviert"
371 msgstr "Aktiviert"
372
372
373 msgid "Global permissions updated successfully"
373 msgid "Global permissions updated successfully"
374 msgstr "Globale Berechtigungen erfolgreich geändert"
374 msgstr "Globale Berechtigungen erfolgreich geändert"
375
375
376 msgid "Error occurred during update of permissions"
376 msgid "Error occurred during update of permissions"
377 msgstr "Fehler bei der Änderung der globalen Berechtigungen"
377 msgstr "Fehler bei der Änderung der globalen Berechtigungen"
378
378
379 msgid "Error occurred during creation of repository group %s"
379 msgid "Error occurred during creation of repository group %s"
380 msgstr "Fehler bei der Erstellung der Repositoriumsgruppe %s"
380 msgstr "Fehler bei der Erstellung der Repositoriumsgruppe %s"
381
381
382 msgid "Created repository group %s"
382 msgid "Created repository group %s"
383 msgstr "Repositoriumsgruppe %s erstellt"
383 msgstr "Repositoriumsgruppe %s erstellt"
384
384
385 msgid "Updated repository group %s"
385 msgid "Updated repository group %s"
386 msgstr "Repositoriumsgruppe %s aktualisiert"
386 msgstr "Repositoriumsgruppe %s aktualisiert"
387
387
388 msgid "Error occurred during update of repository group %s"
388 msgid "Error occurred during update of repository group %s"
389 msgstr "Fehler bei der Aktualisierung der Repositoriumsgruppe %s"
389 msgstr "Fehler bei der Aktualisierung der Repositoriumsgruppe %s"
390
390
391 msgid "This group contains %s repositories and cannot be deleted"
391 msgid "This group contains %s repositories and cannot be deleted"
392 msgstr "Die Gruppe enthält %s Repositorys und kann nicht gelöscht werden"
392 msgstr "Die Gruppe enthält %s Repositorys und kann nicht gelöscht werden"
393
393
394 msgid "This group contains %s subgroups and cannot be deleted"
394 msgid "This group contains %s subgroups and cannot be deleted"
395 msgstr "Diese Gruppe enthält %s Untergruppen und kann nicht gelöscht werden"
395 msgstr "Diese Gruppe enthält %s Untergruppen und kann nicht gelöscht werden"
396
396
397 msgid "Removed repository group %s"
397 msgid "Removed repository group %s"
398 msgstr "Repositoriumsgruppe %s entfernt"
398 msgstr "Repositoriumsgruppe %s entfernt"
399
399
400 msgid "Error occurred during deletion of repository group %s"
400 msgid "Error occurred during deletion of repository group %s"
401 msgstr "Fehler beim Löschen der Repositoriumsgruppe %s"
401 msgstr "Fehler beim Löschen der Repositoriumsgruppe %s"
402
402
403 msgid "Cannot revoke permission for yourself as admin"
404 msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
405
406 msgid "Repository group permissions updated"
403 msgid "Repository group permissions updated"
407 msgstr "Berechtigungen der Repositoriumsgruppe aktualisiert"
404 msgstr "Berechtigungen der Repositoriumsgruppe aktualisiert"
408
405
409 msgid "An error occurred during revoking of permission"
406 msgid "An error occurred during revoking of permission"
410 msgstr "Fehler beim Entzug der Berechtigungen"
407 msgstr "Fehler beim Entzug der Berechtigungen"
411
408
412 msgid "Error creating repository %s"
409 msgid "Error creating repository %s"
413 msgstr "Fehler beim Erstellen des Repositoriums %s"
410 msgstr "Fehler beim Erstellen des Repositoriums %s"
414
411
415 msgid "Created repository %s from %s"
412 msgid "Created repository %s from %s"
416 msgstr "Repositorium %s von %s erstellt"
413 msgstr "Repositorium %s von %s erstellt"
417
414
418 msgid "Forked repository %s as %s"
415 msgid "Forked repository %s as %s"
419 msgstr "Aufgespaltenes Repositorium %s zu %s"
416 msgstr "Aufgespaltenes Repositorium %s zu %s"
420
417
421 msgid "Created repository %s"
418 msgid "Created repository %s"
422 msgstr "Repositorium erzeugt %s"
419 msgstr "Repositorium erzeugt %s"
423
420
424 msgid "Repository %s updated successfully"
421 msgid "Repository %s updated successfully"
425 msgstr "Repository %s wurde erfolgreich aktualisiert"
422 msgstr "Repository %s wurde erfolgreich aktualisiert"
426
423
427 msgid "Error occurred during update of repository %s"
424 msgid "Error occurred during update of repository %s"
428 msgstr "Fehler bei der Aktualisierung des Repositoriums %s"
425 msgstr "Fehler bei der Aktualisierung des Repositoriums %s"
429
426
430 msgid "Detached %s forks"
427 msgid "Detached %s forks"
431 msgstr "%s Spaltung abgetrennt"
428 msgstr "%s Spaltung abgetrennt"
432
429
433 msgid "Deleted %s forks"
430 msgid "Deleted %s forks"
434 msgstr "%s Spaltung gelöscht"
431 msgstr "%s Spaltung gelöscht"
435
432
436 msgid "Deleted repository %s"
433 msgid "Deleted repository %s"
437 msgstr "Repositorium %s gelöscht"
434 msgstr "Repositorium %s gelöscht"
438
435
439 msgid "Cannot delete repository %s which still has forks"
436 msgid "Cannot delete repository %s which still has forks"
440 msgstr "%s konnte nicht gelöscht werden, da es noch Forks besitzt"
437 msgstr "%s konnte nicht gelöscht werden, da es noch Forks besitzt"
441
438
442 msgid "An error occurred during deletion of %s"
439 msgid "An error occurred during deletion of %s"
443 msgstr "Beim Löschen von %s trat ein Fehler auf"
440 msgstr "Beim Löschen von %s trat ein Fehler auf"
444
441
445 msgid "Repository permissions updated"
442 msgid "Repository permissions updated"
446 msgstr "Repositoriumsberechtigungen aktualisiert"
443 msgstr "Repositoriumsberechtigungen aktualisiert"
447
444
448 msgid "Field validation error: %s"
445 msgid "Field validation error: %s"
449 msgstr "Feldvalidierung fehlgeschlagen: %s"
446 msgstr "Feldvalidierung fehlgeschlagen: %s"
450
447
451 msgid "An error occurred during removal of field"
448 msgid "An error occurred during removal of field"
452 msgstr "Fehler beim Entfernen des Feldes"
449 msgstr "Fehler beim Entfernen des Feldes"
453
450
454 msgid "-- Not a fork --"
451 msgid "-- Not a fork --"
455 msgstr "-- Keine Abspaltung --"
452 msgstr "-- Keine Abspaltung --"
456
453
457 msgid "Updated repository visibility in public journal"
454 msgid "Updated repository visibility in public journal"
458 msgstr "Sichtbarkeit des Repositorys im Öffentlichen Logbuch aktualisiert"
455 msgstr "Sichtbarkeit des Repositorys im Öffentlichen Logbuch aktualisiert"
459
456
460 msgid "An error occurred during setting this repository in public journal"
457 msgid "An error occurred during setting this repository in public journal"
461 msgstr ""
458 msgstr ""
462 "Es trat ein Fehler während der Aktualisierung der Sicherbarkeit dieses "
459 "Es trat ein Fehler während der Aktualisierung der Sicherbarkeit dieses "
463 "Repositorys im Öffentlichen Logbuch auf"
460 "Repositorys im Öffentlichen Logbuch auf"
464
461
465 msgid "Nothing"
462 msgid "Nothing"
466 msgstr "Nichts"
463 msgstr "Nichts"
467
464
468 msgid "Marked repository %s as fork of %s"
465 msgid "Marked repository %s as fork of %s"
469 msgstr "Markiere Repository %s als Abzweig von Repository %s"
466 msgstr "Markiere Repository %s als Abzweig von Repository %s"
470
467
471 msgid "An error occurred during this operation"
468 msgid "An error occurred during this operation"
472 msgstr "Während dieser operation trat ein Fehler auf"
469 msgstr "Während dieser operation trat ein Fehler auf"
473
470
474 msgid "Pulled from remote location"
471 msgid "Pulled from remote location"
475 msgstr "Von entferntem Ort übertragen"
472 msgstr "Von entferntem Ort übertragen"
476
473
477 msgid "An error occurred during pull from remote location"
474 msgid "An error occurred during pull from remote location"
478 msgstr ""
475 msgstr ""
479 "Es trat ein Fehler auf während das Repository von einem Entfernten "
476 "Es trat ein Fehler auf während das Repository von einem Entfernten "
480 "Speicherort übertragen wurde"
477 "Speicherort übertragen wurde"
481
478
482 msgid "An error occurred during deletion of repository stats"
479 msgid "An error occurred during deletion of repository stats"
483 msgstr "Während des löschens der Repository Statistiken trat ein Fehler auf"
480 msgstr "Während des löschens der Repository Statistiken trat ein Fehler auf"
484
481
485 msgid "Updated VCS settings"
482 msgid "Updated VCS settings"
486 msgstr "VCS-Einstellungen aktualisiert"
483 msgstr "VCS-Einstellungen aktualisiert"
487
484
488 msgid "Error occurred while updating application settings"
485 msgid "Error occurred while updating application settings"
489 msgstr ""
486 msgstr ""
490 "Ein Fehler ist während der Aktualisierung der Applikationseinstellungen "
487 "Ein Fehler ist während der Aktualisierung der Applikationseinstellungen "
491 "aufgetreten"
488 "aufgetreten"
492
489
493 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
490 msgid "Repositories successfully rescanned. Added: %s. Removed: %s."
494 msgstr ""
491 msgstr ""
495 "Die Repositories wurden erfolgreich überprüft. Hinzugefügt: %s. Entfernt: "
492 "Die Repositories wurden erfolgreich überprüft. Hinzugefügt: %s. Entfernt: "
496 "%s."
493 "%s."
497
494
498 msgid "Updated application settings"
495 msgid "Updated application settings"
499 msgstr "Anwendungseinstellungen aktualisiert"
496 msgstr "Anwendungseinstellungen aktualisiert"
500
497
501 msgid "Updated visualisation settings"
498 msgid "Updated visualisation settings"
502 msgstr "Visualisierungseinstellungen aktualisiert"
499 msgstr "Visualisierungseinstellungen aktualisiert"
503
500
504 msgid "Error occurred during updating visualisation settings"
501 msgid "Error occurred during updating visualisation settings"
505 msgstr ""
502 msgstr ""
506 "Es ist ein Fehler während der Aktualisierung der Layouteinstellung "
503 "Es ist ein Fehler während der Aktualisierung der Layouteinstellung "
507 "aufgetreten"
504 "aufgetreten"
508
505
509 msgid "Please enter email address"
506 msgid "Please enter email address"
510 msgstr "Bitte geben Sie eine E-Mail-Adresse an"
507 msgstr "Bitte geben Sie eine E-Mail-Adresse an"
511
508
512 msgid "Send email task created"
509 msgid "Send email task created"
513 msgstr "Task zum Versenden von E-Mails erstellt"
510 msgstr "Task zum Versenden von E-Mails erstellt"
514
511
515 msgid "Added new hook"
512 msgid "Added new hook"
516 msgstr "Neuer Hook hinzugefügt"
513 msgstr "Neuer Hook hinzugefügt"
517
514
518 msgid "Updated hooks"
515 msgid "Updated hooks"
519 msgstr "Die Hooks wurden aktutalisiert"
516 msgstr "Die Hooks wurden aktutalisiert"
520
517
521 msgid "Error occurred during hook creation"
518 msgid "Error occurred during hook creation"
522 msgstr "Während der Erzeugung des Hooks ist ein Fehler aufgetreten"
519 msgstr "Während der Erzeugung des Hooks ist ein Fehler aufgetreten"
523
520
524 msgid "Whoosh reindex task scheduled"
521 msgid "Whoosh reindex task scheduled"
525 msgstr "Whoosh Reindizierungs Aufgabe wurde zur Ausführung geplant"
522 msgstr "Whoosh Reindizierungs Aufgabe wurde zur Ausführung geplant"
526
523
527 msgid "Created user group %s"
524 msgid "Created user group %s"
528 msgstr "Nutzergruppe %s erstellt"
525 msgstr "Nutzergruppe %s erstellt"
529
526
530 msgid "Error occurred during creation of user group %s"
527 msgid "Error occurred during creation of user group %s"
531 msgstr ""
528 msgstr ""
532 "Es ist ein Fehler während der Erstellung der Nutzergruppe %s aufgetreten"
529 "Es ist ein Fehler während der Erstellung der Nutzergruppe %s aufgetreten"
533
530
534 msgid "Updated user group %s"
531 msgid "Updated user group %s"
535 msgstr "Aktualisierte Nutzergruppe %s"
532 msgstr "Aktualisierte Nutzergruppe %s"
536
533
537 msgid "Error occurred during update of user group %s"
534 msgid "Error occurred during update of user group %s"
538 msgstr ""
535 msgstr ""
539 "Während des Updates der Benutzergruppe %s ist ein Fehler aufgetreten"
536 "Während des Updates der Benutzergruppe %s ist ein Fehler aufgetreten"
540
537
541 msgid "Successfully deleted user group"
538 msgid "Successfully deleted user group"
542 msgstr "Die Nutzergruppe wurde erfolgreich entfernt"
539 msgstr "Die Nutzergruppe wurde erfolgreich entfernt"
543
540
544 msgid "An error occurred during deletion of user group"
541 msgid "An error occurred during deletion of user group"
545 msgstr "Während des Löschens der Benutzergruppe ist ein Fehler aufgetreten"
542 msgstr "Während des Löschens der Benutzergruppe ist ein Fehler aufgetreten"
546
543
547 msgid "Target group cannot be the same"
544 msgid "Target group cannot be the same"
548 msgstr "Zielgruppe kann nicht die gleiche Gruppe sein"
545 msgstr "Zielgruppe kann nicht die gleiche Gruppe sein"
549
546
550 msgid "User group permissions updated"
547 msgid "User group permissions updated"
551 msgstr "Berechtigungen der Benutzergruppe wurden aktualisiert"
548 msgstr "Berechtigungen der Benutzergruppe wurden aktualisiert"
552
549
550 msgid "Cannot revoke permission for yourself as admin"
551 msgstr "Als Administrator kann man sich keine Berechtigungen entziehen"
552
553 msgid "Updated permissions"
553 msgid "Updated permissions"
554 msgstr "Berechtigungen wurden aktualisiert"
554 msgstr "Berechtigungen wurden aktualisiert"
555
555
556 msgid "An error occurred during permissions saving"
556 msgid "An error occurred during permissions saving"
557 msgstr ""
557 msgstr ""
558 "Es ist ein Fehler während des Speicherns der Berechtigungen aufgetreten"
558 "Es ist ein Fehler während des Speicherns der Berechtigungen aufgetreten"
559
559
560 msgid "Created user %s"
560 msgid "Created user %s"
561 msgstr "Nutzer %s erstellt"
561 msgstr "Nutzer %s erstellt"
562
562
563 msgid "Error occurred during creation of user %s"
563 msgid "Error occurred during creation of user %s"
564 msgstr "Während des Erstellens des Benutzers %s ist ein Fehler aufgetreten"
564 msgstr "Während des Erstellens des Benutzers %s ist ein Fehler aufgetreten"
565
565
566 msgid "User updated successfully"
566 msgid "User updated successfully"
567 msgstr "Der Benutzer wurde erfolgreich aktualisiert"
567 msgstr "Der Benutzer wurde erfolgreich aktualisiert"
568
568
569 msgid "Successfully deleted user"
569 msgid "Successfully deleted user"
570 msgstr "Der Nutzer wurde erfolgreich gelöscht"
570 msgstr "Der Nutzer wurde erfolgreich gelöscht"
571
571
572 msgid "An error occurred during deletion of user"
572 msgid "An error occurred during deletion of user"
573 msgstr "Während der Löschen des Benutzers trat ein Fehler auf"
573 msgstr "Während der Löschen des Benutzers trat ein Fehler auf"
574
574
575 msgid "The default user cannot be edited"
575 msgid "The default user cannot be edited"
576 msgstr "Der Standard-Benutzer kann nicht bearbeitet werden"
576 msgstr "Der Standard-Benutzer kann nicht bearbeitet werden"
577
577
578 msgid "Added IP address %s to user whitelist"
578 msgid "Added IP address %s to user whitelist"
579 msgstr "Die IP-Adresse %s wurde zur Nutzerwhitelist hinzugefügt"
579 msgstr "Die IP-Adresse %s wurde zur Nutzerwhitelist hinzugefügt"
580
580
581 msgid "An error occurred while adding IP address"
581 msgid "An error occurred while adding IP address"
582 msgstr "Während des Speicherns der IP-Adresse ist ein Fehler aufgetreten"
582 msgstr "Während des Speicherns der IP-Adresse ist ein Fehler aufgetreten"
583
583
584 msgid "Removed IP address from user whitelist"
584 msgid "Removed IP address from user whitelist"
585 msgstr "IP-Adresse wurde von der Nutzerwhitelist entfernt"
585 msgstr "IP-Adresse wurde von der Nutzerwhitelist entfernt"
586
586
587 msgid "You need to be a registered user to perform this action"
587 msgid "You need to be a registered user to perform this action"
588 msgstr ""
588 msgstr ""
589 "Sie müssen ein Registrierter Nutzer sein um diese Aktion durchzuführen"
589 "Sie müssen ein Registrierter Nutzer sein um diese Aktion durchzuführen"
590
590
591 msgid "You need to be signed in to view this page"
591 msgid "You need to be signed in to view this page"
592 msgstr "Sie müssen sich anmelden um diese Seite aufzurufen"
592 msgstr "Sie müssen sich anmelden um diese Seite aufzurufen"
593
593
594 msgid "Binary file"
594 msgid "Binary file"
595 msgstr "Binäre Datei"
595 msgstr "Binäre Datei"
596
596
597 msgid ""
597 msgid ""
598 "Changeset was too big and was cut off, use diff menu to display this diff"
598 "Changeset was too big and was cut off, use diff menu to display this diff"
599 msgstr ""
599 msgstr ""
600 "Der Änderungssatz war zu groß und wurde abgeschnitten, benutzen sie das "
600 "Der Änderungssatz war zu groß und wurde abgeschnitten, benutzen sie das "
601 "Diff Menü um die Unterschiede anzuzeigen"
601 "Diff Menü um die Unterschiede anzuzeigen"
602
602
603 msgid "No changes detected"
603 msgid "No changes detected"
604 msgstr "Keine Änderungen erkannt"
604 msgstr "Keine Änderungen erkannt"
605
605
606 msgid "Increase diff context to %(num)s lines"
606 msgid "Increase diff context to %(num)s lines"
607 msgstr "Erhöhe diff-Kontext auf %(num)s Zeilen"
607 msgstr "Erhöhe diff-Kontext auf %(num)s Zeilen"
608
608
609 msgid "Deleted branch: %s"
609 msgid "Deleted branch: %s"
610 msgstr "Branch %s gelöscht"
610 msgstr "Branch %s gelöscht"
611
611
612 msgid "Created tag: %s"
612 msgid "Created tag: %s"
613 msgstr "Tag %s erstellt"
613 msgstr "Tag %s erstellt"
614
614
615 msgid "Show all combined changesets %s->%s"
615 msgid "Show all combined changesets %s->%s"
616 msgstr "Zeige alle Kombinierten Änderungensätze %s->%s"
616 msgstr "Zeige alle Kombinierten Änderungensätze %s->%s"
617
617
618 msgid "Compare view"
618 msgid "Compare view"
619 msgstr "Vergleichsansicht"
619 msgstr "Vergleichsansicht"
620
620
621 msgid "and"
621 msgid "and"
622 msgstr "und"
622 msgstr "und"
623
623
624 msgid "%s more"
624 msgid "%s more"
625 msgstr "%s mehr"
625 msgstr "%s mehr"
626
626
627 msgid "revisions"
627 msgid "revisions"
628 msgstr "revisionen"
628 msgstr "revisionen"
629
629
630 msgid "Fork name %s"
630 msgid "Fork name %s"
631 msgstr "Fork Name %s"
631 msgstr "Fork Name %s"
632
632
633 msgid "Pull request %s"
633 msgid "Pull request %s"
634 msgstr "Pull Request %s"
634 msgstr "Pull Request %s"
635
635
636 msgid "[deleted] repository"
636 msgid "[deleted] repository"
637 msgstr "[gelöscht] Repository"
637 msgstr "[gelöscht] Repository"
638
638
639 msgid "[created] repository"
639 msgid "[created] repository"
640 msgstr "[erstellt] Repository"
640 msgstr "[erstellt] Repository"
641
641
642 msgid "[created] repository as fork"
642 msgid "[created] repository as fork"
643 msgstr "[erstellt] Repository als Fork"
643 msgstr "[erstellt] Repository als Fork"
644
644
645 msgid "[forked] repository"
645 msgid "[forked] repository"
646 msgstr "[forked] Repository"
646 msgstr "[forked] Repository"
647
647
648 msgid "[updated] repository"
648 msgid "[updated] repository"
649 msgstr "[aktualisiert] Repository"
649 msgstr "[aktualisiert] Repository"
650
650
651 msgid "[downloaded] archive from repository"
651 msgid "[downloaded] archive from repository"
652 msgstr "Archiv von Repository [heruntergeladen]"
652 msgstr "Archiv von Repository [heruntergeladen]"
653
653
654 msgid "[delete] repository"
654 msgid "[delete] repository"
655 msgstr "Repository [gelöscht]"
655 msgstr "Repository [gelöscht]"
656
656
657 msgid "[created] user"
657 msgid "[created] user"
658 msgstr "Benutzer [erstellt]"
658 msgstr "Benutzer [erstellt]"
659
659
660 msgid "[updated] user"
660 msgid "[updated] user"
661 msgstr "Benutzer [akutalisiert]"
661 msgstr "Benutzer [akutalisiert]"
662
662
663 msgid "[created] user group"
663 msgid "[created] user group"
664 msgstr "Benutzergruppe [erstellt]"
664 msgstr "Benutzergruppe [erstellt]"
665
665
666 msgid "[updated] user group"
666 msgid "[updated] user group"
667 msgstr "Benutzergruppe [aktualisiert]"
667 msgstr "Benutzergruppe [aktualisiert]"
668
668
669 msgid "[commented] on revision in repository"
669 msgid "[commented] on revision in repository"
670 msgstr "Revision [kommentiert] in Repository"
670 msgstr "Revision [kommentiert] in Repository"
671
671
672 msgid "[commented] on pull request for"
672 msgid "[commented] on pull request for"
673 msgstr "Pull Request [kommentiert] für"
673 msgstr "Pull Request [kommentiert] für"
674
674
675 msgid "[closed] pull request for"
675 msgid "[closed] pull request for"
676 msgstr "Pull Request [geschlossen] für"
676 msgstr "Pull Request [geschlossen] für"
677
677
678 msgid "[pushed] into"
678 msgid "[pushed] into"
679 msgstr "[Pushed] in"
679 msgstr "[Pushed] in"
680
680
681 msgid "[committed via Kallithea] into repository"
681 msgid "[committed via Kallithea] into repository"
682 msgstr "[via Kallithea] in Repository [committed]"
682 msgstr "[via Kallithea] in Repository [committed]"
683
683
684 msgid "[pulled from remote] into repository"
684 msgid "[pulled from remote] into repository"
685 msgstr "[Pulled von Remote] in Repository"
685 msgstr "[Pulled von Remote] in Repository"
686
686
687 msgid "[pulled] from"
687 msgid "[pulled] from"
688 msgstr "[Pulled] von"
688 msgstr "[Pulled] von"
689
689
690 msgid "[started following] repository"
690 msgid "[started following] repository"
691 msgstr "[Following gestartet] für Repository"
691 msgstr "[Following gestartet] für Repository"
692
692
693 msgid "[stopped following] repository"
693 msgid "[stopped following] repository"
694 msgstr "[Following gestoppt] für Repository"
694 msgstr "[Following gestoppt] für Repository"
695
695
696 msgid " and %s more"
696 msgid " and %s more"
697 msgstr " und %s weitere"
697 msgstr " und %s weitere"
698
698
699 msgid "No files"
699 msgid "No files"
700 msgstr "Keine Dateien"
700 msgstr "Keine Dateien"
701
701
702 msgid "new file"
702 msgid "new file"
703 msgstr "neue Datei"
703 msgstr "neue Datei"
704
704
705 msgid "mod"
705 msgid "mod"
706 msgstr "mod"
706 msgstr "mod"
707
707
708 msgid "del"
708 msgid "del"
709 msgstr "entf"
709 msgstr "entf"
710
710
711 msgid "rename"
711 msgid "rename"
712 msgstr "umbenennen"
712 msgstr "umbenennen"
713
713
714 msgid "chmod"
714 msgid "chmod"
715 msgstr "chmod"
715 msgstr "chmod"
716
716
717 msgid "%d year"
717 msgid "%d year"
718 msgid_plural "%d years"
718 msgid_plural "%d years"
719 msgstr[0] "%d Jahr"
719 msgstr[0] "%d Jahr"
720 msgstr[1] "%d Jahre"
720 msgstr[1] "%d Jahre"
721
721
722 msgid "%d month"
722 msgid "%d month"
723 msgid_plural "%d months"
723 msgid_plural "%d months"
724 msgstr[0] "%d Monat"
724 msgstr[0] "%d Monat"
725 msgstr[1] "%d Monate"
725 msgstr[1] "%d Monate"
726
726
727 msgid "%d day"
727 msgid "%d day"
728 msgid_plural "%d days"
728 msgid_plural "%d days"
729 msgstr[0] "%d Tag"
729 msgstr[0] "%d Tag"
730 msgstr[1] "%d Tage"
730 msgstr[1] "%d Tage"
731
731
732 msgid "%d hour"
732 msgid "%d hour"
733 msgid_plural "%d hours"
733 msgid_plural "%d hours"
734 msgstr[0] "%d Stunde"
734 msgstr[0] "%d Stunde"
735 msgstr[1] "%d Stunden"
735 msgstr[1] "%d Stunden"
736
736
737 msgid "%d minute"
737 msgid "%d minute"
738 msgid_plural "%d minutes"
738 msgid_plural "%d minutes"
739 msgstr[0] "%d Minute"
739 msgstr[0] "%d Minute"
740 msgstr[1] "%d Minuten"
740 msgstr[1] "%d Minuten"
741
741
742 msgid "%d second"
742 msgid "%d second"
743 msgid_plural "%d seconds"
743 msgid_plural "%d seconds"
744 msgstr[0] "%d Sekunde"
744 msgstr[0] "%d Sekunde"
745 msgstr[1] "%d Sekunden"
745 msgstr[1] "%d Sekunden"
746
746
747 msgid "in %s"
747 msgid "in %s"
748 msgstr "in %s"
748 msgstr "in %s"
749
749
750 msgid "%s ago"
750 msgid "%s ago"
751 msgstr "vor %s"
751 msgstr "vor %s"
752
752
753 msgid "in %s and %s"
753 msgid "in %s and %s"
754 msgstr "in %s und %s"
754 msgstr "in %s und %s"
755
755
756 msgid "%s and %s ago"
756 msgid "%s and %s ago"
757 msgstr "%s und %s her"
757 msgstr "%s und %s her"
758
758
759 msgid "just now"
759 msgid "just now"
760 msgstr "jetzt gerade"
760 msgstr "jetzt gerade"
761
761
762 msgid "top level"
762 msgid "top level"
763 msgstr "höchste Ebene"
763 msgstr "höchste Ebene"
764
764
765 msgid "Kallithea Administrator"
765 msgid "Kallithea Administrator"
766 msgstr "Kallithea Administrator"
766 msgstr "Kallithea Administrator"
767
767
768 msgid "Default user has no access to new repositories"
768 msgid "Default user has no access to new repositories"
769 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Repositories"
769 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Repositories"
770
770
771 msgid "Default user has read access to new repositories"
771 msgid "Default user has read access to new repositories"
772 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repositories"
772 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repositories"
773
773
774 msgid "Default user has write access to new repositories"
774 msgid "Default user has write access to new repositories"
775 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Repositories"
775 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Repositories"
776
776
777 msgid "Default user has admin access to new repositories"
777 msgid "Default user has admin access to new repositories"
778 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Repositories"
778 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Repositories"
779
779
780 msgid "Default user has no access to new repository groups"
780 msgid "Default user has no access to new repository groups"
781 msgstr ""
781 msgstr ""
782 "Der Standard-Benutzer hat keinen Zugriff auf neue Repository-Gruppen"
782 "Der Standard-Benutzer hat keinen Zugriff auf neue Repository-Gruppen"
783
783
784 msgid "Default user has read access to new repository groups"
784 msgid "Default user has read access to new repository groups"
785 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repository-Gruppen"
785 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Repository-Gruppen"
786
786
787 msgid "Default user has write access to new repository groups"
787 msgid "Default user has write access to new repository groups"
788 msgstr "Der Standard-Benutzer Schreibrechte auf neuen Repository-Gruppen"
788 msgstr "Der Standard-Benutzer Schreibrechte auf neuen Repository-Gruppen"
789
789
790 msgid "Default user has admin access to new repository groups"
790 msgid "Default user has admin access to new repository groups"
791 msgstr "Der Standard-Benutzer Admin-Rechte auf neuen Repository-Gruppen"
791 msgstr "Der Standard-Benutzer Admin-Rechte auf neuen Repository-Gruppen"
792
792
793 msgid "Default user has no access to new user groups"
793 msgid "Default user has no access to new user groups"
794 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Benutzer-Gruppen"
794 msgstr "Der Standard-Benutzer hat keinen Zugriff auf neue Benutzer-Gruppen"
795
795
796 msgid "Default user has read access to new user groups"
796 msgid "Default user has read access to new user groups"
797 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Benutzer-Gruppen"
797 msgstr "Der Standard-Benutzer hat Leserechte auf neuen Benutzer-Gruppen"
798
798
799 msgid "Default user has write access to new user groups"
799 msgid "Default user has write access to new user groups"
800 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Benutzer-Gruppen"
800 msgstr "Der Standard-Benutzer hat Schreibrechte auf neuen Benutzer-Gruppen"
801
801
802 msgid "Default user has admin access to new user groups"
802 msgid "Default user has admin access to new user groups"
803 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Benutzer-Gruppen"
803 msgstr "Der Standard-Benutzer hat Admin-Rechte auf neuen Benutzer-Gruppen"
804
804
805 msgid "Only admins can create user groups"
805 msgid "Only admins can create user groups"
806 msgstr "Nur Admins können Benutzer-Gruppen erstellen"
806 msgstr "Nur Admins können Benutzer-Gruppen erstellen"
807
807
808 msgid "Non-admins can create user groups"
808 msgid "Non-admins can create user groups"
809 msgstr "Nicht-Admins können Benutzer-Gruppen erstellen"
809 msgstr "Nicht-Admins können Benutzer-Gruppen erstellen"
810
810
811 msgid "Only admins can create top level repositories"
811 msgid "Only admins can create top level repositories"
812 msgstr "Nur Admins können Repositories auf oberster Ebene erstellen"
812 msgstr "Nur Admins können Repositories auf oberster Ebene erstellen"
813
813
814 msgid "Non-admins can create top level repositories"
814 msgid "Non-admins can create top level repositories"
815 msgstr "Nicht-Admins können Repositories oberster Ebene erstellen"
815 msgstr "Nicht-Admins können Repositories oberster Ebene erstellen"
816
816
817 msgid "Only admins can fork repositories"
817 msgid "Only admins can fork repositories"
818 msgstr "Nur Admins können Repositories forken"
818 msgstr "Nur Admins können Repositories forken"
819
819
820 msgid "Non-admins can fork repositories"
820 msgid "Non-admins can fork repositories"
821 msgstr "Nicht-Admins können Repositorys forken"
821 msgstr "Nicht-Admins können Repositorys forken"
822
822
823 msgid "Registration disabled"
823 msgid "Registration disabled"
824 msgstr "Registrierung deaktiviert"
824 msgstr "Registrierung deaktiviert"
825
825
826 msgid "User registration with manual account activation"
826 msgid "User registration with manual account activation"
827 msgstr "Benutzerregistrierung mit manueller Kontoaktivierung"
827 msgstr "Benutzerregistrierung mit manueller Kontoaktivierung"
828
828
829 msgid "User registration with automatic account activation"
829 msgid "User registration with automatic account activation"
830 msgstr "Benutzerregistrierung mit automatischer Kontoaktivierung"
830 msgstr "Benutzerregistrierung mit automatischer Kontoaktivierung"
831
831
832 msgid "Not reviewed"
832 msgid "Not reviewed"
833 msgstr "Nicht Begutachtet"
833 msgstr "Nicht Begutachtet"
834
834
835 msgid "Under review"
835 msgid "Under review"
836 msgstr "In Begutachtung"
836 msgstr "In Begutachtung"
837
837
838 msgid "Approved"
838 msgid "Approved"
839 msgstr "Akzeptiert"
839 msgstr "Akzeptiert"
840
840
841 msgid "Please enter a login"
841 msgid "Please enter a login"
842 msgstr "Bitte einen Benutzernamen eingeben"
842 msgstr "Bitte einen Benutzernamen eingeben"
843
843
844 msgid "Enter a value %(min)i characters long or more"
844 msgid "Enter a value %(min)i characters long or more"
845 msgstr "Bitte einen Wert mit mindestens %(min)i Zeichen eingeben"
845 msgstr "Bitte einen Wert mit mindestens %(min)i Zeichen eingeben"
846
846
847 msgid "Please enter a password"
847 msgid "Please enter a password"
848 msgstr "Bitte ein Passwort eingeben"
848 msgstr "Bitte ein Passwort eingeben"
849
849
850 msgid "Enter %(min)i characters or more"
850 msgid "Enter %(min)i characters or more"
851 msgstr "Bitte mindestens %(min)i Zeichen eingeben"
851 msgstr "Bitte mindestens %(min)i Zeichen eingeben"
852
852
853 msgid "Name must not contain only digits"
853 msgid "Name must not contain only digits"
854 msgstr "Name darf nicht nur Ziffern enthalten"
854 msgstr "Name darf nicht nur Ziffern enthalten"
855
855
856 msgid "New user %(new_username)s registered"
856 msgid "New user %(new_username)s registered"
857 msgstr "Neuer Benutzer %(new_username)s registriert"
857 msgstr "Neuer Benutzer %(new_username)s registriert"
858
858
859 msgid "Closing"
859 msgid "Closing"
860 msgstr "Schließen"
860 msgstr "Schließen"
861
861
862 msgid ""
862 msgid ""
863 "Cannot create pull request - criss cross merge detected, please merge a "
863 "Cannot create pull request - criss cross merge detected, please merge a "
864 "later %s revision to %s"
864 "later %s revision to %s"
865 msgstr ""
865 msgstr ""
866 "Pull-Request kann nicht erstellt werden - Criss Cross Merge erkannt, "
866 "Pull-Request kann nicht erstellt werden - Criss Cross Merge erkannt, "
867 "bitte eine spätere %s-Revision in %s zusammenführen."
867 "bitte eine spätere %s-Revision in %s zusammenführen."
868
868
869 msgid "You are not authorized to create the pull request"
869 msgid "You are not authorized to create the pull request"
870 msgstr "Sie sind nicht berechtigt, den Pull-Request anzulegen."
870 msgstr "Sie sind nicht berechtigt, den Pull-Request anzulegen."
871
871
872 msgid "Closed, next iteration: %s ."
872 msgid "Closed, next iteration: %s ."
873 msgstr "Geschlossen, nächste Iteration: %s ."
873 msgstr "Geschlossen, nächste Iteration: %s ."
874
874
875 msgid "latest tip"
875 msgid "latest tip"
876 msgstr "Letzter Tip"
876 msgstr "Letzter Tip"
877
877
878 msgid ""
878 msgid ""
879 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
879 "User \"%s\" still owns %s repositories and cannot be removed. Switch "
880 "owners or remove those repositories: %s"
880 "owners or remove those repositories: %s"
881 msgstr ""
881 msgstr ""
882 "Der Benutzer \"%s\" besitzt noch immer %s Repositories und kann daher "
882 "Der Benutzer \"%s\" besitzt noch immer %s Repositories und kann daher "
883 "nicht entfernt werden. Entweder muss der Besitzer geändert oder das "
883 "nicht entfernt werden. Entweder muss der Besitzer geändert oder das "
884 "Repository entfernt werden: %s"
884 "Repository entfernt werden: %s"
885
885
886 msgid ""
886 msgid ""
887 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
887 "User \"%s\" still owns %s repository groups and cannot be removed. Switch "
888 "owners or remove those repository groups: %s"
888 "owners or remove those repository groups: %s"
889 msgstr ""
889 msgstr ""
890 "Der Benutzer \"%s\" ist noch der Besitzer von %s Repositorygruppen und "
890 "Der Benutzer \"%s\" ist noch der Besitzer von %s Repositorygruppen und "
891 "kann daher nicht entfernt werden. Entweder muss der Besitzer geändert "
891 "kann daher nicht entfernt werden. Entweder muss der Besitzer geändert "
892 "oder die Repositorygruppen müssen entfernt werden: %s"
892 "oder die Repositorygruppen müssen entfernt werden: %s"
893
893
894 msgid ""
894 msgid ""
895 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
895 "User \"%s\" still owns %s user groups and cannot be removed. Switch "
896 "owners or remove those user groups: %s"
896 "owners or remove those user groups: %s"
897 msgstr ""
897 msgstr ""
898 "Der Benutzer \"%s\" besitzt noch immer %s Benutzergruppen und kann daher "
898 "Der Benutzer \"%s\" besitzt noch immer %s Benutzergruppen und kann daher "
899 "nicht entfernt werden. Entweder muss der Besitzer geändert oder die "
899 "nicht entfernt werden. Entweder muss der Besitzer geändert oder die "
900 "Benutzergruppen müssen gelöscht werden: %s"
900 "Benutzergruppen müssen gelöscht werden: %s"
901
901
902 msgid "Password reset link"
902 msgid "Password reset link"
903 msgstr "Link zum Zurücksetzen des Passworts"
903 msgstr "Link zum Zurücksetzen des Passworts"
904
904
905 msgid ""
905 msgid ""
906 "The password to your account %s has been changed using password reset "
906 "The password to your account %s has been changed using password reset "
907 "form."
907 "form."
908 msgstr ""
908 msgstr ""
909 "Das Passwort für dein Konto %s wurde mit dem Formular zum Zurücksetzen "
909 "Das Passwort für dein Konto %s wurde mit dem Formular zum Zurücksetzen "
910 "des Passworts geändert."
910 "des Passworts geändert."
911
911
912 msgid "Value cannot be an empty list"
912 msgid "Value cannot be an empty list"
913 msgstr "Eine leere Liste ist kein gültiger Wert"
913 msgstr "Eine leere Liste ist kein gültiger Wert"
914
914
915 msgid "Username \"%(username)s\" already exists"
915 msgid "Username \"%(username)s\" already exists"
916 msgstr "Benutezrname \"%(username)s\" existiert bereits"
916 msgstr "Benutezrname \"%(username)s\" existiert bereits"
917
917
918 msgid "The input is not valid"
918 msgid "The input is not valid"
919 msgstr "Die Eingabe ist nicht gültig"
919 msgstr "Die Eingabe ist nicht gültig"
920
920
921 msgid "Username %(username)s is not valid"
921 msgid "Username %(username)s is not valid"
922 msgstr "Benutzername \"%(username)s\" ist ungültig"
922 msgstr "Benutzername \"%(username)s\" ist ungültig"
923
923
924 msgid "Invalid user group name"
924 msgid "Invalid user group name"
925 msgstr "Ungültiger Benutzergruppenname"
925 msgstr "Ungültiger Benutzergruppenname"
926
926
927 msgid "User group \"%(usergroup)s\" already exists"
927 msgid "User group \"%(usergroup)s\" already exists"
928 msgstr "Benutzergruppe \"%(usergroup)s\" existiert bereits"
928 msgstr "Benutzergruppe \"%(usergroup)s\" existiert bereits"
929
929
930 msgid ""
930 msgid ""
931 "user group name may only contain alphanumeric characters underscores, "
931 "user group name may only contain alphanumeric characters underscores, "
932 "periods or dashes and must begin with alphanumeric character"
932 "periods or dashes and must begin with alphanumeric character"
933 msgstr ""
933 msgstr ""
934 "Der Name einer Benutzergruppe darf nur alphanumerische Zeichen, "
934 "Der Name einer Benutzergruppe darf nur alphanumerische Zeichen, "
935 "Unterstriche, Punkte oder Bindestriche enthalten und muss mit einem "
935 "Unterstriche, Punkte oder Bindestriche enthalten und muss mit einem "
936 "alphanumerischen Zeichen beginnen"
936 "alphanumerischen Zeichen beginnen"
937
937
938 msgid "Cannot assign this group as parent"
938 msgid "Cannot assign this group as parent"
939 msgstr "Kann diese Gruppe nicht als vorgesetzt setzen"
939 msgstr "Kann diese Gruppe nicht als vorgesetzt setzen"
940
940
941 msgid "Group \"%(group_name)s\" already exists"
941 msgid "Group \"%(group_name)s\" already exists"
942 msgstr "Gruppe \"%(group_name)s\" existiert bereits"
942 msgstr "Gruppe \"%(group_name)s\" existiert bereits"
943
943
944 msgid "Repository with name \"%(group_name)s\" already exists"
944 msgid "Repository with name \"%(group_name)s\" already exists"
945 msgstr "Es gibt bereits ein Repository mit \"%(group_name)s\""
945 msgstr "Es gibt bereits ein Repository mit \"%(group_name)s\""
946
946
947 msgid "Invalid characters (non-ascii) in password"
947 msgid "Invalid characters (non-ascii) in password"
948 msgstr "Üngültige(nicht ASCII) Zeichen im Passwort"
948 msgstr "Üngültige(nicht ASCII) Zeichen im Passwort"
949
949
950 msgid "Invalid old password"
950 msgid "Invalid old password"
951 msgstr "Ungültiges altes Passwort"
951 msgstr "Ungültiges altes Passwort"
952
952
953 msgid "Passwords do not match"
953 msgid "Passwords do not match"
954 msgstr "Die Passwörter stimmen nicht überein"
954 msgstr "Die Passwörter stimmen nicht überein"
955
955
956 msgid "Repository named %(repo)s already exists"
956 msgid "Repository named %(repo)s already exists"
957 msgstr "Es gibt bereits ein Repository mit \"%(repo)s\""
957 msgstr "Es gibt bereits ein Repository mit \"%(repo)s\""
958
958
959 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
959 msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
960 msgstr ""
960 msgstr ""
961 "Es gibt bereits ein Repository mit \"%(repo)s\" in der Gruppe "
961 "Es gibt bereits ein Repository mit \"%(repo)s\" in der Gruppe "
962 "\"%(group)s\""
962 "\"%(group)s\""
963
963
964 msgid "Repository group with name \"%(repo)s\" already exists"
964 msgid "Repository group with name \"%(repo)s\" already exists"
965 msgstr "Eine Repositorygruppe mit dem Namen \"%(repo)s\" existiert bereits"
965 msgstr "Eine Repositorygruppe mit dem Namen \"%(repo)s\" existiert bereits"
966
966
967 msgid "Invalid repository URL"
967 msgid "Invalid repository URL"
968 msgstr "Ungültige Repository-URL"
968 msgstr "Ungültige Repository-URL"
969
969
970 msgid "Fork has to be the same type as parent"
970 msgid "Fork has to be the same type as parent"
971 msgstr "Forke um den selben typ wie der Vorgesetze zu haben"
971 msgstr "Forke um den selben typ wie der Vorgesetze zu haben"
972
972
973 msgid "You don't have permissions to create repository in this group"
973 msgid "You don't have permissions to create repository in this group"
974 msgstr ""
974 msgstr ""
975 "Du hast nicht die erforderlichen Berechtigungen, um in dieser Gruppe ein "
975 "Du hast nicht die erforderlichen Berechtigungen, um in dieser Gruppe ein "
976 "Repository zu erzeugen"
976 "Repository zu erzeugen"
977
977
978 msgid "no permission to create repository in root location"
978 msgid "no permission to create repository in root location"
979 msgstr "keine Berechtigung, um ein Repository auf höchster Ebene anzulegen"
979 msgstr "keine Berechtigung, um ein Repository auf höchster Ebene anzulegen"
980
980
981 msgid "You don't have permissions to create a group in this location"
981 msgid "You don't have permissions to create a group in this location"
982 msgstr ""
982 msgstr ""
983 "Sie haben keine Berechtigung, um an diesem Ort ein Repository anzulegen"
983 "Sie haben keine Berechtigung, um an diesem Ort ein Repository anzulegen"
984
984
985 msgid "This username or user group name is not valid"
985 msgid "This username or user group name is not valid"
986 msgstr "Dieser Benutzername oder Benutzergruppenname ist nicht gültig"
986 msgstr "Dieser Benutzername oder Benutzergruppenname ist nicht gültig"
987
987
988 msgid "This is not a valid path"
988 msgid "This is not a valid path"
989 msgstr "Dies ist ein Ungültiger Pfad"
989 msgstr "Dies ist ein Ungültiger Pfad"
990
990
991 msgid "This email address is already in use"
991 msgid "This email address is already in use"
992 msgstr "Diese E-Mail-Addresse ist bereits in Benutzung"
992 msgstr "Diese E-Mail-Addresse ist bereits in Benutzung"
993
993
994 msgid "Email address \"%(email)s\" not found"
994 msgid "Email address \"%(email)s\" not found"
995 msgstr "E-Mail-Addresse „%(email)s“ existiert nicht."
995 msgstr "E-Mail-Addresse „%(email)s“ existiert nicht."
996
996
997 msgid ""
997 msgid ""
998 "The LDAP Login attribute of the CN must be specified - this is the name "
998 "The LDAP Login attribute of the CN must be specified - this is the name "
999 "of the attribute that is equivalent to \"username\""
999 "of the attribute that is equivalent to \"username\""
1000 msgstr ""
1000 msgstr ""
1001 "Das LDAP-Login-Attribut des CN muss angeben werden - Es ist der Name des "
1001 "Das LDAP-Login-Attribut des CN muss angeben werden - Es ist der Name des "
1002 "Attributes äquivalent zu \"Benutzername\""
1002 "Attributes äquivalent zu \"Benutzername\""
1003
1003
1004 msgid "Please enter a valid IPv4 or IPv6 address"
1004 msgid "Please enter a valid IPv4 or IPv6 address"
1005 msgstr "Bitte eine gültige IPv4- oder IPv6-Adresse angeben"
1005 msgstr "Bitte eine gültige IPv4- oder IPv6-Adresse angeben"
1006
1006
1007 msgid ""
1007 msgid ""
1008 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1008 "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1009 msgstr ""
1009 msgstr ""
1010 "Die Größe (in Bits) des Netzwerks muss im Bereich 0-32 liegen (nicht "
1010 "Die Größe (in Bits) des Netzwerks muss im Bereich 0-32 liegen (nicht "
1011 "%(bits)r)"
1011 "%(bits)r)"
1012
1012
1013 msgid "Key name can only consist of letters, underscore, dash or numbers"
1013 msgid "Key name can only consist of letters, underscore, dash or numbers"
1014 msgstr ""
1014 msgstr ""
1015 "Der Name eines Schlüssels darf nur aus Buchstaben, Ziffern, Unterstrich "
1015 "Der Name eines Schlüssels darf nur aus Buchstaben, Ziffern, Unterstrich "
1016 "und Bindestrich bestehen"
1016 "und Bindestrich bestehen"
1017
1017
1018 msgid "Filename cannot be inside a directory"
1018 msgid "Filename cannot be inside a directory"
1019 msgstr "Dateiname darf kein Unterverzeichnis enthalten"
1019 msgstr "Dateiname darf kein Unterverzeichnis enthalten"
1020
1020
1021 msgid "Plugins %(loaded)s and %(next_to_load)s both export the same name"
1021 msgid "Plugins %(loaded)s and %(next_to_load)s both export the same name"
1022 msgstr ""
1022 msgstr ""
1023 "Die Plug-Ins %(loaded)s und %(next_to_load)s exportieren beide den selben "
1023 "Die Plug-Ins %(loaded)s und %(next_to_load)s exportieren beide den selben "
1024 "Namen"
1024 "Namen"
1025
1025
1026 msgid "About"
1026 msgid "About"
1027 msgstr "Über"
1027 msgstr "Über"
1028
1028
1029 msgid "Add Repository"
1029 msgid "Add Repository"
1030 msgstr "Repository hinzufügen"
1030 msgstr "Repository hinzufügen"
1031
1031
1032 msgid "Add Repository Group"
1032 msgid "Add Repository Group"
1033 msgstr "Repositorygruppe hinzufügen"
1033 msgstr "Repositorygruppe hinzufügen"
1034
1034
1035 msgid "You have admin right to this group, and can edit it"
1035 msgid "You have admin right to this group, and can edit it"
1036 msgstr "Du hast Adminrechte für diese Gruppe und kannst sie editieren"
1036 msgstr "Du hast Adminrechte für diese Gruppe und kannst sie editieren"
1037
1037
1038 msgid "Edit Repository Group"
1038 msgid "Edit Repository Group"
1039 msgstr "Repositorygruppe bearbeiten"
1039 msgstr "Repositorygruppe bearbeiten"
1040
1040
1041 msgid "Repository"
1041 msgid "Repository"
1042 msgstr "Repository"
1042 msgstr "Repository"
1043
1043
1044 msgid "Description"
1044 msgid "Description"
1045 msgstr "Beschreibung"
1045 msgstr "Beschreibung"
1046
1046
1047 msgid "Last Change"
1047 msgid "Last Change"
1048 msgstr "Letzte Änderung"
1048 msgstr "Letzte Änderung"
1049
1049
1050 msgid "Tip"
1050 msgid "Tip"
1051 msgstr "Tipp"
1051 msgstr "Tipp"
1052
1052
1053 msgid "Owner"
1053 msgid "Owner"
1054 msgstr "Besitzer"
1054 msgstr "Besitzer"
1055
1055
1056 msgid "Log In"
1056 msgid "Log In"
1057 msgstr "Log In"
1057 msgstr "Log In"
1058
1058
1059 msgid "Log In to %s"
1059 msgid "Log In to %s"
1060 msgstr "Log In in %s"
1060 msgstr "Log In in %s"
1061
1061
1062 msgid "Username"
1062 msgid "Username"
1063 msgstr "Benutzername"
1063 msgstr "Benutzername"
1064
1064
1065 msgid "Password"
1065 msgid "Password"
1066 msgstr "Passwort"
1066 msgstr "Passwort"
1067
1067
1068 msgid "Stay logged in after browser restart"
1068 msgid "Stay logged in after browser restart"
1069 msgstr "Nach dem Neustart des Browsers eingeloggt bleiben"
1069 msgstr "Nach dem Neustart des Browsers eingeloggt bleiben"
1070
1070
1071 msgid "Forgot your password?"
1071 msgid "Forgot your password?"
1072 msgstr "Passwort vergessen?"
1072 msgstr "Passwort vergessen?"
1073
1073
1074 msgid "Don't have an account?"
1074 msgid "Don't have an account?"
1075 msgstr "Kein Account?"
1075 msgstr "Kein Account?"
1076
1076
1077 msgid "Sign In"
1077 msgid "Sign In"
1078 msgstr "Einloggen"
1078 msgstr "Einloggen"
1079
1079
1080 msgid "Password Reset"
1080 msgid "Password Reset"
1081 msgstr "Passwort zurücksetzen"
1081 msgstr "Passwort zurücksetzen"
1082
1082
1083 msgid "Reset Your Password to %s"
1083 msgid "Reset Your Password to %s"
1084 msgstr "Setze dein Passwort auf %s zurück"
1084 msgstr "Setze dein Passwort auf %s zurück"
1085
1085
1086 msgid "Reset Your Password"
1086 msgid "Reset Your Password"
1087 msgstr "Setze dein Passwort zurück"
1087 msgstr "Setze dein Passwort zurück"
1088
1088
1089 msgid "Email Address"
1089 msgid "Email Address"
1090 msgstr "E-Mail-Adresse"
1090 msgstr "E-Mail-Adresse"
1091
1091
1092 msgid "Captcha"
1092 msgid "Captcha"
1093 msgstr "CAPTCHA"
1093 msgstr "CAPTCHA"
1094
1094
1095 msgid "Send Password Reset Email"
1095 msgid "Send Password Reset Email"
1096 msgstr "E-Mail zum Zurücksetzen des Passworts anfordern"
1096 msgstr "E-Mail zum Zurücksetzen des Passworts anfordern"
1097
1097
1098 msgid ""
1098 msgid ""
1099 "A password reset link will be sent to the specified email address if it "
1099 "A password reset link will be sent to the specified email address if it "
1100 "is registered in the system."
1100 "is registered in the system."
1101 msgstr ""
1101 msgstr ""
1102 "Ein Link zum Zurücksetzen des Passworts wird an die angegebene E-Mail-"
1102 "Ein Link zum Zurücksetzen des Passworts wird an die angegebene E-Mail-"
1103 "Adresse gesendet, wenn diese im System registriert ist."
1103 "Adresse gesendet, wenn diese im System registriert ist."
1104
1104
1105 msgid "You are about to set a new password for the email address %s."
1105 msgid "You are about to set a new password for the email address %s."
1106 msgstr ""
1106 msgstr ""
1107 "Du bist dabei, ein neues Passwort für die E-Mail-Adresse %s festzulegen."
1107 "Du bist dabei, ein neues Passwort für die E-Mail-Adresse %s festzulegen."
1108
1108
1109 msgid ""
1109 msgid ""
1110 "Note that you must use the same browser session for this as the one used "
1110 "Note that you must use the same browser session for this as the one used "
1111 "to request the password reset."
1111 "to request the password reset."
1112 msgstr ""
1112 msgstr ""
1113 "Beachten Sie, dass Sie dafür die gleiche Browsersitzung verwenden müssen, "
1113 "Beachten Sie, dass Sie dafür die gleiche Browsersitzung verwenden müssen, "
1114 "mit der Sie das Zurücksetzen des Passworts beantragt haben."
1114 "mit der Sie das Zurücksetzen des Passworts beantragt haben."
1115
1115
1116 msgid "Code you received in the email"
1116 msgid "Code you received in the email"
1117 msgstr "Code, den du in der E-Mail erhalten hast"
1117 msgstr "Code, den du in der E-Mail erhalten hast"
1118
1118
1119 msgid "Confirm"
1119 msgid "Confirm"
1120 msgstr "Bestätigen"
1120 msgstr "Bestätigen"
1121
1121
1122 msgid "Sign Up"
1122 msgid "Sign Up"
1123 msgstr "Registrieren"
1123 msgstr "Registrieren"
1124
1124
1125 msgid "Sign Up to %s"
1125 msgid "Sign Up to %s"
1126 msgstr "Registrieren für %s"
1126 msgstr "Registrieren für %s"
1127
1127
1128 msgid "Re-enter password"
1128 msgid "Re-enter password"
1129 msgstr "Passwort erneut eingeben"
1129 msgstr "Passwort erneut eingeben"
1130
1130
1131 msgid "First Name"
1131 msgid "First Name"
1132 msgstr "Vorname"
1132 msgstr "Vorname"
1133
1133
1134 msgid "Last Name"
1134 msgid "Last Name"
1135 msgstr "Nachname"
1135 msgstr "Nachname"
1136
1136
1137 msgid "Email"
1137 msgid "Email"
1138 msgstr "E-Mail"
1138 msgstr "E-Mail"
1139
1139
1140 msgid "Registered accounts are ready to use and need no further action."
1140 msgid "Registered accounts are ready to use and need no further action."
1141 msgstr "Registrierte Konten können ohne weitere Aktion genutzt werden."
1141 msgstr "Registrierte Konten können ohne weitere Aktion genutzt werden."
1142
1142
1143 msgid "Please wait for an administrator to activate your account."
1143 msgid "Please wait for an administrator to activate your account."
1144 msgstr ""
1144 msgstr ""
1145 "Bitte warten Sie auf die Aktivierung Ihres Benutzerkontos durch einen "
1145 "Bitte warten Sie auf die Aktivierung Ihres Benutzerkontos durch einen "
1146 "Administrator."
1146 "Administrator."
1147
1147
1148 msgid "Admin Journal"
1148 msgid "Admin Journal"
1149 msgstr "Admin-Logbuch"
1149 msgstr "Admin-Logbuch"
1150
1150
1151 msgid "journal filter..."
1151 msgid "journal filter..."
1152 msgstr "Logbuch filter..."
1152 msgstr "Logbuch filter..."
1153
1153
1154 msgid "Filter"
1154 msgid "Filter"
1155 msgstr "Filter"
1155 msgstr "Filter"
1156
1156
1157 msgid "%s Entry"
1157 msgid "%s Entry"
1158 msgid_plural "%s Entries"
1158 msgid_plural "%s Entries"
1159 msgstr[0] "%s Eintrag"
1159 msgstr[0] "%s Eintrag"
1160 msgstr[1] "%s Einträge"
1160 msgstr[1] "%s Einträge"
1161
1161
1162 msgid "Action"
1162 msgid "Action"
1163 msgstr "Aktion"
1163 msgstr "Aktion"
1164
1164
1165 msgid "Date"
1165 msgid "Date"
1166 msgstr "Datum"
1166 msgstr "Datum"
1167
1167
1168 msgid "From IP"
1168 msgid "From IP"
1169 msgstr "Von IP"
1169 msgstr "Von IP"
1170
1170
1171 msgid "No actions yet"
1171 msgid "No actions yet"
1172 msgstr "Es sind bisher keine Aktionen passiert"
1172 msgstr "Es sind bisher keine Aktionen passiert"
1173
1173
1174 msgid "Authentication Settings"
1174 msgid "Authentication Settings"
1175 msgstr "Authentifizierungseinstellungen"
1175 msgstr "Authentifizierungseinstellungen"
1176
1176
1177 msgid "Authentication"
1177 msgid "Authentication"
1178 msgstr "Authentifizierung"
1178 msgstr "Authentifizierung"
1179
1179
1180 msgid "Authentication Plugins"
1180 msgid "Authentication Plugins"
1181 msgstr "Plug-Ins zur Authentifizierung"
1181 msgstr "Plug-Ins zur Authentifizierung"
1182
1182
1183 msgid "Enabled Plugins"
1183 msgid "Enabled Plugins"
1184 msgstr "Aktivierte Plugins"
1184 msgstr "Aktivierte Plugins"
1185
1185
1186 msgid "Available built-in plugins"
1186 msgid "Available built-in plugins"
1187 msgstr "Verfügbare mitgelieferte Plug-Ins"
1187 msgstr "Verfügbare mitgelieferte Plug-Ins"
1188
1188
1189 msgid "Plugin"
1189 msgid "Plugin"
1190 msgstr "Plugin"
1190 msgstr "Plugin"
1191
1191
1192 msgid "Save"
1192 msgid "Save"
1193 msgstr "Speichern"
1193 msgstr "Speichern"
1194
1194
1195 msgid "Repository Defaults"
1195 msgid "Repository Defaults"
1196 msgstr "Repositorystandards"
1196 msgstr "Repositorystandards"
1197
1197
1198 msgid "Type"
1198 msgid "Type"
1199 msgstr "Typ"
1199 msgstr "Typ"
1200
1200
1201 msgid "Private repository"
1201 msgid "Private repository"
1202 msgstr "Privates Repository"
1202 msgstr "Privates Repository"
1203
1203
1204 msgid ""
1204 msgid ""
1205 "Private repositories are only visible to people explicitly added as "
1205 "Private repositories are only visible to people explicitly added as "
1206 "collaborators."
1206 "collaborators."
1207 msgstr ""
1207 msgstr ""
1208 "Private Repositories sind nur für explizit hinzugefügte Mitarbeiter "
1208 "Private Repositories sind nur für explizit hinzugefügte Mitarbeiter "
1209 "sichtbar."
1209 "sichtbar."
1210
1210
1211 msgid "Enable statistics"
1211 msgid "Enable statistics"
1212 msgstr "Aktiviere Statistiken"
1212 msgstr "Aktiviere Statistiken"
1213
1213
1214 msgid "Enable statistics window on summary page."
1214 msgid "Enable statistics window on summary page."
1215 msgstr "Statistik-Fenster in der Zusammenfassungsseite aktivieren."
1215 msgstr "Statistik-Fenster in der Zusammenfassungsseite aktivieren."
1216
1216
1217 msgid "Enable downloads"
1217 msgid "Enable downloads"
1218 msgstr "Aktiviere Downloads"
1218 msgstr "Aktiviere Downloads"
1219
1219
1220 msgid "Enable download menu on summary page."
1220 msgid "Enable download menu on summary page."
1221 msgstr "Download-Menü auf der Zusammenfassungsseite aktivieren."
1221 msgstr "Download-Menü auf der Zusammenfassungsseite aktivieren."
1222
1222
1223 msgid "Edit Gist"
1223 msgid "Edit Gist"
1224 msgstr "Gist editieren"
1224 msgstr "Gist editieren"
1225
1225
1226 msgid ""
1226 msgid ""
1227 "Gist was updated since you started editing. Copy your changes and click "
1227 "Gist was updated since you started editing. Copy your changes and click "
1228 "%(here)s to reload new version."
1228 "%(here)s to reload new version."
1229 msgstr ""
1229 msgstr ""
1230 "Gist wurde während der Änderung aktualisiert. Änderungen kopieren und "
1230 "Gist wurde während der Änderung aktualisiert. Änderungen kopieren und "
1231 "%(here)s klicken um die neue Version nachzuladen."
1231 "%(here)s klicken um die neue Version nachzuladen."
1232
1232
1233 msgid "here"
1233 msgid "here"
1234 msgstr "hier"
1234 msgstr "hier"
1235
1235
1236 msgid "Gist description ..."
1236 msgid "Gist description ..."
1237 msgstr "Gist Beschreibung ..."
1237 msgstr "Gist Beschreibung ..."
1238
1238
1239 msgid "Gist lifetime"
1239 msgid "Gist lifetime"
1240 msgstr "Gist Lebenszeit"
1240 msgstr "Gist Lebenszeit"
1241
1241
1242 msgid "Expires"
1242 msgid "Expires"
1243 msgstr "Verfällt"
1243 msgstr "Verfällt"
1244
1244
1245 msgid "Update Gist"
1245 msgid "Update Gist"
1246 msgstr "Gist aktualisieren"
1246 msgstr "Gist aktualisieren"
1247
1247
1248 msgid "Cancel"
1248 msgid "Cancel"
1249 msgstr "Abbrechen"
1249 msgstr "Abbrechen"
1250
1250
1251 msgid "Private Gists for User %s"
1251 msgid "Private Gists for User %s"
1252 msgstr "Privater Gist für Benutzer %s"
1252 msgstr "Privater Gist für Benutzer %s"
1253
1253
1254 msgid "Public Gists for User %s"
1254 msgid "Public Gists for User %s"
1255 msgstr "Öffentlicher Gist für Benutzer %s"
1255 msgstr "Öffentlicher Gist für Benutzer %s"
1256
1256
1257 msgid "Public Gists"
1257 msgid "Public Gists"
1258 msgstr "Öffentliche Gists"
1258 msgstr "Öffentliche Gists"
1259
1259
1260 msgid "Create New Gist"
1260 msgid "Create New Gist"
1261 msgstr "Neuen Gist erstellen"
1261 msgstr "Neuen Gist erstellen"
1262
1262
1263 msgid "Created"
1263 msgid "Created"
1264 msgstr "Erstellt"
1264 msgstr "Erstellt"
1265
1265
1266 msgid "There are no gists yet"
1266 msgid "There are no gists yet"
1267 msgstr "Bisher sind keine Gists vorhanden"
1267 msgstr "Bisher sind keine Gists vorhanden"
1268
1268
1269 msgid "New Gist"
1269 msgid "New Gist"
1270 msgstr "Neuer Gist"
1270 msgstr "Neuer Gist"
1271
1271
1272 msgid "Create Private Gist"
1272 msgid "Create Private Gist"
1273 msgstr "Privaten Gist erstellen"
1273 msgstr "Privaten Gist erstellen"
1274
1274
1275 msgid "Create Public Gist"
1275 msgid "Create Public Gist"
1276 msgstr "Öffentlichen Gist erstellen"
1276 msgstr "Öffentlichen Gist erstellen"
1277
1277
1278 msgid "Reset"
1278 msgid "Reset"
1279 msgstr "Zurücksetzen"
1279 msgstr "Zurücksetzen"
1280
1280
1281 msgid "Gist"
1281 msgid "Gist"
1282 msgstr "Gist"
1282 msgstr "Gist"
1283
1283
1284 msgid "URL"
1284 msgid "URL"
1285 msgstr "URL"
1285 msgstr "URL"
1286
1286
1287 msgid "Public Gist"
1287 msgid "Public Gist"
1288 msgstr "Öffentlicher Gist"
1288 msgstr "Öffentlicher Gist"
1289
1289
1290 msgid "Private Gist"
1290 msgid "Private Gist"
1291 msgstr "Privater Gist"
1291 msgstr "Privater Gist"
1292
1292
1293 msgid "Delete"
1293 msgid "Delete"
1294 msgstr "Löschen"
1294 msgstr "Löschen"
1295
1295
1296 msgid "Confirm to delete this Gist"
1296 msgid "Confirm to delete this Gist"
1297 msgstr "Löschen des Gists bestätigen"
1297 msgstr "Löschen des Gists bestätigen"
1298
1298
1299 msgid "Edit"
1299 msgid "Edit"
1300 msgstr "Bearbeiten"
1300 msgstr "Bearbeiten"
1301
1301
1302 msgid "Show as Raw"
1302 msgid "Show as Raw"
1303 msgstr "Als Raw anzeigen"
1303 msgstr "Als Raw anzeigen"
1304
1304
1305 msgid "created"
1305 msgid "created"
1306 msgstr "erstellt"
1306 msgstr "erstellt"
1307
1307
1308 msgid "Show as raw"
1308 msgid "Show as raw"
1309 msgstr "Als Raw anzeigen"
1309 msgstr "Als Raw anzeigen"
1310
1310
1311 msgid "My Account"
1311 msgid "My Account"
1312 msgstr "Mein Account"
1312 msgstr "Mein Account"
1313
1313
1314 msgid "Profile"
1314 msgid "Profile"
1315 msgstr "Profil"
1315 msgstr "Profil"
1316
1316
1317 msgid "Email Addresses"
1317 msgid "Email Addresses"
1318 msgstr "E-Mail-Adressen"
1318 msgstr "E-Mail-Adressen"
1319
1319
1320 msgid "API Keys"
1320 msgid "API Keys"
1321 msgstr "API Keys"
1321 msgstr "API Keys"
1322
1322
1323 msgid "Owned Repositories"
1323 msgid "Owned Repositories"
1324 msgstr "Eigene Repositories"
1324 msgstr "Eigene Repositories"
1325
1325
1326 msgid "Watched Repositories"
1326 msgid "Watched Repositories"
1327 msgstr "Beobachtete Repositories"
1327 msgstr "Beobachtete Repositories"
1328
1328
1329 msgid "Show Permissions"
1329 msgid "Show Permissions"
1330 msgstr "Berechtigungen anzeigen"
1330 msgstr "Berechtigungen anzeigen"
1331
1331
1332 msgid "Built-in"
1332 msgid "Built-in"
1333 msgstr "Mitgeliefert"
1333 msgstr "Mitgeliefert"
1334
1334
1335 msgid "Confirm to reset this API key: %s"
1335 msgid "Confirm to reset this API key: %s"
1336 msgstr "Zurücksetzen des API-Schlüssels \"%s\" bestätigen"
1336 msgstr "Zurücksetzen des API-Schlüssels \"%s\" bestätigen"
1337
1337
1338 msgid "Expired"
1338 msgid "Expired"
1339 msgstr "Verfallen"
1339 msgstr "Verfallen"
1340
1340
1341 msgid "Confirm to remove this API key: %s"
1341 msgid "Confirm to remove this API key: %s"
1342 msgstr "Entfernen des API-Schlüssels \"%s\" bestätigen"
1342 msgstr "Entfernen des API-Schlüssels \"%s\" bestätigen"
1343
1343
1344 msgid "Remove"
1344 msgid "Remove"
1345 msgstr "Entfernen"
1345 msgstr "Entfernen"
1346
1346
1347 msgid "No additional API keys specified"
1347 msgid "No additional API keys specified"
1348 msgstr "Keine weiteren API-Schlüssel angegeben"
1348 msgstr "Keine weiteren API-Schlüssel angegeben"
1349
1349
1350 msgid "New API key"
1350 msgid "New API key"
1351 msgstr "Neuer API-Schlüssel"
1351 msgstr "Neuer API-Schlüssel"
1352
1352
1353 msgid "Add"
1353 msgid "Add"
1354 msgstr "Hinzufügen"
1354 msgstr "Hinzufügen"
1355
1355
1356 msgid ""
1356 msgid ""
1357 "\n"
1357 "\n"
1358 "API keys are used to let scripts or services access %s using your\n"
1358 "API keys are used to let scripts or services access %s using your\n"
1359 "account, as if you had provided the script or service with your actual\n"
1359 "account, as if you had provided the script or service with your actual\n"
1360 "password.\n"
1360 "password.\n"
1361 msgstr ""
1361 msgstr ""
1362 "\n"
1362 "\n"
1363 "API-Schlüssel werden verwendet, um Skripten oder Diensten denselben\n"
1363 "API-Schlüssel werden verwendet, um Skripten oder Diensten denselben\n"
1364 "Zugang zu %s zu gewähren, den Sie mit Eingabe Ihres Passworts\n"
1364 "Zugang zu %s zu gewähren, den Sie mit Eingabe Ihres Passworts\n"
1365 "erlangen würden.\n"
1365 "erlangen würden.\n"
1366
1366
1367 msgid ""
1367 msgid ""
1368 "\n"
1368 "\n"
1369 "Like passwords, API keys should therefore never be shared with others,\n"
1369 "Like passwords, API keys should therefore never be shared with others,\n"
1370 "nor passed to untrusted scripts or services. If such sharing should\n"
1370 "nor passed to untrusted scripts or services. If such sharing should\n"
1371 "happen anyway, reset the API key on this page to prevent further use.\n"
1371 "happen anyway, reset the API key on this page to prevent further use.\n"
1372 msgstr ""
1372 msgstr ""
1373 "\n"
1373 "\n"
1374 "Ebenso wie Passworte, sollten API-Schlüssel somit niemals mit anderen\n"
1374 "Ebenso wie Passworte, sollten API-Schlüssel somit niemals mit anderen\n"
1375 "geteilt oder von nicht-vertrauenswürdigen Skripten oder Diensten\n"
1375 "geteilt oder von nicht-vertrauenswürdigen Skripten oder Diensten\n"
1376 "verwendet werden. Falls ein solcher Zugriff zwischenzeitlich passiert "
1376 "verwendet werden. Falls ein solcher Zugriff zwischenzeitlich passiert "
1377 "sein\n"
1377 "sein\n"
1378 "sollte, dann können Sie hier den API-Schlüssel zurücksetzen, um weiteren\n"
1378 "sollte, dann können Sie hier den API-Schlüssel zurücksetzen, um weiteren\n"
1379 "Missbrauchen zu verhindern.\n"
1379 "Missbrauchen zu verhindern.\n"
1380
1380
1381 msgid "Primary"
1381 msgid "Primary"
1382 msgstr "Primär"
1382 msgstr "Primär"
1383
1383
1384 msgid "Confirm to delete this email: %s"
1384 msgid "Confirm to delete this email: %s"
1385 msgstr "Löschen der E-Mail „%s“ bestätigen"
1385 msgstr "Löschen der E-Mail „%s“ bestätigen"
1386
1386
1387 msgid "No additional emails specified."
1387 msgid "No additional emails specified."
1388 msgstr "Keine weiteren E-Mails spezifiziert."
1388 msgstr "Keine weiteren E-Mails spezifiziert."
1389
1389
1390 msgid "New email address"
1390 msgid "New email address"
1391 msgstr "Neue E-Mailadresse"
1391 msgstr "Neue E-Mailadresse"
1392
1392
1393 msgid "Change Your Account Password"
1393 msgid "Change Your Account Password"
1394 msgstr "Passwort des Benutzerkontos ändern"
1394 msgstr "Passwort des Benutzerkontos ändern"
1395
1395
1396 msgid "Current password"
1396 msgid "Current password"
1397 msgstr "Aktuelles Passwort"
1397 msgstr "Aktuelles Passwort"
1398
1398
1399 msgid "New password"
1399 msgid "New password"
1400 msgstr "Neues Passwort"
1400 msgstr "Neues Passwort"
1401
1401
1402 msgid "Confirm new password"
1402 msgid "Confirm new password"
1403 msgstr "Bestätige neues Passwort"
1403 msgstr "Bestätige neues Passwort"
1404
1404
1405 msgid ""
1405 msgid ""
1406 "This account is managed with %s and the password cannot be changed here"
1406 "This account is managed with %s and the password cannot be changed here"
1407 msgstr ""
1407 msgstr ""
1408 "Dieser Account wird mit %s verwaltet - daher kann das Passwort nicht "
1408 "Dieser Account wird mit %s verwaltet - daher kann das Passwort nicht "
1409 "geändert werden"
1409 "geändert werden"
1410
1410
1411 msgid "Gravatar"
1411 msgid "Gravatar"
1412 msgstr "Gravatar"
1412 msgstr "Gravatar"
1413
1413
1414 msgid "Change %s avatar at"
1414 msgid "Change %s avatar at"
1415 msgstr "Benutzerbild %s ändern unter"
1415 msgstr "Benutzerbild %s ändern unter"
1416
1416
1417 msgid "Avatars are disabled"
1417 msgid "Avatars are disabled"
1418 msgstr "Avatare sind deaktiviert"
1418 msgstr "Avatare sind deaktiviert"
1419
1419
1420 msgid "Repositories You Own"
1420 msgid "Repositories You Own"
1421 msgstr "Repositories in Ihrem Besitz"
1421 msgstr "Repositories in Ihrem Besitz"
1422
1422
1423 msgid "Name"
1423 msgid "Name"
1424 msgstr "Name"
1424 msgstr "Name"
1425
1425
1426 msgid "Repositories You are Watching"
1426 msgid "Repositories You are Watching"
1427 msgstr "Repositories, denen Sie folgen"
1427 msgstr "Repositories, denen Sie folgen"
1428
1428
1429 msgid "Default Permissions"
1429 msgid "Default Permissions"
1430 msgstr "Standardrechte"
1430 msgstr "Standardrechte"
1431
1431
1432 msgid "Global"
1432 msgid "Global"
1433 msgstr "Global"
1433 msgstr "Global"
1434
1434
1435 msgid "IP Whitelist"
1435 msgid "IP Whitelist"
1436 msgstr "IP Whitelist"
1436 msgstr "IP Whitelist"
1437
1437
1438 msgid "Anonymous access"
1438 msgid "Anonymous access"
1439 msgstr "Anonymer Zugang"
1439 msgstr "Anonymer Zugang"
1440
1440
1441 msgid ""
1441 msgid ""
1442 "Allow access to Kallithea without needing to log in. Anonymous users use "
1442 "Allow access to Kallithea without needing to log in. Anonymous users use "
1443 "%s user permissions."
1443 "%s user permissions."
1444 msgstr ""
1444 msgstr ""
1445 "Unauthentifizierten Zugriff auf Kallithea erlauben. Anonyme Benutzer "
1445 "Unauthentifizierten Zugriff auf Kallithea erlauben. Anonyme Benutzer "
1446 "verwenden %s Benutzerrechte."
1446 "verwenden %s Benutzerrechte."
1447
1447
1448 msgid ""
1448 msgid ""
1449 "All default permissions on each repository will be reset to chosen "
1449 "All default permissions on each repository will be reset to chosen "
1450 "permission, note that all custom default permission on repositories will "
1450 "permission, note that all custom default permission on repositories will "
1451 "be lost"
1451 "be lost"
1452 msgstr ""
1452 msgstr ""
1453 "Alle Standardrechte jedes Repositorys werden auf die gewählten Rechte "
1453 "Alle Standardrechte jedes Repositorys werden auf die gewählten Rechte "
1454 "gesetzt. Beachten Sie, dass alle spezifischen Standardrechte der "
1454 "gesetzt. Beachten Sie, dass alle spezifischen Standardrechte der "
1455 "Repositories verloren gehen"
1455 "Repositories verloren gehen"
1456
1456
1457 msgid "Apply to all existing repositories"
1457 msgid "Apply to all existing repositories"
1458 msgstr "Auf alle bestehenden Repositories anwenden"
1458 msgstr "Auf alle bestehenden Repositories anwenden"
1459
1459
1460 msgid "Permissions for the Default user on new repositories."
1460 msgid "Permissions for the Default user on new repositories."
1461 msgstr "Berechtigungen für neue Repositories des Vorgabe-Benutzers."
1461 msgstr "Berechtigungen für neue Repositories des Vorgabe-Benutzers."
1462
1462
1463 msgid "Repository group"
1463 msgid "Repository group"
1464 msgstr "Repository Gruppe"
1464 msgstr "Repository Gruppe"
1465
1465
1466 msgid ""
1466 msgid ""
1467 "All default permissions on each repository group will be reset to chosen "
1467 "All default permissions on each repository group will be reset to chosen "
1468 "permission, note that all custom default permission on repository groups "
1468 "permission, note that all custom default permission on repository groups "
1469 "will be lost"
1469 "will be lost"
1470 msgstr ""
1470 msgstr ""
1471 "Alle Standardrechte jeder Repositorygruppe werden auf die gewählten "
1471 "Alle Standardrechte jeder Repositorygruppe werden auf die gewählten "
1472 "Rechte gesetzt. Beachten Sie, dass all spezifischen Standardrechte der "
1472 "Rechte gesetzt. Beachten Sie, dass all spezifischen Standardrechte der "
1473 "Repositorygruppen verloren gehen"
1473 "Repositorygruppen verloren gehen"
1474
1474
1475 msgid "Apply to all existing repository groups"
1475 msgid "Apply to all existing repository groups"
1476 msgstr "Auf alle bestehenden Repository-Gruppen anwenden"
1476 msgstr "Auf alle bestehenden Repository-Gruppen anwenden"
1477
1477
1478 msgid "Permissions for the Default user on new repository groups."
1478 msgid "Permissions for the Default user on new repository groups."
1479 msgstr "Berechtigungen des Vorgabe-Benutzers für neue Repository-Gruppen."
1479 msgstr "Berechtigungen des Vorgabe-Benutzers für neue Repository-Gruppen."
1480
1480
1481 msgid "User group"
1481 msgid "User group"
1482 msgstr "Benutzergruppe"
1482 msgstr "Benutzergruppe"
1483
1483
1484 msgid ""
1484 msgid ""
1485 "All default permissions on each user group will be reset to chosen "
1485 "All default permissions on each user group will be reset to chosen "
1486 "permission, note that all custom default permission on user groups will "
1486 "permission, note that all custom default permission on user groups will "
1487 "be lost"
1487 "be lost"
1488 msgstr ""
1488 msgstr ""
1489 "Alle Vorgabe-Berechtigungen jeder Benutzergruppe werden auf die gewählten "
1489 "Alle Vorgabe-Berechtigungen jeder Benutzergruppe werden auf die gewählten "
1490 "Berechtigungen zurückgesetzt. Beachten Sie, dass dabei alle Anpassungen "
1490 "Berechtigungen zurückgesetzt. Beachten Sie, dass dabei alle Anpassungen "
1491 "von Vorgabe-Berechtigungen für Benutzergruppen verloren gehen"
1491 "von Vorgabe-Berechtigungen für Benutzergruppen verloren gehen"
1492
1492
1493 msgid "Apply to all existing user groups"
1493 msgid "Apply to all existing user groups"
1494 msgstr "Auf alle bestehenden Benutzergruppen anwenden"
1494 msgstr "Auf alle bestehenden Benutzergruppen anwenden"
1495
1495
1496 msgid "Permissions for the Default user on new user groups."
1496 msgid "Permissions for the Default user on new user groups."
1497 msgstr "Berechtigungen für neue Benutzergruppen des den Vorgabe-Benutzer."
1497 msgstr "Berechtigungen für neue Benutzergruppen des den Vorgabe-Benutzer."
1498
1498
1499 msgid "Top level repository creation"
1499 msgid "Top level repository creation"
1500 msgstr "Erstellung eines übergeordneten Repositories"
1500 msgstr "Erstellung eines übergeordneten Repositories"
1501
1501
1502 msgid ""
1502 msgid ""
1503 "Enable this to allow non-admins to create repositories at the top level."
1503 "Enable this to allow non-admins to create repositories at the top level."
1504 msgstr ""
1504 msgstr ""
1505 "Aktiviere dies, damit Nicht-Administratoren Repositories auf der obersten "
1505 "Aktiviere dies, damit Nicht-Administratoren Repositories auf der obersten "
1506 "Ebene erstellen können."
1506 "Ebene erstellen können."
1507
1507
1508 msgid "User group creation"
1508 msgid "User group creation"
1509 msgstr "Benutzergruppen Erstellung"
1509 msgstr "Benutzergruppen Erstellung"
1510
1510
1511 msgid "Enable this to allow non-admins to create user groups."
1511 msgid "Enable this to allow non-admins to create user groups."
1512 msgstr ""
1512 msgstr ""
1513 "Aktivieren Sie dies, damit Nicht-Administratoren Benutzergruppen "
1513 "Aktivieren Sie dies, damit Nicht-Administratoren Benutzergruppen "
1514 "erstellen können."
1514 "erstellen können."
1515
1515
1516 msgid "Repository forking"
1516 msgid "Repository forking"
1517 msgstr "Repository-forking"
1517 msgstr "Repository-forking"
1518
1518
1519 msgid "Enable this to allow non-admins to fork repositories."
1519 msgid "Enable this to allow non-admins to fork repositories."
1520 msgstr ""
1520 msgstr ""
1521 "Aktivieren Sie dies, um Nichtadministratoren zu erlauben, Repositories zu "
1521 "Aktivieren Sie dies, um Nichtadministratoren zu erlauben, Repositories zu "
1522 "forken."
1522 "forken."
1523
1523
1524 msgid "Registration"
1524 msgid "Registration"
1525 msgstr "Registrierung"
1525 msgstr "Registrierung"
1526
1526
1527 msgid "All IP addresses are allowed."
1527 msgid "All IP addresses are allowed."
1528 msgstr "Alle IP-Adressen sind zulässig."
1528 msgstr "Alle IP-Adressen sind zulässig."
1529
1529
1530 msgid "New IP address"
1530 msgid "New IP address"
1531 msgstr "Neue IP-Adresse"
1531 msgstr "Neue IP-Adresse"
1532
1532
1533 msgid "Repository Groups"
1533 msgid "Repository Groups"
1534 msgstr "Repositorygruppen"
1534 msgstr "Repositorygruppen"
1535
1535
1536 msgid "Group name"
1536 msgid "Group name"
1537 msgstr "Gruppen name"
1537 msgstr "Gruppen name"
1538
1538
1539 msgid "Group parent"
1539 msgid "Group parent"
1540 msgstr "Übergeordnete Gruppe"
1540 msgstr "Übergeordnete Gruppe"
1541
1541
1542 msgid "Copy parent group permissions"
1542 msgid "Copy parent group permissions"
1543 msgstr "Rechte der übergeordneten Gruppe kopieren"
1543 msgstr "Rechte der übergeordneten Gruppe kopieren"
1544
1544
1545 msgid "Copy permission set from parent repository group."
1545 msgid "Copy permission set from parent repository group."
1546 msgstr "Rechte der übergeordneten Repositorygruppe kopieren."
1546 msgstr "Rechte der übergeordneten Repositorygruppe kopieren."
1547
1547
1548 msgid "%s Repository Group Settings"
1548 msgid "%s Repository Group Settings"
1549 msgstr "%s Einstellungen für Repositorygruppen"
1549 msgstr "%s Einstellungen für Repositorygruppen"
1550
1550
1551 msgid "Add Child Group"
1551 msgid "Add Child Group"
1552 msgstr "Untergruppe hinzufügen"
1552 msgstr "Untergruppe hinzufügen"
1553
1553
1554 msgid "Settings"
1554 msgid "Settings"
1555 msgstr "Einstellungen"
1555 msgstr "Einstellungen"
1556
1556
1557 msgid "Advanced"
1557 msgid "Advanced"
1558 msgstr "Erweitert"
1558 msgstr "Erweitert"
1559
1559
1560 msgid "Permissions"
1560 msgid "Permissions"
1561 msgstr "Rechte"
1561 msgstr "Rechte"
1562
1562
1563 msgid "Repository Group: %s"
1563 msgid "Repository Group: %s"
1564 msgstr "Repositorygruppe: %s"
1564 msgstr "Repositorygruppe: %s"
1565
1565
1566 msgid "Top level repositories"
1566 msgid "Top level repositories"
1567 msgstr "Repositories oberster Ebene"
1567 msgstr "Repositories oberster Ebene"
1568
1568
1569 msgid "Total repositories"
1569 msgid "Total repositories"
1570 msgstr "Alle Repositories"
1570 msgstr "Alle Repositories"
1571
1571
1572 msgid "Children groups"
1572 msgid "Children groups"
1573 msgstr "Untergruppen"
1573 msgstr "Untergruppen"
1574
1574
1575 msgid "Created on"
1575 msgid "Created on"
1576 msgstr "Erstellt am"
1576 msgstr "Erstellt am"
1577
1577
1578 msgid "Confirm to delete this group: %s with %s repository"
1578 msgid "Confirm to delete this group: %s with %s repository"
1579 msgid_plural "Confirm to delete this group: %s with %s repositories"
1579 msgid_plural "Confirm to delete this group: %s with %s repositories"
1580 msgstr[0] "Löschen der Gruppe bestätigen: %s mit %s Repository"
1580 msgstr[0] "Löschen der Gruppe bestätigen: %s mit %s Repository"
1581 msgstr[1] "Löschen der Gruppe bestätigen: %s mit %s Repositories"
1581 msgstr[1] "Löschen der Gruppe bestätigen: %s mit %s Repositories"
1582
1582
1583 msgid "Delete this repository group"
1583 msgid "Delete this repository group"
1584 msgstr "Diese Repositorygruppe löschen"
1584 msgstr "Diese Repositorygruppe löschen"
1585
1585
1586 msgid "Not visible"
1586 msgid "Not visible"
1587 msgstr "Nicht sichtbar"
1587 msgstr "Nicht sichtbar"
1588
1588
1589 msgid "Visible"
1589 msgid "Visible"
1590 msgstr "Sichtbar"
1590 msgstr "Sichtbar"
1591
1591
1592 msgid "Add/Edit groups"
1592 msgid "Add/Edit groups"
1593 msgstr "Benutzergruppen hinzufügen oder ändern"
1593 msgstr "Benutzergruppen hinzufügen oder ändern"
1594
1594
1595 msgid "Default"
1595 msgid "Default"
1596 msgstr "Vorgabe"
1596 msgstr "Vorgabe"
1597
1597
1598 msgid "Revoke"
1598 msgid "Revoke"
1599 msgstr "Zurückziehen"
1599 msgstr "Zurückziehen"
1600
1600
1601 msgid "Add new"
1601 msgid "Add new"
1602 msgstr "Neues hinzufügen"
1602 msgstr "Neues hinzufügen"
1603
1603
1604 msgid "Apply to children"
1604 msgid "Apply to children"
1605 msgstr "Auf untergeordnete Elemente anwenden"
1605 msgstr "Auf untergeordnete Elemente anwenden"
1606
1606
1607 msgid "Both"
1607 msgid "Both"
1608 msgstr "Beide"
1608 msgstr "Beide"
1609
1609
1610 msgid ""
1610 msgid ""
1611 "Set or revoke permission to all children of that group, including non-"
1611 "Set or revoke permission to all children of that group, including non-"
1612 "private repositories and other groups if selected."
1612 "private repositories and other groups if selected."
1613 msgstr ""
1613 msgstr ""
1614 "Setzen oder zurückziehen von Berechtigungen bezüglich aller "
1614 "Setzen oder zurückziehen von Berechtigungen bezüglich aller "
1615 "untergeordneten Elemente, einschließlich nicht-privater Repositories und "
1615 "untergeordneten Elemente, einschließlich nicht-privater Repositories und "
1616 "anderer Gruppen, falls ausgewählt."
1616 "anderer Gruppen, falls ausgewählt."
1617
1617
1618 msgid "Type name of user"
1618 msgid "Type name of user"
1619 msgstr "Typname des Benutzers"
1619 msgstr "Typname des Benutzers"
1620
1620
1621 msgid "Remove this group"
1621 msgid "Remove this group"
1622 msgstr "Diese Gruppe löschen"
1622 msgstr "Diese Gruppe löschen"
1623
1623
1624 msgid "Confirm to delete this group"
1624 msgid "Confirm to delete this group"
1625 msgstr "Löschen der Gruppe bestätigen"
1625 msgstr "Löschen der Gruppe bestätigen"
1626
1626
1627 msgid "Repository group %s"
1627 msgid "Repository group %s"
1628 msgstr "Repository-Gruppe %s"
1628 msgstr "Repository-Gruppe %s"
1629
1629
1630 msgid "Repository Groups Administration"
1630 msgid "Repository Groups Administration"
1631 msgstr "Repositorygruppenverwaltung"
1631 msgstr "Repositorygruppenverwaltung"
1632
1632
1633 msgid "Number of Top-level Repositories"
1633 msgid "Number of Top-level Repositories"
1634 msgstr "Anzahl der Repositories oberster Ebene"
1634 msgstr "Anzahl der Repositories oberster Ebene"
1635
1635
1636 msgid "Type of repository to create."
1636 msgid "Type of repository to create."
1637 msgstr "Repository Typ der erstellt werden soll."
1637 msgstr "Repository Typ der erstellt werden soll."
1638
1638
1639 msgid "Clone remote repository"
1639 msgid "Clone remote repository"
1640 msgstr "Entferntes Repository clonen"
1640 msgstr "Entferntes Repository clonen"
1641
1641
1642 msgid "Repository URL"
1642 msgid "Repository URL"
1643 msgstr "Repository URL"
1643 msgstr "Repository URL"
1644
1644
1645 msgid ""
1645 msgid ""
1646 "Optional: URL of a remote repository. If set, the repository will be "
1646 "Optional: URL of a remote repository. If set, the repository will be "
1647 "created as a clone from this URL."
1647 "created as a clone from this URL."
1648 msgstr ""
1648 msgstr ""
1649 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann wird das "
1649 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann wird das "
1650 "Repository als Clon von dieser URL erstellt."
1650 "Repository als Clon von dieser URL erstellt."
1651
1651
1652 msgid ""
1652 msgid ""
1653 "Keep it short and to the point. Use a README file for longer descriptions."
1653 "Keep it short and to the point. Use a README file for longer descriptions."
1654 msgstr ""
1654 msgstr ""
1655 "Halten Sie es kurz und prägnant. Benutzen Sie eine README-Datei für "
1655 "Halten Sie es kurz und prägnant. Benutzen Sie eine README-Datei für "
1656 "längere Beschreibungen."
1656 "längere Beschreibungen."
1657
1657
1658 msgid "Optionally select a group to put this repository into."
1658 msgid "Optionally select a group to put this repository into."
1659 msgstr ""
1659 msgstr ""
1660 "Wähle bei Bedarf eine Gruppe, der dieses Repository zugeordnet werden "
1660 "Wähle bei Bedarf eine Gruppe, der dieses Repository zugeordnet werden "
1661 "soll."
1661 "soll."
1662
1662
1663 msgid "Landing revision"
1663 msgid "Landing revision"
1664 msgstr "Start Revision"
1664 msgstr "Start Revision"
1665
1665
1666 msgid ""
1666 msgid ""
1667 "Default revision for files page, downloads, full text search index and "
1667 "Default revision for files page, downloads, full text search index and "
1668 "readme generation"
1668 "readme generation"
1669 msgstr ""
1669 msgstr ""
1670 "Vorgabe-Revision für Datei-Seiten, Downloads, Volltext-Indizierung und "
1670 "Vorgabe-Revision für Datei-Seiten, Downloads, Volltext-Indizierung und "
1671 "Doku-Erzeugung"
1671 "Doku-Erzeugung"
1672
1672
1673 msgid "%s Creating Repository"
1673 msgid "%s Creating Repository"
1674 msgstr "%s Erstelle Repository"
1674 msgstr "%s Erstelle Repository"
1675
1675
1676 msgid "Creating repository"
1676 msgid "Creating repository"
1677 msgstr "Repository erzeugen"
1677 msgstr "Repository erzeugen"
1678
1678
1679 msgid ""
1679 msgid ""
1680 "Repository \"%(repo_name)s\" is being created, you will be redirected "
1680 "Repository \"%(repo_name)s\" is being created, you will be redirected "
1681 "when this process is finished.repo_name"
1681 "when this process is finished.repo_name"
1682 msgstr ""
1682 msgstr ""
1683 "Repository \"%(repo_name)s\" wird erzeugt. Sie werden dorthin umgeleitet, "
1683 "Repository \"%(repo_name)s\" wird erzeugt. Sie werden dorthin umgeleitet, "
1684 "sobald der Prozess abgeschlossen ist."
1684 "sobald der Prozess abgeschlossen ist."
1685
1685
1686 msgid ""
1686 msgid ""
1687 "We're sorry but error occurred during this operation. Please check your "
1687 "We're sorry but error occurred during this operation. Please check your "
1688 "Kallithea server logs, or contact administrator."
1688 "Kallithea server logs, or contact administrator."
1689 msgstr ""
1689 msgstr ""
1690 "Bedauerlicherweise ist bei dieser Operation ein Fehler aufgetreten. Bitte "
1690 "Bedauerlicherweise ist bei dieser Operation ein Fehler aufgetreten. Bitte "
1691 "prüfen Sie die Kallithea-Server-Logs or kontaktieren Sie die "
1691 "prüfen Sie die Kallithea-Server-Logs or kontaktieren Sie die "
1692 "Administrierenden."
1692 "Administrierenden."
1693
1693
1694 msgid "%s Repository Settings"
1694 msgid "%s Repository Settings"
1695 msgstr "%s Repositoryeinstellungen"
1695 msgstr "%s Repositoryeinstellungen"
1696
1696
1697 msgid "Extra Fields"
1697 msgid "Extra Fields"
1698 msgstr "Extra-Feld"
1698 msgstr "Extra-Feld"
1699
1699
1700 msgid "Remote"
1700 msgid "Remote"
1701 msgstr "Entfernt"
1701 msgstr "Entfernt"
1702
1702
1703 msgid "Statistics"
1703 msgid "Statistics"
1704 msgstr "Statistiken"
1704 msgstr "Statistiken"
1705
1705
1706 msgid "Parent"
1706 msgid "Parent"
1707 msgstr "Übergeordnet"
1707 msgstr "Übergeordnet"
1708
1708
1709 msgid "Set"
1709 msgid "Set"
1710 msgstr "Setzen"
1710 msgstr "Setzen"
1711
1711
1712 msgid "Manually set this repository as a fork of another from the list."
1712 msgid "Manually set this repository as a fork of another from the list."
1713 msgstr ""
1713 msgstr ""
1714 "Manuell dieses Repository als Fork einem anderen aus der List zuordnen."
1714 "Manuell dieses Repository als Fork einem anderen aus der List zuordnen."
1715
1715
1716 msgid "Public Journal Visibility"
1716 msgid "Public Journal Visibility"
1717 msgstr "Sichtbarkeit des öffentlichen Logbuches"
1717 msgstr "Sichtbarkeit des öffentlichen Logbuches"
1718
1718
1719 msgid "Remove from public journal"
1719 msgid "Remove from public journal"
1720 msgstr "Entferne aus dem Öffentlichen Logbuch"
1720 msgstr "Entferne aus dem Öffentlichen Logbuch"
1721
1721
1722 msgid "Add to Public Journal"
1722 msgid "Add to Public Journal"
1723 msgstr "Zum öffentlichen Logbuch hinzufügen"
1723 msgstr "Zum öffentlichen Logbuch hinzufügen"
1724
1724
1725 msgid ""
1725 msgid ""
1726 "All actions done in this repository will be visible to everyone in the "
1726 "All actions done in this repository will be visible to everyone in the "
1727 "public journal."
1727 "public journal."
1728 msgstr ""
1728 msgstr ""
1729 "Alle Aktionen, die in diesem Repository ausgeführt wurden, sind im "
1729 "Alle Aktionen, die in diesem Repository ausgeführt wurden, sind im "
1730 "öffentlichen Logbuch für jeden einsehbar."
1730 "öffentlichen Logbuch für jeden einsehbar."
1731
1731
1732 msgid "Confirm to delete this repository: %s"
1732 msgid "Confirm to delete this repository: %s"
1733 msgstr "Löschen des Repositorys bestätigen: %s"
1733 msgstr "Löschen des Repositorys bestätigen: %s"
1734
1734
1735 msgid "Delete this Repository"
1735 msgid "Delete this Repository"
1736 msgstr "Dieses Repository löschen"
1736 msgstr "Dieses Repository löschen"
1737
1737
1738 msgid "This repository has %s fork"
1738 msgid "This repository has %s fork"
1739 msgid_plural "This repository has %s forks"
1739 msgid_plural "This repository has %s forks"
1740 msgstr[0] "Dieses Repository hat %s Fork"
1740 msgstr[0] "Dieses Repository hat %s Fork"
1741 msgstr[1] "Dieses Repository hat %s Forks"
1741 msgstr[1] "Dieses Repository hat %s Forks"
1742
1742
1743 msgid "Detach forks"
1743 msgid "Detach forks"
1744 msgstr "Fork abtrennen"
1744 msgstr "Fork abtrennen"
1745
1745
1746 msgid "Delete forks"
1746 msgid "Delete forks"
1747 msgstr "Forks löschen"
1747 msgstr "Forks löschen"
1748
1748
1749 msgid ""
1749 msgid ""
1750 "The deleted repository will be moved away and hidden until the "
1750 "The deleted repository will be moved away and hidden until the "
1751 "administrator expires it. The administrator can both permanently delete "
1751 "administrator expires it. The administrator can both permanently delete "
1752 "it or restore it."
1752 "it or restore it."
1753 msgstr ""
1753 msgstr ""
1754 "Das gelöschte Repository wird beiseitegelegt und versteckt, bis ein "
1754 "Das gelöschte Repository wird beiseitegelegt und versteckt, bis ein "
1755 "Administrierender es verfallen lässt. Der Administrierende kann es sowohl "
1755 "Administrierender es verfallen lässt. Der Administrierende kann es sowohl "
1756 "permanent löschen oder wiederherstellen."
1756 "permanent löschen oder wiederherstellen."
1757
1757
1758 msgid "Label"
1758 msgid "Label"
1759 msgstr "Bezeichnung"
1759 msgstr "Bezeichnung"
1760
1760
1761 msgid "Key"
1761 msgid "Key"
1762 msgstr "Schlüssel"
1762 msgstr "Schlüssel"
1763
1763
1764 msgid "Confirm to delete this field: %s"
1764 msgid "Confirm to delete this field: %s"
1765 msgstr "Löschen des Felds bestätigen: %s"
1765 msgstr "Löschen des Felds bestätigen: %s"
1766
1766
1767 msgid "New field key"
1767 msgid "New field key"
1768 msgstr "Eindeutiges Kennzeichen des neuen Felds"
1768 msgstr "Eindeutiges Kennzeichen des neuen Felds"
1769
1769
1770 msgid "New field label"
1770 msgid "New field label"
1771 msgstr "Neue Bezeichnung des Felds"
1771 msgstr "Neue Bezeichnung des Felds"
1772
1772
1773 msgid "Enter short label"
1773 msgid "Enter short label"
1774 msgstr "Eingabe einer kurzen Bezeichnung"
1774 msgstr "Eingabe einer kurzen Bezeichnung"
1775
1775
1776 msgid "New field description"
1776 msgid "New field description"
1777 msgstr "Beschreibung des neuen Felds"
1777 msgstr "Beschreibung des neuen Felds"
1778
1778
1779 msgid "Enter description of a field"
1779 msgid "Enter description of a field"
1780 msgstr "Beschreibung eines Felds eingeben"
1780 msgstr "Beschreibung eines Felds eingeben"
1781
1781
1782 msgid "Extra fields are disabled."
1782 msgid "Extra fields are disabled."
1783 msgstr "Zusatzfelder sind deaktiviert."
1783 msgstr "Zusatzfelder sind deaktiviert."
1784
1784
1785 msgid "Private Repository"
1785 msgid "Private Repository"
1786 msgstr "Privates Repository"
1786 msgstr "Privates Repository"
1787
1787
1788 msgid "Fork of repository"
1788 msgid "Fork of repository"
1789 msgstr "Fork des Repository"
1789 msgstr "Fork des Repository"
1790
1790
1791 msgid "Remote repository URL"
1791 msgid "Remote repository URL"
1792 msgstr "URL des entfernten Repository"
1792 msgstr "URL des entfernten Repository"
1793
1793
1794 msgid "Pull Changes from Remote Repository"
1794 msgid "Pull Changes from Remote Repository"
1795 msgstr "Hole Änderungen vom entfernten Repository"
1795 msgstr "Hole Änderungen vom entfernten Repository"
1796
1796
1797 msgid "Confirm to pull changes from remote repository."
1797 msgid "Confirm to pull changes from remote repository."
1798 msgstr "Bestätige die Abholung von Änderungen vom entfernten Repository."
1798 msgstr "Bestätige die Abholung von Änderungen vom entfernten Repository."
1799
1799
1800 msgid "This repository does not have a remote repository URL."
1800 msgid "This repository does not have a remote repository URL."
1801 msgstr "Für dieses Repository ist keine nicht-lokale URL angegeben."
1801 msgstr "Für dieses Repository ist keine nicht-lokale URL angegeben."
1802
1802
1803 msgid "Remote repository"
1803 msgid "Remote repository"
1804 msgstr "Entferntes Repository"
1804 msgstr "Entferntes Repository"
1805
1805
1806 msgid ""
1806 msgid ""
1807 "Optional: URL of a remote repository. If set, the repository can be "
1807 "Optional: URL of a remote repository. If set, the repository can be "
1808 "pulled from this URL."
1808 "pulled from this URL."
1809 msgstr ""
1809 msgstr ""
1810 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann kann das "
1810 "Optional: URL eines entfernten Repositories. Falls gesetzt, dann kann das "
1811 "Repository von dieser URL bezogen werden."
1811 "Repository von dieser URL bezogen werden."
1812
1812
1813 msgid "Change owner of this repository."
1813 msgid "Change owner of this repository."
1814 msgstr "Besitzer des Repositorys ändern."
1814 msgstr "Besitzer des Repositorys ändern."
1815
1815
1816 msgid "Processed commits"
1816 msgid "Processed commits"
1817 msgstr "Verarbeitete Commits"
1817 msgstr "Verarbeitete Commits"
1818
1818
1819 msgid "Processed progress"
1819 msgid "Processed progress"
1820 msgstr "Verarbeiteter Fortschritt"
1820 msgstr "Verarbeiteter Fortschritt"
1821
1821
1822 msgid "Reset Statistics"
1822 msgid "Reset Statistics"
1823 msgstr "Statistiken zurücksetzen"
1823 msgstr "Statistiken zurücksetzen"
1824
1824
1825 msgid "Confirm to remove current statistics."
1825 msgid "Confirm to remove current statistics."
1826 msgstr "Bestätigen Sie, um die aktuellen Statistiken zu entfernen."
1826 msgstr "Bestätigen Sie, um die aktuellen Statistiken zu entfernen."
1827
1827
1828 msgid "Repositories Administration"
1828 msgid "Repositories Administration"
1829 msgstr "Repositoryverwaltung"
1829 msgstr "Repositoryverwaltung"
1830
1830
1831 msgid "State"
1831 msgid "State"
1832 msgstr "Zustand"
1832 msgstr "Zustand"
1833
1833
1834 msgid "Settings Administration"
1834 msgid "Settings Administration"
1835 msgstr "Einstellungsverwaltung"
1835 msgstr "Einstellungsverwaltung"
1836
1836
1837 msgid "VCS"
1837 msgid "VCS"
1838 msgstr "VCS"
1838 msgstr "VCS"
1839
1839
1840 msgid "Remap and Rescan"
1840 msgid "Remap and Rescan"
1841 msgstr "Neu zuordnen und neu scannen"
1841 msgstr "Neu zuordnen und neu scannen"
1842
1842
1843 msgid "Visual"
1843 msgid "Visual"
1844 msgstr "Visuell"
1844 msgstr "Visuell"
1845
1845
1846 msgid "Hooks"
1846 msgid "Hooks"
1847 msgstr "Hooks"
1847 msgstr "Hooks"
1848
1848
1849 msgid "Full Text Search"
1849 msgid "Full Text Search"
1850 msgstr "Volltextsuche"
1850 msgstr "Volltextsuche"
1851
1851
1852 msgid "System Info"
1852 msgid "System Info"
1853 msgstr "Systeminfo"
1853 msgstr "Systeminfo"
1854
1854
1855 msgid "Send test email to"
1855 msgid "Send test email to"
1856 msgstr "Test-E-Mail senden an"
1856 msgstr "Test-E-Mail senden an"
1857
1857
1858 msgid "Send"
1858 msgid "Send"
1859 msgstr "Senden"
1859 msgstr "Senden"
1860
1860
1861 msgid "Site branding"
1861 msgid "Site branding"
1862 msgstr "Website-Branding"
1862 msgstr "Website-Branding"
1863
1863
1864 msgid "Set a custom title for your Kallithea Service."
1864 msgid "Set a custom title for your Kallithea Service."
1865 msgstr ""
1865 msgstr ""
1866 "Legen Sie einen benutzerdefinierten Titel für Ihren Kallithea-Dienst fest."
1866 "Legen Sie einen benutzerdefinierten Titel für Ihren Kallithea-Dienst fest."
1867
1867
1868 msgid "HTTP authentication realm"
1868 msgid "HTTP authentication realm"
1869 msgstr "HTTP-Authentifizierungsrealm"
1869 msgstr "HTTP-Authentifizierungsrealm"
1870
1870
1871 msgid "HTML/JavaScript/CSS customization block"
1871 msgid "HTML/JavaScript/CSS customization block"
1872 msgstr "HTML/JavaScript/CSS Anpassungsblock"
1872 msgstr "HTML/JavaScript/CSS Anpassungsblock"
1873
1873
1874 msgid "ReCaptcha public key"
1874 msgid "ReCaptcha public key"
1875 msgstr "ReCaptcha öffentlicher Schlüssel"
1875 msgstr "ReCaptcha öffentlicher Schlüssel"
1876
1876
1877 msgid "Public key for reCaptcha system."
1877 msgid "Public key for reCaptcha system."
1878 msgstr "Öffentlicher Schlüssel für das reCaptcha-System."
1878 msgstr "Öffentlicher Schlüssel für das reCaptcha-System."
1879
1879
1880 msgid "ReCaptcha private key"
1880 msgid "ReCaptcha private key"
1881 msgstr "ReCaptcha privater Schlüssel"
1881 msgstr "ReCaptcha privater Schlüssel"
1882
1882
1883 msgid ""
1883 msgid ""
1884 "Private key for reCaptcha system. Setting this value will enable captcha "
1884 "Private key for reCaptcha system. Setting this value will enable captcha "
1885 "on registration."
1885 "on registration."
1886 msgstr ""
1886 msgstr ""
1887 "Privater Schlüssel für das reCaptcha-System. Wenn Sie diesen Wert "
1887 "Privater Schlüssel für das reCaptcha-System. Wenn Sie diesen Wert "
1888 "einstellen, wird das Captcha bei der Registrierung aktiviert."
1888 "einstellen, wird das Captcha bei der Registrierung aktiviert."
1889
1889
1890 msgid "Save Settings"
1890 msgid "Save Settings"
1891 msgstr "Einstellungen speichern"
1891 msgstr "Einstellungen speichern"
1892
1892
1893 msgid ""
1893 msgid ""
1894 "Hooks can be used to trigger actions on certain events such as push / "
1894 "Hooks can be used to trigger actions on certain events such as push / "
1895 "pull. They can trigger Python functions or external applications."
1895 "pull. They can trigger Python functions or external applications."
1896 msgstr ""
1896 msgstr ""
1897 "Mit Hilfe von Hooks können bei bestimmten Ereignissen, wie z.B. Push / "
1897 "Mit Hilfe von Hooks können bei bestimmten Ereignissen, wie z.B. Push / "
1898 "Pull, Aktionen ausgelöst werden. Sie können Python-Funktionen oder "
1898 "Pull, Aktionen ausgelöst werden. Sie können Python-Funktionen oder "
1899 "externe Anwendungen auslösen."
1899 "externe Anwendungen auslösen."
1900
1900
1901 msgid "Failed to remove hook"
1901 msgid "Failed to remove hook"
1902 msgstr "Hook konnte nicht entfernt werden"
1902 msgstr "Hook konnte nicht entfernt werden"
1903
1903
1904 msgid "Delete records of missing repositories"
1904 msgid "Delete records of missing repositories"
1905 msgstr "Datensätze fehlender Repositories löschen"
1905 msgstr "Datensätze fehlender Repositories löschen"
1906
1906
1907 msgid ""
1907 msgid ""
1908 "Check this option to remove all comments, pull requests and other records "
1908 "Check this option to remove all comments, pull requests and other records "
1909 "related to repositories that no longer exist in the filesystem."
1909 "related to repositories that no longer exist in the filesystem."
1910 msgstr ""
1910 msgstr ""
1911 "Aktivieren Sie diese Option, um alle Kommentare, Pull-Requests und andere "
1911 "Aktivieren Sie diese Option, um alle Kommentare, Pull-Requests und andere "
1912 "Datensätze zu entfernen, die sich auf Repositories beziehen, die nicht "
1912 "Datensätze zu entfernen, die sich auf Repositories beziehen, die nicht "
1913 "mehr im Dateisystem vorhanden sind."
1913 "mehr im Dateisystem vorhanden sind."
1914
1914
1915 msgid "Invalidate cache for all repositories"
1915 msgid "Invalidate cache for all repositories"
1916 msgstr "Cache für alle Repositories entwerten"
1916 msgstr "Cache für alle Repositories entwerten"
1917
1917
1918 msgid "Check this to reload data and clear cache keys for all repositories."
1918 msgid "Check this to reload data and clear cache keys for all repositories."
1919 msgstr ""
1919 msgstr ""
1920 "Aktivieren Sie dies, um Daten neu zu laden und Cache-Schlüssel für alle "
1920 "Aktivieren Sie dies, um Daten neu zu laden und Cache-Schlüssel für alle "
1921 "Repositories zu löschen."
1921 "Repositories zu löschen."
1922
1922
1923 msgid "Install Git hooks"
1923 msgid "Install Git hooks"
1924 msgstr "Git-Hooks installieren"
1924 msgstr "Git-Hooks installieren"
1925
1925
1926 msgid "Rescan Repositories"
1926 msgid "Rescan Repositories"
1927 msgstr "Repositories erneut scannen"
1927 msgstr "Repositories erneut scannen"
1928
1928
1929 msgid "Index build option"
1929 msgid "Index build option"
1930 msgstr "Option zum Aufbau eines Index"
1930 msgstr "Option zum Aufbau eines Index"
1931
1931
1932 msgid "Build from scratch"
1932 msgid "Build from scratch"
1933 msgstr "Von Grund auf neu bauen"
1933 msgstr "Von Grund auf neu bauen"
1934
1934
1935 msgid ""
1935 msgid ""
1936 "This option completely reindexes all of the repositories for proper "
1936 "This option completely reindexes all of the repositories for proper "
1937 "fulltext search capabilities."
1937 "fulltext search capabilities."
1938 msgstr ""
1938 msgstr ""
1939 "Diese Option führt zu einer vollständigen Neuindizierung aller "
1939 "Diese Option führt zu einer vollständigen Neuindizierung aller "
1940 "Repositories für eine korrekte Volltextsuche."
1940 "Repositories für eine korrekte Volltextsuche."
1941
1941
1942 msgid "Reindex"
1942 msgid "Reindex"
1943 msgstr "Erneut Indizieren"
1943 msgstr "Erneut Indizieren"
1944
1944
1945 msgid "Checking for updates..."
1945 msgid "Checking for updates..."
1946 msgstr "Prüfe auf Updates..."
1946 msgstr "Prüfe auf Updates..."
1947
1947
1948 msgid "Kallithea version"
1948 msgid "Kallithea version"
1949 msgstr "Kallithea-Version"
1949 msgstr "Kallithea-Version"
1950
1950
1951 msgid "Kallithea configuration file"
1951 msgid "Kallithea configuration file"
1952 msgstr "Kallithea Konfigurationsdatei"
1952 msgstr "Kallithea Konfigurationsdatei"
1953
1953
1954 msgid "Python version"
1954 msgid "Python version"
1955 msgstr "Python-Version"
1955 msgstr "Python-Version"
1956
1956
1957 msgid "Platform"
1957 msgid "Platform"
1958 msgstr "Plattform"
1958 msgstr "Plattform"
1959
1959
1960 msgid "Git version"
1960 msgid "Git version"
1961 msgstr "Git-Version"
1961 msgstr "Git-Version"
1962
1962
1963 msgid "Git path"
1963 msgid "Git path"
1964 msgstr "Git-Pfad"
1964 msgstr "Git-Pfad"
1965
1965
1966 msgid "Python Packages"
1966 msgid "Python Packages"
1967 msgstr "Python-Pakete"
1967 msgstr "Python-Pakete"
1968
1968
1969 msgid "Show repository size after push"
1969 msgid "Show repository size after push"
1970 msgstr "Zeigt die Größe des Repositories nach dem Push an"
1970 msgstr "Zeigt die Größe des Repositories nach dem Push an"
1971
1971
1972 msgid "Update repository after push (hg update)"
1972 msgid "Update repository after push (hg update)"
1973 msgstr "Repository nach dem Push aktualisieren (hg update)"
1973 msgstr "Repository nach dem Push aktualisieren (hg update)"
1974
1974
1975 msgid "Mercurial extensions"
1975 msgid "Mercurial extensions"
1976 msgstr "Mercurial-Erweiterungen"
1976 msgstr "Mercurial-Erweiterungen"
1977
1977
1978 msgid "Enable largefiles extension"
1978 msgid "Enable largefiles extension"
1979 msgstr "Erweiterung largefiles aktivieren"
1979 msgstr "Erweiterung largefiles aktivieren"
1980
1980
1981 msgid "Location of repositories"
1981 msgid "Location of repositories"
1982 msgstr "Ort der Repositories"
1982 msgstr "Ort der Repositories"
1983
1983
1984 msgid ""
1984 msgid ""
1985 "Click to unlock. You must restart Kallithea in order to make this setting "
1985 "Click to unlock. You must restart Kallithea in order to make this setting "
1986 "take effect."
1986 "take effect."
1987 msgstr ""
1987 msgstr ""
1988 "Zum Entsperren klicken. Sie müssen Kallithea neu starten, damit diese "
1988 "Zum Entsperren klicken. Sie müssen Kallithea neu starten, damit diese "
1989 "Einstellung wirksam wird."
1989 "Einstellung wirksam wird."
1990
1990
1991 msgid ""
1991 msgid ""
1992 "Filesystem location where repositories are stored. After changing this "
1992 "Filesystem location where repositories are stored. After changing this "
1993 "value, a restart and rescan of the repository folder are both required."
1993 "value, a restart and rescan of the repository folder are both required."
1994 msgstr ""
1994 msgstr ""
1995 "Dateisystem-Speicherort, an dem die Repositories gespeichert sind. Nach "
1995 "Dateisystem-Speicherort, an dem die Repositories gespeichert sind. Nach "
1996 "dem Ändern dieses Wertes sind sowohl ein Neustart als auch ein erneuter "
1996 "dem Ändern dieses Wertes sind sowohl ein Neustart als auch ein erneuter "
1997 "Scan des Repository-Ordners erforderlich."
1997 "Scan des Repository-Ordners erforderlich."
1998
1998
1999 msgid "General"
1999 msgid "General"
2000 msgstr "Allgemein"
2000 msgstr "Allgemein"
2001
2001
2002 msgid "Use repository extra fields"
2002 msgid "Use repository extra fields"
2003 msgstr "Zusätzliche Repository-Felder verwenden"
2003 msgstr "Zusätzliche Repository-Felder verwenden"
2004
2004
2005 msgid "Allows storing additional customized fields per repository."
2005 msgid "Allows storing additional customized fields per repository."
2006 msgstr ""
2006 msgstr ""
2007 "Ermöglicht die Speicherung zusätzlicher benutzerdefinierter Felder pro "
2007 "Ermöglicht die Speicherung zusätzlicher benutzerdefinierter Felder pro "
2008 "Repository."
2008 "Repository."
2009
2009
2010 msgid "Show Kallithea version"
2010 msgid "Show Kallithea version"
2011 msgstr "Zeige Kallithea-Version"
2011 msgstr "Zeige Kallithea-Version"
2012
2012
2013 msgid ""
2013 msgid ""
2014 "Shows or hides a version number of Kallithea displayed in the footer."
2014 "Shows or hides a version number of Kallithea displayed in the footer."
2015 msgstr ""
2015 msgstr ""
2016 "Zeigt oder verbirgt eine Versionsnummer von Kallithea, die in der "
2016 "Zeigt oder verbirgt eine Versionsnummer von Kallithea, die in der "
2017 "Fußzeile angezeigt wird."
2017 "Fußzeile angezeigt wird."
2018
2018
2019 msgid "Show user Gravatars"
2019 msgid "Show user Gravatars"
2020 msgstr "Benutzer Gravatare anzeigen"
2020 msgstr "Benutzer Gravatare anzeigen"
2021
2021
2022 msgid ""
2022 msgid ""
2023 "Gravatar URL allows you to use another avatar server application.\n"
2023 "Gravatar URL allows you to use another avatar server application.\n"
2024 " The following "
2024 " The following "
2025 "variables of the URL will be replaced accordingly.\n"
2025 "variables of the URL will be replaced accordingly.\n"
2026 " {scheme} "
2026 " {scheme} "
2027 "'http' or 'https' sent from running Kallithea server,\n"
2027 "'http' or 'https' sent from running Kallithea server,\n"
2028 " {email} user "
2028 " {email} user "
2029 "email,\n"
2029 "email,\n"
2030 " {md5email} md5 "
2030 " {md5email} md5 "
2031 "hash of the user email (like at gravatar.com),\n"
2031 "hash of the user email (like at gravatar.com),\n"
2032 " {size} size "
2032 " {size} size "
2033 "of the image that is expected from the server application,\n"
2033 "of the image that is expected from the server application,\n"
2034 " {netloc} "
2034 " {netloc} "
2035 "network location/server host of running Kallithea server"
2035 "network location/server host of running Kallithea server"
2036 msgstr ""
2036 msgstr ""
2037 "Gravatar URL ermöglicht es Ihnen, eine andere Avatar-Serveranwendung zu "
2037 "Gravatar URL ermöglicht es Ihnen, eine andere Avatar-Serveranwendung zu "
2038 "verwenden.\n"
2038 "verwenden.\n"
2039 " Die folgenden "
2039 " Die folgenden "
2040 "Variablen der URL werden entsprechend ersetzt.\n"
2040 "Variablen der URL werden entsprechend ersetzt.\n"
2041 " {scheme} "
2041 " {scheme} "
2042 "'http' oder'https', die vom laufenden Kallithea-Server gesendet werden,\n"
2042 "'http' oder'https', die vom laufenden Kallithea-Server gesendet werden,\n"
2043 " {email} "
2043 " {email} "
2044 "Benutzer-E-Mail,\n"
2044 "Benutzer-E-Mail,\n"
2045 " {md5email} md5 "
2045 " {md5email} md5 "
2046 "Hash der Benutzer-E-Mail (wie bei gravatar.com),\n"
2046 "Hash der Benutzer-E-Mail (wie bei gravatar.com),\n"
2047 " {size} "
2047 " {size} "
2048 "Größe des Bildes, das von der Serveranwendung erwartet wird,\n"
2048 "Größe des Bildes, das von der Serveranwendung erwartet wird,\n"
2049 " {netloc} "
2049 " {netloc} "
2050 "Netzwerkstandort/Server-Host des laufenden Kallithea-Servers"
2050 "Netzwerkstandort/Server-Host des laufenden Kallithea-Servers"
2051
2051
2052 msgid ""
2052 msgid ""
2053 "Number of items displayed in the repository pages before pagination is "
2053 "Number of items displayed in the repository pages before pagination is "
2054 "shown."
2054 "shown."
2055 msgstr ""
2055 msgstr ""
2056 "Anzahl der Elemente, die auf den Repository-Seiten angezeigt werden, "
2056 "Anzahl der Elemente, die auf den Repository-Seiten angezeigt werden, "
2057 "bevor der Seitenumbruch angezeigt wird."
2057 "bevor der Seitenumbruch angezeigt wird."
2058
2058
2059 msgid "Admin page size"
2059 msgid "Admin page size"
2060 msgstr "Größe der Admin-Seite"
2060 msgstr "Größe der Admin-Seite"
2061
2061
2062 msgid ""
2062 msgid ""
2063 "Number of items displayed in the admin pages grids before pagination is "
2063 "Number of items displayed in the admin pages grids before pagination is "
2064 "shown."
2064 "shown."
2065 msgstr ""
2065 msgstr ""
2066 "Anzahl der Elemente, die in den Gittern der Admin-Seiten angezeigt "
2066 "Anzahl der Elemente, die in den Gittern der Admin-Seiten angezeigt "
2067 "werden, bevor der Seitenumbruch angezeigt wird."
2067 "werden, bevor der Seitenumbruch angezeigt wird."
2068
2068
2069 msgid "Icons"
2069 msgid "Icons"
2070 msgstr "Icons"
2070 msgstr "Icons"
2071
2071
2072 msgid "Show public repository icon on repositories"
2072 msgid "Show public repository icon on repositories"
2073 msgstr "Öffentliches Repository-Symbol in Repositories anzeigen"
2073 msgstr "Öffentliches Repository-Symbol in Repositories anzeigen"
2074
2074
2075 msgid "Show private repository icon on repositories"
2075 msgid "Show private repository icon on repositories"
2076 msgstr "Privates Repository-Symbol in Repositories anzeigen"
2076 msgstr "Privates Repository-Symbol in Repositories anzeigen"
2077
2077
2078 msgid "Show public/private icons next to repository names."
2078 msgid "Show public/private icons next to repository names."
2079 msgstr ""
2079 msgstr ""
2080 "Zeigt öffentliche/private Symbole neben den Namen der Repositories an."
2080 "Zeigt öffentliche/private Symbole neben den Namen der Repositories an."
2081
2081
2082 msgid ""
2082 msgid ""
2083 "Parses meta tags from the repository description field and turns them "
2083 "Parses meta tags from the repository description field and turns them "
2084 "into colored tags."
2084 "into colored tags."
2085 msgstr ""
2085 msgstr ""
2086 "Analysiert Meta-Tags aus dem Beschreibungsfeld des Repositorys und "
2086 "Analysiert Meta-Tags aus dem Beschreibungsfeld des Repositorys und "
2087 "verwandelt sie in farbige Tags."
2087 "verwandelt sie in farbige Tags."
2088
2088
2089 msgid "Stylify recognised meta tags:"
2089 msgid "Stylify recognised meta tags:"
2090 msgstr "Erkannte Meta-Tags stilisieren:"
2090 msgstr "Erkannte Meta-Tags stilisieren:"
2091
2091
2092 msgid "Add user group"
2092 msgid "Add user group"
2093 msgstr "Benutzergruppe hinzufügen"
2093 msgstr "Benutzergruppe hinzufügen"
2094
2094
2095 msgid "User Groups"
2095 msgid "User Groups"
2096 msgstr "Benutzergruppen"
2096 msgstr "Benutzergruppen"
2097
2097
2098 msgid "Add User Group"
2098 msgid "Add User Group"
2099 msgstr "Benutzergruppe hinzufügen"
2099 msgstr "Benutzergruppe hinzufügen"
2100
2100
2101 msgid "Short, optional description for this user group."
2101 msgid "Short, optional description for this user group."
2102 msgstr "Kurze, optionale Beschreibung für diese Benutzergruppe."
2102 msgstr "Kurze, optionale Beschreibung für diese Benutzergruppe."
2103
2103
2104 msgid "Active"
2104 msgid "Active"
2105 msgstr "Aktiv"
2105 msgstr "Aktiv"
2106
2106
2107 msgid "User Group: %s"
2107 msgid "User Group: %s"
2108 msgstr "Benutzergruppe: %s"
2108 msgstr "Benutzergruppe: %s"
2109
2109
2110 msgid "Members"
2110 msgid "Members"
2111 msgstr "Mitglieder"
2111 msgstr "Mitglieder"
2112
2112
2113 msgid "Confirm to delete this user group: %s"
2113 msgid "Confirm to delete this user group: %s"
2114 msgstr "Bestätigen, um diese Benutzergruppe zu löschen: %s"
2114 msgstr "Bestätigen, um diese Benutzergruppe zu löschen: %s"
2115
2115
2116 msgid "Delete this user group"
2116 msgid "Delete this user group"
2117 msgstr "Diese Benutzergruppe löschen"
2117 msgstr "Diese Benutzergruppe löschen"
2118
2118
2119 msgid "No members yet"
2119 msgid "No members yet"
2120 msgstr "Noch keine Mitglieder"
2120 msgstr "Noch keine Mitglieder"
2121
2121
2122 msgid "Chosen group members"
2122 msgid "Chosen group members"
2123 msgstr "Ausgewählte Grppenmitglieder"
2123 msgstr "Ausgewählte Grppenmitglieder"
2124
2124
2125 msgid "Available members"
2125 msgid "Available members"
2126 msgstr "Verfügbare Mitglieder"
2126 msgstr "Verfügbare Mitglieder"
2127
2127
2128 msgid "User Groups Administration"
2128 msgid "User Groups Administration"
2129 msgstr "Benutzergruppenverwaltung"
2129 msgstr "Benutzergruppenverwaltung"
2130
2130
2131 msgid "Add user"
2131 msgid "Add user"
2132 msgstr "Benutzer hinzufügen"
2132 msgstr "Benutzer hinzufügen"
2133
2133
2134 msgid "Users"
2134 msgid "Users"
2135 msgstr "Benutzer"
2135 msgstr "Benutzer"
2136
2136
2137 msgid "Add User"
2137 msgid "Add User"
2138 msgstr "Benutzer hinzufügen"
2138 msgstr "Benutzer hinzufügen"
2139
2139
2140 msgid "Password confirmation"
2140 msgid "Password confirmation"
2141 msgstr "Passwortbestätigung"
2141 msgstr "Passwortbestätigung"
2142
2142
2143 msgid "Emails"
2143 msgid "Emails"
2144 msgstr "E-Mails"
2144 msgstr "E-Mails"
2145
2145
2146 msgid "User: %s"
2146 msgid "User: %s"
2147 msgstr "Benutzer: %s"
2147 msgstr "Benutzer: %s"
2148
2148
2149 msgid "Last Login"
2149 msgid "Last Login"
2150 msgstr "Letzter Login"
2150 msgstr "Letzter Login"
2151
2151
2152 msgid "Member of User Groups"
2152 msgid "Member of User Groups"
2153 msgstr "Mitglieder der Benutzergruppe"
2153 msgstr "Mitglieder der Benutzergruppe"
2154
2154
2155 msgid "Delete this user"
2155 msgid "Delete this user"
2156 msgstr "Diesen Benutzer löschen"
2156 msgstr "Diesen Benutzer löschen"
2157
2157
2158 msgid "Users Administration"
2158 msgid "Users Administration"
2159 msgstr "Benutzerverwaltung"
2159 msgstr "Benutzerverwaltung"
2160
2160
2161 msgid "Auth Type"
2161 msgid "Auth Type"
2162 msgstr "Authentifizierungsart"
2162 msgstr "Authentifizierungsart"
2163
2163
2164 msgid "Support"
2164 msgid "Support"
2165 msgstr "Support"
2165 msgstr "Support"
2166
2166
2167 msgid "Mercurial repository"
2167 msgid "Mercurial repository"
2168 msgstr "Mercurial Repository"
2168 msgstr "Mercurial Repository"
2169
2169
2170 msgid "Git repository"
2170 msgid "Git repository"
2171 msgstr "Git Repository"
2171 msgstr "Git Repository"
2172
2172
2173 msgid "Create Fork"
2173 msgid "Create Fork"
2174 msgstr "Fork erstellen"
2174 msgstr "Fork erstellen"
2175
2175
2176 msgid "Summary"
2176 msgid "Summary"
2177 msgstr "Zusammenfassung"
2177 msgstr "Zusammenfassung"
2178
2178
2179 msgid "Files"
2179 msgid "Files"
2180 msgstr "Dateien"
2180 msgstr "Dateien"
2181
2181
2182 msgid "Pull Requests"
2182 msgid "Pull Requests"
2183 msgstr "Pull Requests"
2183 msgstr "Pull Requests"
2184
2184
2185 msgid "Options"
2185 msgid "Options"
2186 msgstr "Optionen"
2186 msgstr "Optionen"
2187
2187
2188 msgid "Compare Fork"
2188 msgid "Compare Fork"
2189 msgstr "Fork vergleichen"
2189 msgstr "Fork vergleichen"
2190
2190
2191 msgid "No matches found"
2191 msgid "No matches found"
2192 msgstr "Keine Übereinstimmungen gefunden"
2192 msgstr "Keine Übereinstimmungen gefunden"
2193
2193
2194 msgid "Public journal"
2194 msgid "Public journal"
2195 msgstr "Öffentliches Logbuch"
2195 msgstr "Öffentliches Logbuch"
2196
2196
2197 msgid "My Pull Requests"
2197 msgid "My Pull Requests"
2198 msgstr "Meine Pull Requests"
2198 msgstr "Meine Pull Requests"
2199
2199
2200 msgid "Not Logged In"
2200 msgid "Not Logged In"
2201 msgstr "Nicht eingeloggt"
2201 msgstr "Nicht eingeloggt"
2202
2202
2203 msgid "Forgot password?"
2203 msgid "Forgot password?"
2204 msgstr "Passwort vergessen?"
2204 msgstr "Passwort vergessen?"
2205
2205
2206 msgid "Permission"
2206 msgid "Permission"
2207 msgstr "Rechte"
2207 msgstr "Rechte"
2208
2208
2209 msgid "Edit Permission"
2209 msgid "Edit Permission"
2210 msgstr "Berechtigungen editieren"
2210 msgstr "Berechtigungen editieren"
2211
2211
2212 msgid "Add Another Comment"
2212 msgid "Add Another Comment"
2213 msgstr "Einen weiteren Kommentar hinzufügen"
2213 msgstr "Einen weiteren Kommentar hinzufügen"
2214
2214
2215 msgid "Group"
2215 msgid "Group"
2216 msgstr "Gruppe"
2216 msgstr "Gruppe"
2217
2217
2218 msgid "Confirm to revoke permission for {0}: {1}?"
2218 msgid "Confirm to revoke permission for {0}: {1}?"
2219 msgstr "Widerruf der Rechte für {0}: {1} bestätigen?"
2219 msgstr "Widerruf der Rechte für {0}: {1} bestätigen?"
2220
2220
2221 msgid "Select changeset"
2221 msgid "Select changeset"
2222 msgstr "Änderungssätze auswählen"
2222 msgstr "Änderungssätze auswählen"
2223
2223
2224 msgid "Specify changeset"
2224 msgid "Specify changeset"
2225 msgstr "Changeset angeben"
2225 msgstr "Changeset angeben"
2226
2226
2227 msgid "Click to sort ascending"
2227 msgid "Click to sort ascending"
2228 msgstr "Klicken um Aufsteigend zu Sortieren"
2228 msgstr "Klicken um Aufsteigend zu Sortieren"
2229
2229
2230 msgid "Click to sort descending"
2230 msgid "Click to sort descending"
2231 msgstr "Klicken um Absteigend zu Sortieren"
2231 msgstr "Klicken um Absteigend zu Sortieren"
2232
2232
2233 msgid "No records found."
2233 msgid "No records found."
2234 msgstr "Keine Datensätze gefunden."
2234 msgstr "Keine Datensätze gefunden."
2235
2235
2236 msgid "Data error."
2236 msgid "Data error."
2237 msgstr "Datenfehler."
2237 msgstr "Datenfehler."
2238
2238
2239 msgid "Loading..."
2239 msgid "Loading..."
2240 msgstr "Lade..."
2240 msgstr "Lade..."
2241
2241
2242 msgid "Go to tip of repository"
2242 msgid "Go to tip of repository"
2243 msgstr "Gehe zum Tip des Repositorys"
2243 msgstr "Gehe zum Tip des Repositorys"
2244
2244
2245 msgid "There are no changes yet"
2245 msgid "There are no changes yet"
2246 msgstr "Bisher gibt es keine Änderungen"
2246 msgstr "Bisher gibt es keine Änderungen"
2247
2247
2248 msgid "Branch %s"
2248 msgid "Branch %s"
2249 msgstr "Branch %s"
2249 msgstr "Branch %s"
2250
2250
2251 msgid "No title"
2251 msgid "No title"
2252 msgstr "Kein Titel"
2252 msgstr "Kein Titel"
2253
2253
2254 msgid "Delete comment?"
2254 msgid "Delete comment?"
2255 msgstr "Kommentar löschen?"
2255 msgstr "Kommentar löschen?"
2256
2256
2257 msgid "Set changeset status"
2257 msgid "Set changeset status"
2258 msgstr "Setze Changesetstatus"
2258 msgstr "Setze Changesetstatus"
2259
2259
2260 msgid "No change"
2260 msgid "No change"
2261 msgstr "Keine Änderungen"
2261 msgstr "Keine Änderungen"
2262
2262
2263 msgid "Close"
2263 msgid "Close"
2264 msgstr "Schließen"
2264 msgstr "Schließen"
2265
2265
2266 msgid "Comment"
2266 msgid "Comment"
2267 msgstr "Kommentar"
2267 msgstr "Kommentar"
2268
2268
2269 msgid "%d comment"
2269 msgid "%d comment"
2270 msgid_plural "%d comments"
2270 msgid_plural "%d comments"
2271 msgstr[0] "%d Kommentar"
2271 msgstr[0] "%d Kommentar"
2272 msgstr[1] "%d Kommentare"
2272 msgstr[1] "%d Kommentare"
2273
2273
2274 msgid "%d inline"
2274 msgid "%d inline"
2275 msgid_plural "%d inline"
2275 msgid_plural "%d inline"
2276 msgstr[0] "%d inline"
2276 msgstr[0] "%d inline"
2277 msgstr[1] "%d inline"
2277 msgstr[1] "%d inline"
2278
2278
2279 msgid "%d general"
2279 msgid "%d general"
2280 msgid_plural "%d general"
2280 msgid_plural "%d general"
2281 msgstr[0] "%d generell"
2281 msgstr[0] "%d generell"
2282 msgstr[1] "%d generell"
2282 msgstr[1] "%d generell"
2283
2283
2284 msgid "Deleted"
2284 msgid "Deleted"
2285 msgstr "Gelöscht"
2285 msgstr "Gelöscht"
2286
2286
2287 msgid "Renamed"
2287 msgid "Renamed"
2288 msgstr "Umbenannt"
2288 msgstr "Umbenannt"
2289
2289
2290 msgid "%s changesets"
2290 msgid "%s changesets"
2291 msgstr "%s Changesets"
2291 msgstr "%s Changesets"
2292
2292
2293 msgid "behind"
2293 msgid "behind"
2294 msgstr "zurück"
2294 msgstr "zurück"
2295
2295
2296 msgid "Public repository"
2296 msgid "Public repository"
2297 msgstr "Öffenentliches Repository"
2297 msgstr "Öffenentliches Repository"
2298
2298
2299 msgid "Subscribe to %s rss feed"
2299 msgid "Subscribe to %s rss feed"
2300 msgstr "Abonniere den %s RSS Feed"
2300 msgstr "Abonniere den %s RSS Feed"
2301
2301
2302 msgid "Subscribe to %s atom feed"
2302 msgid "Subscribe to %s atom feed"
2303 msgstr "Abonniere den %s ATOM Feed"
2303 msgstr "Abonniere den %s ATOM Feed"
2304
2304
2305 msgid "Hello %s"
2305 msgid "Hello %s"
2306 msgstr "Hallo %s"
2306 msgstr "Hallo %s"
2307
2307
2308 msgid "Ignore whitespace"
2308 msgid "Ignore whitespace"
2309 msgstr "Ignoriere unsichtbare Zeichen"
2309 msgstr "Ignoriere unsichtbare Zeichen"
2310
2310
2311 msgid "or"
2311 msgid "or"
2312 msgstr "oder"
2312 msgstr "oder"
2313
2313
2314 msgid "Upload File"
2314 msgid "Upload File"
2315 msgstr "Datei hochladen"
2315 msgstr "Datei hochladen"
2316
2316
2317 msgid "Commit Changes"
2317 msgid "Commit Changes"
2318 msgstr "Änderungen einchecken"
2318 msgstr "Änderungen einchecken"
2319
2319
2320 msgid "Size"
2320 msgid "Size"
2321 msgstr "Größe"
2321 msgstr "Größe"
2322
2322
2323 msgid "Last Modified"
2323 msgid "Last Modified"
2324 msgstr "Zuletzt geändert"
2324 msgstr "Zuletzt geändert"
2325
2325
2326 msgid "Delete file"
2326 msgid "Delete file"
2327 msgstr "Datei löschen"
2327 msgstr "Datei löschen"
2328
2328
2329 msgid "%s author"
2329 msgid "%s author"
2330 msgid_plural "%s authors"
2330 msgid_plural "%s authors"
2331 msgstr[0] "%s Autor"
2331 msgstr[0] "%s Autor"
2332 msgstr[1] "%s Autoren"
2332 msgstr[1] "%s Autoren"
2333
2333
2334 msgid "Go Back"
2334 msgid "Go Back"
2335 msgstr "Zurück"
2335 msgstr "Zurück"
2336
2336
2337 msgid "Private"
2337 msgid "Private"
2338 msgstr "Privat"
2338 msgstr "Privat"
2339
2339
2340 msgid "Copy permissions"
2340 msgid "Copy permissions"
2341 msgstr "Berechtigungen kopieren"
2341 msgstr "Berechtigungen kopieren"
2342
2342
2343 msgid "ATOM journal feed"
2343 msgid "ATOM journal feed"
2344 msgstr "ATOM Logbuch Feed"
2344 msgstr "ATOM Logbuch Feed"
2345
2345
2346 msgid "RSS journal feed"
2346 msgid "RSS journal feed"
2347 msgstr "RSS Logbuch Feed"
2347 msgstr "RSS Logbuch Feed"
2348
2348
2349 msgid "My Repositories"
2349 msgid "My Repositories"
2350 msgstr "Meine Repositories"
2350 msgstr "Meine Repositories"
2351
2351
2352 msgid "ATOM public journal feed"
2352 msgid "ATOM public journal feed"
2353 msgstr "ATOM Feed für das Öffentliche Logbuch"
2353 msgstr "ATOM Feed für das Öffentliche Logbuch"
2354
2354
2355 msgid "RSS public journal feed"
2355 msgid "RSS public journal feed"
2356 msgstr "RSS Feed für das Öffentliche Logbuch"
2356 msgstr "RSS Feed für das Öffentliche Logbuch"
2357
2357
2358 msgid "New Pull Request"
2358 msgid "New Pull Request"
2359 msgstr "Neuer Pull Request"
2359 msgstr "Neuer Pull Request"
2360
2360
2361 msgid "Title"
2361 msgid "Title"
2362 msgstr "Titel"
2362 msgstr "Titel"
2363
2363
2364 msgid "Revision"
2364 msgid "Revision"
2365 msgstr "Revision"
2365 msgstr "Revision"
2366
2366
2367 msgid "Age"
2367 msgid "Age"
2368 msgstr "Alter"
2368 msgstr "Alter"
2369
2369
2370 msgid "Delete Pull Request"
2370 msgid "Delete Pull Request"
2371 msgstr "Pull Request löschen"
2371 msgstr "Pull Request löschen"
2372
2372
2373 msgid "Summarize the changes"
2373 msgid "Summarize the changes"
2374 msgstr "Zusammenfassung der Änderungen"
2374 msgstr "Zusammenfassung der Änderungen"
2375
2375
2376 msgid "on"
2376 msgid "on"
2377 msgstr "in"
2377 msgstr "in"
2378
2378
2379 msgid "Cancel Changes"
2379 msgid "Cancel Changes"
2380 msgstr "Änderungen verwerfen"
2380 msgstr "Änderungen verwerfen"
2381
2381
2382 msgid "Remove reviewer"
2382 msgid "Remove reviewer"
2383 msgstr "Reviewer entfernen"
2383 msgstr "Reviewer entfernen"
2384
2384
2385 msgid "Potential Reviewers"
2385 msgid "Potential Reviewers"
2386 msgstr "Potentielle Reviewer"
2386 msgstr "Potentielle Reviewer"
2387
2387
2388 msgid "Pull Request Content"
2388 msgid "Pull Request Content"
2389 msgstr "Inhalt des Pull Requests"
2389 msgstr "Inhalt des Pull Requests"
2390
2390
2391 msgid "Pull Requests to '%s'"
2391 msgid "Pull Requests to '%s'"
2392 msgstr "Pull Requests für '%s'"
2392 msgstr "Pull Requests für '%s'"
2393
2393
2394 msgid "Open New Pull Request"
2394 msgid "Open New Pull Request"
2395 msgstr "Einen neuen Pull Request eröffnen"
2395 msgstr "Einen neuen Pull Request eröffnen"
2396
2396
2397 msgid "Show Pull Requests to %s"
2397 msgid "Show Pull Requests to %s"
2398 msgstr "Zeige Pull Requests für '%s'"
2398 msgstr "Zeige Pull Requests für '%s'"
2399
2399
2400 msgid "Show Pull Requests from '%s'"
2400 msgid "Show Pull Requests from '%s'"
2401 msgstr "Zeige Pull Requests von '%s'"
2401 msgstr "Zeige Pull Requests von '%s'"
2402
2402
2403 msgid "Pull Requests Created by Me"
2403 msgid "Pull Requests Created by Me"
2404 msgstr "Von mir erstellte Pull Requests"
2404 msgstr "Von mir erstellte Pull Requests"
2405
2405
2406 msgid "Search in All Repositories"
2406 msgid "Search in All Repositories"
2407 msgstr "Suche in allen Repositories"
2407 msgstr "Suche in allen Repositories"
2408
2408
2409 msgid "Search term"
2409 msgid "Search term"
2410 msgstr "Suchbegriff"
2410 msgstr "Suchbegriff"
2411
2411
2412 msgid "Search in"
2412 msgid "Search in"
2413 msgstr "Suchen in"
2413 msgstr "Suchen in"
2414
2414
2415 msgid "File contents"
2415 msgid "File contents"
2416 msgstr "Dateiinhalt"
2416 msgstr "Dateiinhalt"
2417
2417
2418 msgid "Commit messages"
2418 msgid "Commit messages"
2419 msgstr "Commit Nachrichten"
2419 msgstr "Commit Nachrichten"
2420
2420
2421 msgid "File names"
2421 msgid "File names"
2422 msgstr "Dateinamen"
2422 msgstr "Dateinamen"
2423
2423
2424 msgid "Permission denied"
2424 msgid "Permission denied"
2425 msgstr "Zugriff verweigert"
2425 msgstr "Zugriff verweigert"
2426
2426
2427 msgid "Enable"
2427 msgid "Enable"
2428 msgstr "Aktiviere"
2428 msgstr "Aktiviere"
2429
2429
2430 msgid "files"
2430 msgid "files"
2431 msgstr "Dateien"
2431 msgstr "Dateien"
2432
2432
2433 msgid "Show more"
2433 msgid "Show more"
2434 msgstr "Mehr anzeigen"
2434 msgstr "Mehr anzeigen"
2435
2435
2436 msgid "commits"
2436 msgid "commits"
2437 msgstr "Commits"
2437 msgstr "Commits"
2438
2438
2439 msgid "files added"
2439 msgid "files added"
2440 msgstr "Dateien hinzugefügt"
2440 msgstr "Dateien hinzugefügt"
2441
2441
2442 msgid "files changed"
2442 msgid "files changed"
2443 msgstr "Dateien geändert"
2443 msgstr "Dateien geändert"
2444
2444
2445 msgid "files removed"
2445 msgid "files removed"
2446 msgstr "Dateien entfernt"
2446 msgstr "Dateien entfernt"
2447
2447
2448 msgid "commit"
2448 msgid "commit"
2449 msgstr "Commit"
2449 msgstr "Commit"
2450
2450
2451 msgid "file added"
2451 msgid "file added"
2452 msgstr "Datei hinzugefügt"
2452 msgstr "Datei hinzugefügt"
2453
2453
2454 msgid "file changed"
2454 msgid "file changed"
2455 msgstr "Datei geändert"
2455 msgstr "Datei geändert"
2456
2456
2457 msgid "file removed"
2457 msgid "file removed"
2458 msgstr "Datei entfernt"
2458 msgstr "Datei entfernt"
2459
2459
2460 msgid "Clone from"
2460 msgid "Clone from"
2461 msgstr "Clone von"
2461 msgstr "Clone von"
2462
2462
2463 msgid "Clone URL"
2463 msgid "Clone URL"
2464 msgstr "Clone-URL"
2464 msgstr "Clone-URL"
2465
2465
2466 msgid "Download as zip"
2466 msgid "Download as zip"
2467 msgstr "Herunterladen als zip"
2467 msgstr "Herunterladen als zip"
2468
2468
2469 msgid "Feed"
2469 msgid "Feed"
2470 msgstr "Feed"
2470 msgstr "Feed"
2471
2471
2472 msgid "Latest Changes"
2472 msgid "Latest Changes"
2473 msgstr "Letzte Änderungen"
2473 msgstr "Letzte Änderungen"
2474
2474
2475 msgid "Quick Start"
2475 msgid "Quick Start"
2476 msgstr "Schnelleinstieg"
2476 msgstr "Schnelleinstieg"
2477
2477
2478 msgid "Add or upload files directly via Kallithea"
2478 msgid "Add or upload files directly via Kallithea"
2479 msgstr "Dateien direkt über Kallithea hinzufügen oder hochladen"
2479 msgstr "Dateien direkt über Kallithea hinzufügen oder hochladen"
2480
2480
2481 msgid "Download %s as %s"
2481 msgid "Download %s as %s"
2482 msgstr "%s als %s herunterladen"
2482 msgstr "%s als %s herunterladen"
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now