text:
Older Queer Voices: The Intimacy of Survival
An Anthology
Jonathan Silin
Posted by jkasperkramer on January 28, 2017 February 6, 2017
SCOTUS Thunderbolts and the Long, Slow Work of Social Change
by Jonathan Silin
I became a gay reader early, at age 9 or 10, when a well meaning librarian introduced me to the Hardy Boys books. I was mesmerized by the scenes of the brothers, Frank and Joe, and their friends stripping down to swim across one body of water or another or to dry their rain soaked clothing. These images provided a seductive screen onto which I could project my first unarticulated homosexual longings.
Later in high-school I sought out the novels of James Baldwin, Andre Gide, and DH Lawrence. Hungry for signs of homosexual life, I ignored the fact that desires were mostly unfulfilled and the relationships often self-destructive. In the limited literary landscape of gay life, these descriptions offered me the opportunity to imagine them otherwise.
Eventually I also became a writer with a decided bent for incorporating scenes from my own gay life, whether in journalistic essays, many of which have appeared in these pages, or in scholarly articles and books. My writing like my reading focused on the politics of representation: who tells our stories and why? How are we depicted and with what ends in view?
It is perhaps for this reason that amidst the avalanche of journalism following the Supreme Court decision on gay marriage I was drawn to The New York Times op-ed columnist Frank Bruni's "Our Weddings, Our Worth." I admired the honesty of Bruni's autobiographical reflections that lead up to his celebration of the SCOTUS ruling. At the same time I wished that he had recognized the many pioneers who made possible his successful personal journey as a gay man.
For me the essay's punctum, its most compelling image, is Bruni's description of himself at age sixteen (the year is 1980) slipping away from his friends at the local mall into a bookshop where he came across Seymour Kleinberg's Alienated Affections: Being Gay in America. I empathize with the way that Bruni was put off by the descriptions of gay types with whom he could not identify and even the archness of Kleinberg's style.
I had a very similar experience twenty years earlier while trolling my own neighborhood bookstore — they were everywhere in 1960 New York — and finding a copy of Edmund Bergler's pseudoscientific Homosexuality: Disease or Way of Life? I couldn't summon the courage to bring the book to the cash register. I was determined enough, however, to stand in a back corner of the shop and read page after page. Admittedly, I didn't comprehend the virulently homophobic nature of Bergler's work but, nonetheless, like Bruni holding Kleinberg's tome, I knew that as much as I searched, I couldn't find myself in Bergler's pages. Or, more precisely, I found parts of myself, but the complete case studies seemed incompatible with my life till then, or even the one I imagined I might lead.
Now I can see that at sixteen the root of my confusion in reading Bergler's stories of unhappy homosexual men was located in the word "homosexual" itself. My growing attraction to other boys and men had already lead to a rich interior life that I could not and did not want to deny.
I paused over and over again when Bergler depicted the electric excitement experienced by homosexual men who furtively found each other in the years after WWII. I was far less certain, however, that I was indeed a homosexual. Yes, I was quickly coming to terms with the adjectival meanings of "homosexual," accepting a word that identified the desires that so often coursed through my body. No, I couldn't, relate to the word when it functioned as a noun, and the all-encompassing nature of a purported homosexual personhood. As challenging as it was, I understood myself as a person with homosexual desires but that was different from identifying myself as a homosexual human being and especially those troubled people portrayed in the scientific literature. I was caught between my life as lived and the nineteenth century medical label that I knew others wanted to affix to me.
Doubtless I would have been reassured to know that twenty years previously, in an apartment just around the corner from where I was standing on East 89th street, three unashamedly gay men successful in the transatlantic world of the arts had set up domestic life together — photographer George Platt Lynes, novelist Glenway Wescott, and Monroe Wheeler, Director of Exhibitions and Publications at the Museum of Modern Art. Lynes would spend the summer of 1945 here in East Hampton, after the break up of that arrangement, and while in the midst of a tempestuous relationship with a much younger lover.
Although I was sustained during the 1960s by a proto-gay identity, it took till the end of the decade for others who were more politically sophisticated to reclaim the word gay from its complicated history. The shift in terminology from "homosexual" to "gay" was emblematic of the larger social forces that separated my own experience from Frank Bruni's. In 1984, only four years after finding Alienated Affections, Bruni was able to come out to his parents and friends. This, even as a growing number of young people were identifying as "queer," a moniker signaling more fluid ideas about sexuality than afforded by a simple gay/straight distinction.
The intensity, sometimes desperation, with which young people search for images that help them to reflect on who they are and where they might be going, is something that Frank Bruni and I have in common with many others. But Bruni and I also have a very particular bond because I might well have been one of the very people that he read about as he stood flipping through the pages of Alienated Affections.
Several months after the book's publication, my partner Bob and I were contacted by its author, Seymour Kleinberg. He was working on a new project about the promises and pitfalls of gay relationships. Would we be willing to sit for a series of interviews? We knew Seymour's work because it appeared regularly in Christopher Street, the magazine that had been tracking the flowering of the new gay culture in the late 1970s. Early and loyal subscribers, how could we not accept Seymour's invitation?
More fundamentally, as avid readers we understood that books had been an essential way for us to make some sense of our experience. I was just becoming a writer but eager in any way possible to help fill the representational void that other gay readers faced. I wanted both gay and straight readers to have access to real and complex representations of our lives.
In the mid-1980s, after a decade of focusing his photographic attention on the landscape of the East End, Bob would begin to make his elegant, often austere, portraits of gay and lesbian writers who lived near by — Edward Albee, Dolores Klaich, Joe Pintauro, Lanford Wilson. The project, eventually including 600 authors, reflected his commitment to picturing the diversity of gay life. Bob was to write in an introductory essay for Particular Voices: Portraits of Gay and Lesbian Writers —
It is my wish that tomorrow, when a viewer looks into the eyes of the subjects of these pictures, he or she will say in a spirit of wonder, "These people were here; like me, they lived and breathed." So too will the portraits and the words which accompany them respond, "We were here; we existed. This is how we were." (p. xvii)
Riffling through my files to find the January 1981 issue of Christopher Street in which we were the lead story, I am struck by the stylized cover drawing of two gay men embracing. I don't think we saw ourselves in quite this idealized way and Seymour's text made clear that although we both placed a high value on intimacy and domesticity, we struggled mightily with questions of monogamy and fidelity, independence and mutual reliance.
I am reminded too that any anticipatory anxiety we may have had prior to the appearance of the issue was short-circuited by a phone call from friend and Springs resident, Chuck Hitchcock, congratulating us on the story. Working at the National Lesbian and Gay Task Force in New York City, he had been privy to an early copy, and despite Kleinberg's attempt to disguise our identities, recognized us immediately.
Fast forward thirty-four years.
I am driving home from a swim at the East Hampton Rec Centre on the morning of June 26, 2015, and find myself overcome listening to President Obama's hastily called press conference about the supreme court's gay marriage decision.
I am more than a little surprised by my reaction, because tears are not my way and because gay marriage has never been my political issue of choice. Yes, I married my partner David eight years ago in Toronto, and we now enjoy many benefits that would otherwise have been unavailable to us. But for those of us who made a commitment to gay liberation in the late 1960s and hoped for more fundamental social change, marriage hardly seems like the victory that many believe it to be.
And of course the president himself has waffled dreadfully on the subject of gay marriage, holding every conceivable position from an early defense of the right to marry, to a limited civil unions position, to a 2008 declaration that marriage always and only involves a man and a woman. Only in 2012 did he announce that his "evolving" thinking had led him to support same sex marriage. I had reason to be suspicious.
But Obama's words about the slow, small incremental journey to equality spoke directly to me . . . "Sometimes two steps forward, one step back. . . And then sometimes there are days like this, when that slow steady effort is rewarded with justice that arrives like a thunderbolt."
In the end, most of my life has been lived before the thunderbolt of this summer's SCOTUS decision. I've experienced first-hand the frustration of two steps forward and one step back while negotiating work life as an out gay early childhood educator, professor, and AIDS advocate and caregiver. As an activist, I've appreciated the slow, steady effort of the many which makes possible the thunderbolt even when the names of just a few are attached to it. Those of us who contributed to the new gay research in the 1970s and 1980s and who wrote about our lives in the following decades are now part of that long journey to equality, a journey that I hope we will not be blinded to by the SCOTUS thunderbolt.
Jonathan Silin is a teacher, writer and activist. He is the author/editor of 3 books including My Father's Keeper: Story of a Gay Son and His Aging Parents. His occasional essays have appeared in the NewYork Times, Education Week andTablet. He was a founding board member of the East End Gay Organization (EEGO) in the 1970s and in the forefront of responding to HIV/AIDS during the 1980s in New York State. He is currently at work on a memoir, Student/Teacher: A Life Schooled by the Young.
Previous Post Morgana
Next Post Bonné de Blas
From the Editors February 6, 2017
Barrie Jean Borich February 3, 2017
C.W. Emerson January 29, 2017
Cheryl Clarke January 29, 2017
Patrick Donnelly January 29, 2017
Laura Hershey January 29, 2017
Ginny McReynolds January 29, 2017
Sassafras Lowrey January 29, 2017
Sandra Gail Lambert
Sarah Einstein
Assistant Editors:
J. Kasper Kramer
Logan Clem


Join us on David Livingstone's remarkable life & world changing journey to Africa to share his life in service to others. His humble beginnings exploded with adventure when in 1840 he sailed to Africa.
Dr Livingstone's relentless pursuits in medical missionary service and his love for people left a legacy which destroyed slavery's hold and brought the Gospel to countless people. Today his story inspires people to make their world a better place.


There is actually such a thing as a gift economy or gift culture. It is a society where valuable goods and services are regularly given without any explicit agreement for immediate or future rewards (i.e. no formal quid pro quo exists). Ideally, simultaneous or recurring giving serves to circulate and redistribute valuables within the community. The organization of a gift economy stands in contrast to a barter economy or a market economy. Informal custom governs exchanges, rather than an explicit exchange of goods or services for money or some other commodity.
What do you think the first type of currency existed in the United States? It was in fact, the Sterling pound and the Spanish Dollar! It was only in 1775 the Continental Congress first issued a US currency and only $2,000,000 was released. Every time this currency was released it was slowly devalued against the Pound Sterling and Spanish Dollar.
Every year $541 million worth of currency is reprinted every year in the United States of America as the notes only have a short life-span. On average a dollar and five dollar bill will last less than two years and a ten dollar bill three years.
What was the largest numerical bill to ever circulate as legal tender? It was in 1946 and issued in Hungary – the Millard Hungarian Pengo and was 1,000,000,000,000,000,000,000. At the time it was worth about sixpence!
Barclays Bank in London was the first bank to create an ATM machine in 1967, A certain John Shepherd-Barron claims to have thought of it whilst having a bath.
Interesting fact about the US dollar sign '$'. This sign, apparently has long been used to represent foreign currency long before the issue of the current US dollar in 1875. Also the sign doesn't appear, nor ever has appeared on any US currency.
In 1980 the US national debt was $907 billion. In 2010 it was 14 times larger. Can this ever be reduced?
Currently, there is more steel created per hour than the amount of gold that has been dug up in our entire history.
$2trn (That's two trillion dollars!) of the combined worth of planet Earth's billionaires has disappeared over the past year. The number of those who can boast a fortune of over a thousand million US dollars has shrivelled from 1,125 to 793. In 2009 the 10 biggest dollar-losers between them have this year lost more than the annual GDP (gross domestic product) of Ireland. Goodness knows what that figure is now!
According to the Independent, the FSA (Financial Services Authority) has brought just one criminal case of insider dealing since its inception in 2001.
In March 2010 the total amount owed on credit cards by UK consumers was £59,756,000,000.
The City of London has a resident population of a little over 11,000, but around 316,700 people work there, mainly in the financial services sector.


text:
/*
 * @brief test context and thread APIs
 *
 * @defgroup kernel_context_tests Context Tests
 *
 * @ingroup all_tests
 *
 * This module tests the following CPU and thread related routines:
 * k_thread_create(), k_yield(), k_is_in_isr(),
 * k_current_get(), k_cpu_idle(), k_cpu_atomic_idle(),
 * irq_lock(), irq_unlock(),
 * irq_offload(), irq_enable(), irq_disable(),
 * @{
 * @}
 */

#include <ztest.h>
#include <kernel_structs.h>
#include <arch/cpu.h>
#include <irq_offload.h>
#include <sys_clock.h>

/*
 * Include soc.h from platform to get IRQ number.
 * NOTE: Cortex-M does not need IRQ numbers
 */
#if !defined(CONFIG_CPU_CORTEX_M) && !defined(CONFIG_XTENSA)
#include <soc.h>
#endif

#define THREAD_STACKSIZE    (512 + CONFIG_TEST_EXTRA_STACKSIZE)
#define THREAD_STACKSIZE2   (384 + CONFIG_TEST_EXTRA_STACKSIZE)
#define THREAD_PRIORITY     4

#define THREAD_SELF_CMD    0
#define EXEC_CTX_TYPE_CMD  1

#define UNKNOWN_COMMAND    -1

/*
 * Get the timer type dependent IRQ number. If timer type
 * is not defined in platform, generate an error
 */
#if defined(CONFIG_HPET_TIMER)
#define TICK_IRQ CONFIG_HPET_TIMER_IRQ
#elif defined(CONFIG_LOAPIC_TIMER)
#if defined(CONFIG_LOAPIC)
#define TICK_IRQ CONFIG_LOAPIC_TIMER_IRQ
#else
/* MVIC case */
#define TICK_IRQ CONFIG_MVIC_TIMER_IRQ
#endif
#elif defined(CONFIG_XTENSA)
#define TICK_IRQ UTIL_CAT(XCHAL_TIMER,		\
			  UTIL_CAT(CONFIG_XTENSA_TIMER_ID, _INTERRUPT))

