text:
/* $NetBSD: midictl.c,v 1.7 2011/11/23 23:07:31 jmcneill Exp $ */

/*-
 * Copyright (c) 2006, 2008 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Chapman Flack, and by Andrew Doran.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: midictl.c,v 1.7 2011/11/23 23:07:31 jmcneill Exp $");

/*
 * See midictl.h for an overview of the purpose and use of this module.
 */

#include <sys/systm.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
#include <sys/kmem.h>

#include "midictl.h"

/*
 * The upper part of this file is MIDI-aware, and deals with things like
 * decoding MIDI Control Change messages, dealing with the ones that require
 * special handling as mode messages or parameter updates, and so on.
 *
 * It relies on a "store" layer (implemented in the lower part of this file)
 * that only must be able to stash away 2-, 8-, or 16-bit quantities (which
 * it may pack into larger units as it sees fit) and find them again given
 * a class, channel, and key (controller/parameter number).
 *
 * The MIDI controllers can have 1-, 7-, or 14-bit values; the parameters are
 * also 14-bit. The 14-bit values have to be set in two MIDI messages, 7 bits
 * at a time. The MIDI layer uses store-managed 2- or 8-bit slots for the
 * smaller types, and uses the free high bit to indicate that it has explicitly
 * set the value. (Because the store is allowed to pack things, it may 'find'
 * a zero entry for a value we never set, because it shares a word with a
 * different value that has been set. We know it is not a real value because
 * the high bit is clear.)
 *
 * The 14-bit values are handled similarly: 16-bit store slots are used to hold
 * them, with the two free high bits indicating independently whether the MSB
 * and the LSB have been explicitly set--as two separate MIDI messages are
 * required. If such a control is queried when only one half has been explicitly
 * set, the result is as if it had been set to the specified default value
 * before the explicit set.
 */

typedef enum { CTL1, CTL7, CTL14, RPN, NRPN } class;

/*
 * assert(does_not_apply(KNFNamespaceArgumentAgainstNamesInPrototypes,
 *    PrototypesOfStaticFunctionsWithinNonIncludedFile));
 */
static void reset_all_controllers(midictl *mc, uint_fast8_t chan);
static void enter14(midictl *mc, uint_fast8_t chan, class c,
                    uint_fast16_t key, _Bool islsb, uint8_t val);
static uint_fast16_t read14(midictl *mc, uint_fast8_t chan, class c,
                            uint_fast16_t key, uint_fast16_t dflt);
static class classify(uint_fast16_t *key, _Bool *islsb);
static midictl_notify notify_no_one;

static _Bool store_locate(midictl_store *s, class c,
                            uint_fast8_t chan, uint_fast16_t key);
/*
 * store_extract and store_update operate on the bucket most recently found
 * by store_locate on this store. That works because reentrancy of midictl
 * functions is limited: they /can/ be reentered during midictl_notify
 * callbacks, but not at other arbitrary times. We never call notify /during/
 * a locate/extract/update transaction.
 */
static uint16_t store_extract(midictl_store *s, class c,
                              uint_fast8_t chan, uint_fast16_t key);
static void store_update(midictl_store *s, class c,
                         uint_fast8_t chan, uint_fast16_t key, uint16_t value);

#define PN_SET 0x8000  /* a parameter number has been explicitly set */
#define C14MSET 0x8000 /* MSB of a 14-bit val has been set */
#define C14LSET 0x4000 /* LSB of a 14-bit val has been set */
#define C7_SET 0x80    /* a 7-bit ctl has been set */
#define C1_SET 2       /* a 1-bit ctl has been set */

/*
 *   I M P L E M E N T A T I O N     O F     T H E     S T O R E :
 *
 * MIDI defines a metric plethora of possible controllers, registered
 * parameters, and nonregistered parameters: a bit more than 32k possible words
 * to store. The saving grace is that only a handful are likely to appear in
 * typical MIDI data, and only a handful are likely implemented by or
 * interesting to a typical client. So the store implementation needs to be
 * suited to a largish but quite sparse data set.
 *
 * A double-hashed, open address table is used here. Each slot is a uint64
 * that contains the match key (control class|channel|ctl-or-PN-number) as
 * well as the values for two or more channels. CTL14s, RPNs, and NRPNs can
 * be packed two channels to the slot; CTL7s, six channels; and CTL1s get all
 * 16 channels into one slot. The channel value used in the key is the lowest
 * channel stored in the slot. Open addressing is appropriate here because the
 * link fields in a chained approach would be at least 100% overhead, and also,
 * we don't delete (MIDICTL_RESET is the only event that logically deletes
 * things, and at the moment it does not remove anything from the table, but
 * zeroes the stored value). If wanted, the deletion algorithm for open
 * addressing could be used, with shrinking/rehashing when the load factor
 * drops below 3/8 (1/2 is the current threshold for expansion), and the
 * rehashing would relieve the fills-with-DELETED problem in most cases. But
 * for now the table never shrinks while the device is open.
 */

struct midictl_store {
	uint64_t *table;
	uint64_t key;
	uint32_t idx;
	uint32_t lgcapacity;
	uint32_t used;
	kcondvar_t cv;
	kmutex_t *lock;
	bool destroy;
};

#define INITIALLGCAPACITY 6 /* initial capacity 1<<6 */
#define IS_USED 1<<15
#define IS_CTL7 1<<14

#define CTL1SHIFT(chan) (23+((chan)<<1))
#define CTL7SHIFT(chan) (16+((chan)<<3))
#define CTLESHIFT(chan) (23+((chan)<<4))

#define	NEED_REHASH(s)	((s)->used * 2 >= 1 << (s)->lgcapacity)

static uint_fast8_t const packing[] = {
	[CTL1 ] = 16, /* 16 * 2 bits ==> 32 bits, all chns in one bucket */
	[CTL7 ] =  6, /*  6 * 8 bits ==> 48 bits, 6 chns in one bucket */
	[CTL14] =  2, /*  2 *16 bits ==> 32 bits, 2 chns in one bucket */
	[RPN  ] =  2,
	[NRPN ] =  2
};

static uint32_t store_idx(uint32_t lgcapacity,
			  uint64_t *table,
                          uint64_t key, uint64_t mask);
static void store_rehash(midictl_store *s);
static void store_thread(void *);

int
midictl_open(midictl *mc)
{
	midictl_store *s;
	int error;

	if (mc->lock == NULL)
		panic("midictl_open: no lock");
	if (NULL == mc->notify)
		mc->notify = notify_no_one;
	s = kmem_zalloc(sizeof(*s), KM_SLEEP);
	if (s == NULL) {
		return ENOMEM;
	}
	s->lgcapacity = INITIALLGCAPACITY;
	s->table = kmem_zalloc(sizeof(*s->table)<<s->lgcapacity, KM_SLEEP);
	if (s->table == NULL) {
		kmem_free(s->table, sizeof(*s->table)<<s->lgcapacity);
		kmem_free(s, sizeof(*s));
		return ENOMEM;
	}
	s->lock = mc->lock;
	cv_init(&s->cv, "midictlv");
	error = kthread_create(PRI_NONE, KTHREAD_MPSAFE, NULL, store_thread,
	    s, NULL, "midictlt");
	if (error != 0) {
		printf("midictl: cannot create kthread, error = %d\n", error);
		cv_destroy(&s->cv);
		kmem_free(s->table, sizeof(*s->table)<<s->lgcapacity);
		kmem_free(s, sizeof(*s));
		return error;
	}
	mc->store = s;
	return 0;
}

void
midictl_close(midictl *mc)
{
	midictl_store *s;
	kmutex_t *lock;

	s = mc->store;
	lock = s->lock;

	mutex_enter(lock);
	s->destroy = true;
	cv_broadcast(&s->cv);
	mutex_exit(lock);
}

void
midictl_change(midictl *mc, uint_fast8_t chan, uint8_t *ctlval)
{
	class c;
	uint_fast16_t key, val;
	_Bool islsb, present;

	KASSERT(mutex_owned(mc->lock));
	KASSERT(!mc->store->destroy);

	switch ( ctlval[0] ) {
	/*
	 * Channel mode messages:
	 */
	case MIDI_CTRL_OMNI_OFF:
	case MIDI_CTRL_OMNI_ON:
	case MIDI_CTRL_POLY_OFF:
	case MIDI_CTRL_POLY_ON:
		if ( chan != mc->base_channel )
			return; /* ignored - not on base channel */
		else
			return; /* XXX ignored anyway - not implemented yet */
	case MIDI_CTRL_NOTES_OFF:
		mc->notify(mc->cookie, MIDICTL_NOTES_OFF, chan, 0);
		return;
	case MIDI_CTRL_LOCAL:
		mc->notify(mc->cookie, MIDICTL_LOCAL, chan, ctlval[1]);
		return;
	case MIDI_CTRL_SOUND_OFF:
		mc->notify(mc->cookie, MIDICTL_SOUND_OFF, chan, 0);
		return;
	case MIDI_CTRL_RESET:
		reset_all_controllers(mc, chan);
		return;
	/*
	 * Control changes to be handled specially:
	 */
	case MIDI_CTRL_RPN_LSB:
		mc-> rpn &= ~0x7f;
		mc-> rpn |=  PN_SET | (0x7f & ctlval[1]);
		mc->nrpn &= ~PN_SET;
		return;
	case MIDI_CTRL_RPN_MSB:
		mc-> rpn &= ~0x7f<<7;
		mc-> rpn |=  PN_SET | (0x7f & ctlval[1])<<7;
		mc->nrpn &= ~PN_SET;
		return;
	case MIDI_CTRL_NRPN_LSB:
		mc->nrpn &= ~0x7f;
		mc->nrpn |=  PN_SET | (0x7f & ctlval[1]);
		mc-> rpn &= ~PN_SET;
		return;
	case MIDI_CTRL_NRPN_MSB:
		mc->nrpn &= ~0x7f<<7;
		mc->nrpn |=  PN_SET | (0x7f & ctlval[1])<<7;
		mc-> rpn &= ~PN_SET;
		return;
	case MIDI_CTRL_DATA_ENTRY_LSB:
		islsb = 1;
		goto whichparm;
	case MIDI_CTRL_DATA_ENTRY_MSB:
		islsb = 0;
	whichparm:
		if ( 0 == ( (mc->rpn ^ mc->nrpn) & PN_SET ) )
			return; /* exactly one must be current */
		if ( mc->rpn & PN_SET ) {
			key = mc->rpn;
			c = RPN;
		} else {
			key = mc->nrpn;
			c = NRPN;
		}
		key &= 0x3fff;
		if ( 0x3fff == key ) /* 'null' parm# to lock out changes */
			return;
		enter14(mc, chan, c, key, islsb, ctlval[1]);
		return;
	case MIDI_CTRL_RPN_INCREMENT: /* XXX for later - these are a PITA to */
	case MIDI_CTRL_RPN_DECREMENT: /* get right - 'right' varies by param */
			/* see http://www.midi.org/about-midi/rp18.shtml */
		return;
	}

	/*
	 * Channel mode, RPN, and NRPN operations have been ruled out.
	 * This is an ordinary control change.
	 */

	key = ctlval[0];
	c = classify(&key, &islsb);

	switch ( c ) {
	case CTL14:
		enter14(mc, chan, c, key, islsb, ctlval[1]);
		return;
	case CTL7:
		present = store_locate(mc->store, c, chan, key);
		if ( !mc->accept_any_ctl_rpn ) {
			if ( !present )
				break;
			val = store_extract(mc->store, c, chan, key);
			if ( !(val&C7_SET) )
				break;
		}
		store_update(mc->store, c, chan, key,
		    C7_SET | (0x7f & ctlval[1]));
		mc->notify(mc->cookie, MIDICTL_CTLR, chan, key);
		return;
	case CTL1:
		present = store_locate(mc->store, c, chan, key);
		if ( !mc->accept_any_ctl_rpn ) {
			if ( !present )
				break;
			val = store_extract(mc->store, c, chan, key);
			if ( !(val&C1_SET) )
				break;
		}
		store_update(mc->store, c, chan, key,
		    C1_SET | (ctlval[1]>63));
		mc->notify(mc->cookie, MIDICTL_CTLR, chan, key);
		return;
	case RPN:
	case NRPN:
		return; /* won't see these - sop for gcc */
	}
}

