Merge remote-tracking branch 'origin/master' into x-updates

This commit is contained in:
Eelco Dolstra 2012-10-03 14:43:10 -04:00
commit 31f89ba349
23 changed files with 291 additions and 62 deletions

View File

@ -0,0 +1,39 @@
{ stdenv, fetchgit, fftwSinglePrec, libxslt, lv2, pkgconfig }:
let
rev = "ec6b85e19e24ed";
in
stdenv.mkDerivation rec {
name = "swh-lv2-${rev}";
src = fetchgit {
url = "git://github.com/swh/lv2.git";
inherit rev;
sha256 = "d0d918ee642cd9649215737fcc008ce2bf55f4ea893a1897138b33775ea60d17";
};
patchPhase = ''
sed -e "s#xsltproc#${libxslt}/bin/xsltproc#" -i Makefile
sed -e "s#PREFIX = /usr/local#PREFIX = $out#" -i Makefile
'';
buildInputs = [ fftwSinglePrec lv2 pkgconfig ];
installPhase = "make install-system";
meta = with stdenv.lib; {
homepage = http://plugin.org.uk;
description = "LV2 version of Steve Harris' SWH plugins";
longDescription = ''
SWH plugins include:
amp, fast overdrive, overdrive (with colourisation), comb
filter, waveshaper, ringmod, divider, diode, decliper, pitch
scaler, 16 band equaliser, sinus wavewrapper, hermes filter,
chorus, flanger, decimater, oscillator, gverb, phasers, harmonic
generators, surround encoders and more.
'';
license = licenses.gpl3;
maintainers = [ maintainers.goibhniu ];
platforms = platforms.linux;
};
}

View File

@ -86,7 +86,7 @@ let
# XXX: this reverts r151720 to prevent http://crbug.com/143623
maybeRevertZlibChanges = let
below22 = versionOlder sourceInfo.version "22.0.0.0";
below22_91 = versionOlder sourceInfo.version "22.0.1229.91";
patch = fetchurl {
name = "revert-r151720";
url = "http://git.chromium.org/gitweb/?p=chromium.git;a=commitdiff_plain;"
@ -94,7 +94,7 @@ let
+ "h=0fabb4fda7059a8757422e8a44e70deeab28e698";
sha256 = "0n0d6mkg89g8q63cifapzpg9dxfs2n6xvk4k13szhymvf67b77pf";
};
in optional (!below22) patch;
in optional (below22_91) patch;
in stdenv.mkDerivation rec {
name = "${packageName}-${version}";

View File

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory.
{
dev = {
version = "23.0.1262.0";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-23.0.1262.0.tar.bz2";
sha256 = "19sqiv2vg9qy1kj6s12sq5aknvp3969yw26szwp54ipfv7lxqjh6";
version = "23.0.1271.10";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-23.0.1271.10.tar.bz2";
sha256 = "1jm9fhnq978lfn21xripf7l2n362axinggnxlz7rcc9as1y086y3";
};
beta = {
version = "22.0.1229.56";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-22.0.1229.56.tar.bz2";
sha256 = "0wynq27yz1aslsnrjmf47dwbglblpfida2kmgv23l804mgdj19gv";
version = "22.0.1229.91";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-22.0.1229.91.tar.bz2";
sha256 = "1b47rb5hw0k2fwc4jvmjpmxbhmqxgkz66j3mrjy4f8im41hmndyw";
};
stable = {
version = "21.0.1180.89";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-21.0.1180.89.tar.bz2";
sha256 = "1i9mjbjj3aywg03hd59m9j5gq5b5fl8nvw56g47q8s9k1bcsik0n";
version = "22.0.1229.79";
url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-22.0.1229.79.tar.bz2";
sha256 = "0f7py2hd7fnx5z0xrg2vwf675xbg9xvamx79jjyzbpljh32b3jh6";
};
}

View File

@ -40,11 +40,11 @@ let
# no plans to provide a x86_64 version:
# http://labs.adobe.com/technologies/flashplayer10/faq.html
throw "no x86_64 debugging version available"
else {
else rec {
# -> http://labs.adobe.com/downloads/flashplayer10.html
version = "11.1.102.55";
url = http://fpdownload.macromedia.com/get/flashplayer/pdc/11.1.102.55/install_flash_player_11_linux.x86_64.tar.gz;
sha256 = "09swldv174z23pnixy9fxkw084qkl3bbrxfpf159fbjdgvwihn1l";
version = "11.2.202.238";
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
sha256 = "07d09xjnn2hm877psmv9a6c4cfighxw24p0apq2ykawnrjpjc6zn";
}
else if stdenv.system == "i686-linux" then
if debug then {
@ -52,10 +52,10 @@ let
version = "11.1";
url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
sha256 = "1z3649lv9sh7jnwl8d90a293nkaswagj2ynhsr4xmwiy7c0jz2lk";
} else {
version = "11.1.102.55";
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/11.1.102.55/install_flash_player_11_linux.i386.tar.gz";
sha256 = "08zdnl06lqyk2k3yq4lgphqd3ci2267448mghlv1p0hjrdq253k7";
} else rec {
version = "11.2.202.238";
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
sha256 = "0p05pr4vmc4536axjyljhxhqizq4ihslar8g638dj24251byp7ca";
}
else throw "Flash Player is not supported on this platform";

View File

@ -9,7 +9,7 @@
let
version = "1.7.12.1";
version = "1.7.12.2";
svn = subversionClient.override { perlBindings = true; };
@ -20,7 +20,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://git-core.googlecode.com/files/git-${version}.tar.gz";
sha256 = "a0c2b7e122ac2e40fe5b69baeeaac24b237a1341f08ba848cadaa835a0dbcfcd";
sha1 = "277b759139ddb62c6935da37de8a483e2c234a97";
};
patches = [ ./docbook2texi.patch ];

View File

@ -10,7 +10,7 @@ with stdenv.lib;
let
version = "4.1.22";
version = "4.2.0";
forEachModule = action: ''
for mod in \
@ -34,7 +34,7 @@ in stdenv.mkDerivation {
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
sha256 = "7abb506203dd0d69b4b408fd999b5b9a479a9adce5f80e9b5569641c053dd153";
sha256 = "895426ecac371bef4c070e8bcc9306f0c57dcbd6be25188d915b63ddde6f49e6";
};
buildInputs =

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
, libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor}:
let version = "4.1.22"; in
let version = "4.2.0"; in
stdenv.mkDerivation {
name = "VirtualBox-GuestAdditions-${version}";
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
sha256 = "5c7d9a4a31c8a926ba6dbae2b9704a561638e94ea0fc4f805a9231dd4f932d46";
sha256 = "ef274ecdcb48adec469656959e51c8468b6d3a7733ddf93f9a3713f77f1604f3";
};
KERN_DIR = "${kernel}/lib/modules/*/build";
buildInputs = [ patchelf cdrkit makeWrapper ];