#elif defined(CONFIG_ALTERA_AVALON_TIMER)
#define TICK_IRQ TIMER_0_IRQ
#elif defined(CONFIG_ARCV2_TIMER)
#define TICK_IRQ IRQ_TIMER0
#elif defined(CONFIG_RISCV_MACHINE_TIMER)
#define TICK_IRQ RISCV_MACHINE_TIMER_IRQ
#elif defined(CONFIG_LITEX_TIMER)
#define TICK_IRQ DT_LITEX_TIMER0_E0002800_IRQ_0
#elif defined(CONFIG_RV32M1_LPTMR_TIMER)
#define TICK_IRQ DT_OPENISA_RV32M1_LPTMR_SYSTEM_LPTMR_IRQ_0
#elif defined(CONFIG_CPU_CORTEX_M)
/*
 * The Cortex-M use the SYSTICK exception for the system timer, which is
 * not considered an IRQ by the irq_enable/Disable APIs.
 */
#elif defined(CONFIG_ARCH_POSIX)
#if  defined(CONFIG_BOARD_NATIVE_POSIX)
#define TICK_IRQ TIMER_TICK_IRQ
#else
/*
 * Other POSIX arch boards will skip the irq_disable() and irq_enable() test
 * unless TICK_IRQ is defined here for them
 */
#endif /* defined(CONFIG_ARCH_POSIX) */
#else
/* generate an error */
#error Timer type is not defined for this platform
#endif

/* Nios II and RISCV32 without CONFIG_RISCV_HAS_CPU_IDLE
 * do have a power saving instruction, so k_cpu_idle() returns immediately
 */
#if !defined(CONFIG_NIOS2) && \
	(!defined(CONFIG_RISCV32) || defined(CONFIG_RISCV_HAS_CPU_IDLE))
#define HAS_POWERSAVE_INSTRUCTION
#endif

typedef struct {
	int command;            /* command to process   */
	int error;              /* error value (if any) */
	union {
		void *data;     /* pointer to data to use or return */
		int value;      /* value to be passed or returned   */
	};
} ISR_INFO;

typedef int (*disable_int_func) (int);
typedef void (*enable_int_func) (int);

static struct k_sem sem_thread;
static struct k_timer timer;
static struct k_sem reply_timeout;
struct k_fifo timeout_order_fifo;

static int thread_evidence;

static K_THREAD_STACK_DEFINE(thread_stack1, THREAD_STACKSIZE);
static K_THREAD_STACK_DEFINE(thread_stack2, THREAD_STACKSIZE);
static K_THREAD_STACK_DEFINE(thread_stack3, THREAD_STACKSIZE);
static struct k_thread thread_data1;
static struct k_thread thread_data2;
static struct k_thread thread_data3;

static ISR_INFO isr_info;

/**
 * @brief Handler to perform various actions from within an ISR context
 *
 * This routine is the ISR handler for isr_handler_trigger(). It performs
 * the command requested in <isr_info.command>.
 *
 * @return N/A
 */
static void isr_handler(void *data)
{
	ARG_UNUSED(data);

	switch (isr_info.command) {
	case THREAD_SELF_CMD:
		isr_info.data = (void *)k_current_get();
		break;

	case EXEC_CTX_TYPE_CMD:
		if (k_is_in_isr()) {
			isr_info.value = K_ISR;
			break;
		}

		if (_current->base.prio < 0) {
			isr_info.value = K_COOP_THREAD;
			break;
		}

		isr_info.value = K_PREEMPT_THREAD;

		break;

	default:
		isr_info.error = UNKNOWN_COMMAND;
		break;
	}
}

static void isr_handler_trigger(void)
{
	irq_offload(isr_handler, NULL);
}

/**
 *
 * @brief Initialize kernel objects
 *
 * This routine initializes the kernel objects used in this module's tests.
 *
 */
static void kernel_init_objects(void)
{
	k_sem_init(&reply_timeout, 0, UINT_MAX);
	k_timer_init(&timer, NULL, NULL);
	k_fifo_init(&timeout_order_fifo);
}

/**
 * @brief A wrapper for irq_lock()
 *
 * @return irq_lock() return value
 */
int irq_lock_wrapper(int unused)
{
	ARG_UNUSED(unused);

	return irq_lock();
}

/**
 * @brief A wrapper for irq_unlock()
 *
 * @return N/A
 */
void irq_unlock_wrapper(int imask)
{
	irq_unlock(imask);
}

/**
 * @brief A wrapper for irq_disable()
 *
 * @return @a irq
 */
int irq_disable_wrapper(int irq)
{
	irq_disable(irq);
	return irq;
}

/**
 * @brief A wrapper for irq_enable()
 *
 * @return N/A
 */
void irq_enable_wrapper(int irq)
{
	irq_enable(irq);
}

#if defined(CONFIG_TICKLESS_KERNEL)
static void test_kernel_cpu_idle(void)
{
	ztest_test_skip();
}
static void test_kernel_cpu_idle_atomic(void)
{
	ztest_test_skip();
}
#elif defined(HAS_POWERSAVE_INSTRUCTION)
static void _test_kernel_cpu_idle(int atomic)
{
	int tms, tms2;;         /* current time in millisecond */
	int i;                  /* loop variable */

	/* Align to a "ms boundary". */
	tms = k_uptime_get_32();
	while (tms == k_uptime_get_32()) {
#if defined(CONFIG_ARCH_POSIX)
		k_busy_wait(50);
#endif
	}

	tms = k_uptime_get_32();
	for (i = 0; i < 5; i++) {       /* Repeat the test five times */
		if (atomic) {
			unsigned int key = irq_lock();

			k_cpu_atomic_idle(key);
		} else {
			k_cpu_idle();
		}
		/* calculating milliseconds per tick*/
		tms += __ticks_to_ms(1);
		tms2 = k_uptime_get_32();
		zassert_false(tms2 < tms, "Bad ms per tick value computed,"
			      "got %d which is less than %d\n",
			      tms2, tms);
	}
}

/**
 *
 * @brief Test the k_cpu_idle() routine
 *
 * @ingroup kernel_context_tests
 *
 * This tests the k_cpu_idle() routine. The first thing it does is align to
 * a tick boundary. The only source of interrupts while the test is running is
 * expected to be the tick clock timer which should wake the CPU. Thus after
 * each call to k_cpu_idle(), the tick count should be one higher.
 *
 * @see k_cpu_idle()
 */
#ifndef CONFIG_ARM
static void test_kernel_cpu_idle_atomic(void)
{
	_test_kernel_cpu_idle(1);
}
#else
static void test_kernel_cpu_idle_atomic(void)
{
	ztest_test_skip();
}
#endif

static void test_kernel_cpu_idle(void)
{
	_test_kernel_cpu_idle(0);
}

#else
static void test_kernel_cpu_idle(void)
{
	ztest_test_skip();
}
static void test_kernel_cpu_idle_atomic(void)
{
	ztest_test_skip();
}
#endif

static void _test_kernel_interrupts(disable_int_func disable_int,
				    enable_int_func enable_int, int irq)
{
	unsigned long long count = 0;
	unsigned long long i = 0;
	int tick;
	int tick2;
	int imask;

	/* Align to a "tick boundary" */
	tick = z_tick_get_32();
	while (z_tick_get_32() == tick) {
#if defined(CONFIG_ARCH_POSIX)
		k_busy_wait(1000);
#endif
	}

	tick++;
	while (z_tick_get_32() == tick) {
#if defined(CONFIG_ARCH_POSIX)
		k_busy_wait(1000);
#endif
		count++;
	}

	/*
	 * Inflate <count> so that when we loop later, many ticks should have
	 * elapsed during the loop. This later loop will not exactly match the
	 * previous loop, but it should be close enough in structure that when
	 * combined with the inflated count, many ticks will have passed.
	 */

	count <<= 4;

	imask = disable_int(irq);
	tick = z_tick_get_32();
	for (i = 0; i < count; i++) {
		z_tick_get_32();
#if defined(CONFIG_ARCH_POSIX)
		k_busy_wait(1000);
#endif
	}

	tick2 = z_tick_get_32();

	/*
	 * Re-enable interrupts before returning (for both success and failure
	 * cases).
	 */
	enable_int(imask);

	/* In TICKLESS, current time is retrieved from a hardware
	 * counter and ticks DO advance with interrupts locked!
	 */
	if (!IS_ENABLED(CONFIG_TICKLESS_KERNEL)) {
		zassert_equal(tick2, tick,
			      "tick advanced with interrupts locked");
	}

	/* Now repeat with interrupts unlocked. */
	for (i = 0; i < count; i++) {
		z_tick_get_32();
#if defined(CONFIG_ARCH_POSIX)
		k_busy_wait(1000);
#endif
	}

	tick2 = z_tick_get_32();
	zassert_not_equal(tick, tick2,
			  "tick didn't advance as expected");
}

/**
 *
 * @brief Test routines for disabling and enabling interrupts
 *
 * @ingroup kernel_context_tests
 *
 * This routine tests the routines for disabling and enabling interrupts.
 * These include irq_lock() and irq_unlock(), irq_disable() and irq_enable().
 *
 * @see irq_lock(), irq_unlock(), irq_disable(), irq_enable()
 */
static void test_kernel_interrupts(void)
{
	/* IRQ locks don't prevent ticks from advancing in tickless mode */
	if (IS_ENABLED(CONFIG_TICKLESS_KERNEL)) {
		return;
	}

	_test_kernel_interrupts(irq_lock_wrapper, irq_unlock_wrapper, -1);
}

/**
 *
 * @brief Test routines for disabling and enabling interrupts (disable timer)
 *
 * @ingroup kernel_context_tests
 *
 * This routine tests the routines for disabling and enabling interrupts.
 * These include irq_lock() and irq_unlock(), irq_disable() and irq_enable().
 *
 * @see irq_lock(), irq_unlock(), irq_disable(), irq_enable()
 */