uint_fast16_t
midictl_read(midictl *mc, uint_fast8_t chan, uint_fast8_t ctlr,
             uint_fast16_t dflt)
{
	uint_fast16_t key, val;
	class c;
	_Bool islsb, present;

	KASSERT(mutex_owned(mc->lock));
	KASSERT(!mc->store->destroy);

	key = ctlr;
	c = classify(&key, &islsb);
	switch ( c ) {
	case CTL1:
		present = store_locate(mc->store, c, chan, key);
		if ( !present ||
		    !(C1_SET&(val = store_extract(mc->store, c, chan, key))) ) {
			val = C1_SET | (dflt > 63); /* convert to boolean */
			store_update(mc->store, c, chan, key, val);
		}
		return (val & 1) ? 127 : 0;
	case CTL7:
		present = store_locate(mc->store, c, chan, key);
		if ( !present ||
		    !(C7_SET&(val = store_extract(mc->store, c, chan, key))) ) {
			val = C7_SET | (dflt & 0x7f);
			store_update(mc->store, c, chan, key, val);
		}
		return val & 0x7f;
	case CTL14:
		KASSERT(!islsb);
		return read14(mc, chan, c, key, dflt);
	case RPN:
	case NRPN:
		break; /* sop for gcc */
	}
	return 0; /* sop for gcc */
}

uint_fast16_t
midictl_rpn_read(midictl *mc, uint_fast8_t chan, uint_fast16_t ctlr,
                 uint_fast16_t dflt)
{

	KASSERT(mutex_owned(mc->lock));
	KASSERT(!mc->store->destroy);

	return read14(mc, chan, RPN, ctlr, dflt);
}

uint_fast16_t
midictl_nrpn_read(midictl *mc, uint_fast8_t chan, uint_fast16_t ctlr,
                  uint_fast16_t dflt)
{

	KASSERT(mutex_owned(mc->lock));
	KASSERT(!mc->store->destroy);

	return read14(mc, chan, NRPN, ctlr, dflt);
}

static void
reset_all_controllers(midictl *mc, uint_fast8_t chan)
{
	uint_fast16_t ctlr, key;
	class c;
	_Bool islsb, present;

	KASSERT(mutex_owned(mc->lock));

	for ( ctlr = 0 ; ; ++ ctlr ) {
		switch ( ctlr ) {
		/*
		 * exempt by http://www.midi.org/about-midi/rp15.shtml:
		 */
		case MIDI_CTRL_BANK_SELECT_MSB:		/* 0 */
		case MIDI_CTRL_CHANNEL_VOLUME_MSB:	/* 7 */
		case MIDI_CTRL_PAN_MSB:			/* 10 */
			continue;
		case MIDI_CTRL_BANK_SELECT_LSB:		/* 32 */
			ctlr += 31; /* skip all these LSBs anyway */
			continue;
		case MIDI_CTRL_SOUND_VARIATION:		/* 70 */
			ctlr += 9; /* skip all Sound Controllers */
			continue;
		case MIDI_CTRL_EFFECT_DEPTH_1:		/* 91 */
			goto loop_exit; /* nothing more gets reset */
		/*
		 * exempt for our own personal reasons:
		 */
		case MIDI_CTRL_DATA_ENTRY_MSB:		/* 6 */
			continue; /* doesn't go to the store */
		}

		key = ctlr;
		c = classify(&key, &islsb);

		present = store_locate(mc->store, c, chan, key);
		if ( !present )
			continue;
		store_update(mc->store, c, chan, key, 0); /* no C*SET */
	}
loop_exit:
	mc->notify(mc->cookie, MIDICTL_RESET, chan, 0);
}

static void
enter14(midictl *mc, uint_fast8_t chan, class c, uint_fast16_t key,
        _Bool islsb, uint8_t val)
{
	uint16_t stval;
	_Bool present;

	KASSERT(mutex_owned(mc->lock));

	present = store_locate(mc->store, c, chan, key);
	stval = (present) ? store_extract(mc->store, c, chan, key) : 0;
	if ( !( stval & (C14MSET|C14LSET) ) ) {
		if ( !((NRPN==c)? mc->accept_any_nrpn: mc->accept_any_ctl_rpn) )
			return;
	}
	if ( islsb )
		stval = C14LSET | val | ( stval & ~0x7f );
	else
		stval = C14MSET | ( val << 7 ) | ( stval & ~0x3f80 );
	store_update(mc->store, c, chan, key, stval);
	mc->notify(mc->cookie, CTL14 == c ? MIDICTL_CTLR
		             : RPN   == c ? MIDICTL_RPN
			     : MIDICTL_NRPN, chan, key);
}

static uint_fast16_t
read14(midictl *mc, uint_fast8_t chan, class c, uint_fast16_t key,
       uint_fast16_t dflt)
{
	uint16_t val;
	_Bool present;

	KASSERT(mutex_owned(mc->lock));

	present = store_locate(mc->store, c, chan, key);
	if ( !present )
		goto neitherset;

	val = store_extract(mc->store, c, chan, key);
	switch ( val & (C14MSET|C14LSET) ) {
	case C14MSET|C14LSET:
		return val & 0x3fff;
	case C14MSET:
		val = C14LSET | (val & ~0x7f) | (dflt & 0x7f);
		break;
	case C14LSET:
		val = C14MSET | (val & ~0x3f8) | (dflt & 0x3f8);
		break;
neitherset:
	case 0:
		val = C14MSET|C14LSET | (dflt & 0x3fff);
	}
	store_update(mc->store, c, chan, key, val);
	return val & 0x3fff;
}

/*
 * Determine the controller class; ranges based on
 * http://www.midi.org/about-midi/table3.shtml dated 1995/1999/2002
 * and viewed 2 June 2006.
 */
static class
classify(uint_fast16_t *key, _Bool *islsb) {
	if ( *key < 32 ) {
		*islsb = 0;
		return CTL14;
	} else if ( *key < 64 ) {
		*islsb = 1;
		*key -= 32;
		return CTL14;
	} else if ( *key < 70 ) {
		return CTL1;
	}	  	/* 70-84 defined, 85-90 undef'd, 91-95 def'd */
	return CTL7;	/* 96-101,120- handled above, 102-119 all undef'd */
		  	/* treat them all as CTL7 */
}

static void
notify_no_one(void *cookie, midictl_evt evt,
    uint_fast8_t chan, uint_fast16_t k)
{
}

#undef PN_SET
#undef C14MSET
#undef C14LSET
#undef C7_SET
#undef C1_SET

static void
store_thread(void *arg)
{
	midictl_store *s;

	s = arg;

	mutex_enter(s->lock);
	for (;;) {
		if (s->destroy) {
			mutex_exit(s->lock);
			cv_destroy(&s->cv);
			kmem_free(s->table, sizeof(*s->table)<<s->lgcapacity);
			kmem_free(s, sizeof(*s));
			kthread_exit(0);
		} else if (NEED_REHASH(s)) {
			store_rehash(s);
		} else {
			cv_wait(&s->cv, s->lock);
		}
	}
}

static _Bool
store_locate(midictl_store *s, class c, uint_fast8_t chan, uint_fast16_t key)
{
	uint64_t mask;

	KASSERT(mutex_owned(s->lock));

	if ( s->used >= 1 << s->lgcapacity )
		panic("%s: repeated attempts to expand table failed", __func__);

	chan = packing[c] * (chan/packing[c]);

	if ( CTL7 == c ) {	/* only 16 bits here (key's only 7) */
		s->key = IS_USED | IS_CTL7 | (chan << 7) | key;
		mask = 0xffff;
	} else {		/* use 23 bits (key could be 14) */
		s->key = (c << 20) | (chan << 16) | IS_USED | key;
		mask = 0x7fffff;
	}

	s->idx = store_idx(s->lgcapacity, s->table, s->key, mask);

	if ( !(s->table[s->idx] & IS_USED) )
		return 0;

	return 1;
}

static uint16_t
store_extract(midictl_store *s, class c, uint_fast8_t chan,
    uint_fast16_t key)
{

	KASSERT(mutex_owned(s->lock));

	chan %= packing[c];
	switch ( c ) {
	case CTL1:
		return 3 & (s->table[s->idx]>>CTL1SHIFT(chan));
	case CTL7:
		return 0xff & (s->table[s->idx]>>CTL7SHIFT(chan));
	case CTL14:
	case RPN:
	case NRPN:
		break;
	}
	return 0xffff & (s->table[s->idx]>>CTLESHIFT(chan));
}

static void
store_update(midictl_store *s, class c, uint_fast8_t chan,
    uint_fast16_t key, uint16_t value)
{
	uint64_t orig;

	KASSERT(mutex_owned(s->lock));

	orig = s->table[s->idx];
	if ( !(orig & IS_USED) ) {
		orig = s->key;
		++ s->used;
	}

	chan %= packing[c];

	switch ( c ) {
	case CTL1:
		orig &= ~(((uint64_t)3)<<CTL1SHIFT(chan));
		orig |= ((uint64_t)(3 & value)) << CTL1SHIFT(chan);
		break;
	case CTL7:
		orig &= ~(((uint64_t)0xff)<<CTL7SHIFT(chan));
		orig |= ((uint64_t)(0xff & value)) << CTL7SHIFT(chan);
		break;
	case CTL14:
	case RPN:
	case NRPN:
		orig &= ~(((uint64_t)0xffff)<<CTLESHIFT(chan));
		orig |= ((uint64_t)value) << CTLESHIFT(chan);
		break;
	}

	s->table[s->idx] = orig;
	if (NEED_REHASH(s))
		cv_broadcast(&s->cv);
}

static uint32_t
store_idx(uint32_t lgcapacity, uint64_t *table,
          uint64_t key, uint64_t mask)
{
	uint32_t val;
	uint32_t k, h1, h2;
	int32_t idx;

	k = key;

	h1 = ((k * 0x61c88646) >> (32-lgcapacity)) & ((1<<lgcapacity) - 1);
	h2 = ((k * 0x9e3779b9) >> (32-lgcapacity)) & ((1<<lgcapacity) - 1);
	h2 |= 1;

	for ( idx = h1 ;; idx -= h2 ) {
		if ( idx < 0 )
			idx += 1<<lgcapacity;
		val = (uint32_t)(table[idx] & mask);
		if ( val == k )
			break;
		if ( !(val & IS_USED) )
			break;
	}

	return idx;
}