View File

@ -3,17 +3,21 @@
libXcursor, coreutils, perl }:
stdenv.mkDerivation rec {
name = "i3-4.2";
name = "i3-${version}";
version = "4.3";
src = fetchurl {
url = "http://i3wm.org/downloads/${name}.tar.bz2";
sha256 = "e02c832820e8922a44e744e555294f8580c2f8e218c5c1029e52f1bde048732b";
sha256 = "895bf586092535efb2bc723ba599c71a027768115e56052f111fc8bb148db925";
};
buildInputs = [ which pkgconfig libxcb xcbutilkeysyms xcbutil bison xcbutilwm
libstartup_notification libX11 pcre libev yajl flex libXcursor perl ];
patchPhase = "patchShebangs .";
patchPhase = ''
sed -i -e '/^# Pango/,/^$/d' common.mk
patchShebangs .
'';
configurePhase = "makeFlags=PREFIX=$out";

View File

@ -1,15 +1,20 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation (rec {
name = "boehm-gc-7.2alpha6";
stdenv.mkDerivation rec {
name = "boehm-gc-7.2d";
src = fetchurl {
url = "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz";
sha256 = "05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b";
url = http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2d.tar.gz;
sha256 = "0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr";
};
configureFlags = "--enable-cplusplus";
doCheck = true;
# Don't run the native `strip' when cross-compiling.
dontStrip = stdenv ? cross;
meta = {
description = "The Boehm-Demers-Weiser conservative garbage collector for C and C++";
@ -39,10 +44,3 @@ stdenv.mkDerivation (rec {
platforms = stdenv.lib.platforms.all;
};
}
//
# Don't run the native `strip' when cross-compiling.
(if (stdenv ? cross)
then { dontStrip = true; }
else { }))

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl }:
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "openjpeg-1.5.1";
stdenv.mkDerivation {
name = "openjpeg-1.5.0";
src = fetchurl {
url = http://openjpeg.googlecode.com/files/openjpeg-1.5.0.tar.gz;
sha256 = "1kja6s9dk0hh7p9064kg69y6vninwyvpqi8cap92waj38jmqz469";
url = "http://openjpeg.googlecode.com/files/${name}.tar.gz";
sha256 = "13dbyf3jwr4h2dn1k11zph3jgx17z7d66xmi640mbsf8l6bk1yvc";
};
meta = {

View File

@ -10,7 +10,8 @@ stdenv.mkDerivation {
doCheck = !stdenv.isDarwin
&& !stdenv.isCygwin # XXX: `test-dup2' fails on Cygwin
&& !stdenv.isSunOS; # XXX: `test-setlocale2.sh' fails
&& !stdenv.isSunOS # XXX: `test-setlocale2.sh' fails
&& !stdenv.isArm; # XXX: `diversions' fails on SheevaPlug
# Upstream is aware of it; it may be in the next release.
patches = [ ./s_isdir.patch ./readlink-EINVAL.patch ];

View File

@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
pkgconfig python pythonDBus
] ++ (stdenv.lib.optional firewireSupport ffado);
patches = ./ffado_setbuffsize-jack2.patch;
configurePhase = ''
cd jack-1.9.8
python waf configure --prefix=$out --dbus --alsa ${if firewireSupport then "--firewire" else ""}

View File

@ -0,0 +1,140 @@
https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/jack2
From 96e0251234a29a1360c05d5d7dc98b83436b8183 Mon Sep 17 00:00:00 2001
From: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Date: Sat, 17 Mar 2012 22:36:30 +0100
Subject: [PATCH] [firewire] Allow FFADO backend to change the buffer size
This is a port of Jonathan Woithe's patch from jackd1.
With sufficiently recent versions of FFADO, it allows to change
the buffersize at runtime.
---
linux/firewire/JackFFADODriver.cpp | 65 ++++++++++++++++++++++++++++++++----
linux/firewire/JackFFADODriver.h | 6 ++++
2 files changed, 65 insertions(+), 6 deletions(-)
diff --git a/jack-1.9.8/linux/firewire/JackFFADODriver.cpp b/jack-1.9.8/linux/firewire/JackFFADODriver.cpp
index b33e1cd..085b78a 100644
--- a/jack-1.9.8/linux/firewire/JackFFADODriver.cpp
+++ b/jack-1.9.8/linux/firewire/JackFFADODriver.cpp
@@ -3,6 +3,7 @@
Copyright (C) 2004 Grame
Copyright (C) 2007 Pieter Palmers
Copyright (C) 2009 Devin Anderson
+Copyright (C) 2012 Jonathan Woithe, Adrian Knoth
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -48,7 +49,10 @@
namespace Jack
{
+// Basic functionality requires API version 8. If version 9 or later
+// is present the buffers can be resized at runtime.
#define FIREWIRE_REQUIRED_FFADO_API_VERSION 8
+#define FIREWIRE_REQUIRED_FFADO_API_VERSION_FOR_SETBUFSIZE 9
#define jack_get_microseconds GetMicroSeconds
@@ -281,19 +285,68 @@
int
JackFFADODriver::SetBufferSize (jack_nframes_t nframes)
{
- printError("Buffer size change requested but not supported!!!");
+ ffado_driver_t* driver = (ffado_driver_t*)fDriver;
+ signed int chn;
+
+ // The speed of this function isn't critical; we can afford the
+ // time to check the FFADO API version.
+ if (ffado_get_api_version() < FIREWIRE_REQUIRED_FFADO_API_VERSION_FOR_SETBUFSIZE ||
+ ffado_streaming_set_period_size == NULL) {
+ printError("unsupported on current version of FFADO; please upgrade FFADO");
+ return -1;
+ }
- /*
driver->period_size = nframes;
driver->period_usecs =
(jack_time_t) floor ((((float) nframes) / driver->sample_rate)
* 1000000.0f);
- */
+
+
+ // Reallocate the null and scratch buffers.
+ driver->nullbuffer = (ffado_sample_t*) calloc(driver->period_size, sizeof(ffado_sample_t));
+ if(driver->nullbuffer == NULL) {
+ printError("could not allocate memory for null buffer");
+ return -1;
+ }
+ driver->scratchbuffer = (ffado_sample_t*) calloc(driver->period_size, sizeof(ffado_sample_t));
+ if(driver->scratchbuffer == NULL) {
+ printError("could not allocate memory for scratch buffer");
+ return -1;
+ }
+
+ // MIDI buffers need reallocating
+ for (chn = 0; chn < driver->capture_nchannels; chn++) {
+ if(driver->capture_channels[chn].stream_type == ffado_stream_type_midi) {
+ // setup the midi buffer
+ if (driver->capture_channels[chn].midi_buffer != NULL)
+ free(driver->capture_channels[chn].midi_buffer);
+ driver->capture_channels[chn].midi_buffer = (ffado_sample_t*) calloc(driver->period_size, sizeof(uint32_t));
+ }
+ }
+ for (chn = 0; chn < driver->playback_nchannels; chn++) {
+ if(driver->playback_channels[chn].stream_type == ffado_stream_type_midi) {
+ if (driver->playback_channels[chn].midi_buffer != NULL)
+ free(driver->playback_channels[chn].midi_buffer);
+ driver->playback_channels[chn].midi_buffer = (ffado_sample_t*) calloc(driver->period_size, sizeof(uint32_t));
+ }
+ }
+
+ // Notify FFADO of the period size change
+ if (ffado_streaming_set_period_size(driver->dev, nframes) != 0) {
+ printError("could not alter FFADO device period size");
+ return -1;
+ }
+
+ // This is needed to give the shadow variables a chance to
+ // properly update to the changes.
+ sleep(1);
/* tell the engine to change its buffer size */
- //driver->engine->set_buffer_size (driver->engine, nframes);
+ JackAudioDriver::SetBufferSize(nframes); // Generic change, never fails
- return -1; // unsupported
+ UpdateLatencies();
+
+ return 0;
}
typedef void (*JackDriverFinishFunction) (jack_driver_t *);
@@ -306,7 +359,7 @@
assert(params);
- if (ffado_get_api_version() != FIREWIRE_REQUIRED_FFADO_API_VERSION) {
+ if (ffado_get_api_version() < FIREWIRE_REQUIRED_FFADO_API_VERSION) {
printError("Incompatible libffado version! (%s)", ffado_get_version());
return NULL;
}
diff --git a/jack-1.9.8/linux/firewire/JackFFADODriver.h b/jack-1.9.8/linux/firewire/JackFFADODriver.h
index cb2a45d..790f4dd 100644
--- a/jack-1.9.8/linux/firewire/JackFFADODriver.h
+++ b/jack-1.9.8/linux/firewire/JackFFADODriver.h
@@ -82,6 +82,12 @@ class JackFFADODriver : public JackAudioDriver
int Read();
int Write();
+ // BufferSize can be changed
+ bool IsFixedBufferSize()
+ {
+ return false;
+ }
+
int SetBufferSize(jack_nframes_t nframes);
};
--
1.7.10

View File

@ -16,6 +16,12 @@ stdenv.mkDerivation rec {
installFlags = "ASOUND_STATE_DIR=$(TMPDIR)/dummy";
preConfigure =
''
# Ensure that 90-alsa-restore.rules.in gets rebuilt.
rm alsactl/90-alsa-restore.rules
'';
meta = {
description = "ALSA, the Advanced Linux Sound Architecture utils";

View File

@ -0,0 +1,33 @@
{ stdenv, fetchgit, SDL }:
stdenv.mkDerivation rec {
name = "linuxconsoletools-${version}";
version = "1.4.3";
src = fetchgit {
url = "git://linuxconsole.git.sourceforge.net/gitroot/linuxconsole/linuxconsole";
rev = "dac2cae0e5795ddc27b76a92767dd9e07a10621e";
sha256 = "350b008e614923dbd548fcaaf2842b39433acdcf595e2ce8aaf1599f076d331d";
};
buildInputs = [ SDL ];
makeFlags = [ "PREFIX=$(out)" ];
meta = {
homepage = "https://sourceforge.net/projects/linuxconsole/";
description = "A set of tools for joysticks and serial peripherals";
license = stdenv.lib.licenses.gpl2Plus;
longDescription = ''
The included tools are:
ffcfstress(1) - force-feedback stress test
ffmvforce(1) - force-feedback orientation test
ffset(1) - force-feedback configuration tool
fftest(1) - general force-feedback test
jstest(1) - joystick test
jscal(1) - joystick calibration tool
inputattach(1) - connects legacy serial devices to the input layer
'';
};
}

View File

@ -4,7 +4,7 @@ stdenv.mkDerivation rec {
name = "sysfsutils-2.1.0";
src = fetchurl {
url = "http://kent.dl.sourceforge.net/sourceforge/linux-diag/${name}.tar.gz";
url = "mirror://sourceforge/linux-diag/${name}.tar.gz";
sha256 = "e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a";
};

View File

@ -1,15 +1,14 @@
{ stdenv, fetchurl, openssl, libtool, perl, libxml2 }:
let
version = "9.7.6-P1";
in
let version = "9.7.6-P3"; in
stdenv.mkDerivation rec {
name = "bind-${version}";
src = fetchurl {
url = "http://ftp.isc.org/isc/bind9/${version}/${name}.tar.gz";
sha256 = "1xp7c3fpi3b6y1bz77mf7c98ic7rxp5lpwlmzqwsdrllip33qw1k";
sha256 = "0xx23dcy9rbky8ar89pg3s07njqy7667sfrnbqc334pvd2qxanjx";
};
patchPhase = ''
@ -21,7 +20,7 @@ stdenv.mkDerivation rec {
/* Why --with-libtool? */
configureFlags = [ "--with-libtool" "--with-openssl=${openssl}"
"--localstatedir=/var" ];
meta = {
homepage = http://www.isc.org/software/bind;
description = "ISC BIND: a domain name server";

View File

@ -12,12 +12,12 @@ assert ldapSupport -> aprutil.ldapSupport && openldap != null;
assert mpm == "prefork" || mpm == "worker" || mpm == "event";
stdenv.mkDerivation rec {
version = "2.2.22";
version = "2.2.23";
name = "apache-httpd-${version}";
src = fetchurl {
url = "mirror://apache/httpd/httpd-${version}.tar.bz2";
sha1 = "766cd0843050a8dfb781e48b976f3ba6ebcf8696";
sha1 = "2776145201068045d4ed83157a0e2e1c28c4c453";
};
buildInputs = [perl apr aprutil pcre] ++

View File

@ -1,11 +1,11 @@
{ fetchurl, stdenv }:
stdenv.mkDerivation rec {
name = "xinetd-2.3.14";
name = "xinetd-2.3.15";
src = fetchurl {
url = "http://www.xinetd.org/${name}.tar.gz";
sha256 = "07xws1ydxrrx4xinvfqkc66diwfjh2apxz33xw4hb6k0gihhw3kn";
sha256 = "1qsv1al506x33gh92bqa8w21k7mxqrbsrwmxvkj0amn72420ckmz";
};
meta = {

View File

@ -4,7 +4,10 @@ stdenv.mkDerivation rec {
name = "dosfstools-3.0.11";
src = fetchurl {
url = "http://www.daniel-baumann.ch/software/dosfstools/${name}.tar.bz2";
urls = [
"http://www.daniel-baumann.ch/software/dosfstools/${name}.tar.bz2"
"http://pkgs.fedoraproject.org/repo/pkgs/dosfstools/${name}.tar.bz2/8d2211d5bd813164e20740e7c852aa06/${name}.tar.bz2"
];
sha256 = "1a6rzjy82f6579ywaln33g1wc7k8gbgjdss9q2q8daplac7pmcll";
};

View File

@ -7,7 +7,7 @@ composableDerivation.composableDerivation {} {
name = "timidity-2.13.0";
src = fetchurl {
url = http://ovh.dl.sourceforge.net/sourceforge/timidity/TiMidity++-2.13.0.tar.bz2;
url = mirror://sourceforge/timidity/TiMidity++-2.13.0.tar.bz2;
sha256 = "1jbmk0m375fh5nj2awqzns7pdjbi7dxpjdwcix04zipfcilppbmf";
};

View File

@ -1,7 +1,7 @@
{stdenv, fetchgit, python}:
let pkgname = "youtube-dl";
pkgver = "2012.02.27";
pkgver = "2012.09.27";
in
stdenv.mkDerivation {
@ -10,7 +10,7 @@ stdenv.mkDerivation {
src = fetchgit {
url = "git://github.com/rg3/${pkgname}";
rev = "refs/tags/${pkgver}";
sha256 = "17270ba14f42e8f2813bc6a0eb3674e51592eede69612e156e7d99a96fd147ce";
sha256 = "a98f3339301324ddd6620f7b1353abed807cd8dea5586d6901d7fe69bc6a397c";
};
buildInputs = [python];

View File

@ -5697,6 +5697,8 @@ let
libnl = callPackage ../os-specific/linux/libnl { };
linuxConsoleTools = callPackage ../os-specific/linux/consoletools { };
linuxHeaders = callPackage ../os-specific/linux/kernel-headers { };
linuxHeaders33 = callPackage ../os-specific/linux/kernel-headers/3.3.5.nix { };
@ -7698,6 +7700,8 @@ let
svk = perlPackages.SVK;
swh_lv2 = callPackage ../applications/audio/swh-lv2 { };
sylpheed = callPackage ../applications/networking/mailreaders/sylpheed {
sslSupport = true;
gpgSupport = true;
@ -7901,7 +7905,7 @@ let
++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin
);
libs =
if config.browserNameenableQuakeLive or false
if config.browserName.enableQuakeLive or false
then with xlibs; [ stdenv.gcc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ]
else [ ];
};