static void test_kernel_timer_interrupts(void)
{
#ifdef TICK_IRQ
	/* Disable interrupts coming from the timer. */
	_test_kernel_interrupts(irq_disable_wrapper, irq_enable_wrapper, TICK_IRQ);
#else
	ztest_test_skip();
#endif
}

/**
 *
 * @brief Test some context routines from a preemptible thread
 *
 * @ingroup kernel_context_tests
 *
 * This routines tests the k_current_get() and
 * k_is_in_isr() routines from both a preemptible thread  and an ISR (that
 * interrupted a preemptible thread). Checking those routines with cooperative
 * threads are done elsewhere.
 *
 * @see k_current_get(), k_is_in_isr()
 */
static void test_kernel_ctx_thread(void)
{
	k_tid_t self_thread_id;

	k_thread_priority_set(k_current_get(), 0);

	TC_PRINT("Testing k_current_get() from an ISR and thread\n");

	self_thread_id = k_current_get();
	isr_info.command = THREAD_SELF_CMD;
	isr_info.error = 0;
	/* isr_info is modified by the isr_handler routine */
	isr_handler_trigger();

	zassert_false(isr_info.error, "ISR detected an error");

	zassert_equal(isr_info.data, (void *)self_thread_id,
		      "ISR context ID mismatch");

	TC_PRINT("Testing k_is_in_isr() from an ISR\n");
	isr_info.command = EXEC_CTX_TYPE_CMD;
	isr_info.error = 0;
	isr_handler_trigger();

	zassert_false(isr_info.error, "ISR detected an error");

	zassert_equal(isr_info.value, K_ISR,
		      "isr_info.value was not K_ISR");

	TC_PRINT("Testing k_is_in_isr() from a preemptible thread\n");
	zassert_false(k_is_in_isr(), "Should not be in ISR context");

	zassert_false(_current->base.prio < 0,
		      "Current thread should have preemptible priority: %d",
		      _current->base.prio);

}

/**
 * @brief Test the various context/thread routines from a cooperative thread
 *
 * This routines tests the k_current_get() and k_is_in_isr() routines from both
 * a thread and an ISR (that interrupted a cooperative thread). Checking those
 * routines with preemptible threads are done elsewhere.
 *
 * @see k_current_get(), k_is_in_isr()
 */
static void _test_kernel_thread(k_tid_t _thread_id)
{
	k_tid_t self_thread_id;

	self_thread_id = k_current_get();
	zassert_true((self_thread_id != _thread_id), "thread id matches parent thread");

	isr_info.command = THREAD_SELF_CMD;
	isr_info.error = 0;
	isr_handler_trigger();
	/*
	 * Either the ISR detected an error, or the ISR context ID
	 * does not match the interrupted thread's ID.
	 */
	zassert_false((isr_info.error || (isr_info.data != (void *)self_thread_id)),
		      "Thread ID taken during ISR != calling thread");

	isr_info.command = EXEC_CTX_TYPE_CMD;
	isr_info.error = 0;
	isr_handler_trigger();
	zassert_false((isr_info.error || (isr_info.value != K_ISR)),
		      "k_is_in_isr() when called from an ISR is false");

	zassert_false(k_is_in_isr(), "k_is_in_isr() when called from a thread is true");

	zassert_false((_current->base.prio >= 0),
		      "thread is not a cooperative thread");
}

/**
 *
 * @brief Entry point to the thread's helper
 *
 * This routine is the entry point to the thread's helper thread. It is used to
 * help test the behavior of the k_yield() routine.
 *
 * @param arg1    unused
 * @param arg2    unused
 * @param arg3    unused
 *
 * @return N/A
 */

static void thread_helper(void *arg1, void *arg2, void *arg3)
{
	k_tid_t self_thread_id;

	ARG_UNUSED(arg1);
	ARG_UNUSED(arg2);
	ARG_UNUSED(arg3);

	/*
	 * This thread starts off at a higher priority than thread_entry().
	 * Thus, it should execute immediately.
	 */
	thread_evidence++;

	/* Test that helper will yield to a thread of equal priority */
	self_thread_id = k_current_get();

	/* Lower priority to that of thread_entry() */
	k_thread_priority_set(self_thread_id, self_thread_id->base.prio + 1);

	k_yield();      /* Yield to thread of equal priority */

	thread_evidence++;
	/* thread_evidence should now be 2 */

}

/**
 * @brief Entry point to thread started by another thread
 *
 * This routine is the entry point to the thread started by the thread.
 */
static void k_yield_entry(void *arg0, void *arg1, void *arg2)
{
	k_tid_t self_thread_id;

	ARG_UNUSED(arg0);
	ARG_UNUSED(arg1);
	ARG_UNUSED(arg2);

	thread_evidence++;      /* Prove that the thread has run */
	k_sem_take(&sem_thread, K_FOREVER);

	/*
	 * Start a thread of higher priority. Note that since the new thread is
	 * being started from a thread, it will not automatically switch to the
	 * thread as it would if done from another thread.
	 */
	self_thread_id = k_current_get();
	thread_evidence = 0;

	k_thread_create(&thread_data2, thread_stack2, THREAD_STACKSIZE,
			thread_helper, NULL, NULL, NULL,
			K_PRIO_COOP(THREAD_PRIORITY - 1), 0, 0);

	zassert_equal(thread_evidence, 0,
		      "Helper created at higher priority ran prematurely.");

	/*
	 * Test that the thread will yield to the higher priority helper.
	 * thread_evidence is still 0.
	 */
	k_yield();

	zassert_not_equal(thread_evidence, 0,
			  "k_yield() did not yield to a higher priority thread: %d",
			  thread_evidence);

	zassert_false((thread_evidence > 1),
		      "k_yield() did not yield to an equal priority thread: %d",
		      thread_evidence);

	/*
	 * Raise the priority of thread_entry(). Calling k_yield() should
	 * not result in switching to the helper.
	 */
	k_thread_priority_set(self_thread_id, self_thread_id->base.prio - 1);
	k_yield();

	zassert_equal(thread_evidence, 1,
		      "k_yield() yielded to a lower priority thread");

	/*
	 * Block on sem_thread. This will allow the helper thread to
	 * complete. The main thread will wake this thread.
	 */
	k_sem_take(&sem_thread, K_FOREVER);
}

static void kernel_thread_entry(void *_thread_id, void *arg1, void *arg2)
{
	ARG_UNUSED(arg1);
	ARG_UNUSED(arg2);

	thread_evidence++;      /* Prove that the thread has run */
	k_sem_take(&sem_thread, K_FOREVER);

	_test_kernel_thread((k_tid_t) _thread_id);

}

/*
 * @brief Timeout tests
 *
 * Test the k_sleep() API, as well as the k_thread_create() ones.
 */
struct timeout_order {
	void *link_in_fifo;
	s32_t timeout;
	int timeout_order;
	int q_order;
};

struct timeout_order timeouts[] = {
	{ 0, 1000, 2, 0 },
	{ 0, 1500, 4, 1 },
	{ 0, 500, 0, 2 },
	{ 0, 750, 1, 3 },
	{ 0, 1750, 5, 4 },
	{ 0, 2000, 6, 5 },
	{ 0, 1250, 3, 6 },
};

#define NUM_TIMEOUT_THREADS ARRAY_SIZE(timeouts)
static K_THREAD_STACK_ARRAY_DEFINE(timeout_stacks, NUM_TIMEOUT_THREADS,
				   THREAD_STACKSIZE2);
static struct k_thread timeout_threads[NUM_TIMEOUT_THREADS];

/* a thread busy waits */
static void busy_wait_thread(void *mseconds, void *arg2, void *arg3)
{
	u32_t usecs;

	ARG_UNUSED(arg2);
	ARG_UNUSED(arg3);

	usecs = POINTER_TO_INT(mseconds) * 1000;

	TC_PRINT("Thread busy waiting for %d usecs\n", usecs);
	k_busy_wait(usecs);
	TC_PRINT("Thread busy waiting completed\n");

	/*
	 * Ideally the test should verify that the correct number of ticks
	 * have elapsed. However, when running under QEMU, the tick interrupt
	 * may be processed on a very irregular basis, meaning that far
	 * fewer than the expected number of ticks may occur for a given
	 * number of clock cycles vs. what would ordinarily be expected.
	 *
	 * Consequently, the best we can do for now to test busy waiting is
	 * to invoke the API and verify that it returns. (If it takes way
	 * too long, or never returns, the main test thread may be able to
	 * time out and report an error.)
	 */

	k_sem_give(&reply_timeout);
}

/* a thread sleeps and times out, then reports through a fifo */
static void thread_sleep(void *delta, void *arg2, void *arg3)
{
	s64_t timestamp;
	int timeout = POINTER_TO_INT(delta);

	ARG_UNUSED(arg2);
	ARG_UNUSED(arg3);

	TC_PRINT(" thread sleeping for %d milliseconds\n", timeout);
	timestamp = k_uptime_get();
	k_sleep(timeout);
	timestamp = k_uptime_get() - timestamp;
	TC_PRINT(" thread back from sleep\n");

	if (timestamp < timeout || timestamp > timeout + __ticks_to_ms(2)) {
		TC_ERROR("timestamp out of range, got %d\n", (int)timestamp);
		return;
	}

	k_sem_give(&reply_timeout);
}

/* a thread is started with a delay, then it reports that it ran via a fifo */
static void delayed_thread(void *num, void *arg2, void *arg3)
{
	struct timeout_order *timeout = &timeouts[POINTER_TO_INT(num)];

	ARG_UNUSED(arg2);
	ARG_UNUSED(arg3);

	TC_PRINT(" thread (q order: %d, t/o: %d) is running\n",
		 timeout->q_order, timeout->timeout);

	k_fifo_put(&timeout_order_fifo, timeout);
}

/**
 * @brief Test timouts
 *
 * @ingroup kernel_context_tests
 *
 * @see k_busy_wait(), k_sleep()
 */
static void test_busy_wait(void)
{
	s32_t timeout;
	int rv;

	timeout = 20;           /* in ms */

	k_thread_create(&timeout_threads[0], timeout_stacks[0],
			THREAD_STACKSIZE2, busy_wait_thread,
			INT_TO_POINTER(timeout), NULL,
			NULL, K_PRIO_COOP(THREAD_PRIORITY), 0, 0);

	rv = k_sem_take(&reply_timeout, timeout * 2);

	zassert_false(rv, " *** thread timed out waiting for " "k_busy_wait()");
}

/**
 * @brief Test timouts
 *
 * @ingroup kernel_context_tests
 *
 * @see k_sleep()
 */