static void
store_rehash(midictl_store *s)
{
	uint64_t *newtbl, *oldtbl, mask;
	uint32_t oldlgcap, newlgcap, oidx, nidx;

	KASSERT(mutex_owned(s->lock));

	oldlgcap = s->lgcapacity;
	newlgcap = oldlgcap + s->lgcapacity;

	mutex_exit(s->lock);
	newtbl = kmem_zalloc(sizeof(*newtbl) << newlgcap, KM_SLEEP);
	mutex_enter(s->lock);

	if (newtbl == NULL) {
		kpause("midictls", false, hz, s->lock);
		return;
	}
	/*
	 * If s->lgcapacity is changed from what we saved int oldlgcap
	 * then someone else has already done this for us.
	 * XXXMRG but only function changes s->lgcapacity from its
	 * initial value, and it is called singled threaded from the
	 * main store_thread(), so this code seems dead to me.
	 */
	if (oldlgcap != s->lgcapacity) {
		KASSERT(FALSE);
		mutex_exit(s->lock);
		kmem_free(newtbl, sizeof(*newtbl) << newlgcap);
		mutex_enter(s->lock);
		return;
	}

	for (oidx = 1 << s->lgcapacity ; oidx-- > 0 ; ) {
		if (!(s->table[oidx] & IS_USED))
			continue;
		if (s->table[oidx] & IS_CTL7)
			mask = 0xffff;
		else
			mask = 0x3fffff;
		nidx = store_idx(newlgcap, newtbl,
		    s->table[oidx] & mask, mask);
		newtbl[nidx] = s->table[oidx];
	}
	oldtbl = s->table;
	s->table = newtbl;
	s->lgcapacity = newlgcap;

	mutex_exit(s->lock);
	kmem_free(oldtbl, sizeof(*oldtbl) << oldlgcap);
	mutex_enter(s->lock);
}


Moroccan Argan solid wax is full of natural goodness of the finest ingredients to give your moustache a firm hold for a more modern stylish look. A light exotic Orange Blossom scent to keep your 'stache fresh.
Azbane Moustache Wax is solid and easy to apply with a firm hold.


text:
\section{Introduction}
\label{intro}
 In nuclear physics, understanding the structure of the atomic nucleus is one of the key challenges. Certain configurations of nucleons (magic numbers) in nucleus are observed to be more stable (magic nuclei). Investigating the evolution of these magic nuclei with nucleon number towards the dripline is an fascinating  area of research in  nuclear physics \cite{Holt2012}.  The study of those nuclei which are lying far from the line of $\beta$-stability play a crucial role in the understanding of nuclear physics. The production of the new isotopes \cite{Bhattacharyya2008,Stroberg2014}  in recent years has revived  the interest in nuclear structure models. This provoked the
development of radioactive ion beam (RIB) facilities and highly sensitive detectors to bring new discoveries \cite{Lunderberg2016,Gade2009}. Till today, very
little information is available about those nuclei which are lying near driplines (exotic or halo nuclei).\\
Even though the number of undiscovered bound nuclei is very large but we are able to
make single big steps by studying a few of specific nuclei. These nuclei act as milestones
in setting  new effects that arise in extreme conditions of isospin asymmetry. We have chosen Si, S, Ca and Ar nuclei for our interest as lot of research has been done on these nuclei recently \cite{Bhattacharyya2008,Stroberg2014,Thakur2019study}. The microscopic structure of these nuclei is
of particular interest for the field of  astrophysics: the neutron-rich N$\simeq$28 nuclei play an important
role in the nucleosynthesis of the heavy Ca-Ti-Cr isotopes. As these nuclides also become
experimentally accessible, they can provide a testing ground for studying exotic
nuclei. In light to middle  mass nuclei, the disappearance
of the traditional magic numbers and the appearance of new numbers far from the
stability line is one of the main issues in the nuclear structure physics of exotic nuclei. In ref. \cite{Ebata2015,Bastin2007}, the weakening of the shell closure for N = 28 has been reported  by investigating
the experimental $2^{+}$ excitation energies of Si isotopes. Similarily, the conventional
shell structure picture of magic numbers of nucleons in stable nuclides is no longer
applicable to the many exotic nuclei both in theoretical and experimental extractions  as reported in ref. \cite{Bastin2007,Campbell2006,Takeuchi2012,Stroberg2014} for $^{42}Si$ and in ref. \cite{Force2010,Kimura2013,Sarazin2000,Gaudefroy2009} for $^{42}Si$. In the chain of
Ca isotopes, experimental studies strongly mark N = 32 as a new magic number
due to the high energy of the first $2^{+}$ state in its nucleus \cite{Huck1985}\\ To study the physics of shell structure evolution in  exotic neutron-rich and magic-nuclei of Si, S, Ar and Ca isotopes  near drip lines, we
performed calculations based on the self-consistent mean-field theories: Hartree-Fock-Bogoliubov
(HFB) with the Skyrme effective interactions \cite{Perez2017,Skyrme1959}. Also, the three-dimensional relativistic Hartree-Bogoliubov (RHB) model with density dependent meson exchange (DD-ME2)
and point coupling (DD-PC1 and DD-PCX \cite{Yuksel2019}) effective interactions, are employed with separable pairing interac-
tion \cite{Nikvsic2014,Nikvsic2010,Tian2009}. The physical observables of interest are nuclear binding en-
ergies, nuclear shell closure parameters $D_{n}$(N). Results of  two-neutron separation energies
$S_{2n}$(Z,N) and differential variation in two-neutron separation energies $dS_{2n}$ (Z,N) are also presented.\\
The paper is organized as follows. A general overview of  HFB model with  effective skyrme interaction and the RHB model for density dependent meson exchange (DD-ME)
and point coupling (DD-PC) effective interactions is presented in
Section 2. In Section 3, the results of our theoretical calculations are presented and compared with the recently available experimental data. The results of the present work are summarized in Section 4.
\section{Theoretical Framework}
The presented work has been done by using the models based on   Hartree-Fock-Bogoliubov Theory \cite{Ring1980,Stoitsov2013,Perez2017} and  Relativistic Hartee Bogoliubov (RHB) Theory \cite{Nikvsic2011}. A brief discussion of these models is given below.\\
\subsection{HFB Theory}
This theory is a combination of Hartree-Fock (HF) and BCS theory. In this theory, the pairing field and the mean field are given equal footings. Details of the theory can be extracted from our previous work \cite{Thakur2019} based on the zero range Skyrme effective interactions \cite{Skyrme1959} used in the mean field part. More details can be found in ref. \cite{Ring1980,Stoitsov2013,Perez2017}. Out of different types of Skyrme forces like SLY5 \cite{Chabanat1997}, UNEDF0 \cite{Kortelainen2010}, UNEDF1 \cite{Kortelainen2012}, SKP \cite{Bartel1982}, and SKM* \cite{Dobaczewski1984} etc. that exists in the literature, we have adopted SLY5, UNEDF0 and SKM* parameterizations because of their best efficiency in reproducing the ground state properties of the nuclides of our interest. For the Skyrme forces, The HFB Energy has the form of local energy density functional \cite{Stoitsov2005,Stoitsov2013, Perez2017}. \\
In the particle-particle (pairing) channel, pairing interaction is including the density dependent delta interaction \cite{Chasman1976,Terasaki1997} of the form \cite{Dobaczewski2002},
 \begin{equation}
   V_{\delta}^{n/p}(\vec{r_{1}},\vec{r_{2}}) = V_{0}^{n/p}[1-\frac{1}{2}(\rho (r_{1}+ r_{2})/\rho_{0})^{\alpha}]\delta (r_{1}-r_{1})
 \end{equation}
 where the saturation density \cite{Terasaki1997} $\rho_{0}=0.16 fm^{-3}$.  Details can be obtained from the corresponding references.
\subsection{RHB Theory}
We have employed Covariant Relativistic self-consistent mean field models that are similar to Kohn–Sham
density functional theory. We constructed the Nuclear Density Functionals from Lagrangian
densities based on meson exchange and point coupling models. The pairing correlations
of nucleons are considered by the relativistic Hartree–Bogoliubov functional based on
quasi-particle operators of Bogoliubov transformations. These models are discussed briefly in this subsection.\\
\subsubsection{DD-ME Model}
The total Lagrangian \cite{Lalazissis2005} density of mesons exchange approximation which involves the isoscalar vector $\omega$ meson, the isoscalar scalar $\sigma$ meson
and the isovector vector $\rho$ meson can be written in the following form,
\begin{eqnarray}
\label{eq:eq1}
{\cal L}  &=& \sum_i\overline{\psi_i}(i\gamma_\mu\partial^\mu-m){\psi_i}
            +\frac{1}{2} \partial_\mu\sigma\partial^\mu\sigma - \frac{1}{2}m_{\sigma}^2 \sigma^2\nonumber\\
          &&-\frac{1}{2} \Omega_{\mu\nu}\Omega^{\mu\nu}+\frac{1}{2}m_{\omega}^2\omega_{\mu}\omega^{\mu}
            -\frac{1}{4}\vec{R}_{\mu\nu} \vec{R}^{\mu\nu}+\frac{1}{2}m_{\rho}^2 \vec{\rho}_{\mu}. \vec \rho^{\,\mu}\nonumber\\
          &&-\frac{1}{4}F_{\mu\nu}F^{\mu\nu}-g_{\sigma}\overline{\psi}\psi\sigma - g_{\omega}\overline{\psi}\gamma^{\mu}\psi\omega_{\mu}
            -g_{\rho}\overline{\psi}\vec{\tau}\gamma^{\mu}\psi.\vec{\rho}_{\mu}\nonumber\\
          &&-e\overline{\psi}\gamma^{\mu}\psi A_{\mu}.
\end{eqnarray}

Total nuclear energy density functional of RMF for lagrangian density defined by Eq.(\ref{eq:eq1})
can be extracted in r-space as function of the Dirac spinors
$\psi,\overline{\psi}$ and the meson fields $\sigma,\omega^{\mu},\vec{\rho}^{\,\mu},A^{\mu}$;
\begin{equation}
\label{eq:eq2}
 E_{RMF}[\psi,\overline{\psi},\sigma,\omega^{\mu},\vec{\rho}^{\,\mu},A^{\mu}] = \int{d^{3}r\cal H}(r).
\end{equation}
Here, $\cal{H}$(r) Hamiltonian density can be obtained from Lagrangian density as shown by Eq.(\ref{eq:eq1}).
\subsubsection{DD-PC Model}
In a complete analogous way to meson-exchange RMF phenomenology described before, a density dependent interaction Lagrangian density
of point coupling models \cite{Nikvsic2008}, which includes the  isoscalar-vector
${(\overline{\psi}\gamma_{\mu}\psi)(\overline{\psi}\gamma^{\mu}\psi)}$, isoscalar-scalar ${(\overline{\psi}\psi)}^{2}$,
and isovector-vector ${(\overline{\psi}\vec{\tau}\gamma_{\mu}\psi).{(\overline{\psi}\vec{\tau}\gamma^{\mu}\psi)}}$
four-fermion contact interactions in the isospace-space can be written as
\begin{eqnarray}
\label{eq:eq3}
 {\cal L}&=&\overline{\psi}(i\gamma.\partial-m){\psi}
 -\frac{1}{2}\alpha_S({\rho})(\overline\psi\psi)(\overline\psi\psi)\nonumber\\
 &&-\frac{1}{2}\alpha_V(\rho)(\overline\psi\gamma^\mu\psi)(\overline\psi\gamma_\mu\psi)
