Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-db/lmdb/, dev-db/lmdb/files/
Date: Sat, 28 Aug 2021 18:16:20
Message-Id: 1630174567.3c97cccf949df64abcace0d777729447da919d8d.sam@gentoo
1 commit: 3c97cccf949df64abcace0d777729447da919d8d
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Sat Aug 28 18:15:31 2021 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Sat Aug 28 18:16:07 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3c97cccf
7
8 Revert "dev-db/lmdb: remove old"
9
10 Dropped needed lmdb-fix-cursor-delete.patch.
11
12 This reverts commit cadb31d625fd6c5a8b6dbd37f04fd2897b934c2b.
13
14 Signed-off-by: Sam James <sam <AT> gentoo.org>
15
16 dev-db/lmdb/Manifest | 4 ++
17 dev-db/lmdb/files/lmdb-fix-cursor-delete.patch | 48 +++++++++++++++++
18 dev-db/lmdb/lmdb-0.9.23.ebuild | 72 +++++++++++++++++++++++++
19 dev-db/lmdb/lmdb-0.9.24.ebuild | 74 +++++++++++++++++++++++++
20 dev-db/lmdb/lmdb-0.9.26.ebuild | 75 ++++++++++++++++++++++++++
21 dev-db/lmdb/lmdb-0.9.27.ebuild | 75 ++++++++++++++++++++++++++
22 6 files changed, 348 insertions(+)
23
24 diff --git a/dev-db/lmdb/Manifest b/dev-db/lmdb/Manifest
25 index ccab97d2dad..526775f840f 100644
26 --- a/dev-db/lmdb/Manifest
27 +++ b/dev-db/lmdb/Manifest
28 @@ -1,2 +1,6 @@
29 +DIST LMDB_0.9.23.tar.gz 143813 BLAKE2B 252acad974a7ed528fe0e52b8332845bc0b6076599bbc79ef2c3f41459acb6ccbe5f6030c6a258fe30633c4c0568fa05fa6d46dc05bab3f93ee3aab16e6faa89 SHA512 47466a96ce288d18d489acf1abf811aa973649848a4cac31f71e1f25ea781a055ebd6616d2d630214b2df2f146f12609c82d65be0196f49d6b46a6c96464e120
30 +DIST LMDB_0.9.24.tar.gz 143916 BLAKE2B f075ec5f4dfb77685188229e20f12c4febe8295c7d35ed15c3db492b68af68cc7f76741078e9bb524d2c38587839f542e964af1e5d6d984bb28bd602caabbb8d SHA512 c3a96c27f13c072ef5861bcea045d82f0a220dbd938579411ea6c38ac0696b3620c71f1e2cc56d31db5105f3533da95aba1ac34653d8bdcfa4f2f1fb831cccb1
31 +DIST openldap-LMDB_0.9.26.tar.gz 144029 BLAKE2B 07fe81cdaed7a402aaf485a2aa41d12c2c8cc8813d39d5304d8a1f5c8920f4695021eb586b4366a5f55010284227c7ac16487a8799c60f251ea97cd745b1261a SHA512 d7826f6d1a3144feb71eef65f843e8bcddf6cec384014bab3fc1d32a7f1b9316bcbb5b3a915b166cbdae2ffbd15f14b4eb783acd7eddbd2e321607f750efe94d
32 +DIST openldap-LMDB_0.9.27.tar.gz 144104 BLAKE2B 76b7b66ca455f61f71b7c010de0b5437d02a245a5129184cf45bf5684a745888c88012fb73a219076b6c47adfda0804e6c7f603e4631c98034c01efda99ad3a9 SHA512 a27c0d26c801b172f3c207666940f86ecaae9d223843b72823d064f0ea0629a855150d049cb143981783710d3ca791c7f0f65df9d91732b2709e6107af403854
33 DIST openldap-LMDB_0.9.28.tar.gz 144520 BLAKE2B 3466da1ffde7350056fb3b16fc0068d78139c578fdf79cd6456ca0d98e2d7b3d899849ae42a7224335a4680e52b5f0feb2c4233eaf00ee3d9ee648ae10c3114a SHA512 0cdf9a2ce35617a3135cde96491fbbb73be9362de2b94d23eda44b65ce48362ff9dbdfe921c3255ed486aceb385fcb62b81f560b1037476f4741291b29ba0dce
34 DIST openldap-LMDB_0.9.29.tar.gz 144545 BLAKE2B b7e55e4fa03e878a95b8f7c583684727a81d51a3acf2ec064d8fe26475bf9ffe4dddf16c2bccbda901b94b7c8d57f41fa63f7c09bcab46401bd000958a5b87b3 SHA512 b41ba5b139375d23617a79f4d322399df55745c5a4a63159ddbe0f1ded4707f0eb7f71acf3d1a4928f8fcab30a7b5db17e3e165441a61ec1dbd29f8d9efa65d1
35
36 diff --git a/dev-db/lmdb/files/lmdb-fix-cursor-delete.patch b/dev-db/lmdb/files/lmdb-fix-cursor-delete.patch
37 new file mode 100644
38 index 00000000000..fd76be1bb79
39 --- /dev/null
40 +++ b/dev-db/lmdb/files/lmdb-fix-cursor-delete.patch
41 @@ -0,0 +1,48 @@
42 +From 40585b483976d9062e6c971df285f911512ecd5e Mon Sep 17 00:00:00 2001
43 +From: Howard Chu <hyc@××××××××.org>
44 +Date: Tue, 9 Feb 2021 23:38:06 +0000
45 +Subject: [PATCH] ITS#9461 refix ITS#9376
46 +
47 +Was setting C_DEL flag gratuitously
48 +---
49 + libraries/liblmdb/mdb.c | 2 +-
50 + 1 file changed, 1 insertion(+), 1 deletion(-)
51 +
52 +diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
53 +index 621cbcfa..e6cae8ed 100644
54 +--- a/mdb.c
55 ++++ b/mdb.c
56 +@@ -8527,10 +8527,10 @@ mdb_cursor_del0(MDB_cursor *mc)
57 + }
58 + m3->mc_xcursor->mx_cursor.mc_flags |= C_DEL;
59 + }
60 +- m3->mc_flags |= C_DEL;
61 + }
62 + }
63 + }
64 ++ m3->mc_flags |= C_DEL;
65 +
66 + fail:
67 + if (rc)
68 +From f9c5b46651c4ecd699643c4d90bb3ab7725a6167 Mon Sep 17 00:00:00 2001
69 +From: Howard Chu <hyc@××××××××.org>
70 +Date: Thu, 11 Feb 2021 11:34:57 +0000
71 +Subject: [PATCH] ITS#9461 fix typo
72 +
73 +---
74 + libraries/liblmdb/mdb.c | 2 +-
75 + 1 file changed, 1 insertion(+), 1 deletion(-)
76 +
77 +diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
78 +index e6cae8ed..4062664b 100644
79 +--- a/mdb.c
80 ++++ b/mdb.c
81 +@@ -8530,7 +8530,7 @@ mdb_cursor_del0(MDB_cursor *mc)
82 + }
83 + }
84 + }
85 +- m3->mc_flags |= C_DEL;
86 ++ mc->mc_flags |= C_DEL;
87 +
88 + fail:
89 + if (rc)
90
91 diff --git a/dev-db/lmdb/lmdb-0.9.23.ebuild b/dev-db/lmdb/lmdb-0.9.23.ebuild
92 new file mode 100644
93 index 00000000000..a3f04ec4d48
94 --- /dev/null
95 +++ b/dev-db/lmdb/lmdb-0.9.23.ebuild
96 @@ -0,0 +1,72 @@
97 +# Copyright 1999-2021 Gentoo Authors
98 +# Distributed under the terms of the GNU General Public License v2
99 +
100 +EAPI=7
101 +
102 +inherit flag-o-matic multilib-minimal toolchain-funcs
103 +
104 +DESCRIPTION="An ultra-fast, ultra-compact key-value embedded data store"
105 +HOMEPAGE="https://symas.com/lmdb/technical/"
106 +SRC_URI="https://github.com/LMDB/lmdb/archive/LMDB_${PV}.tar.gz"
107 +
108 +LICENSE="OPENLDAP"
109 +SLOT="0/${PV}"
110 +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
111 +IUSE="static-libs"
112 +
113 +DEPEND=""
114 +RDEPEND=""
115 +
116 +S="${WORKDIR}/${PN}-LMDB_${PV}/libraries/liblmdb"
117 +
118 +src_prepare() {
119 + eapply_user
120 + if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -lt 10 ]] ; then
121 + # posix_memalign isn't available before 10.6, but on OSX
122 + # malloc is always aligned for any addressable type
123 + sed -i -e '/(__APPLE__)/a#define HAVE_MEMALIGN 1\n#define memalign(X,Y) malloc(X)' mdb.c || die
124 + fi
125 + multilib_copy_sources
126 +}
127 +
128 +multilib_src_configure() {
129 + local soname="-Wl,-soname,liblmdb$(get_libname 0)"
130 + [[ ${CHOST} == *-darwin* ]] && \
131 + soname="-dynamiclib -install_name ${EPREFIX}/usr/$(get_libdir)/liblmdb$(get_libname 0)"
132 + sed -i -e "s!^CC.*!CC = $(tc-getCC)!" \
133 + -e "s!^CFLAGS.*!CFLAGS = ${CFLAGS}!" \
134 + -e "s!^AR.*!AR = $(tc-getAR)!" \
135 + -e "s!^SOEXT.*!SOEXT = $(get_libname)!" \
136 + -e "/^prefix/s!/usr/local!${EPREFIX}/usr!" \
137 + -e "/^libdir/s!lib\$!$(get_libdir)!" \
138 + -e "s!shared!shared ${soname}!" \
139 + "Makefile" || die
140 +
141 + if [[ ${CHOST} == *-solaris* ]] ; then
142 + # fdatasync lives in -lrt on Solaris 10
143 + [[ ${CHOST#*-solaris2.} -le 10 ]] && append-ldflags -lrt
144 + fi
145 +}
146 +
147 +multilib_src_compile() {
148 + emake LDLIBS+=" -pthread"
149 +}
150 +
151 +multilib_src_install() {
152 + emake DESTDIR="${D}" install
153 +
154 + mv "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname) \
155 + "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname 0) || die
156 + dosym liblmdb$(get_libname 0) /usr/$(get_libdir)/liblmdb$(get_libname)
157 +
158 + insinto /usr/$(get_libdir)/pkgconfig
159 + doins "${FILESDIR}/lmdb.pc"
160 + sed -i -e "s!@PACKAGE_VERSION@!${PV}!" \
161 + -e "s!@prefix@!${EPREFIX}/usr!g" \
162 + -e "s!@libdir@!$(get_libdir)!" \
163 + "${ED}"/usr/$(get_libdir)/pkgconfig/lmdb.pc || die
164 +
165 + if ! use static-libs; then
166 + rm "${ED}"/usr/$(get_libdir)/liblmdb.a || die
167 + fi
168 +}
169
170 diff --git a/dev-db/lmdb/lmdb-0.9.24.ebuild b/dev-db/lmdb/lmdb-0.9.24.ebuild
171 new file mode 100644
172 index 00000000000..47e317b2c8a
173 --- /dev/null
174 +++ b/dev-db/lmdb/lmdb-0.9.24.ebuild
175 @@ -0,0 +1,74 @@
176 +# Copyright 1999-2021 Gentoo Authors
177 +# Distributed under the terms of the GNU General Public License v2
178 +
179 +EAPI=7
180 +
181 +inherit flag-o-matic multilib-minimal toolchain-funcs
182 +
183 +MY_P="${PN^^}_${PV}"
184 +
185 +DESCRIPTION="An ultra-fast, ultra-compact key-value embedded data store"
186 +HOMEPAGE="https://symas.com/lmdb/technical/"
187 +SRC_URI="https://github.com/LMDB/lmdb/archive/${MY_P}.tar.gz"
188 +
189 +LICENSE="OPENLDAP"
190 +SLOT="0/${PV}"
191 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
192 +IUSE="static-libs"
193 +
194 +DEPEND=""
195 +RDEPEND=""
196 +
197 +S="${WORKDIR}/${PN}-${MY_P}/libraries/liblmdb"
198 +
199 +src_prepare() {
200 + default
201 + if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -lt 10 ]] ; then
202 + # posix_memalign isn't available before 10.6, but on OSX
203 + # malloc is always aligned for any addressable type
204 + sed -i -e '/(__APPLE__)/a#define HAVE_MEMALIGN 1\n#define memalign(X,Y) malloc(X)' mdb.c || die
205 + fi
206 + multilib_copy_sources
207 +}
208 +
209 +multilib_src_configure() {
210 + local soname="-Wl,-soname,liblmdb$(get_libname 0)"
211 + [[ ${CHOST} == *-darwin* ]] && \
212 + soname="-dynamiclib -install_name ${EPREFIX}/usr/$(get_libdir)/liblmdb$(get_libname 0)"
213 + sed -i -e "s!^CC.*!CC = $(tc-getCC)!" \
214 + -e "s!^CFLAGS.*!CFLAGS = ${CFLAGS}!" \
215 + -e "s!^AR.*!AR = $(tc-getAR)!" \
216 + -e "s!^SOEXT.*!SOEXT = $(get_libname)!" \
217 + -e "/^prefix/s!/usr/local!${EPREFIX}/usr!" \
218 + -e "/^libdir/s!lib\$!$(get_libdir)!" \
219 + -e "s!shared!shared ${soname}!" \
220 + "Makefile" || die
221 +
222 + if [[ ${CHOST} == *-solaris* ]] ; then
223 + # fdatasync lives in -lrt on Solaris 10
224 + [[ ${CHOST#*-solaris2.} -le 10 ]] && append-ldflags -lrt
225 + fi
226 +}
227 +
228 +multilib_src_compile() {
229 + emake LDLIBS+=" -pthread"
230 +}
231 +
232 +multilib_src_install() {
233 + emake DESTDIR="${D}" install
234 +
235 + mv "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname) \
236 + "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname 0) || die
237 + dosym liblmdb$(get_libname 0) /usr/$(get_libdir)/liblmdb$(get_libname)
238 +
239 + insinto /usr/$(get_libdir)/pkgconfig
240 + doins "${FILESDIR}/lmdb.pc"
241 + sed -i -e "s!@PACKAGE_VERSION@!${PV}!" \
242 + -e "s!@prefix@!${EPREFIX}/usr!g" \
243 + -e "s!@libdir@!$(get_libdir)!" \
244 + "${ED}"/usr/$(get_libdir)/pkgconfig/lmdb.pc || die
245 +
246 + if ! use static-libs; then
247 + rm "${ED}"/usr/$(get_libdir)/liblmdb.a || die
248 + fi
249 +}
250
251 diff --git a/dev-db/lmdb/lmdb-0.9.26.ebuild b/dev-db/lmdb/lmdb-0.9.26.ebuild
252 new file mode 100644
253 index 00000000000..610df78af69
254 --- /dev/null
255 +++ b/dev-db/lmdb/lmdb-0.9.26.ebuild
256 @@ -0,0 +1,75 @@
257 +# Copyright 1999-2021 Gentoo Authors
258 +# Distributed under the terms of the GNU General Public License v2
259 +
260 +EAPI=7
261 +inherit flag-o-matic multilib-minimal toolchain-funcs
262 +
263 +MY_P="${PN^^}_${PV}"
264 +
265 +DESCRIPTION="An ultra-fast, ultra-compact key-value embedded data store"
266 +HOMEPAGE="https://symas.com/lmdb/technical/"
267 +SRC_URI="https://git.openldap.org/openldap/openldap/-/archive/${MY_P}/openldap-${MY_P}.tar.gz"
268 +
269 +LICENSE="OPENLDAP"
270 +SLOT="0/${PV}"
271 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
272 +IUSE="static-libs"
273 +
274 +DEPEND=""
275 +RDEPEND=""
276 +
277 +S="${WORKDIR}/openldap-${MY_P}/libraries/liblmdb"
278 +
279 +src_prepare() {
280 + default
281 + if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -lt 10 ]] ; then
282 + # posix_memalign isn't available before 10.6, but on OSX
283 + # malloc is always aligned for any addressable type
284 + sed -i -e '/(__APPLE__)/a#define HAVE_MEMALIGN 1\n#define memalign(X,Y) malloc(X)' mdb.c || die
285 + fi
286 + multilib_copy_sources
287 +}
288 +
289 +multilib_src_configure() {
290 + local soname="-Wl,-soname,liblmdb$(get_libname 0)"
291 + if [[ ${CHOST} == *-darwin* ]] ; then
292 + soname="-dynamiclib -install_name ${EPREFIX}/usr/$(get_libdir)/liblmdb$(get_libname 0)"
293 + replace-flags -O[123456789] -O1
294 + fi
295 + sed -i -e "s!^CC.*!CC = $(tc-getCC)!" \
296 + -e "s!^CFLAGS.*!CFLAGS = ${CFLAGS}!" \
297 + -e "s!^AR.*!AR = $(tc-getAR)!" \
298 + -e "s!^SOEXT.*!SOEXT = $(get_libname)!" \
299 + -e "/^prefix/s!/usr/local!${EPREFIX}/usr!" \
300 + -e "/^libdir/s!lib\$!$(get_libdir)!" \
301 + -e "s!shared!shared ${soname}!" \
302 + "Makefile" || die
303 +
304 + if [[ ${CHOST} == *-solaris* ]] ; then
305 + # fdatasync lives in -lrt on Solaris 10
306 + [[ ${CHOST#*-solaris2.} -le 10 ]] && append-ldflags -lrt
307 + fi
308 +}
309 +
310 +multilib_src_compile() {
311 + emake LDLIBS+=" -pthread"
312 +}
313 +
314 +multilib_src_install() {
315 + emake DESTDIR="${D}" install
316 +
317 + mv "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname) \
318 + "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname 0) || die
319 + dosym liblmdb$(get_libname 0) /usr/$(get_libdir)/liblmdb$(get_libname)
320 +
321 + insinto /usr/$(get_libdir)/pkgconfig
322 + doins "${FILESDIR}/lmdb.pc"
323 + sed -i -e "s!@PACKAGE_VERSION@!${PV}!" \
324 + -e "s!@prefix@!${EPREFIX}/usr!g" \
325 + -e "s!@libdir@!$(get_libdir)!" \
326 + "${ED}"/usr/$(get_libdir)/pkgconfig/lmdb.pc || die
327 +
328 + if ! use static-libs; then
329 + rm "${ED}"/usr/$(get_libdir)/liblmdb.a || die
330 + fi
331 +}
332
333 diff --git a/dev-db/lmdb/lmdb-0.9.27.ebuild b/dev-db/lmdb/lmdb-0.9.27.ebuild
334 new file mode 100644
335 index 00000000000..610df78af69
336 --- /dev/null
337 +++ b/dev-db/lmdb/lmdb-0.9.27.ebuild
338 @@ -0,0 +1,75 @@
339 +# Copyright 1999-2021 Gentoo Authors
340 +# Distributed under the terms of the GNU General Public License v2
341 +
342 +EAPI=7
343 +inherit flag-o-matic multilib-minimal toolchain-funcs
344 +
345 +MY_P="${PN^^}_${PV}"
346 +
347 +DESCRIPTION="An ultra-fast, ultra-compact key-value embedded data store"
348 +HOMEPAGE="https://symas.com/lmdb/technical/"
349 +SRC_URI="https://git.openldap.org/openldap/openldap/-/archive/${MY_P}/openldap-${MY_P}.tar.gz"
350 +
351 +LICENSE="OPENLDAP"
352 +SLOT="0/${PV}"
353 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris ~x86-solaris"
354 +IUSE="static-libs"
355 +
356 +DEPEND=""
357 +RDEPEND=""
358 +
359 +S="${WORKDIR}/openldap-${MY_P}/libraries/liblmdb"
360 +
361 +src_prepare() {
362 + default
363 + if [[ ${CHOST} == *-darwin* && ${CHOST#*-darwin} -lt 10 ]] ; then
364 + # posix_memalign isn't available before 10.6, but on OSX
365 + # malloc is always aligned for any addressable type
366 + sed -i -e '/(__APPLE__)/a#define HAVE_MEMALIGN 1\n#define memalign(X,Y) malloc(X)' mdb.c || die
367 + fi
368 + multilib_copy_sources
369 +}
370 +
371 +multilib_src_configure() {
372 + local soname="-Wl,-soname,liblmdb$(get_libname 0)"
373 + if [[ ${CHOST} == *-darwin* ]] ; then
374 + soname="-dynamiclib -install_name ${EPREFIX}/usr/$(get_libdir)/liblmdb$(get_libname 0)"
375 + replace-flags -O[123456789] -O1
376 + fi
377 + sed -i -e "s!^CC.*!CC = $(tc-getCC)!" \
378 + -e "s!^CFLAGS.*!CFLAGS = ${CFLAGS}!" \
379 + -e "s!^AR.*!AR = $(tc-getAR)!" \
380 + -e "s!^SOEXT.*!SOEXT = $(get_libname)!" \
381 + -e "/^prefix/s!/usr/local!${EPREFIX}/usr!" \
382 + -e "/^libdir/s!lib\$!$(get_libdir)!" \
383 + -e "s!shared!shared ${soname}!" \
384 + "Makefile" || die
385 +
386 + if [[ ${CHOST} == *-solaris* ]] ; then
387 + # fdatasync lives in -lrt on Solaris 10
388 + [[ ${CHOST#*-solaris2.} -le 10 ]] && append-ldflags -lrt
389 + fi
390 +}
391 +
392 +multilib_src_compile() {
393 + emake LDLIBS+=" -pthread"
394 +}
395 +
396 +multilib_src_install() {
397 + emake DESTDIR="${D}" install
398 +
399 + mv "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname) \
400 + "${ED}"/usr/$(get_libdir)/liblmdb$(get_libname 0) || die
401 + dosym liblmdb$(get_libname 0) /usr/$(get_libdir)/liblmdb$(get_libname)
402 +
403 + insinto /usr/$(get_libdir)/pkgconfig
404 + doins "${FILESDIR}/lmdb.pc"
405 + sed -i -e "s!@PACKAGE_VERSION@!${PV}!" \
406 + -e "s!@prefix@!${EPREFIX}/usr!g" \
407 + -e "s!@libdir@!$(get_libdir)!" \
408 + "${ED}"/usr/$(get_libdir)/pkgconfig/lmdb.pc || die
409 +
410 + if ! use static-libs; then
411 + rm "${ED}"/usr/$(get_libdir)/liblmdb.a || die
412 + fi
413 +}