static void test_k_sleep(void)
{
	struct timeout_order *data;
	s32_t timeout;
	int rv;
	int i;

	timeout = 50;

	k_thread_create(&timeout_threads[0], timeout_stacks[0],
			THREAD_STACKSIZE2, thread_sleep,
			INT_TO_POINTER(timeout), NULL,
			NULL, K_PRIO_COOP(THREAD_PRIORITY), 0, 0);

	rv = k_sem_take(&reply_timeout, timeout * 2);
	zassert_equal(rv, 0, " *** thread timed out waiting for thread on "
		      "k_sleep().");

	/* test k_thread_create() without cancellation */
	TC_PRINT("Testing k_thread_create() without cancellation\n");

	for (i = 0; i < NUM_TIMEOUT_THREADS; i++) {
		k_thread_create(&timeout_threads[i], timeout_stacks[i],
				THREAD_STACKSIZE2,
				delayed_thread,
				INT_TO_POINTER(i), NULL, NULL,
				K_PRIO_COOP(5), 0, timeouts[i].timeout);
	}
	for (i = 0; i < NUM_TIMEOUT_THREADS; i++) {
		data = k_fifo_get(&timeout_order_fifo, 750);
		zassert_not_null(data, " *** timeout while waiting for"
				 " delayed thread");

		zassert_equal(data->timeout_order, i,
			      " *** wrong delayed thread ran (got %d, "
			      "expected %d)\n", data->timeout_order, i);

		TC_PRINT(" got thread (q order: %d, t/o: %d) as expected\n",
			 data->q_order, data->timeout);
	}

	/* ensure no more thread fire */
	data = k_fifo_get(&timeout_order_fifo, 750);

	zassert_false(data, " *** got something unexpected in the fifo");

	/* test k_thread_create() with cancellation */
	TC_PRINT("Testing k_thread_create() with cancellations\n");

	int cancellations[] = { 0, 3, 4, 6 };
	int num_cancellations = ARRAY_SIZE(cancellations);
	int next_cancellation = 0;

	k_tid_t delayed_threads[NUM_TIMEOUT_THREADS];

	for (i = 0; i < NUM_TIMEOUT_THREADS; i++) {
		k_tid_t id;

		id = k_thread_create(&timeout_threads[i], timeout_stacks[i],
				     THREAD_STACKSIZE2, delayed_thread,
				     INT_TO_POINTER(i), NULL, NULL,
				     K_PRIO_COOP(5), 0, timeouts[i].timeout);

		delayed_threads[i] = id;
	}

	for (i = 0; i < NUM_TIMEOUT_THREADS; i++) {
		int j;

		if (i == cancellations[next_cancellation]) {
			TC_PRINT(" cancelling "
				 "[q order: %d, t/o: %d, t/o order: %d]\n",
				 timeouts[i].q_order, timeouts[i].timeout, i);

			for (j = 0; j < NUM_TIMEOUT_THREADS; j++) {
				if (timeouts[j].timeout_order == i) {
					break;
				}
			}

			if (j < NUM_TIMEOUT_THREADS) {
				k_thread_abort(delayed_threads[j]);
				++next_cancellation;
				continue;
			}
		}

		data = k_fifo_get(&timeout_order_fifo, 2750);

		zassert_not_null(data, " *** timeout while waiting for"
				 " delayed thread");

		zassert_equal(data->timeout_order, i,
			      " *** wrong delayed thread ran (got %d, "
			      "expected %d)\n", data->timeout_order, i);

		TC_PRINT(" got (q order: %d, t/o: %d, t/o order %d) "
			 "as expected\n", data->q_order, data->timeout,
			 data->timeout_order);
	}

	zassert_equal(num_cancellations, next_cancellation,
		      " *** wrong number of cancellations (expected %d, "
		      "got %d\n", num_cancellations, next_cancellation);

	/* ensure no more thread fire */
	data = k_fifo_get(&timeout_order_fifo, 750);
	zassert_false(data, " *** got something unexpected in the fifo");

}

/**
 *
 * @brief Test the k_yield() routine
 *
 * @ingroup kernel_context_tests
 *
 * Tests the k_yield() routine. It starts another thread
 * (thus also testing k_thread_create()) and checks that behavior of
 * k_yield() against the a higher priority thread,
 * a lower priority thread, and another thread of equal priority.
 *
 * @see k_yield()
 */
void test_k_yield(void)
{
	thread_evidence = 0;
	k_thread_priority_set(k_current_get(), 0);

	k_sem_init(&sem_thread, 0, UINT_MAX);

	k_thread_create(&thread_data1, thread_stack1, THREAD_STACKSIZE,
			k_yield_entry, NULL, NULL,
			NULL, K_PRIO_COOP(THREAD_PRIORITY), 0, 0);

	zassert_equal(thread_evidence, 1,
		      "Thread did not execute as expected!: %d", thread_evidence);

	k_sem_give(&sem_thread);
	k_sem_give(&sem_thread);
	k_sem_give(&sem_thread);
}

/**
 * @brief Test kernel thread creation
 *
 * @ingroup kernel_context_tests
 *
 * @see k_thread_create
 */
void test_kernel_thread(void)
{

	k_thread_create(&thread_data3, thread_stack3, THREAD_STACKSIZE,
			kernel_thread_entry, NULL, NULL,
			NULL, K_PRIO_COOP(THREAD_PRIORITY), 0, 0);

}

/*test case main entry*/
void test_main(void)
{

	kernel_init_objects();

	ztest_test_suite(context,
			 ztest_unit_test(test_kernel_interrupts),
			 ztest_unit_test(test_kernel_timer_interrupts),
			 ztest_unit_test(test_kernel_ctx_thread),
			 ztest_unit_test(test_busy_wait),
			 ztest_unit_test(test_k_sleep),
			 ztest_unit_test(test_kernel_cpu_idle_atomic),
			 ztest_unit_test(test_kernel_cpu_idle),
			 ztest_unit_test(test_k_yield),
			 ztest_unit_test(test_kernel_thread)
			 );
	ztest_run_test_suite(context);
}

redpajama_set_name: RedPajamaGithub


Anish Kapoor, The Turner Prize-winning artist has has unveiled his subtle protest reworking of Joseph Beuys' seminal work, "I Like America and America Likes Me" at Union Station in Los Angeles, as part of London's Art Below takeover of billboards.
The poster, depicting a self-portrait of the artist changes the title to I Like America and America Doesn't Like Me, as a protest against the ongoing immigration policies in Donald Trump's era.
Referencing the poster that Joseph Beuys made for the work, Kapoor has altered the title and re-made it with his own self-portrait. He invites fellow artists and leading creative figures across the world to join him in this action and post their new versions on social media in protest.
Anish Kapoor said "I call on fellow artists and citizens to disseminate their name and image using Joseph Beuys' seminal work of art as a focus for social change. Our silence makes us complicit with the politics of exclusion. We will not be silent." I Like America and America Likes Me was Joseph Beuys' most celebrated performance work which he created at the René Block Gallery, New York in 1974. The action began at Kennedy Airport where friends wrapped him in felt and transported him to the gallery in an ambulance. The artist then spent several days in a room in the gallery with only a felt blanket, a flashlight, a cane and a wild coyote. His choice of featuring a coyote was perhaps an acknowledgement of an animal that holds great spiritual significance for Native Americans as well as a commentary on a country that through its Western expansion had become "lost". At the end of the three days, the artist was transported back to the airport via ambulance. He never set foot on American soil nor saw anything of America other than the coyote and the inside of the gallery.