-\frac{1}{2}\alpha_{TV}(\rho)(\overline\psi\vec{\tau}\gamma^\mu\psi)(\overline\psi\vec{\tau}\gamma_\mu\psi)\nonumber\\
 &&-\frac{1}{2}\delta_S(\partial_\nu\overline{\psi}\psi)(\partial^{\nu}\overline{\psi}\psi)
 -e\overline{\psi}\gamma.A\frac{1-\tau_3}{2}\psi.
 \end{eqnarray}
 The total nuclear energy density functional of RMF for the Point-Coupling Model can written as,
\begin{equation}
\label{eq:eq4}
 E_{RMF}[{\psi},\overline{\psi},A_{\mu}] = \int d^{3}r{\cal H}(r),
\end{equation}
 where $\cal{H}$(r) Hamiltonian density can be obtained from Lagrangian Density defined by Eq.(\ref{eq:eq3}).
 \subsubsection{RHB Approximation with a separable pairing interactions}
 The relativistic Hartree-Bogoliubov model \cite{Vretenar2005,Meng2006} provides an unified description of particle-particle (pp) and particle-hole
 (ph) correlations on SCMF level by using the averages of two potentials.
 The quasiparticle operators \cite{Ring1997} are explained by unitary Bogoliubov transformation of the single-nucleon creation and annihilation operators as,
\begin{equation}
\label{eq:eq5}
 \alpha^\dagger_a = \sum_n U_{nl} c^\dagger_n + V_{nl}c_n,
\end{equation}
The relativistic Hartree-Bogoliubov energy density functional can be written as,
\begin{equation}
\label{eq:eq6}
 E_{RHB}[\rho,k] = E_{RMF}[\rho] + E_{pair}[k],
\end{equation}
The pairing part of the relativistic Hartree-Bogoliubov functional is given as,
\begin{equation}
\label{eq:eq9}
 E_{pair}[k] = \frac{1}{4} \sum_{n_1n'_1}\sum_{n_2n'_2}k^*_{n_1n'_1} \left<{n_1n'_1\big|V^{PP}\big|n_2n'_2}\right>k_{n_2n'_2},
\end{equation}

The two body interaction matrix elements of the pairing field $\Delta$ have been computed by using a separable form of Gogny force
introduced for hybrid RHB calculations \cite{Gonzalez1996} for spherical and deformed nuclei \cite{Nikvsic2014}.
 The pairing energy in the nuclear ground state is given as \cite{Nikvsic2014},
\begin{equation}
\label{eq:eq15}
 E_{pair} = -G\sum_{N} P^{*}_{N}P_{N}.
\end{equation}
The details can be found in the corresponding references.
\section{Results And Discussions}
We present our results for Binding Energies,
shell closure parameter $D_{n} (N)$ and the differential variation of the two-neutron separation energy $dS_{2n} (Z, N )$ for the isotopic chains of Si, S, Ar and Ca nuclides. The theoretical calculations  are carried out within the framework of HFB theory and RHB theory discussed briefly in the previous section.  HFB Calculations are carried out for different skyrme parameterizations by using the HFB code \cite{Perez2017} with harmonic oscillator basis. RHB calculations are computed with DIRHB code \cite{Nikvsic2014}.
\subsection{Binding Energies}
Binding Energy is the underlying property of the nuclides which provides the deep insights about the nuclear structure. Binding Energy refers to that energy which when given to the nuclei, break it apart into its constituent nucleons. We have computed the theoretical results of  Binding Energy per nucleon (BE/A) for  the isotopic chains of the light to middle weight nuclides of Si, S, Ar and Ca. Theoretical  Computation is done with the Relativistic-Hartree-Bogoliubov and Hartree-Fock-Bogoliubov Nuclear Density Functional Theory. Figure (\ref{Fig1} and \ref{Fig2}) represents the variation of the quantity $\Delta E$ against the mass number A of particular nuclides. The quantity $\Delta E$ is defined as the difference between the Experimental Binding Energy \cite{Wang2017} per nucleon and the Theoretical Binding Energy per nucleon.
\begin{equation}
 \label{eq:eq101}
 \Delta E = \left(\frac{BE}{A}\right)_{Exp}- \left(\frac{BE}{A}\right)_{The}
 \end{equation}
 The theoretical results of binding
energy shown in Figure (\ref{Fig1}) are calculated by using the relativistic nuclear density functional based on
meson exchange model parameters DD-ME2 \cite{Lalazissis2005} (leftmost panel) and point coupling model parameters  DD-PC1 \cite{Yuksel2019} (middle panel)  and DD-PC1 \cite{Nikvsic2008} (right most panel).
Figure (\ref{Fig2}) represents our theoretical estimates of BE/A extracted with the Hartree-Fock-Bogoliubov Theory with Skyrme parameterizations UNEDF0 \cite{Kortelainen2010} \cite{Chabanat1997} (lefmost panel), SLY5 (middle panel) and SKM* \cite{Dobaczewski1984} (rightmost panel). Our theoretical results are matching reasonably with the experimental results available \cite{Wang2017}. Negative values of the quantity $\Delta E$ defined in equation (\ref{eq:eq101}) shows that the theoretical estimates just exceeds the experimental data extracted from ref. \cite{Wang2017}. With the Relativistic-Hartree-Bogoliubov theory shown in Figure (\ref{Fig1}), the absolute value quantity $\Delta E$ varies from
0.01 to 0.26 for Si isotopes, 0.01 to 0.25 for S isotopes, 0.01 to 0.17 for Ar isotopes and 0.01 to 0.11 for the Ca isotopes. Absolute value of  $\Delta E$ varies from 0.01 to 0.22 for Si isotopes, 0.01 to 0.23 for S isotopes, 0.01 to 0.21 for Ar isotopes and 0.01 to 0.15 for the Ca isotopes when the results are calculated with Hartree-Fock-Bogoliubov theory based on skyrme parameterizations as shown in Figure (\ref{Fig2}).
\subsection{Single-neutron separation energy and Shell closure parameter}
Single-neutron separation energy denoted as $S_{n}(Z,N)$ (Z=proton number and N=neutron number) is an important property of nuclei which acts as probe to identify the signature of shell closures or its collapse by investigating the recently proposed physical quantity $D_{n}$(N) \cite{Brown2013}.
The quantity $S_{n}(Z,N)$ is defined as
\begin{equation}
\label{eq:Sn}
 S_n(Z,A) = B(Z,N)-B(Z,N-1)
\end{equation}
where $B(Z,N)$ represents the binding energy of the nuclei with atomic number Z and neutron number N. The physical quantity D$_{n}$(Z,A) representing the shell closure
is calculated using the formula \cite{Brown2013},
\begin{equation}
\label{eq:Dn}
D_n(Z,N) = {(-1)}^{N+1}[S_n(Z,N+1)-S_n(Z,N)]
\end{equation}
In Figures(\ref{Fig3},\ref{Fig4},\ref{Fig5}, and \ref{Fig6}), we present our results of Single-neutron separation energy S$_{n}$(Z,N) in MeV plotted as a function of neutron number N, for the chain of exotic isotopic nuclei in Si, S, Ar and Ca. The theoretical results are extracted with RHB and HFB model based on different parameterizations mentioned in the individuals Figures and their respective captions. The experimental
values of S$_{n}$(Z,N) are computed from the data of single neutron separation energies from \cite{Wang2017}. Our estimates of $S_n$(Z,N) are in good agreement with the experimental ones. Figures(\ref{Fig7},\ref{Fig8},\ref{Fig9}, and \ref{Fig10}), represents our results of  theoretical shell closures D$_{n}$(Z,N) in MeV plotted as a function of neutron number N, for the isotopic chain of nuclei in Si, S, Ar and Ca (see caption of figures for required details).
As reported in ref. \cite{42}, the isotopes of Si varying from $^{28}$Si
to $^{34}$Si, exhibit relatively high E$(2^+_1) = 3.33$ MeV energies in $^{34}$Si nucleus which indicates  the Z = 14 as the new subshell gap with N = 20. However, it is also interesting to see that the magnitudes
of  E$(2^+_1)$ energies gradually decreases from 1.4 Mev to 0.74 MeV in $^{36}$Si to $^{42}$Si. This suggest and indicate the collapse of the N = 28 shell closure in $^{42}$Si nucleus \cite{Bastin2007}.
In the left panels of Figures (\ref{Fig7} and \ref{Fig8}), we observe the
peaks in the D$_{n}$(Z,N) at neutron number, N = 14 and 20, which gives the presence of shell closures. Afterwards, there is decrease in values of
D$_{n}$(Z,N)  upto N = 30. In right panels of Figures (\ref{Fig7} and \ref{Fig8} ),  we present the results of D$_{n}$(Z,N) for the isotopic chain of Sulphur.
We observed  peaks in theoretical  D$_{n}$(Z,N) values at neutron numbers, N = 14 and 20 and, a small peak at N =  28 showing the weak shell closures. D$_{n}$(Z,N) val
ues Extracted experimentally \cite{Wang2017} represent peak at N = 20 only with decrease  in D$_{n}$(Z,N) values before and after
N = 20. The experimentally extracted D$_{n}$(Z,N) values has a peak at N = 16 in $^{32}$S nucleus signifies the sub-shell gap at neutrons filled
1s$_{1/2}$ orbit in 0d-1s Shell orbitals.  Recent experimental measurements \cite{Gaudefroy2009}
of neutrons in $\nu 1p_{3/2}$ orbitals in ground state of $^{44}$S nucleus in $0f-1p$ valence space fortifies the collapse of N = 28 shell gap.
The Figures (\ref{Fig9} and \ref{Fig10}) represents the variation
in D$_{n}$(Z,A) as a function of neutron number for the isotopic chain Argon (shown in left panels) and Calcium (shown in right panels).
The theoretical and experimentally extracted D$_{n}$(Z,A) values are exhibiting peaks at neutron numbers N =  20 and 28 in the isotopes
of Argon and Calcium.
These studies suggest new shell structure at Z or N = 14 due to filled 0d$_{5/2}$ orbit of $0d_{5/2}$ - 0d$_{3/2}$ spin-orbit partner
in $^{28}$Si, $^{30}$S, $^{32}$Ar and $^{34}$Ca nuclei in ground state. Experimental data also fortifies our theoretical estimates.
\subsection{Differential Variation of Two Neutron Separation Energy}
Just like the Single-neutron separatin energy $S_{n}$(Z,N) defined in Equation \ref{eq:Sn}, the another term two-neutron separation energy $S_{2n}$(Z,N) is equally important. In the given atomic mass region, the signature for the appearance and collapse of shell closures is readily identified by examining the recently proposed physical quantity $dS_{2n}$(Z,N) \cite{Bhuyan2015} based on two-neutron separation energies. The two-neutron separation energy is defined as the energy required to remove two neutrons from a nucleus. It is calculated by using the formula,
\begin{equation}
\label{eq:S2n}
 S_{2n}(Z,N) = [B(Z,N) - B(Z,N-2)],
\end{equation}
We have  calculated theoretically the results of  S$_{2n}$(Z,N) for even-even isotopes of Si, S, Ar and Ca with the help of binding energies B(Z,N) and B(Z,N-2). Comparison of theoretical results with the experimental data \cite{Wang2017} is also done in our studies.
In the Figures (\ref{Fig11} and \ref{Fig12}), we compared the theoretical  and experimental results for two neutron separation energy S$_{2n}$(Z,N)
as a function of neutron number N for the isotopes of Silicon (left panels) and Sulphur (right panels).
In the left panels of Figures (\ref{Fig11} and \ref{Fig12}), we observed a substantial drop in S$_{2n}$(Z,N) values at $^{28}$Si and $^{34}$Si  signaling the N = 14 and 20 shell structure in isotopes of Silicon.
In right panels of Figures (\ref{Fig11} and \ref{Fig12}), for the isotopes of Sulphur, we observed abrupt decrease in S$_{2n}$(Z,N) at $^{30}$S, $^{36}$S
and $^{44}$S suggesting N = 14, 20 and 28 shell gaps. In Figures (\ref{Fig13} and \ref{Fig14}), we present the results for S$_{2n}$(Z,N) for isotopic chain of Argon      (left panels) and Calcium (right panels). We observed a substantial decrease in S$_{2n}$(Z,N) at $^{32}$Ar, $^{38}$Ar and $^{46}$Ar, suggesting shell gaps at N = 14, 20 and 28. However, in the case of Calcium, N = 14, 20 and 28 shell structure effects are observed at
$^{34}$Ca, $^{40}$Ca and $^{48}$Ca nuclei, respectively.
These substantial decreases in S$_{2n}$(Z,N) values in Figures (\ref{Fig11},\ref{Fig12},\ref{Fig13}   and  \ref{Fig14}) indicate that the energy required to remove two neutrons from
(Z, N + 2) nucleus is much smaller than the energy required to remove two neutrons from (Z, N) nucleus,  where N represents the number of neutrons at
nuclear magic numbers .

Furthur, in order to get much deeper insight of two neutron separation energies S$_{2n}$(Z,N),
the differential variation of the two-neutron separation energies dS$_{2n}$(Z,N) are also calculated by us using the formula  \cite{Bhuyan2015},
\begin{equation}
\label{eq:ds2n}
dS_{2n}(Z,N) = \left|\frac{S_{2n}(Z,N+2)-S_{2n}(Z,N)}{2}\right|.
\end{equation}
We have theoretically calculated dS$_{2n}$(Z,N) and then compared with experimental data of S$_{2n}$(Z,N) \cite{Wang2017}.
In Figures (\ref{Fig15},\ref{Fig16},\ref{Fig17} and  \ref{Fig18}), we present our results of differential variation in two neutron separation energies dS$_{2n}$(Z,N) for the
even-even isotopes of Si, S, Ar and Ca, plotted against neutron number N.  It is very obvious and  intriguing to note that the trend of peaks in the $dS_{2n}(Z,N)$ values is similar to that of the discontinuities in S$_{2n}$(Z,N) values for the respective isotopic
chains of nuclides as shown in Figures (\ref{Fig11}, \ref{Fig12}, \ref{Fig13} and \ref{Fig14}).  The sharp decrease in the magnitude of dS$_{2n}$(Z,N) values on either side of a shell gap
is also unison with other physical
observables that are already discussed in previous section for shell closures.
 In the upper panels of Figures (\ref{Fig15} and \ref{Fig16}), for the isotopic chain of Silicon, the values of dS$_{2n}$(Z,N) have peaks at N = 14 and 20 depicting the neutron shell closures and suggesting disappearance of N = 28 magic number in $^{42}$Si nucleus which substantiate the experimental investigations reported in ref. \cite{Bastin2007}.
 In the lower panel of Figures (\ref{Fig15} and \ref{Fig16}), we  presented the
 variation of dS$_{2n}$(Z,N) values in the isotopic chain of Sulphur, indicate peaks at N = 14 and 20. In this case, there is small peak in
 dS$_{2n}$(Z,N) value observed in the $^{44}$S nucleus indicating shell gap at N = 28. It have been observed from experimental results \cite{42} that
 the shell closure at N = 14 is also substantiated by the  of E$(4^+_1)$ energies, 5.17 MeV at N = 14 in $^{30}$S decreasing to E$(4^+_1) = 4.46$ MeV
 at N = 16 in $^{32}$S nucleus. In Figures (\ref{Fig17} and  \ref{Fig18}), the peaks in the magnitude of dS$_{2n}$(Z,N) are observed at neutron number N =  20 and 28 for both isotopic chains of Argon and  Calcium.
\section{Conclusions}
We have reached to some of the striking conclusions based upon our theoretical estimations presented in this paper by employing Nuclear Density Functionals based on Relativistic-Hartree-Bogoliubov (RHB) and Hartree-Fock-Bogoliubov (HFB) theory with the different parameterizations discussed briefly in the previous sections.
The shell structure of even-even isotopes in Si, S, Ar and Ca has been extensively analysed. The
shell closure parameter $D_{n} (N)$ and the differential variation of the two-neutron separa-
tion energy $dS_{2n} (Z, N )$ are theoretically calculated and compared with the recently availabe experimental data. Our theoretical Calculations are reproducing the experimental data quite well with the tolerable discrepencies.\\
We presented the variation in binding energy per nucleon $\Delta E$ for the exotic nuclei of Si, S, Ar and Ca. The absolute value of quantity $\Delta E$ varies from
0.01 to 0.0.26 for Si isotopes, 0.01 to 0.25 for S isotopes, 0.01 to 0.17 for Ar isotopes and 0.01 to 0.11 for the Ca isotopes as calculated with RHB theory whereas Absolute value of  $\Delta E$ varies from 0.01 to 0.22 for Si isotopes, 0.01 to 0.23 for S isotopes, 0.01 to 0.21 for Ar isotopes and 0.01 to 0.15 for the Ca isotopes when the results are calculated with HFB theory. Also, the presented theoretical extractions of shell structure properties and its interpretation with experimental data  suggests the signature of shell closure at N = 14 and
20 in case of Si, N = 14, 20 and 28 in S and N=20 and 28 in  Ar and Ca isotopes.
\ack{Virender Thakur would like to thank Himachal Pradesh University for providing computational facilities and  DST-
INSPIRE (Govt. of India) for providing financial assistance (JRF/SRF scheme) and anonymous
refree(s) for  extremely thorough inspection of the manuscript and helpful comments.}
\section*{References}
 \bibliographystyle{iopart-num}

redpajama_set_name: RedPajamaArXiv


text:
Q: Show Items One After Another in ListView I have a ListView
<ListView
        android:layout_width="match_parent"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:layout_height="match_parent"
        android:id="@+id/listView1"/>

Here i'm adding some item using my custom adapter.
CustomAdapter adapter = new CustomAdapter(this, myArrayList);
ListView listView = (ListView) findViewById(R.id. listView1);
listView.setAdapter(adapter);

In my custom Adapter, i used also a custom layout, where only one textVeiw:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingBottom="8dp"
    android:paddingTop="8dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/custom_textView"/>
</LinearLayout>

Everything is good. Working properly. The textView displaying texts line by line.
Example:
<TextView>
<TextView>
<TextView>

and so on..
But, i don't want to display text line by line. i want to display text one immediately after another.
Like:
<TextView><TextView><TextView><TextView><TextView><TextView>

but it'll take a new line when it reaches the end of its parent or device screen.
Thanks in advance.

A: I think you want horizontal list view instead of vertical list view.
Following Step are there :
Implement Recyclerview in your layout (XML) "your_activity.xml" file.
<android.support.v7.widget.RecyclerView
    android:id="@+id/horizontalRecyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite">
</android.support.v7.widget.RecyclerView>

Implement List Adapter Item Layout (XML) "item_list.xml" file.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:id="@+id/lnrItem"
android:layout_width="match_parent"
android:layout_height="wrap_content">

        <TextView
            android:id="@+id/txtMessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Name"
            android:textColor="@color/colorWhite"
            android:textSize="14sp" />

</LinearLayout>

Implement Custome List Adapter "CustomListAdapter.java"
public class CustomListAdapter extends RecyclerView.Adapter< CustomListAdapter.ViewHolder> { private Activity context; private ArrayList<String> list = new ArrayList<String>();
public CustomListAdapter(Activity context, ArrayList<String> list) {
this.context = context;
this.list = list;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);

return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
try {

holder.getTxtMessage().setText(list[position]);

} catch (Exception e) {
    e.printStackTrace();
}
}

@Override
public int getItemCount() {
return list.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

private TextView txtMessage;

public ViewHolder(View view) {
    super(view);
    txtMessage = (TextView) view.findViewById(R.id.txtMessage);
}

public TextView getTxtMessage() {
    return txtMessage;
}

}
Set Adapter in Activity "YourActivity.java" in OnCreate Method.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_activity);
RecyclerView horizontalRecyclerView = (RecyclerView) findViewById(R.id.horizontalRecyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); horizontalRecyclerView.setLayoutManager(linearLayoutManager);
 ArrayList<String> list = new ArrayList<>();
    list.add("First TextView ");
    list.add("Second TextView ");
    list.add("Third TextView ");
    list.add("Four TextView ");
    list.add("Fifth TextView ");

private CustomListAdapter adapter = new CustomListAdapter(YourActivity.this, list); horizontalRecyclerView.setAdapter(topMemberAdapter);
}

redpajama_set_name: RedPajamaStackExchange