text:
Book Presentation by Maria Giura: What My Father Taught Me
Saturday, September 22. 2:00 pm Garibaldi-Meucci Museum - 420 Tompkins Avenue, Staten Island, NY. Admission: $10/$5 for members; open to the public. Contact: Stephanie Lundegard 718-442-1608 info@garibaldimeuccimuseum.org In What My Father Taught Me, Maria Giura writes richly and candidly about growing up Italian-American Catholic from her earlier days as the daughter of immigrant parents and a workaholic father to her coming of age and onward into adulthood where she works at reconciling the natural and divine.
Her poems are a celebration in the face of love and loss. They are at once intimate and universal, serious and light and are grounded in the Brooklyn, New York that she cherished and called home from her parents' pastry shop, to the view from the Belt Parkway, to the family living room where she learned to pull out the microphone, even though it was always broken, and sing.
SOURCE: John D. Calandra Italian American Institute
TAG : Books Staten Island Brooklyn New York Garibaldi Meucci Museum
'Phantom Limb': A Conversation With Dennis...
Dennis Palumbo is a thriller writer and psychotherapist in private practice. He's the auth...
Former Montclair resident turns recipes into...
Former Montclair resident Linda Carman watched her father's dream roll off the presses thi...
Italian Master Drawings From The Morgan (Onl...
The Morgan Library & Museum's collection of Italian old master drawings is one of the...

redpajama_set_name: RedPajamaCommonCrawl


text:
				-<?php _e("Slider Main Image / Background",REVSLIDER_TEXTDOMAIN) ?>

<?php _e("Background Source:",REVSLIDER_TEXTDOMAIN)?>

						<input style="float:left" type="radio" name="radio_bgtype" class="bgsrcchanger" data-callid="tp-bgimagewpsrc" data-imgsettings="on" data-bgtype="image" id="radio_back_image" <?php if($bgType == "image") echo 'checked="checked"'?>>
						<?php _e("Image BG",REVSLIDER_TEXTDOMAIN)?>

							<a href="javascript:void(0)" id="button_change_image" class="button-primary revblue <?php if($bgType != "image") echo "button-disabled" ?>" style="margin-bottom:5px"><?php _e("Change Image",REVSLIDER_TEXTDOMAIN)?>

						<input type="radio" name="radio_bgtype" style="float:left;margin-left:15px;" data-callid="tp-bgimageextsrc" data-imgsettings="on" class="bgsrcchanger" data-bgtype="external" id="radio_back_external" <?php if($bgType == "external") echo 'checked="solid"'?>>
						<?php _e("External URL",REVSLIDER_TEXTDOMAIN)?>

							<input type="text" name="bg_external" id="slide_bg_external" value="<?php echo $slideBGExternal?>" <?php echo ($bgType != 'external') ? ' class="disabled"' : ''; ?>>
							<a href="javascript:void(0)" id="button_change_external" class="button-primary revblue <?php if($bgType != "external") echo "button-disabled" ?>" style="margin-bottom:5px"><?php _e("Get External",REVSLIDER_TEXTDOMAIN)?>

						<input type="radio" name="radio_bgtype" style="float:left;margin-left:15px;" data-callid="" class="bgsrcchanger" data-bgtype="trans" id="radio_back_trans" <?php if($bgType == "trans") echo 'checked="checked"'?>>
						<?php _e("Transparent",REVSLIDER_TEXTDOMAIN)?>

						<input type="radio" name="radio_bgtype" style="float:left;margin-left:15px;" data-callid="tp-bgcolorsrc" class="bgsrcchanger" data-bgtype="solid" id="radio_back_solid" <?php if($bgType == "solid") echo 'checked="solid"'?>>
						<?php _e("Solid Colored",REVSLIDER_TEXTDOMAIN)?>

							<input type="text" name="bg_color" id="slide_bg_color" <?php echo $bgSolidPickerProps?> value="<?php echo $slideBGColor?>">

						<?php _e("Preview Slide",REVSLIDER_TEXTDOMAIN)?>

<?php _e("Background Settings:",REVSLIDER_TEXTDOMAIN)?>

								<?php _e("Background Fit:",REVSLIDER_TEXTDOMAIN)?>
								<select name="bg_fit" id="slide_bg_fit" style="margin-right:20px">
									<option value="cover"<?php if($bgFit == 'cover') echo ' selected="selected"'; ?>>cover</option>
									<option value="contain"<?php if($bgFit == 'contain') echo ' selected="selected"'; ?>>contain</option>
									<option value="percentage"<?php if($bgFit == 'percentage') echo ' selected="selected"'; ?>>(%, %)</option>
									<option value="normal"<?php if($bgFit == 'normal') echo ' selected="selected"'; ?>>normal</option>
								</select>
								<input type="text" name="bg_fit_x" style="<?php if($bgFit != 'percentage') echo 'display: none; '; ?> width:60px;margin-right:10px" value="<?php echo $bgFitX; ?>" />
								<input type="text" name="bg_fit_y" style="<?php if($bgFit != 'percentage') echo 'display: none; '; ?> width:60px;margin-right:10px"  value="<?php echo $bgFitY; ?>" />

								<?php _e("Background Repeat:",REVSLIDER_TEXTDOMAIN)?>
								<select name="bg_repeat" id="slide_bg_repeat" style="margin-right:20px">
									<option value="no-repeat"<?php if($bgRepeat == 'no-repeat') echo ' selected="selected"'; ?>>no-repeat</option>
									<option value="repeat"<?php if($bgRepeat == 'repeat') echo ' selected="selected"'; ?>>repeat</option>
									<option value="repeat-x"<?php if($bgRepeat == 'repeat-x') echo ' selected="selected"'; ?>>repeat-x</option>
									<option value="repeat-y"<?php if($bgRepeat == 'repeat-y') echo ' selected="selected"'; ?>>repeat-y</option>
								</select>
								<?php _e("Background Position:",REVSLIDER_TEXTDOMAIN)?>

									<select name="bg_position" id="slide_bg_position">
										<option value="center top"<?php if($bgPosition == 'center top') echo ' selected="selected"'; ?>>center top</option>
										<option value="center right"<?php if($bgPosition == 'center right') echo ' selected="selected"'; ?>>center right</option>
										<option value="center bottom"<?php if($bgPosition == 'center bottom') echo ' selected="selected"'; ?>>center bottom</option>
										<option value="center center"<?php if($bgPosition == 'center center') echo ' selected="selected"'; ?>>center center</option>
										<option value="left top"<?php if($bgPosition == 'left top') echo ' selected="selected"'; ?>>left top</option>
										<option value="left center"<?php if($bgPosition == 'left center') echo ' selected="selected"'; ?>>left center</option>
										<option value="left bottom"<?php if($bgPosition == 'left bottom') echo ' selected="selected"'; ?>>left bottom</option>
										<option value="right top"<?php if($bgPosition == 'right top') echo ' selected="selected"'; ?>>right top</option>
										<option value="right center"<?php if($bgPosition == 'right center') echo ' selected="selected"'; ?>>right center</option>
										<option value="right bottom"<?php if($bgPosition == 'right bottom') echo ' selected="selected"'; ?>>right bottom</option>
										<option value="percentage"<?php if($bgPosition == 'percentage') echo ' selected="selected"'; ?>>(x%, y%)</option>
									</select><input type="text" name="bg_position_x" <?php if($bgPosition != 'percentage') echo ' style="display: none;"'; ?> value="<?php echo $bgPositionX; ?>" /><input type="text" name="bg_position_y" <?php if($bgPosition != 'percentage') echo ' style="display: none;"'; ?> value="<?php echo $bgPositionY; ?>" />

<?php _e("Ken Burns / Pan Zoom Settings:",REVSLIDER_TEXTDOMAIN)?>

								<input type="radio" name="kenburn_effect" value="on" <?php echo ($kenburn_effect == 'on') ? 'checked="checked"' : ''; ?> /> <?php _e("On",REVSLIDER_TEXTDOMAIN)?>  <input type="radio" name="kenburn_effect" value="off" <?php echo ($kenburn_effect == 'off') ? 'checked="checked"' : ''; ?> /> <?php _e("Off",REVSLIDER_TEXTDOMAIN)?>

							<table id="kenburn_wrapper" <?php echo ($kenburn_effect == 'off') ? 'style="display: none;"' : ''; ?>>

									<?php _e("Background",REVSLIDER_TEXTDOMAIN)?>

									 <?php //_e("Start",REVSLIDER_TEXTDOMAIN)?>
									<?php //_e("End",REVSLIDER_TEXTDOMAIN)?>

									<?php _e("Start Position:",REVSLIDER_TEXTDOMAIN)?>

									<?php _e("Start Fit: (in %)",REVSLIDER_TEXTDOMAIN)?>
									<input type="text" name="kb_start_fit" value="<?php echo intval($kb_start_fit); ?>" />

									<?php _e("Easing:",REVSLIDER_TEXTDOMAIN)?>

										<select name="kb_easing">
											<option <?php if($kb_easing == 'Linear.easeNone') echo ' selected="selected"'; ?> value="Linear.easeNone">Linear.easeNone</option>
											<option <?php if($kb_easing == 'Power0.easeIn') echo ' selected="selected"'; ?> value="Power0.easeIn">Power0.easeIn  (linear)</option>
											<option <?php if($kb_easing == 'Power0.easeInOut') echo ' selected="selected"'; ?> value="Power0.easeInOut">Power0.easeInOut  (linear)</option>
											<option <?php if($kb_easing == 'Power0.easeOut') echo ' selected="selected"'; ?> value="Power0.easeOut">Power0.easeOut  (linear)</option>
											<option <?php if($kb_easing == 'Power1.easeIn') echo ' selected="selected"'; ?> value="Power1.easeIn">Power1.easeIn</option>
											<option <?php if($kb_easing == 'Power1.easeInOut') echo ' selected="selected"'; ?> value="Power1.easeInOut">Power1.easeInOut</option>
											<option <?php if($kb_easing == 'Power1.easeOut') echo ' selected="selected"'; ?> value="Power1.easeOut">Power1.easeOut</option>
											<option <?php if($kb_easing == 'Power2.easeIn') echo ' selected="selected"'; ?> value="Power2.easeIn">Power2.easeIn</option>
											<option <?php if($kb_easing == 'Power2.easeInOut') echo ' selected="selected"'; ?> value="Power2.easeInOut">Power2.easeInOut</option>
											<option <?php if($kb_easing == 'Power2.easeOut') echo ' selected="selected"'; ?> value="Power2.easeOut">Power2.easeOut</option>
											<option <?php if($kb_easing == 'Power3.easeIn') echo ' selected="selected"'; ?> value="Power3.easeIn">Power3.easeIn</option>
											<option <?php if($kb_easing == 'Power3.easeInOut') echo ' selected="selected"'; ?> value="Power3.easeInOut">Power3.easeInOut</option>
											<option <?php if($kb_easing == 'Power3.easeOut') echo ' selected="selected"'; ?> value="Power3.easeOut">Power3.easeOut</option>
											<option <?php if($kb_easing == 'Power4.easeIn') echo ' selected="selected"'; ?> value="Power4.easeIn">Power4.easeIn</option>
											<option <?php if($kb_easing == 'Power4.easeInOut') echo ' selected="selected"'; ?> value="Power4.easeInOut">Power4.easeInOut</option>
											<option <?php if($kb_easing == 'Power4.easeOut') echo ' selected="selected"'; ?> value="Power4.easeOut">Power4.easeOut</option>
											<option <?php if($kb_easing == 'Back.easeIn') echo ' selected="selected"'; ?> value="Back.easeIn">Back.easeIn</option>
											<option <?php if($kb_easing == 'Back.easeInOut') echo ' selected="selected"'; ?> value="Back.easeInOut">Back.easeInOut</option>
											<option <?php if($kb_easing == 'Back.easeOut') echo ' selected="selected"'; ?> value="Back.easeOut">Back.easeOut</option>
											<option <?php if($kb_easing == 'Bounce.easeIn') echo ' selected="selected"'; ?> value="Bounce.easeIn">Bounce.easeIn</option>
											<option <?php if($kb_easing == 'Bounce.easeInOut') echo ' selected="selected"'; ?> value="Bounce.easeInOut">Bounce.easeInOut</option>
											<option <?php if($kb_easing == 'Bounce.easeOut') echo ' selected="selected"'; ?> value="Bounce.easeOut">Bounce.easeOut</option>
											<option <?php if($kb_easing == 'Circ.easeIn') echo ' selected="selected"'; ?> value="Circ.easeIn">Circ.easeIn</option>
											<option <?php if($kb_easing == 'Circ.easeInOut') echo ' selected="selected"'; ?> value="Circ.easeInOut">Circ.easeInOut</option>
											<option <?php if($kb_easing == 'Circ.easeOut') echo ' selected="selected"'; ?> value="Circ.easeOut">Circ.easeOut</option>
											<option <?php if($kb_easing == 'Elastic.easeIn') echo ' selected="selected"'; ?> value="Elastic.easeIn">Elastic.easeIn</option>
											<option <?php if($kb_easing == 'Elastic.easeInOut') echo ' selected="selected"'; ?> value="Elastic.easeInOut">Elastic.easeInOut</option>
											<option <?php if($kb_easing == 'Elastic.easeOut') echo ' selected="selected"'; ?> value="Elastic.easeOut">Elastic.easeOut</option>
											<option <?php if($kb_easing == 'Expo.easeIn') echo ' selected="selected"'; ?> value="Expo.easeIn">Expo.easeIn</option>
											<option <?php if($kb_easing == 'Expo.easeInOut') echo ' selected="selected"'; ?> value="Expo.easeInOut">Expo.easeInOut</option>
											<option <?php if($kb_easing == 'Expo.easeOut') echo ' selected="selected"'; ?> value="Expo.easeOut">Expo.easeOut</option>
											<option <?php if($kb_easing == 'Sine.easeIn') echo ' selected="selected"'; ?> value="Sine.easeIn">Sine.easeIn</option>
											<option <?php if($kb_easing == 'Sine.easeInOut') echo ' selected="selected"'; ?> value="Sine.easeInOut">Sine.easeInOut</option>
											<option <?php if($kb_easing == 'Sine.easeOut') echo ' selected="selected"'; ?> value="Sine.easeOut">Sine.easeOut</option>
											<option <?php if($kb_easing == 'SlowMo.ease') echo ' selected="selected"'; ?> value="SlowMo.ease">SlowMo.ease</option>
										</select>

									<?php _e("End Position:",REVSLIDER_TEXTDOMAIN)?>

										<select name="bg_end_position" id="slide_bg_end_position">
											<option value="center top"<?php if($bgEndPosition == 'center top') echo ' selected="selected"'; ?>>center top</option>
											<option value="center right"<?php if($bgEndPosition == 'center right') echo ' selected="selected"'; ?>>center right</option>
											<option value="center bottom"<?php if($bgEndPosition == 'center bottom') echo ' selected="selected"'; ?>>center bottom</option>
											<option value="center center"<?php if($bgEndPosition == 'center center') echo ' selected="selected"'; ?>>center center</option>
											<option value="left top"<?php if($bgEndPosition == 'left top') echo ' selected="selected"'; ?>>left top</option>
											<option value="left center"<?php if($bgEndPosition == 'left center') echo ' selected="selected"'; ?>>left center</option>
											<option value="left bottom"<?php if($bgEndPosition == 'left bottom') echo ' selected="selected"'; ?>>left bottom</option>
											<option value="right top"<?php if($bgEndPosition == 'right top') echo ' selected="selected"'; ?>>right top</option>
											<option value="right center"<?php if($bgEndPosition == 'right center') echo ' selected="selected"'; ?>>right center</option>
											<option value="right bottom"<?php if($bgEndPosition == 'right bottom') echo ' selected="selected"'; ?>>right bottom</option>
											<option value="percentage"<?php if($bgEndPosition == 'percentage') echo ' selected="selected"'; ?>>(x%, y%)</option>
										</select><input type="text" name="bg_end_position_x" <?php if($bgEndPosition != 'percentage') echo ' style="display: none;"'; ?> value="<?php echo $bgEndPositionX; ?>" /><input type="text" name="bg_end_position_y" <?php if($bgEndPosition != 'percentage') echo ' style="display: none;"'; ?> value="<?php echo $bgEndPositionY; ?>" />

									<?php _e("End Fit: (in %)",REVSLIDER_TEXTDOMAIN)?>
									<input type="text" name="kb_end_fit" value="<?php echo intval($kb_end_fit); ?>" />
									<?php /*_e("Rotation (in °):",REVSLIDER_TEXTDOMAIN) ?>
									<input type="text" name="kb_rotation_start" value="<?php echo intval($kb_rotation_start); ?>" />
									<input type="text" name="kb_rotation_end" value="<?php echo intval($kb_rotation_end); ?>" />	*/?>

									<?php _e("Duration (in ms):",REVSLIDER_TEXTDOMAIN)?>
									<input type="text" name="kb_duration" value="<?php echo intval($kb_duration); ?>" />

			<div id="divLayers" class="<?php echo $divLayersClass?>" style="<?php echo $style?>">

								<?php _e("Add Layer",REVSLIDER_TEXTDOMAIN)?>
								<?php _e("Add Layer: Image",REVSLIDER_TEXTDOMAIN)?>
								<?php _e("Add Layer: Video",REVSLIDER_TEXTDOMAIN)?>
								<?php _e("Duplicate Layer",REVSLIDER_TEXTDOMAIN)?>

								<?php _e("Delete Layer",REVSLIDER_TEXTDOMAIN)?>
								<?php _e("Delete All Layers",REVSLIDER_TEXTDOMAIN)?>

							<form name="form_layers" id="form_layers">

-
											<?php _e("Layer General Parameters",REVSLIDER_TEXTDOMAIN)?>

													<?php _e("Layer Content",REVSLIDER_TEXTDOMAIN)?>

												<?php
													$s = $settingsLayerOutput;
													$s->drawSettingsByNames("layer_caption");

													//add css editor
													$s->drawCssEditor();

													//add global styles editor
													$s->drawGlobalCssEditor();

													$s->drawSettingsByNames("layer_text,button_edit_video,button_change_image_source,layer_alt");
												?>

													<?php _e("Align, Position & Styling",REVSLIDER_TEXTDOMAIN)?>

													<?php
												    	$s->drawSettingsByNames("layer_left,layer_top,layer_whitespace");
												    ?>

												    <?php
												    	$s->drawSettingsByNames("layer_align_hor,layer_align_vert");
												    ?>

												    <?php
												    	$s->drawSettingsByNames("layer_max_width,layer_max_height");
												    ?>

													<?php _e("Image Scale (dimensions in pixel)",REVSLIDER_TEXTDOMAIN)?>	<?php echo _e("reset",REVSLIDER_TEXTDOMAIN)?>

												<?php
													$s->drawSettingsByNames("layer_scaleX,layer_scaleY");
													$s->drawSettingsByNames("layer_proportional_scale");
												?>

+
											<?php _e("Layer Animation",REVSLIDER_TEXTDOMAIN)?>

													<?php _e("Preview Transition (Star end Endtime is Ignored during Demo)",REVSLIDER_TEXTDOMAIN)?>

LAYER EXAMPLE

ON

													<?php _e("Start Transition",REVSLIDER_TEXTDOMAIN)?>

<?php
												    	$s->drawSettingsByNames("layer_animation");
												    ?>

												    <?php _e("Custom Animation",REVSLIDER_TEXTDOMAIN)?>

												    <?php
												    	$s->drawSettingsByNames("layer_easing,layer_speed,layer_split,layer_splitdelay");
												    ?>

													<?php _e("End Transition (optional)",REVSLIDER_TEXTDOMAIN)?>

<?php
												    	$s->drawSettingsByNames("layer_endanimation");
												    ?>

												    <?php _e("Custom Animation",REVSLIDER_TEXTDOMAIN)?>

												    <?php
												    	$s->drawSettingsByNames("layer_endeasing,layer_endspeed,layer_endtime,layer_endsplit,layer_endsplitdelay");
												    ?>

LAYER EXAMPLE

												<?php _e("Layer Animation Settings Panel",REVSLIDER_TEXTDOMAIN)?>
												<?php _e("Randomize",REVSLIDER_TEXTDOMAIN)?>

<?php _e("Transition",REVSLIDER_TEXTDOMAIN)?>

													<?php _e("X:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="movex" type="text" value="0" />px

													<?php _e("Y:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="movey" type="text" value="0" />px

													<?php _e("Z:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="movez" type="text" value="0" />px

<?php _e("Rotation",REVSLIDER_TEXTDOMAIN) ?>

													<?php _e("X:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="rotationx" type="text" value="0" />°

													<?php _e("Y:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="rotationy" type="text" value="0" />°

													<?php _e("Z:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="rotationz" type="text" value="0" />°

													<?php _e("Scale",REVSLIDER_TEXTDOMAIN) ?>
													<?php _e("Skew",REVSLIDER_TEXTDOMAIN) ?>

													<?php _e("X:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="scalex" type="text" value="0" />%

													<?php _e("Y:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="scaley" type="text" value="0" />%

													<?php _e("X:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="skewx" type="text" value="0" />°

													<?php _e("Y:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="skewy" type="text" value="0" />°

													<?php _e("Opacity",REVSLIDER_TEXTDOMAIN)?>
													<?php _e("Perspective",REVSLIDER_TEXTDOMAIN)?>
													<?php _e("Origin",REVSLIDER_TEXTDOMAIN)?>

														<input class="css_edit_novice tpshortinput" name="captionopacity" type="text" value="0" />%

														<input class="css_edit_novice tpshortinput" name="captionperspective" type="text" value="0" />px

													<?php _e("X:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="originx" type="text" value="0" />%

													<?php _e("Y:",REVSLIDER_TEXTDOMAIN) ?>

														<input class="css_edit_novice tpshortinput" name="originy" type="text" value="0" />%

												<?php _e("Test Parameters",REVSLIDER_TEXTDOMAIN)?>
												<?php _e("*These Settings are only for Customizer. Settings can be set per Start and End Animation.",REVSLIDER_TEXTDOMAIN)?>

														Speed:
														<input class="css_edit_novice tpshortinput" style="margin-top:3px;margin-right:5px;" name="captionspeed" type="text" value="600" />ms
														Easing:

															<select id="caption-easing-demo" name="caption-easing-demo" class="">
																<option value="Linear.easeNone">Linear.easeNone</option>
																<option value="Power0.easeIn">Power0.easeIn  (linear)</option>
																<option value="Power0.easeInOut">Power0.easeInOut  (linear)</option>
																<option value="Power0.easeOut">Power0.easeOut  (linear)</option>
																<option value="Power1.easeIn">Power1.easeIn</option>
																<option value="Power1.easeInOut">Power1.easeInOut</option>
																<option value="Power1.easeOut">Power1.easeOut</option>
																<option value="Power2.easeIn">Power2.easeIn</option>
																<option value="Power2.easeInOut">Power2.easeInOut</option>
																<option value="Power2.easeOut">Power2.easeOut</option>
																<option value="Power3.easeIn">Power3.easeIn</option>
																<option value="Power3.easeInOut">Power3.easeInOut</option>
																<option value="Power3.easeOut">Power3.easeOut</option>
																<option value="Power4.easeIn">Power4.easeIn</option>
																<option value="Power4.easeInOut">Power4.easeInOut</option>
																<option value="Power4.easeOut">Power4.easeOut</option>
																<option value="Back.easeIn">Back.easeIn</option>
																<option value="Back.easeInOut">Back.easeInOut</option>
																<option value="Back.easeOut">Back.easeOut</option>
																<option value="Bounce.easeIn">Bounce.easeIn</option>
																<option value="Bounce.easeInOut">Bounce.easeInOut</option>
																<option value="Bounce.easeOut">Bounce.easeOut</option>
																<option value="Circ.easeIn">Circ.easeIn</option>
																<option value="Circ.easeInOut">Circ.easeInOut</option>
																<option value="Circ.easeOut">Circ.easeOut</option>
																<option value="Elastic.easeIn">Elastic.easeIn</option>
																<option value="Elastic.easeInOut">Elastic.easeInOut</option>
																<option value="Elastic.easeOut">Elastic.easeOut</option>
																<option value="Expo.easeIn">Expo.easeIn</option>
																<option value="Expo.easeInOut">Expo.easeInOut</option>
																<option value="Expo.easeOut">Expo.easeOut</option>
																<option value="Sine.easeIn">Sine.easeIn</option>
																<option value="Sine.easeInOut">Sine.easeInOut</option>
																<option value="Sine.easeOut">Sine.easeOut</option>
																<option value="SlowMo.ease">SlowMo.ease</option>
															</select>

														Animate per:

															<select id="caption-split-demo" name="caption-split-demo" class="">
																<option value="full">None</option>
																<option value="chars">Chars</option>
																<option value="words">Words</option>
																<option value="lines">Lines</option>
															</select>

														Delays:
														<input class="css_edit_novice tpshortinput" style="margin-top:3px;margin-right:5px;" name="captionsplitdelay" type="text" value="10" />ms

													<?php _e("Transition Direction",REVSLIDER_TEXTDOMAIN)?>

<?php
									_e('Overwrite the current selected Animation ',REVSLIDER_TEXTDOMAIN);
									echo '""';
									_e(' or save as a new Animation?',REVSLIDER_TEXTDOMAIN)?>

										<?php _e('Save as Animation:',REVSLIDER_TEXTDOMAIN)?>

										<input type="text" name="layeranimation_save_as" value="" />

+
											<?php _e("Layer Links & Advanced Params",REVSLIDER_TEXTDOMAIN)?>

													<?php _e("Links (optional)",REVSLIDER_TEXTDOMAIN)?>

													<?php
														$s = $settingsLayerOutput;
														$s->drawSettingsByNames("layer_image_link,layer_link_open_in,layer_slide_link,layer_scrolloffset");
													?>

													<?php _e("Caption Sharp Corners (optional only with BG color)",REVSLIDER_TEXTDOMAIN)?>

													<?php
														$s = $settingsLayerOutput;
														$s->drawSettingsByNames("layer_cornerleft,layer_cornerright");
													?>

													<?php _e("Advanced Responsive Settings",REVSLIDER_TEXTDOMAIN)?>

													<?php
														$s = $settingsLayerOutput;
														$s->drawSettingsByNames("layer_resizeme,layer_hidden");
													?>

													<?php _e("Attributes (optional)",REVSLIDER_TEXTDOMAIN)?>

												<?php
													$s = $settingsLayerOutput;
													$s->drawSettingsByNames("layer_id,layer_classes,layer_title,layer_rel");
												?>

							</form>

									<?php _e("Layers Timing & Sorting",REVSLIDER_TEXTDOMAIN)?>

<?php _e("By Time",REVSLIDER_TEXTDOMAIN) ?>

<?php _e("By Depth",REVSLIDER_TEXTDOMAIN)?>

0 ms

<?php echo $slideDelay?> ms

			<?php foreach($arrButtonClasses as $class=>$text): ?>

						<a href="javascript:UniteLayersRev.insertButton('<?php echo $class?>','<?php echo $text?>')" class="tp-button <?php echo $class?> small"><?php echo $text?>

			<?php endforeach;?>

	<div id="dialog_template_insert" class="dialog_template_help" title="<?php _e("Template Insertions",REVSLIDER_TEXTDOMAIN) ?>" style="display:none;">
		<?php _e("Post Replace Placeholders:",REVSLIDER_TEXTDOMAIN) ?>

%meta:somemegatag%	<?php _e("Any custom meta tag",REVSLIDER_TEXTDOMAIN) ?>

%title%	<?php _e("Post Title",REVSLIDER_TEXTDOMAIN) ?>

%excerpt%	<?php _e("Post Excerpt",REVSLIDER_TEXTDOMAIN) ?>

%alias%	<?php _e("Post Alias",REVSLIDER_TEXTDOMAIN) ?>

%content%	<?php _e("Post content",REVSLIDER_TEXTDOMAIN) ?>

%link%	<?php _e("The link to the post",REVSLIDER_TEXTDOMAIN) ?>

%date%	<?php _e("Date created",REVSLIDER_TEXTDOMAIN) ?>

%date_modified%	<?php _e("Date modified",REVSLIDER_TEXTDOMAIN) ?>

%author_name%	<?php _e("Author name",REVSLIDER_TEXTDOMAIN) ?>

%num_comments%	<?php _e("Number of comments",REVSLIDER_TEXTDOMAIN) ?>

%catlist%	<?php _e("List of categories with links",REVSLIDER_TEXTDOMAIN) ?>

%taglist%	<?php _e("List of tags with links",REVSLIDER_TEXTDOMAIN) ?>

		<?php if(UniteEmRev::isEventsExists()):?>

		<?php _e("Events Placeholders:",REVSLIDER_TEXTDOMAIN) ?>

%event_start_date%	<?php _e("Event start date",REVSLIDER_TEXTDOMAIN) ?>

'%event_end_date%	<?php _e("Event end date",REVSLIDER_TEXTDOMAIN) ?>

%event_start_time%	<?php _e("Event start time",REVSLIDER_TEXTDOMAIN) ?>

'%event_end_time%	<?php _e("Event end time",REVSLIDER_TEXTDOMAIN) ?>

%event_event_id%	<?php _e("Event ID",REVSLIDER_TEXTDOMAIN) ?>

%event_location_name%	<?php _e("Event location name",REVSLIDER_TEXTDOMAIN) ?>

%event_location_slug%	<?php _e("Event location slug",REVSLIDER_TEXTDOMAIN) ?>

%event_location_address%	<?php _e("Event location address",REVSLIDER_TEXTDOMAIN) ?>

%event_location_town%	<?php _e("Event location town",REVSLIDER_TEXTDOMAIN) ?>

%event_location_state%	<?php _e("Event location state",REVSLIDER_TEXTDOMAIN) ?>

%event_location_postcode%	<?php _e("Event location postcode",REVSLIDER_TEXTDOMAIN) ?>

%event_location_region%	<?php _e("Event location region",REVSLIDER_TEXTDOMAIN) ?>

%event_location_country%	<?php _e("Event location country",REVSLIDER_TEXTDOMAIN) ?>

		<?php endif?>


text:
Shree Pawan Group to Set up 250 TPD…
Headquartered in Lucca, Italy, A.Celli Paper S.p.A. is a global leader in the supplying of machineries and advanced technologies for the paper and nonwovens market. The company has recently acquired PMT ITALIA – PAPER MACHINERY TECHNOLOGY, a company operating in the production of machinery for tissue and paper industry.
Mr. Simone Morgantini, Marketing & Communication Manager, A.Celli Group
A.Celli Paper S.p.A. is a company with a history of more than 75 years in the world paper market, providing advanced technology products and solutions. It specializes in the design of complete turnkey plants, in the manufacturing and rebuilding of tissue machines, and rewinders for tissue, flat paper and cardboard.
With a view to continuous evolution and improvement of the range of products and services, the A.Celli Group completes its offer with business units dedicated to the development of:
Roll handling & packaging systems, automated guided vehicles (AGV) and customized solutions for the automatic warehousing of reels, pallets, finished or semi-finished products
Industry 4.0 solutions for the digitalization of industrial processes and real-time data collection for the optimization and traceability of production, maintenance and remote control processes
Flexographic printing solutions on tissue, non-woven fabric and PP/PE film
Current Situation and Strategic Vision
According to the latest forecasts, in Italy, the current year will close with a public debt of 194 billion above the levels of the end of 2019 and with a GDP of -10.5%. The Italian economy, therefore, which already showed clear signs of stagnation, suffered a strong backlash given by the spread of the pandemic. Despite this situation, at A.Celli, we did not want to bend to the logic described above and we tried to look further ahead.
In fact, during 2020, A.Celli Paper took an important strategic step: the acquisition of PMT, a historic company operating in the machinery sector of the paper and tissue industry. With the entry of PMT into the perimeter of A.Celli Paper, the range of products and services was expanded and completed, thanks to the synergies that have been created between the organizations.
In particular, the technologies developed in the field of packaging papers, cardboard, cardboard, graphic papers, etc. they were again made available to Italian and foreign customers thanks to the skills and know-how acquired. Strong impetus was given to customer service in order to guarantee continuity and reliability of service to those who still use the former Beloit/PMT technologies.
Maintaining this wealth of knowledge in Italy, in a strategic sector such as that of paper production, has meant making an important choice that will benefit the entire supply chain, including the district of Lucca.
A.Celli Paper took an important strategic step: the acquisition of PMT, a historic company operating in the machinery sector of the paper and tissue industry.
Technological Innovations
A.Celli Group has developed a series of solutions that use the logic of artificial intelligence (AI) in the form of machine learning to analyze big data in order to determine the operational efficiency of each machine on the production lines of multiple production sites.
The final objective of this process is to provide data processed in real time in order to measure the production efficiency of the individual plant, create information databases to compare the different performances (energy, production, quality, etc.), optimize the downtime for maintenance, interfacing the production departments with management control and various other potentials.
Finally, A.Celli Nonwovens, boasting thirty years of experience in the non-woven fabric sector, specializing in winding, rewinding and reel handling lines, has provided state-of-the-art technologies for the production of this fundamental material necessary for the production of masks, health care, hygiene, etc. to the customers all over the world.
The LEGO Group: Pledges 100% Sustainable Packaging by 2025
Paques India: Closed Loop Operation With Biological Treatment in Indian OCC Industry
Shree Pawan Group to Set up 250 TPD Kraft Paper Mill in Assam


In Pennsylvania, rural and urban communities can differ in the various factors that impact healthcare outcomes. The social ecological model was used as a lens to view underlying factors in the literature related to the opioid epidemic that affect an individual's susceptibility to opioid use disorder in rural and urban populations. The Substance Abuse and Mental Health Services Administration treatment provider search function was used to examine rates of buprenorphine, drug and alcohol and mental health, and detoxification providers across the Commonwealth of Pennsylvania. Following the literature review and provider search, several factors were viewed to affect rural populations moreso than urban populations: the occupation of an individual, social networks, recovery support services, and access to buprenorphine and detoxification providers. Several factors were also found to be similar between urban and rural populations: individual risk factors, perceived norms towards substance use disorder, family, peer influence, stigma, socioeconomic status, rates of drug and alcohol and mental health treatment providers, and policies related to substance use disorder.
All these factors also have the ability to intermix and impact outcomes, such as perceived norms and stigma, which can combine to create low levels of access to treatment and recovery services. Several strategies could be used to overcome these barriers to care in rural populations. Behavioral health can be integrated into primary care offices. Telemedicine can be fully optimized to increase access to specialty services in rural communities. Finally, Medicaid policies can be adapted to make these strategies more achievable for providers of rural healthcare clinics. By incentivizing and increasing reimbursement for medication-assisted treatment and opioid use disorder management and prevention, Medicaid beneficiaries can have increased access to treatment necessary for recovery. In the future, public health policies and interventions that take both the differences and similarities of rural and urban communities into account, can have greater success in overdose reduction and decreasing rates of opioid use disorder across Pennsylvania and the United States.


Once again Agios Nikolaos Crete is the host of maybe the biggest but surely the most anticipated SUP Event of Greece! Are you ready to SUP?
Special prizes & offers for the participants & athletes and their families. Discounts for visitors and crazy beautiful scenery for an event you will never forget!
APPLY NOW FOR THE EVENT!


text:
Марио Токић (Дервента, 23. јул 1975) је некадашњи хрватски фудбалер који се пензионисао након завршетка сезоне 2010-11. Био је тренер загребачке Локомотиве од 14. новембра 2016. до 5. децембра 2017. године.

Клупска каријера
Марио Токић започео је професионалну каријеру у НК Ријека 1992. године. Након шест година, 1998. године прешао је у загребачки Динамо (тадашњу Кроацију). Са Динамом осваја двије титуле и два пута игра у Лиги шампиона. Прелази у аустријски ФК ГАК 2001. године, гдје је играо до 2005. године. Док је играо за ФК Гак, постигао је оно што се сматра његовим најбољим голом против Ливерпула, у квалификацијама за Лигу шампиона. Иако је ГАК тада повео са 1-0, на крају је изгубио са 2-1. Токић је затим 2005. године прешао у ФК Аустрија Беч. На крају сезоне 2006-07 Токић је најавио да ће се придружити ривалу свог тренутног тима, ФК Рапид Беч, у новој сезони. Августа 2009. године, након двије сезоне са Рапидом, клуб је објавио да је уговор са Токићем отказан.

Токић је био дио хрватске репрезентације на Европском првенству 2004. и Свјетском првенству 2006. године, али није играо ни на једном турниру.

Тренерска каријера
Након отпуштања Валентина Баришића, Токић је 6. јула 2016. године именован за новог тренера загребачке Локомотиве.

Новембра 2016. вратио се као тренер Локомотиве и остао је на тој позицији годину дана.

Статистика

Клубови

Међународни наступи

Наслови

ФК Динамо Загреб
 Прва лига Хрватске: 1998-99, 1999-00
 Куп Хрватске: 2001

ФК ГАК
 Бундеслига Аустрије: 2003-04
 Аустријски куп: 2002, 2004
 Аустријски суперкуп: 2002

ФК Аустија Беч
 Бундеслига Аустрије: 2005-06
 Аустријски куп: 2006, 2007

ФК Рапид Беч
 Бундеслига Аустрије: 2007-08
 Аустријски суперкуп: 2008
 УЕФА Интертото куп: 2007

Референце

Спољашње везе

 Mario Tokić profile, Player Details and Picture
 Guardian football
 Марио Токић на сајту Фудбалског савеза Хрватске

Хрватски фудбалери
Хрватски фудбалски тренери
Рођени 1975.
Дервенћани
Фудбалери Динама Загреб
Фудбалери Рапид Беча
Фудбалери Ријеке
Одбрамбени играчи у фудбалу
Тренери Локомотиве Загреб

redpajama_set_name: RedPajamaWikipedia


Yes, folks, we have another anthology releasing soon!
With stories from regular contributors and a few wonderful newbies, we have it all: dragons, kitsune, magical birds, snake-shifters, and ….werewolves in space? ( No, that's not a typo). I promise a great mix of legends and settings.
INSIGNIA VOL. 6. includes 8 short stories with Asian characters, settings, and magical creatures.
Last days of the Smashwords Summer Sale! The Insignia Series volumes 1 to 4 are on sale for 99c each until July 31st. See the list here.
And if you haven't checked out Insignia: Asian Science Fiction yet, you'll find all the book info and links on the Insignia Vol.5. page.


Stop by your local Rent-A-Center at 25 S 4Th Ave to check out our worry-free payment plans, plus try out all of our great rent-to-own furniture, smartphones, appliances, computers, and electronics. Our store carries all the appliances you could want for your home from major, trusted brands like Whirlpool. From basic televisions to state-of-the-art smart TVs, to the top computers and gaming consoles—they're all available at your local store. We even carry great decor and furniture from top manufacturers to make sure you have the options you deserve. Owning the newest electronics, smartphones, furniture, appliances, and computers is a snap at Rent-A-Center. Just browse our inventory online, call your closest store, or visit your nearest location at 25 S 4Th Ave! See how products from your local Rent-A-Center can change the way you look at your home!


The 'RHOBH' opens up about her dating life and how her kids are her main priority post-cancer.
Camille Grammer is taking things day by day since celebrating her one-year anniversary of being cancer free back in January. And these days, she's focused on the thing that's most important to her: her family.
"Every day a little better, a little stronger," the Real Housewives of Beverly Hills star, who was diagnosed with endometrial cancer in 2013, tells People. "The cancer I had is called clear cell carcinoma, and it can show up anywhere at any time. There's always that little fear in the back of my head, it could show up in my colon, my stomach, my brain. I do worry about that."
Despite her fear, Camille remains optimistic for her children. "But now, I'm not going to focus on that," she shares. "I'm just going to think positive and really [about] my kids, so I focus on my children and I love being around them, and I do it all for them."
And while she says there are guys in her life, she admits that dating or getting serious with anyone isn't her main priority. She has her kids, as well as her work with the Foundation for Women's Cancers.
"I have [guy] friends, but I keep it light because I'm not ready," she says. "You know, I've been really focusing on my children; I'm a single mom, so I'm basically the father and the mother in the situation," she said of her two children Mason, 13, and Jude, 10, with ex-husband Kelsey Grammer. "I was saying to my girlfriend, 'I really don't have time to date.'"
But she's not ruling out the possibility of romance completely. "I'm looking forward to it in the future."


text:
Pontoon Dock è una stazione della Docklands Light Railway (DLR) a Silvertown nell'est di Londra, sulla diramazione per Woolwich Arsenal, aperta il 2 dicembre 2005. Si trova nell'est di Silvertown nel borgo londinese di Newham, nella zona di sviluppo di Silvertown Quays, ed è nella Travelcard Zone 3.

Storia
Originariamente i treni DLR da Canning Town erano diretti ad est fino a Royal Victoria e Beckton. Il 2 dicembre 2005 è stata aperta la diramazione King George V (esteso a Woolwich Arsenal) realizzando un altro percorso, più a sud-est,  su cui ora ci sono quattro stazioni intermedie, West Silvertown, Pontoon Dock, London City Airport e King George V.
Durante i giochi olimpici di Londra 2012 la stazione è stata collegata da un percorso su strada fino all'uscita dell'ExCeL Exhibition Centre.

Altri progetti

Collegamenti esterni
 Pontoon Dock DLR station page

Stazioni della Docklands Light Railway


If you suffer from excessive sweating, have an underarm sweat problem, or simply don't want to be constantly worried about sweat patches on your clothes, try miraDry treatment, and live your daily life to the full with confidence.
Are you one of many men or women who experiences situations where underarm sweat makes you feel self-conscious and interferes with your daily activities?
Do you find that you have to apply more antiperspirant than normal?
Do you worry that others will notice sweat stains, requiring you to change clothes more than once a day, even when it's not hot outside?
In fact, Hyperhidrosis, (excessive sweating that has a dramatic effect on someone's lifestyle) is experienced by over 2% of the UK population, especially in the underarm area - and up to 1 in 5 people are bothered by the amount of sweat produced by their armpits. That's why we're excited that miraDry, a clinically-proven and safe solution, is now available here at MediZen.
As it is medically proven to work for the cure of underarm hyperhidrosis, the treatment is very effective for people who simply just want to eliminate underarm sweating forever. Can you imagine a life not having to worry about the fact that you haven't put on antiperspirant? If a sweat-free future sounds like something that you'd benefit from, contact the clinic today to book your free consultation!
Why choose miraDry to reduce your excessive underarm sweat?
Results can be seen after just ONE treatment, the results are permanent and immediate.
and do not grow back.
The procedure is non-invasive and non-surgical.
miraDry treatment is quick, with minimal to no downtime following the procedure.
miraDry is approved by the FDA as a treatment for axillary hyperhidrosis.
Why choose to have your miraDry treatment at MediZen?
As one of the UK's leading medical aesthetic clinical trial and training centres, and one of only a handful of cosmetic clinics registered with the Government's Care Quality Commission, you can be confident that our focus is your needs and that quality, training, safety and pain management (where applicable) is paramount in everything that we offer.
MediZen is one of only five clinics in the UK currently offering the miraDry treatment. Over 40,000 people have been successfully treated for excessive underarm sweating with miraDry in worldwide and we are proud to be able to offer the benefits of this treatment to our clients.
As a sufferer of excessive underarm sweat my entire life and having tried everything short of Botox®, miraDry was by far the best thing I have ever done to help with my condition. I just want to say that this is a great life changing procedure and will benefit many people just like me. The side effects were exactly as my doctor said – very minimal. Thanks again, you have a great product.
To book your free consultation call MediZen now on 0121 667 5703.
What is miraDry underarm sweat treatment?
miraDry is a safe, clinically-proven solution that significantly reduces underarm sweat. A treatment involves just two sessions spaced three months apart using the specially-designed miraDry handpiece to heat and destroy these specific sweat glands, resulting in an average 82% reduction in underarm sweating.
miraDry is unique in that it is currently the only non-invasive treatment for excessive sweating that provides long-term results without regular repeated treatments. This means that you can get on with your life without having to worry about this embarrassing condition.
MiraDry procedures usually take just one to two hours per session (two sessions recommended), and our clients have found these to be truly worthwhile and effective in solving their underarm sweat problems.
Before and After images of Underarm Sweat treatment using miraDry, Sutton Coldfield.
If you are looking for a solution to underarm excessive sweating, then miraDry is an attractive, comfortable and long-term option that you may wish to consider. To see more real, unaltered before and after images of actual clients and the results achieved using the miraDry underarm sweat treatment, please see our Before and After page.
You'll experience very little pain during treatment as we use a local anaesthetic in the underarm area treated, so the most you'll feel is a pull or warmth on the skin.
Read miraDry Sweat Treatment reviews from our clients, who have visited us at our clinic in Sutton Coldfield, and who we have helped reduce excessive sweating under the arms by up to 82%.
Gain perspective on just how costly it is to live with excessive sweating by using our Sweat Calculator which estimates how much excessive sweating is costing you. You might find that after all you've spent, miraDry is a pretty worthwhile investment!
Our miraDry excessive sweat treatment prices are competitive and based on two treatments; two sessions are recommended to ensure long-term effectiveness. Easy payment and budget plans are also available on all our aesthetic treatments and we offer consultations free of charge.
Where will you have your miraDry underarm sweat treatment?
miraDry underarm sweat treatment is carried out in one of the state of the art treatment rooms at our award winning cosmetic clinic in Mere Green, Sutton Coldfield. The private clinic is easily accessible from the M6 and Birmingham city centre, with our existing clients coming from all over the West Midlands including Cannock, Lichfield, Tamworth, West Bromwich and Walsall. We pride ourselves on our excellent customer service and aftercare delivered by our professional team.
In our recent customer satisfaction survey of 164 MediZen clients, 100% rated us Excellent or very satisfactory for overall service. When you have your miraDry treatment with us here at MediZen, we hope you will agree!


Where can I buy the NEW Almond Butter Cups?
Our NEW Dark Chocolate Almond Butter Cups have launched. You can find this product at many independent retailers along with New Seasons & New Leaf, Certco, Lunds & Byerlys, Shaw's, Hy-Vee, Target, Whole Foods Market, and Natural Grocers. We recommend calling in advance to ensure the product is in-stock and they have the nut butter cups that you're looking for.


Located at the Travelodge At The Falls, the store carries Niagara-themed souvenirs as well as collectibles from popular brands like Disney, NASCAR and Willow Tree. For an authentic Canadian culinary treat, indulge in locally made maple cookies. Open daily.


À la Gloire!! To Glory!
After spending the night in the rain, soldiers in Wellington's Anglo-Allied Army dried their guns and looked across the muddy fields. The French Army was preparing to attack. Everyone on both sides expected it to be a day of brutal combat - except for one man. The Emperor of France, Napoleon Bonaparte, told his generals, `This affair will be no more serious than eating one's breakfast.' He expected to defeat the Allies near Waterloo and enter Brussels in triumph by nightfall.
Starting before noon, the battle raged fiercely for five hours. Then the Prussian Army arrived to aid Wellington. Five hours later, the French Army was broken and retreated in disorder. Napoleon had `met his Waterloo'.
Nearly 190,000 soldiers fought in one of the most decisive battles in the history of Europe on June 18, 1815 .. now it's your turn to take command.
Based on Sid Meier's Gettysburg Engine.
Waterloo captures the excitement of the early 19th century battle with all the color, pomp and pageantry of the Napoleonic era. Take command of Napoleon's troops or Wellington's army and change history in this epic game based on the award winning Sid Meier's Gettysburg engine. Waterloo accurately depicts Napoleonic warfare in one of the most famous battles of all time.
Windows 95/98/2000/Me/XP: Pentium II 266 or higher, 64 MB RAM, 16 bit graphics at 800 x 600 resolution, 200 MB free hard drive space, Direct 7.0a, Mouse, Keyboard.


text:
Augusta's famous stage crowded with stars
Ken Willis Gatehouse Media
AUGUSTA, GA. — Do you want to know why followers of golf are practically pawing at the turf in anticipation of this year's Masters?
Along with all the usual aesthetic reasons — spring foliage, the Hogan Bridge, Rae's Creek, etc. — there's the very wide assortment of golfing firepower, much of it in full bloom, appropriately, raising hopes of a Sunday throw-down for the ages.
Here's one way of telling that story. Golfers like Dustin Johnson, Justin Rose, Henrik Stenson and Rickie Fowler walk to their first-round tee times with expectations of contending at least, hopefully winning, and rightfully so. No one would be the slightest bit surprised by the sight of any of them slipping into a green jacket Sunday evening.
Even Phil Mickelson, at 45 with a rejuvenated swing and confidence gained through good early-season performances, is talking boldly about his chances for a fourth Masters victory. And he has plenty of believers.
But guess what. On the latest Vegas odds boards, five men are more highly favored than all of the above: Jason Day, Jordan Spieth, Rory McIlroy, Bubba Watson and Adam Scott. Depth is one thing, but this year's Masters is both deep and wide with horsepower and potential star-power, even with the generation's biggest star — surely you remember Tiger Woods — still recovering from back surgery.
"Golf is in a good spot right now," said McIlroy, who at 26 had already won golf's other three majors and is trying to become the sixth golfer in history to round out the professional career grand slam.
Most years, McIlroy would hog the pre-Masters hype, given the enormity of his possible achievement. That was the case last year when he came to Augusta for his first shot at completing the career slam. But last year's Masters ended with a new pied piper — Spieth, a 21-year-old Texan who won the tournament with amazing precision and won the American sporting public with his grace and humility.
But both McIlroy and Spieth, along with everyone else, enters the first round seemingly in pursuit of Day, who won the most recent major championship (the PGA last August) as well as his past two starts on the PGA Tour. Day, the 28-year-old Aussie with an overall game (including Ruthian power) built for Augusta National, smartly downplays his current status.
"There's so many players that can win around here, and there's not just one heavy favorite this week, which is fantastic," he said. "I think it's good for the game of golf and I think it's good for this tournament, as well."
Day doesn't need to dig deep in the history books to find golfers of his pedigree who never managed to win the Masters. The course is a temptress, with its wide landing areas, light rough and perfect conditions. But the speedy conditions — particularly on and around the greens — make the Masters a marathon test of emotional discipline as well as physical ability (and durability, for that matter). The margin for error is so razor-thin, it's only a slight joke to suggest it's a wonder anyone ever wins it.
Even last year, which is remembered for Spieth "running away" with a four-shot win, there was a moment late Sunday afternoon on the 16th green when everything could've changed. A two-shot swing loomed, which would've halved Spieth's lead over Rose to two shots with two to play. But Rose missed a reasonable birdie putt while Spieth saved par from eight feet. Spieth later called it "maybe the biggest putt I've ever hit."
Of course, putts for birdie and par count the same on Thursday as they do on Sunday, which means there'll be no shortage of pressure hovering over the No. 1 tee box as players start the first round. The old saying is true: You can't win the Masters on Thursday, but you can lose it. And with all the physical preparation and emotional investments involved, no one wants to blow it on Day 1.
Especially not here, at a place best described as the Eden of American golf.
"The Masters has given myself and every young golfer something to aspire to, to dream of," said Mickelson, in his dual role of favorite and elder statesman. "And to be able to be part of its history means more to me than anything. I just love this event."


Import Video Into Powerpoint how to import a video into powerpoint 2010 this video shows you how to insert videos directly into powerpoint slides this helps you avoid switching between programs making your presentation run more smoothly.
So ideas if you like to get all of these amazing pictures regarding Import Video Into Powerpoint, click save icon to store the photos for your computer. They are all set for save, if you'd rather and want to obtain it, click save symbol in the web page, and it will be immediately downloaded in your notebook computer.
how do i import a movie file with audio into powerpoint powerpoint cannot play an mpeg file in which the audio and video have been separated avi files embed audio and video into the same file to insert a movie file in a powerpoint presentation the insert button and select "movies and sounds". video import a word outline into powerpoint powerpoint the key is to turn it into an outline first in microsoft word like powerpoint word also has an outline view the view ribbon tab in word and choose outline on the left hand side.
Here you are at our site, articleabove Import Video Into Powerpoint published by admin. Today we're excited to declare we have discovered an awfullyinteresting topicto be pointed out, that is Import Video Into Powerpoint Lots of people looking for specifics of and certainly one of them is you, is not it?