Copies of a detailed guide instructing al-Qaeda extremists in how to use a surface-to-air missile capable of taking down a commercial aeroplane have been found in Mali.
The 26-page document in Arabic, recovered by The Associated Press in a building that had been occupied by al-Qaeda in the Islamic Maghreb in Timbuktu, strongly suggests the group now possesses the SA-7 surface-to-air missile, known to the Pentagon as the Grail, according to terrorism specialists.
It confirms that the al-Qaeda cell is actively training its fighters to use these weapons, also called man-portable air-defense systems, or MANPADS, which likely came from the arms depots of late Libya dictator Muammar Gaddafi.
"The existence of what apparently constitutes a 'Dummies Guide to MANPADS' is strong circumstantial evidence of al-Qaeda in the Islamic Maghreb having the missiles," said Atlantic Council analyst Peter Pham, a former adviser to the United States' military command in Africa and an instructor to US Special Forces.
"Why else bother to write the guide if you don't have the weapons? ... If AQIM not only has the MANPADS, but also fighters who know how to use them effectively," he added, "then the impact is significant, not only on the current conflict, but on security throughout North and West Africa, and possibly beyond."
This is not the first al-Qaeda-linked group thought to have MANPADS - they were circulating in Afghanistan and Iraq, and a terror cell in Somalia recently claimed to have the SA-7 in a video.
But the US desperately wanted to keep the weapons out of the hands of al-Qaeda's largest affiliate on the continent, based in Mali. In the spring of 2011, before the fighting in Tripoli had even stopped, a US team flew to Libya to secure Gaddafi's stockpile of thousands of heat-seeking, shoulder-fired missiles.
"The MANPADS were specifically being sought out," said Peter Bouckaert, emergencies director for Human Rights Watch, who catalogued missing weapons at dozens of munitions depots and often found nothing in the boxes labeled with the code for surface-to-air missiles.
The manual is believed to be an excerpt from a terrorist encyclopedia edited by Osama bin Laden. It adds to evidence for the weapon found by French forces during their land assault in Mali earlier this year, including the discovery of the SA-7's battery pack and launch tube, according to military statements and an aviation official.
The knowledge that the terrorists have the weapon has already changed the way the French are carrying out their five-month-old offensive in Mali. They are using more fighter jets rather than helicopters to fly above its range of 1.4 miles (2.3 kilometres) from the ground, even though that makes it harder to attack the jihadists. They are also making cargo planes land and take off more steeply to limit how long they are exposed, in line with similar practices in Iraq after an SA-14 hit the wing of a DHL cargo plane in 2003.
And they have added their own surveillance at Mali's international airport in Bamako, according to two French aviation officials and an officer in the Operation Serval force.
"There are patrols every day," said the French officer. "It's one of the things we have not entrusted to the Malians, because the stakes are too high."
First introduced in the 1960s in the Soviet Union, the SA-7 was designed to be portable. Not much larger than a poster tube, it can be packed into a duffel bag and easily carried. It is also affordable, with some SA-7s selling for as little as £3,250.
Since 1975, at least 40 civilian aircraft have been hit by different types of MANPADS, causing about 28 crashes and more than 800 deaths around the world, according to the US Department of State.
The SA-7 is an old generation model, which means most military planes now come equipped with a built-in protection mechanism against it. But that is not the case for commercial planes, and the threat is greatest to civilian aviation.
An SA-7 tracks a plane by directing itself toward the source of the heat, the engine. It takes time and practise, however, to fire it within range. The failure of the jihadists in Mali so far to hit a plane could mean that they cannot position themselves near airports with commercial flights, or that they are not yet fully trained to use the missile.
"This is not a 'Fire and forget' weapon," said Bruce Hoffman, director of the Center for Security Studies at Georgetown University. "There's a paradox here. One the one hand it's not easy to use, but against any commercial aircraft there would be no defences against them. It's impossible to protect against it. ... If terrorists start training and learn how to use them, we'll be in a lot of trouble."
In Timbuktu, SA-7 training was likely part of the curriculum at the 'Jihad Academy' housed in a former police station, said Jean-Paul Rouiller, director of the Geneva Center for Training and Analysis of Terrorism, one of three experts who reviewed the manual for AP. It is located less than three miles (five kilometres) from the Ministry of Finance's Budget Division building where the manual was found.
Neighbours say they saw foreign fighters running laps each day, carrying out target practice and inhaling and holding their breath with a pipe-like object on their shoulder. The drill is standard practice for shoulder-held missiles, including the SA-7.
As the jihadists fled ahead of the arrival of French troops who liberated Timbuktu on Jan 28, they left the manual behind, along with other instructional material, including a spiral-bound pamphlet showing how to use the KPV-14.5 anti-aircraft machine gun and another on how to make a bomb out of ammonium nitrate, among other documents retrieved by the AP. Residents said the jihadists grabbed reams of paper from inside the building, doused them in fuel and set them alight. The black, feathery ash lay on top of the sand in a ditch just outside the building's gate.
"They just couldn't destroy everything," said neighbour Mohamed Alassane. "They appeared to be in a panic when the French came. They left in a state of disorder."
Its pages are numbered 313 through 338, suggesting they came from elsewhere. Mathieu Guidere, an expert on Islamic extremists at the University of Toulouse, believes the excerpts are lifted from the Encyclopedia of Jihad, an 11-volume survey on the craft of war first compiled by the Taliban in the 1990s and later codified by Osama bin Laden.
Bin Laden, who led a contingent of Arab fighters in Afghanistan at the time, paid to have the encyclopedia translated into Arabic, according to Mr Guidere, author of a book on al-Qaeda's North African branch.
However, the cover page of the manual boasts the name of al-Qaeda in the Islamic Maghreb.
"It's a way to make it their own," said Mr Guidere. "It's like putting a logo on something. ... It shows the historic as well as the present link between al-Qaeda core and AQIM."
Bin Laden later assembled a team of editors to update the manual, put it on CD-ROMs and eventually place it on the Internet, in a move that lay the groundwork for the globalization of jihad, according to terrorism expert Jarret Brachman, who was the director of research at the Combating Terrorism Center when the al-Qaeda encyclopedia was first found.
N.R. Jenzen-Jones, an arms expert in Australia, confirmed that the information in the manual in Timbuktu on the missile's engagement range, altitude and weight appeared largely correct.
He cautioned though that the history of the SA-7 is one of near-misses, specifically because it takes training to use.
"Even if you get your hands on an SA-7, it's no guarantee of success," he said. "However, if someone manages to take down a civilian aircraft, it's hundreds of dead instantly. It's a high impact, low-frequency event, and it sows a lot of fear."


Yorkshire Building Society has launched a new service allowing customers to receive financial advice by video conferencing.
The new service, which they claim is a first from a major UK building society, means that customers can get investment advice on how to make their money work for them from the comfort of their own home.
Appointments are available between 9am and 7pm Monday to Friday.
The service will allow financial advisers to give customers at-home advice and share documents, via any tablet, laptop or desk-top computer.
"We are very proud that, along with our advice provider Legal & General, we are one of the first UK financial services institutions to offer this comprehensive service, helping our customers fit gaining high-quality financial advice into their every-day lives.
"We know that many of our customers have very busy lives and it can be difficult to make time for investment advice due to their existing commitments. Technology has the power to instantly connect customers with a fully-qualified financial adviser – we want to ensure that making your money work for you is as easy as making a video call on a tablet.


text:
Q: Pure C code + C compiler = cross platform code? If I have a code, fully written in C, using only libraries written also in C, and I have a compiler, like GCC, supporting many platforms, can I be sure that this code will run for any architecture supported by compiler? For example, can I take Flex or CPython , compile and use it, let say, at AVR?
Edit:

*

*compile and run, of course

*no GUI

A: No, it's hard to say without seeing your code. For example, if you depend on that long is 4 bytes, it won't be right on 64bit machine.

A: source code portability and compilability should be granted in your scenario.
things might change if you would use external libraries or GUI frameworks which depend on the specific OS but this is not your case you you should be good to go.

A: "fully written in C" doesn't guarantee in any way that the code is portable. A portable compiler like GCC abstracts away the CPU architecture details, but the moment you use a system call specific to a particular OS, your code becomes unportable unless you surround the fragment in an #ifdef WHATEVER_OS. This is why standards like POSIX have emerged to unify the system call interface across different operating systems.
Limiting your code to the POSIX-defined system calls and using a POSIX-compliant operating system should generally stop you from worrying, with little exceptions.

A: The response is "they'll probably compile but there is a possibility they won't run". The problem is the resources available to you. Let's say you program for your 2gb machine. Will your program run on a 256mb machine? Could a DOS machine run CPython? But they'll probably compile :-) (technically you could have a program (the code) too much big to fit in the address space of the target machine. If your .exe/.out is 18mb and the target machine has an address space of 16mb, you can't even compile)

A: Simply using C doesn't guarantee that the code is portable to any platform that supports C. There's a boat-load of traps to step into, like dependence on type-sizes, endianess or undefined behavior.
In reality, a non-trivial program is rarely portable to much except the platforms you have actually verified that it runs on. But you can certainly take measures to try and decrease the chance of problems, though.


Remember when Microsoft finally said "farewell" to Windows XP last year, officially ending support for the venerable operating system and forcing many practices and companies to upgrade to Windows 7 or 8? Well, Microsoft is cleaning house again. This time they're sending their oldest server operating system, Windows Server 2003, to the retirement home.
Every time a software company, particularly Microsoft, ends support for a product, it sends a wave of panic across small and large businesses using that product. By ending support for Windows Server 2003, Microsoft is essentially saying that it will no longer issue updates or security patches. Over time (but not much time), hackers, spyware, and malware expose and exploit vulnerabilities in the software. Without updates from Microsoft to stave off these exploits, your systems and data are at risk. Protecting PHI is huge HIPAA concern.
Any HIPAA-covered entity—that means providers like you—currently running Windows Server 2003 must upgrade on or before July 14, 2015, to a supported Windows Server operating system, to remain HIPAA compliant.
If your practice maintains an in-house server for (OfficeMate/ExamWRITER or AcuityLogic), you should consult your local IT professional to determine if you need to upgrade and, if so, make plans to upgrade to Windows Server 2008 or Server 2012 as soon as possible.
If your practice contracts a firm to host your server in the cloud, check their website or contact them to determine which server operating system your practice is using.
Click the Windows Start menu.
The General tab, System section lists your server operating system. If it says, Windows Server 2003, it's time to upgrade.


New bicycle battery for, among others, battery type Zhenlong ZL1010F (ZL1010-F) and Phylion type XH370-10J (XH370 10J).
We also supply this battery in a capacity of 11Ah!
This battery is used on bicycles from ECO Cruiser, Keola, Matra bike, Aldi Citystar, DALCON, Eco Traveler, E-4motion Maxi and Tucano.
Among others suitable for battery type Zhenlong ZL1010F (ZL1010-F), Phylion type XH370-10J (XH370 10J).


text:
February 11, 2011 December 15, 2021 travsd
The Mills Brothers: Made it Big in Radio
Today (in 1882) is the birthday of John Mills, Sr. – -the FATHER of the Mills Brothers. It might be a stretch to make that a peg for this post but for the fact that when John Mills, Jr. died in 1934, the father joined the act thus becoming a "brother".
The father was well qualified to join the act. It was his barbershop quartet, and his wife's abilities as an opera singer, that had inspired the boys to begin singing as children. The brothers began in amateur shows, and came up with an amusing angle that made audiences remember them — each member of the group could do an impression of a different brass instrument. In the mid 1920s they got on local radio (they were from Piqua, Ohio) and a record deal emerged. They were stars of CBS radio before they got their first vaudeville gig, which was at the Palace Theatre in 1932…just in time for the very end of vaudeville. But it was just the beginning for the Mills Brothers. Hollywood films and international tours followed. Hit songs for them included "Paper Doll" , "You Always Hurt the One You Love", "It Don't Mean a Thing", and "Lazy Bones".
Various incarnations of the Mills Brothers remained in circulation (with increasingly fewer genuine Mills Brothers) through the 1980s. Indeed a version of "the Mills Brothers" continues to this day, with a grandson of one of the original brothers as the only real connection.
To find out more about the history of vaudeville, including acts like the Mills Brothers, please consult my critically acclaimed book No Applause, Just Throw Money: The Book That Made Vaudeville Famous, available at Amazon, Barnes and Noble, and many other fine establishments.
African American Interest
Brother Acts
Family Acts
Stars of Vaudeville
Vaudeville etc.
Mills Brothers
You Always Hurt the One You Love
Published by travsd
Writer and performer Trav S.D. (www.travsd.com) is best known for his books "No Applause, Just Throw Money: The Book That Made Vaudeville Famous" (2005) and "Chain of Fools: Silent Comedy and Its Legacies from Nickelodeons to Youtube" (2013). He has written for the NY Times, the Village Voice, American Theatre, Time Out NY, Reason, the Villager and numerous other publications. Trav has been in the vanguard of New York's vaudeville and burlesque scenes since 1995 when he launched his company Mountebanks, presenting hundreds of acts ranging from Todd Robbins to Dirty Martini to Tammy Faye Starlite to the Flying Karamazov Brothers. He has directed his own plays, revues and solo pieces at such venues as Joe's Pub, La Mama, HERE, Dixon Place, Theater for the New City, the Ohio Theatre, the Brick, and 6 separate shows in the NY International Fringe Festival. In 2014 he produced and directed the smash-hit "I'll Say She Is", the first ever revival of the Marx Brothers hit 1924 Broadway show in the NY International Fringe Festival. View all posts by travsd
Previous Kalmar and Ruby: The American Gilbert and Sullivan
Next Max Baer: Jethro's Boxing Dad
LeVar Ravel (@LeVarRavel) says:
For a fun example of how these old vaudeville stars can transcend time & technology–I discovered the Mills Brothers via a computer game made in 2002!
"Mafia" is set in the 1930s and features a lot of vintage pop and jazz, including the Mills Brothers singing "Chinatown, My Chinatown", "Caravan" and others.
douglas fraser says:
Before the Mills Brothers began impersonating instruments ( and they were wonderful at it) they worked as a kazoo quartet with the father on guitar.
Prof. Douglas Fraser

redpajama_set_name: RedPajamaCommonCrawl


text:
package com.luojilab.component.componentlib.applicationlike;

/**
 * Created by mrzhang on 2017/6/15.
 */

public interface IApplicationLike {

    void onCreate();

    void onStop();
}

redpajama_set_name: RedPajamaGithub


text:
HARRISON, VS GIRLS NO. 2 IN POLLS
Harrison Daily Times | 1/8/2020
PHOTO CREDIT: Jeff Brasel
NORTH LITTLE ROCK — The first Arkansas Sports Media High School Basketball Poll was released this week and three Heart of the Ozark teams are ranked.
Harrison received 21 points in the overall poll. It was enough to earn the Lady Goblins a tie for tenth place in the poll with Little Rock Christian.
Harrison is ranked No. 2 in the Class 4A poll as is Valley Springs in the Class 3A poll.
Bergman was ranked No. 5 in Class 3A.
The polls were divided as who is the No. 1 team in the state. Six different schools received first place votes from the panel of media reporters that work in print, radio and television.
Fort Smith Northside received the most first-place votes and that led the Lady Grizzlies to the No. 1 overall spot.
Bentonville, who received three first-place votes, was second overall just three points behind Fort Smith Northside.
Conway, received two first place votes, and was ranked No. 3 overall.
Nettleton was the first non-Class 6A school in the rankings. The Lady Raiders received one first-place vote and was No. 4.
Batesville, who also received a first place vote was No. 5 overall. The Lady Pioneers are the defending Class 4A champions.
Cabot is sixth, Fayetteville is seventh and Greenwood is No. 8.
Vilonia checked in at No. 9 while Harrison shared the tenth spot with Little Rock Christian.
Northside was the No. 1 team in 6A with Bentonville, Conway, Cabot and Fayetteville following in order.
After Nettleton at the top of Class 5A, Greenwood, Little Rock Christian, Mountain Home and Vilonia followed suit.
Harrison received one first-place vote in the Class 4A poll. Batesville received 13 top nods.
Undefeated Star City is No. 3, 4A-1 Farmington is fourth and Pulaski Academy is No. 5.
Also receiving votes are three 4A-1 schools led by by Gentry with Pea Ridge and Berryville joining the group.
The 3A-1East is making a strong statement in its last season as a conference. Three of the schools ranked in the top five are from the league. Mountain View is the No. 1 seed and Valley Springs checks in at No. 2.
Bergman is No. 5 in the rankings. Central Arkansas Christian is No. 3 in the rankings and Lamar is No. 4.
Melbourne is at the top of the Class 2A.
Viola is the No. 1 team in Class 1A. Kirby, Concord, Mount Vernon-Enola and Emerson round out the rankings.
Alpena received votes in the Class 1A poll.
Arkansas Sports Media Girls High School Basketball Poll
Following is the Overall Top 10 boys high school basketball teams in Arkansas and the top five in Classes 6A, 5A, 4A, 3A, 2A and 1A as voted by a panel of sports media from around the state for the week ending January 4. Ranking is given with first-place votes received, records, total points and last week's rankings:
1. FS Northside (6) 11-3 104 –
2. Bentonville (3) 11-1 101 –
3. Conway (2) 11-3 87 –
4. Nettleton (1) 13-2 83 –
5. Batesville (1) 14-1 72 –
6. Cabot 11-1 70 –
7. Fayetteville (1) 9-3 66 –
8. Greenwood 10-3 49 –
9. Vilonia 11-1 24 –
10. LR Christian 10-2 21 –
10. Harrison 15-1 21 –
Others receiving votes: Pulaski Academy 12, Mountain Home 11, Farmington 10, Mountain View 10, Star City 10, Hot Springs Lakeside 9, West Helena 3, Melbourne 3, Viola 2, Pea Ridge 2.
1. FS Northside (6) 11-3 54 –
2. Bentonville (3) 11-1 49 –
4. Cabot (1) 11-1 32 –
Others receiving votes: Rogers 1, Springdale Har-Ber.
2. Greenwood (4) 10-3 40 –
3. LR Christian (1) 10-2 30 –
4. Mountain Home 10-2 28 –
5. Vilonia (1) 11-1 27 –
Others receiving votes: West Memphis 10, Hot Springs Lakeside 10, Sylvan Hills 3, Jonesboro 1.
1. Batesville (13) 14-1 69 –
2. Harrison (1) 15-1 44 –
3. Star City 15-0 35 –
4. Farmington 14-3 26 –
5. Pulaski Academy 10-2 18 –
Others receiving votes: Gentry 9, Pea Ridge 5, Southside Batesville 3, Berryville 1.
HARRISON ATHLETIC DEPARTMENT CHOSEN TO RECEIVE THE JERRY MCFARLAND YOUTH AWARD
HARRISON GIRLS COME AWAY WITH WIN
BERRYVILLE PICKS UP FIRST LEAGUE WIN AGAINST HARRISON
HARRISON CHECKS IN AT NO. 10


text:
Local '90s band Sabaretto to reunite for Saturday show
Sabaretto was a phenom of sorts when it hit the local music scene some 25 years ago. And now the band is back - for one night, at least.
Local '90s band Sabaretto to reunite for Saturday show Sabaretto was a phenom of sorts when it hit the local music scene some 25 years ago. And now the band is back - for one night, at least. Check out this story on jconline.com: https://www.jconline.com/story/life/2019/07/03/local-90-s-band-sabaretto-reunite-saturday-show/1622111001/
Cindy Gerlach, For the Journal & Courier Published 11:00 a.m. ET July 3, 2019 | Updated 9:30 a.m. ET July 5, 2019
Local '90s band Sabaretto is back - for one night
Sabaretto, a local band that took Lafayette by storm at the height of the grunge rock period of the early 1990s, will reunite for a 25th anniversary show at 7 p.m. Saturday, July 6, at the Lafayette Theater. Photo provided
A vintage flier for Sabaretto, a local band that took Lafayette by storm at the height of the grunge rock period of the early 1990s. Photo provided
On Saturday night, the band is getting back together.
What band, you ask? The band that took Lafayette by storm at the height of the grunge rock period of the early '90s. The band made up of local teenagers who blew audiences away with their energy and vitality. The band that released one critically acclaimed record before disappearing.
Sabaretto was a phenom of sorts when it hit the local music scene some 25 years ago. And now they're revisiting their roots, with a reunion show planned for Saturday, July 6, at the Lafayette Theater.
The band formed the summer of 1991, recalls Brian Speaker, the lead vocalist for the band and the push behind the reunion. A student at West Lafayette High School, Speaker met guitarist Dan Baker. And things quickly fell into place.
"I was in between my freshman and sophomore year when I started playing with Dan," he recalls. At a party, they met fellow Red Devil Tim Hopkins, bassist; and Jimmy Gerovac, also on guitar. Throw in Johnny "BHive" Bower, drummer, and a band was born.
"We started rehearsing in my parents' basement or garage," Speaker says, practicing as much they could, dedicating as much as three or four nights a week, after school.
"We were merciless — maybe more often if we had a show," he says. "We were hitting it pretty hard."
And it paid off, as the band developed a strong local following. Heavily influenced by bands like Pearl Jam, Smashing Pumpkins and Stone Temple Pilots — fixtures on the grunge music scene of that time — the band developed enough of a following that spread, as their friends left high school and scattered across the Midwest. They played local bars where, as they were underage, they had to be ushered in and out; they played frat parties around the state.
But they were driven. Because success for a group of musicians from college-town Indiana wasn't that elusive — they knew of Axl Rose, Izzy Stradlin and Shannon Hoon — they were well aware that it was possible.
Sabaretto, a local band that took Lafayette by storm at the height of the grunge rock period of the early 1990s, will reunite for a 25th anniversary show at 7 p.m. Saturday, July 6, at the Lafayette Theater. (Photo: Photo provided)
"The fact that somebody from our hometown would be a success," Speaker says. "There was an incredible amount of local talent."
But sadly, he says, few places to play. The local music scene, he felt — and still feels — does not necessarily support local bands, with few venues available for shows.
The band set out on tour, traveling on weekends; remember, they're still high school students at this point, and they had to work around their school schedule. And they continued playing local parties and frat houses.
Support local journalism and read more stories like this one
by becoming a J&C subscriber.Get unlimited digital access here!
"Tour for us was usually weekend-based," Speaker says. "We'd go out for a show or two and be back in time for school on Monday. Illinois, more specifically Chicago, all through Indiana — Indianapolis, Frankfort, Battle Ground, Delphi and, of course, Lafayette and West Lafayette. Our furthest adventure was in Florida for spring break where we hijacked the stage from the house band and played through their set list for an hour and a half. If anyone were to ask us to open, we would."
After focusing on covering their favorite bands and perfecting that sound, the band headed into the studio in 1994. They had begun writing their own songs and exploring more; they were ready to venture into recording their own sound.
"We were kind of finding our voice," Speaker says.
The result was "Swing," their sole studio product, which was met with critical acclaim. The album was recorded by Michael Kelsey, but much of the engineering was done by Baker, who took the reins, creating much of the sound.
And then, suddenly, it was all over. Band members were being pulled in other directions as they finished high school and entered college; something had to give.
"Dan and Tim were both in college at Purdue while I had just finished my last year of high school," Speaker says. "Tim had already left the band to focus on school, and since Dan was taking on a pretty heavy engineering degree, he decided to do the same.
"It was a surprise to all of us. Since Dan and I were the management side of things I didn't feel I could do it without him. It was tough. We had everything in place; full-scale touring sound system, a freshly released album, fraternity and venue relationships all over the state. And then it was over."
That was the end; Sabaretto was no more.
The band members went their separate ways. Speaker ended up working as a music producer and audio engineer. Currently living in New York, he keeps up with his former bandmates, most of whom have stayed in the music business to some extent.
And on occasion, Speaker has a yen to play with the members of Sabaretto. In 2011 the band reunited and played their entire album live, in concert, here in Lafayette.
"It was so much fun to be back in a room with these guys," Speaker says.
So now, with his 25th high school reunion weekend approaching, Speaker is ready to do it again. He's getting the band back together for another reunion show. It's a chance for the band to play, to relive old memories.
They'll play tracks off that album. And they'll play the covers for which they were so well known, songs by Soul Asylum, R.E.M., Blind Melon and Tom Petty. The sounds of '90s grunge will be center-stage.
The show will start with "Somebody to Shove" by Soul Asylum. But as for other specific songs, well, you'll have to come to find out.
"We want them to be a nice surprise," Speaker says. "We want to really encapsulate the years we were together."
For his part, Speaker is practicing, rehearsing. He rents out a karaoke room to practice vocals he hasn't sung in years; his bandmates are working on their riffs as well. Practice from afar — "We have not all been in a room together since 2011," Speaker says — but rest assured, they will be ready.
So the show is definitely a reunion for the band. But it's also a reunion for fans.
"It's going to be super fun, totally chill and super relaxed," Speaker says. "We want to see old faces."
And in that spirit, they're willing to open up performing with the band to any and all.
"If people want to be part of the show, I'm willing to share the mic," Speaker says. "If L.D. Miller wants to join us on stage and blow his harmonica, then he's welcome to join."
For Speaker, this reunion is about much more than just playing with friends. His time in Sabaretto was defining, life-changing. And, he says, that feeling is far from over.
"I think it's important to note that Sabaretto gave me way more than I ever could have dreamed. It put music in my life in a way I didn't know possible. It taught me discipline, how to be creative, it gave me focus and best of all it gave me lifelong friends who I can share the memories with. The story of Sabaretto is still being written, 25 years later."
Sabaretto's 25th anniversary show is 7 p.m. Saturday, July 6, at the Lafayette Theater, 600 Main St.; doors open at 6 p.m. Tickets are $8 for the all-ages show. Acoustic acts Johnny BHive and Jimmy's Blue Notebook will also perform. For tickets and more information, visit lafayettetheater.com.
Read or Share this story: https://www.jconline.com/story/life/2019/07/03/local-90-s-band-sabaretto-reunite-saturday-show/1622111001/
Live 765: A&E calendar for Jan. 2-29
Live765: A&E calendar for Dec. 19-Jan. 1
Live 765: A&E calendar for Dec. 5-18
Dec. 4, 2019, 9 a.m.
Live765: A&E calendar for Nov. 21-Dec. 4
Nov. 20, 2019, 7 a.m.
Anniversaries: Ron Royer & Carla (Helterbran) Royer
Live 765 A&E calendar for Nov. 7-20


Company driver on a cell phone causes a horrific crash.
A class-action lawsuit against catfish producers for price fixing.
An 18-year-old killed by a woman driving while using a cell phone.
A woman paralyzed by a defective medical device.
A truck driver involved in a head-on collision.
A man injured by a tractor-trailer rig.
A defective drug led to a liver transplant.
A case against a utility company for a woman killed by carbon monoxide poisoning.
A man injured by an improper medication dose.
A man injured when a scaffold collapsed.
A woman injured in an auto accident.
The death of a 90-year-old nursing home patient.
A man killed by a lack of trailer brakes.
A man injured in an accident on an oil rig.
A woman injured in a fall through the floor of an apartment.
A case against an insurance company for misrepresentations concerning life insurance premiums.
The death of a nursing home patient.
A man injured by falling equipment.
A child fatally injured at a daycare.
A case against a life insurance company for fraud.
A case against a nursing home for a child strangled by wheelchair restraints.
A man injured from a gas leak in the water source.
A case against an insurance company for fraudulently switching life insurance policies.
A man shot by a convenience store clerk.
Do You Need Help After a Serious Accident?
Once a month, get a simple digest of fresh, in-depth content along with exclusive access to newly available resources, news, stories, and more!


text:
Tag Archives: tesla
Tesla Not Currently Working On A $25k Car Or Truck Hatchback Vw Id3 Alternative Delayed
Nonetheless the battery degradation will normally stabilize following the very first year and the degradation rate will drop. 1 charge cycle is equivalent to applying an quantity of energy that is equal to 100% of the battery capacity. There are several other aspects that will influence the lifespan of a Tesla battery pack. While rapid charging or discharging can impact a battery's lifespan, they are not major contributors. Lithium-ion batteries, which most Teslas use degrade more rapidly when they are left at a really low state, or a pretty higher state of charge for lengthy periods of time. That indicates that an owner ought to avoid working with the battery all the way down or charging it to 100% on a regular basis.
The model was the world's greatest-promoting plug-in electric car model in 2021. Nevertheless, Chinese companies are closing the gap among them and the U.S. electric automobile giant. China boasted the biggest electric car fleet in 2021—over three occasions the size of the U.S. BYD sales also overtook Tesla's for the initially time in 2022, selling over 183,400 additional cars than the U.S. brand amongst January and July 2022.
Having said that, when you get a state tax credit, the taxable earnings you report on your federal taxes could be larger than it otherwise would have been since you now have significantly less state earnings tax to deduct. Nor paying a solar enterprise to buy the electricity generated by the program). Systems installed on or ahead of December 31, 2019 had been also eligible for a 30% tax credit.) It will lower to 26% for systems installed in 2033 and to 22% for systems installed in 2034. The tax credit expires beginning in 2035 unless Congress renews it. A wildfire will burn a vehicle no matter whether the automobile has a full tank of gas or no gas at all.
This is also exactly where you'll see basic facts like a speedometer and battery gauge. The steady development in Tesla's job ads in recent months comes as pretty much 90% of global CEOs surveyed by KPMG expect a recession over the next 12 months, with nearly half weighing job cuts. About three-quarters of job advertisements on Tesla's web page are for U.S. positions, followed by Germany, web page of a new factory, and Canada. Tesla lists more than 200 jobs on one more internet site focused on China, exactly where it recently upgraded its Shanghai plant to enhance production. We'll in no way gather and sell your private information, or blindside you with a million nickle-and-dime charges.
Also, when driving in much less than ideal conditions, such as snowy or rainy weather, your battery will exert far more power. Driving into a headwind or in freezing temperatures can impact your range, too. In Germany, the VF 8 midsize SUV will begin at 45,700 euros and the VF 9 substantial SUV at 62,250 euros, excluding the cost to lease the battery.
IG International Limited receives services from other members of the IG Group like IG Markets Limited. Use this to see how IG client accounts with positions on this marketplace are trading other markets. Data is calculated to the nearest 1%, and updated automatically just about every 15 minutes.
I got a DUI about a year ago and my license is scheduled to be reinstated soon. Not your common commuting automobile, but if you are interested in functionality and style, the Plaid is the a single to select. The Plaid Model is similar to the Lengthy Variety but comes with far more options, like enhanced interior styling, a carbon fiber spoiler, and improved traction handle. The Overall performance Model can accelerate even faster, going from -60mph in 1.99 seconds.
This suggests that owners of the Model three Regular Variety are covered for 8 years or 100,000 miles, whilst these with Efficiency or Lengthy Range variants will get help for 8 years or 120,000 miles. A single charge of a Tesla battery will last 262+ miles depending on your driving style. Hunting at the long game, Tesla has truly got the battery manufacturing properly and genuinely beneath manage.
Commonly, battery coverage is eight years or 100,000 miles, but this will vary by manufacturer and country. Shirley Meng, who runs the Laboratory for Energy Storage and Conversion at the UC San Diego, says a lot of electric car companies are pursuing batteries with larger nickel content material than what Dahn's paper and patent describe. Meng says the subsequent step is to merge these larger-density designs with some higher-performing mix of electrolytes and additives. Whether or not it is the formula Dahn's group perfected is an open question. I asked Elon for a model 3 with reduce variety and decrease price for just driving to Costco and the grocery shop in style.
In October 2021, the National Transportation Safety Board referred to as on Tesla to adjust the style of its Autopilot to make certain it can't be misused by drivers, according to a letter sent to Musk. Complete Self-Driving is an optional extension of Autopilot promoted as eventually getting in a position to execute fully autonomous driving. At the finish of 2016, Tesla anticipated to demonstrate full autonomy by the finish of 2017, which as of July 2022 has not occurred. The initially beta version of the software program was released on October 22, 2020, to a modest group of testers. The release of the beta has renewed concern with regards to whether or not the technologies is prepared for testing on public roads.
The full extent of his injuries was by no means recognized Tesla refused to seek the advice of a physician, an almost lifelong custom, and never ever totally recovered. At this time Westinghouse Electric & Manufacturing Corporation started paying him $125 per month in addition to paying his rent. Various find more sources claim that Westinghouse was concerned, or possibly warned, about prospective undesirable publicity arising from the impoverished situations in which their former star inventor was living. The payment has been described as becoming couched as a "consulting fee" to get about Tesla's aversion to accepting charity. Tesla biographer Marc Seifer described the Westinghouse payments as a form of "unspecified settlement". In any case, Westinghouse offered the funds for Tesla for the rest of his life.
Investing in, and establishing, these capabilities will take various years at least, and could easily prove a limiting aspect on how a lot of new EVs can completely qualify for the newest tax credits beneath the existing legislation. Foreign automakers like Honda, Hyundai, Kia, Mercedes-Benz, and Toyota have already committed to higher-volume North American vehicle production in current decades. There's every single purpose to believe they can fairly rapidly do the same for their electric vehicle fleets to meet the final assembly requirement for prosperous new models not but developed right here, like the Hyundai Ioniq 5.
This entry was posted in 미분류 and tagged builds, cybertruck, spotted, tesla, texas on 2022년 10월 18일 by toto79.


text:
package com.microsoft.azure.management.hdinsight.v2018_06_01_preview.implementation;

import com.microsoft.azure.management.hdinsight.v2018_06_01_preview.OperationDisplay;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * The HDInsight REST API operation.
 */
public class OperationInner {
    /**
     * The operation name: {provider}/{resource}/{operation}.
     */
    @JsonProperty(value = "name")
    private String name;

    /**
     * The object that represents the operation.
     */
    @JsonProperty(value = "display")
    private OperationDisplay display;

    /**
     * Get the operation name: {provider}/{resource}/{operation}.
     *
     * @return the name value
     */
    public String name() {
        return this.name;
    }

    /**
     * Set the operation name: {provider}/{resource}/{operation}.
     *
     * @param name the name value to set
     * @return the OperationInner object itself.
     */
    public OperationInner withName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Get the object that represents the operation.
     *
     * @return the display value
     */
    public OperationDisplay display() {
        return this.display;
    }

    /**
     * Set the object that represents the operation.
     *
     * @param display the display value to set
     * @return the OperationInner object itself.
     */
    public OperationInner withDisplay(OperationDisplay display) {
        this.display = display;
        return this;
    }

}


text:
This humble Italian restaurant refused..
This humble Italian restaurant refused to accommodate Tom Cruise's demand
Armando PercuocoBuon Ricordo
Chris Smith has a soft spot for a small Italian restaurant, Buon Ricordo, nestled in the back streets of Paddington in the inner-city.
But he certainly isn't the only one.
The restaurant, which has been operating for over three decades, has hosted Hollywood superstars, politicians and media moguls alike.
The hidden gem is particularly famous for its truffled egg fettuccine.
But they don't do takeaways. Not even when Tom Cruise is requesting them.
The restaurant's outgoing owner and head chef, Armando Percuoco, tells Chris Smith about the bizarre encounter.
"He (Tom Cruise) was doing a movie here in Australia and he was down in Double Bay. He used to come quite often.
"I looked after him because he was very nice. Now, I don't know if it was him or his PA (personal assistant)… he rings me one day and said, 'Mr Tom Cruise, he wants you to do the food for his airplane, he has to come back to America.'
"I said, 'I'm terribly sorry I'm not a takeaway shop!'"
Click PLAY below for the full story
Armando tells Chris his restaurant is getting a refurbishment, with his long serving head chef taking over the keys.
He says bucking trends and sticking to tradition has been the answer to their success.
"The trendy restaurants go out the window in no time.
"When you have a classic restaurant, and you nurture your customer, you look after you customer… then you stay a long time in the business."
AustraliaBusinessFoodNewsNSW