Every time when it comes to discussion on historical memory, I recall one story told by an elderly woman long ago. It was in mid 1980s, I was a teenager then and she was probably in her sixties. We were stuck together in a hospital room for about one week. The old lady was quite talkative so I had a chance to hear a lot about her life. With time most of that has been forgotten, but one story gives me no rest even today.


Download Free Cytus Game Hack v5.0.2 Unlimited Unlock Chapter 8-10 and Chapter S, 100% working and Tested for IOS and Android.
Cytus Game Hack can give you Unlimited Unlock Chapter 8-10 and Chapter S in the game.Cytus Game Hack also give you Unlimited .Our hack is very easy and user friendly. It is tested on many devices and 100% working. Cytus Game Hack is working on All IOS Device and Android.


I know very little about the building across the road from the General Penitentiary (now called the Tower Street Adult Correctional Centre), but have wondered about its history. It is a striking building, even in its derelict state.
I noticed it some time ago on a visit to the prison, which is itself in need of much repair and is certainly not suited for housing the men it does. The overcrowded, inhumane conditions do not lend themselves to the rehabilitation of the inmates in the custody of the state. Perhaps the condition of the building across the road is a visible reminder of things that have fallen apart.
A team from the JNHT carried out an archaeological appraisal (survey) and architectural assessment of the proposed development area. Our main objective was to identify cultural heritage resources, appraise their worth and their potential contribution to the advancement of the community's sustainable development.
Most of the buildings along Tower Street possess exquisite Jamaican Georgian architecture, and along with the General Penitentiary, are fundamental features of the Tower Street historical streetscape. They are of great architectural and historical significance. It is important that these buildings be preserved and integrated into the proposed development.
I was told that neither the buildings of the Staff Club compound nor the prison buildings are on the JNHT list of declared sites.
This is a closer look at the site on Google maps, on which I have scribbled a few labels. The main derelict building is circled, with the arrow pointing to the front entrance. 2 shows the parking lot and 1 indicates the front gate of the prison across the road. 3 shows another nearby derelict building, pictures of which I have also included in this post.
The main entrance to the building is open and is flanked by doorways labeled Lecture Rooms No.1 and No.2, harking back to a time when the building was used for training for correctional officers.
The door to Lecture Room No.1 still has a padlock on it, a rather ironic touch in the circumstances.
When you look through the front door, you can see the staircase and the doors to the two Lecture Rooms on either side.
…with the list on the wall of 45 Qualities of a Good Prison Officer.
A walk down the porch along the left side of the building leads to the back of the structure, some of which seemed to be in slightly better condition.
Standing at the back, I could see through the hallway past the staircase, out through the front door, across the parking lot to the front of GP.
An open door off that porch revealed some signs of more recent habitation.
The short road running along the left side of the parking lot is labeled Tower Street on the Google map, but it isn't THE Tower Street; it is a side road which has a dead end.
Looking the other way, down the road, you see a smaller building in disrepair and the front of GP.
This building is in two sections facing a small courtyard.
…but still show some of the distinctive features of the building.
I was very surprised to learn from some correctional officers who were in the parking lot that parts of the main building and the smaller building were used by some correctional officers for changing and even for staying overnight. Anyone having to use these buildings, particularly the upper storeys, is at real risk of injury and it raises an issue regarding provision of facilities for correctional officers who work at the correctional center.
So far I have found little information about these buildings and obviously there is much more to be found out regarding their history and any plans for what is to happen to them. This is the third post in my series on derelict buildings and I had far more information in the first two. I'd be interested in any information or leads anyone can provide. But today I felt like posting these photos, which I took a few months ago. So here they are!
Categories: history | Tags: Archaeological Impact Assessment Project (AIA), buildings, correctional officers, General Penitentiary, General Penitentiary Staff Club and Support Facilities compound, GP, Jamaica, Jamaica National Heritage Trust, JNHT, Kingston, maps, photos, Potters Row, Tower Street, Tower Street Adult Correctional Centre | Permalink.
This week's challenge was an easy one for me. Reading. I'd rather be reading.
Categories: reflections | Tags: books, Jamaica, photos, reading, weekly photo challenge | Permalink.


text:
University Library Special Collections & Archives
Cal State LA HistoryCal State LA Records & Collections Student Life & Culture Theses and Dissertations
Rare & Unique Books
Central America Distinctive Collections Literature & Poetry Los Angeles Mesoamerica and Colonial Mexico Music
Digital ArchivesOral Histories Pandemic Diaries Project Zoom Backgrounds
Digitization Internship
Student Life & Culture
Cal State LA Records & Collections
Cal State LA History
College/University Times Collection
The University Times is the student-run newspaper of California State University, Los Angeles. First published in June 1948, it was known simply as "Los Angeles State College". By October of that year, the newspaper was officially named "College Times". Then, in 1972, the College Times became the University Times, in accordance with Cal State LA's change to university status. In 1965 the College Times was named the best newspaper by California Intercollegiate Press.
View College/University Times Collection
The collection includes yearbooks from 1948 to present. The yearbook was not published between 1968-1975 as a result of anti-establishment philosophy held by many students.
Los Angeles State College yearbook, Pitchfork, 1966
Benita Shwartz
Benita Francis Schwartz attended California State University, Los Angeles (then known as Los Angeles State College) and majored in Home Economics. She was awarded a number of honors including "LASC Outstanding Women, S'57."
View Schwartz Collection Guide
Benita Shwartz shaking hands with Los Angeles State College President Howard S. McDonald, 1958
Cal State LA Chicano/a Poster Collection
The materials in this collection were created between 1968-1978. The entire collection consists of posters announcing events presented by the Chicano Studies Department at California State University, Los Angeles. The events include Feria De La Raza and the United Mexican-American Students Present "Community Day on Campus."
View Chicano/a Poster Collection Guide
Chicano/a Studies Department promotional flyer
CAL STATE la Student Union Collection
The Cal State LA University Student Union, established in 1975, is an on-campus organization consisting of multiple facilities and resource centers such as the Cross Cultural Centers, Center for Student Involvement, Gender and Sexuality Resource Center, and Associated Students Incorporated. This collection documents many of the student-run events hosted by various Cal State LA Student Union organizations that took place both on and off campus between 1995 and 2018.
View Student Union Collection Guide

redpajama_set_name: RedPajamaCommonCrawl


text:
Arsenal eye up swoop to sign Lazio star Sergej Milinkovic-Savic next summer
Arsenal have reportedly opened contact with Sergej Milinkovic-Savic's entourage ahead of a possible move to sign the Lazio midfielder next year.
The 27-year-old was linked with a switch to the Emirates in the summer, but a transfer to bring the Serbia international to the Emirates failed to materialise.
Milinkovic-Savic is claimed to be on Arsenal's radar ahead of a possible transfer next summer
Lazio midfielder Milinkovic-Savic scored for Serbia at the World Cup in Qatar
But it appears that the Gunners have rekindled their interest in the player, who is out of contract at the Stadio Olimpico in 2024.
According to Relevo, the long-time Manchester United target has no intention of penning a new deal with the Rome outfit.
This has led Mikel Arteta's side to begin negotiations with Milinkovic-Savic's team over a deal to sign him next summer.
As it stands, Lazio value Milinkovic-Savic at between £69million-£87m, and would let him depart in January should they receive a suitable fee.
But his price tag would drop to between £34m-£43m should he stay until the summer, where Arsenal would look to snap him for a bargain fee with his contract to expire the following year.
Arteta is known to be in the market for a new central midfielder to provide competition with Granit Xhaka and Thomas Partey.
Milinkovic-Savic is tied down at the Stadio Olimpico until 2024
CALL-UP
Man United promote two youngsters to first-team ahead of Premier League return
RULED OUT
French journalist explains why Benzema won't play for France in World Cup final
IN THE DIARY
When is the World Cup final? Date, kick-off time and venue
CUT TIES
Man United reach agreement to end £235m shirt sponsorship deal with TeamViewer
Elite clubs have 'woken up' to Amrabat talent as previous Tottenham interest confirmed
stalked
Morocco star Amrabat reveals conversation with Giroud during World Cup semi-final
But the Spanish news outlet has insisted that it isn't just Arsenal that are keen on Milinkovic-Savic, with London rivals Chelsea also in the hunt to secure his services.
Graham Potter is said to have identified the ex-Genk star as a potential recruit, with Jorginho and N'Golo Kante set to become free agents at the end of the season.
Meanwhile Juventus are also claimed to be keepings tabs on Milinkovic-Savic's situation.
But it has been alleged that they are not prepared to meet Lazio's high price tag.
Chelsea and Juventus are also thought to be keen on signing Milinkovic-Savic
Out of Arsenal, Chelsea and Juventus, Relevo have stated the 2019 Coppa Italia champion would prefer to join the Old Lady.
That is because he would rather continue his seven-year stay in Italy, with a move to Turin to see him live closer to brother Vanja, who represents Torino.
However, Milinkovic-Savic's priority is to sign for Real Madrid, though there is no suggestion that Los Blancos will enter the frame.
Carlo Ancelotti currently has Luka Modric, Toni Kroos, Federico Valverde, Eduardo Camavinga and Aurelien Tchouameni to choose from.
And Real are also understood to be interested in Jude Bellingham, though they fear they could be priced out of a move by Borussia Dortmund.
talkSPORT World Cup 2022 Coverage
talkSPORT is bringing you wall-to-wall coverage of the 2022 World Cup.
We are broadcasting all 64 games in the tournament live, with over 600 hours of coverage across our network.
You can tune in to talkSPORT and talkSPORT 2 via our free online streaming service at talkSPORT.com.
talkSPORT is widely available across the UK via DAB digital radio and on 1089 or 1053 AM.
You can also download the talkSPORT app, or ask your smart speaker to play talkSPORT.
Originally Posted By Talk Sport


text:
updated: 5/23/2018 10:45 AM
Middleby to buy Taylor ice cream company for $1 billion
Selim Bassoul
The Middleby Corp. in Elgin said it is buying the Taylor Company from UTC Climate, Controls & Security, a unit of United Technologies for $1 billion.
Taylor is a world leader in beverage solutions, soft serve and ice cream dispensing equipment, frozen drink machines, and automated double-sided grills. Middleby will finance the all-cash acquisition under its existing revolving credit facility. In 2017, Taylor had revenues of approximately $315 million and $65 million of adjusted earnings before interest, taxes and depreciation.
The transaction has been structured to provide Middleby with a tax step-up with a net present value of approximately $150 million. The transaction completion is subject to customary closing conditions, including regulatory approvals, with an expected closing early in the third quarter of 2018.
"The acquisition of Taylor is highly strategic for Middleby and bolsters Middleby's overall position as an industry leader in commercial food service," said Middleby CEO Selim A. Bassoul. "Taylor is a unique and premium brand in the commercial food service industry with leading positions in beverage, frozen dessert and grilling that are highly complementary to our existing offerings."
He said Taylor products are well represented across the top restaurant chains and have significant presence across all food service segments including quick serve, casual dining, retail, convenience stores, and institutional food service establishments.
Middleby acquires Josper S.A.
Middleby acquires Italian steam cooking manufacturer
Middleby CEO gives back
Elgin's Middleby buys slicer company


text:
Rafters' home run makes SportsCenter Top 10
ESPN featured the final play of the game on its list of top plays of the day.
Rafters' home run makes SportsCenter Top 10 ESPN featured the final play of the game on its list of top plays of the day. Check out this story on wisconsinrapidstribune.com: https://wrtnews.co/2b9TfHn
Caitlin Shuda, USA TODAY NETWORK-Wisconsin Published 1:38 p.m. CT Aug. 19, 2016
Wisconsin Rapids Rafters Rob Calabrese(Photo: Jacob Byk/USA TODAY NETWORK-Wisconsin)Buy Photo
WISCONSIN RAPIDS - Wisconsin Rapids Rafters fans aren't the only ones celebrating after a big win Thursday night.
SportsCenter highlighted the final play of the game on its top 10 list on ESPN. The Rafters landed at No. 8 for top plays of the day.
With two outs on the board, Rob Calabrese hit a first-pitch two-run walk-off home run to win the first game of the Northwoods League's Summer Collegiate World Series 5-4 against the Eau Claire Express.
RELATED: Rafters edge Express with late rally
"They were throwing me first-pitch fastballs all night and I was swinging to get my timing down," Calabrese told a Daily Tribune reporter after the game. "I went for it all in the ninth and I got it."
Calabrese, who went 2-for-4, with a double to go with his game-winning blast, also drove in three runs.
Game 2 of the championship series moves to Eau Claire at 6:35 p.m. today at Carson Park.
Caitlin Shuda: 715-424-7307 or cshuda@gannett.com; on Twitter @CaitlinShuda


text:
Pension system asks AG for clarity on pensions for lawmakers
State's public pension system wants AG to clarify opinion that would overturn longtime rule against getting pension, holding office simultaneously.
Pension system asks AG for clarity on pensions for lawmakers State's public pension system wants AG to clarify opinion that would overturn longtime rule against getting pension, holding office simultaneously. Check out this story on clarionledger.com: https://www.clarionledger.com/story/news/politics/2018/12/29/pensions-holding-office-mississippi-wants-clarification-ag-opinion/2437399002/
Jeff Amy, Associated Press Published 7:00 a.m. CT Dec. 29, 2018
Ray Higgins is the director of the state Public Employees' Retirement System.(Photo: Rogelio V. Solis, AP)
JACKSON, Miss. – Mississippi's public pension system on Friday asked Attorney General Jim Hood to clarify his earlier opinion that retired public employees can collect their pensions while serving in the Legislature.
The board of the Public Employees' Retirement System of Mississippi had voted earlier this month to ask for the clarification after Hood issued his original opinion on Nov. 29. The opinion indicates the retirement system should overturn its longtime rule that elected offices are full-time positions and people in those offices could not receive salaries and pension benefits simultaneously.
Those who support the change say they believe it will open the door for retired teachers and others knowledgeable about state government to run for legislative posts.
"It's my opinion that it's been an injustice all these years," Ann Thames, president of the 3,000-member Mississippi Retired Public Employees Association, said earlier this month. "The board needs to implement the AG's opinion."
The system has not changes its rules yet. Executive Director Ray Higgins and board members said they're not trying to get Hood to reverse himself. They note that there are a number of unanswered questions about what the pension system should do. The letter asks Hood to answer quickly in part because qualifying for the 2019 legislative election begins on Wednesday and ends March 1.
"We want to move forward in a very expedited manner," Higgins said earlier this month.
The original opinion was sought by state Sen. Sollie Norwood, a Jackson Democrat who previously worked for the state Department of Human Services.
Hood's office wrote that lawmakers could get retirement benefits as long as they collected no more than half of a lawmaker's salary and worked no more than 1,040 hours per year on legislative duties, like any other retiree under state law. Hood said he had no problem describing legislating as part-time work in Mississippi since many lawmakers hold full-time jobs in addition to their duties at the state Capitol.
As an alternative to the half time/half pay rule, state law also says retirees who return to work for a state agency can earn up to one-quarter of their previous pay and still collect pensions. The typical lawmaker is paid nearly $40,000 in salary plus an expense allowance that is taxed like income and counted as "earned compensation," according to retirement system figures.
Higgins said the system isn't clear if the expense money also has to be counted against the 25 percent threshold. If it is, that means only lawmakers who earned more than $160,000 a year in their old jobs would be eligible to collect both lawmaker pay and a pension.
It's unclear if lawmakers can refuse some of their salaries or expenses, because state law says legislators "shall" be paid for salaries and expenses, a phrasing that makes a paycheck mandatory.
State law also calls for 90 days between when employees retire and when they start collecting pension benefits. Higgins said it's unclear whether that means a sitting lawmaker has to leave the Legislature, or whether they can just forgo legislative pay for 90 days.
Finally, any lawmaker collecting a pension wouldn't be accumulating new pension credit on their legislative salary. But lawmakers also get an extra pension called the Supplemental Legislative Retirement Plan. The credit for the supplemental plan is based on credits for the regular legislative salary. Higgins said the system is unsure if it should award supplemental credits and how to calculate them if it's not awarding regular credit.
Opinion: Retired persons have rights, too. We shouldn't be punished for public service.
List: Who's running for governor, AG and other open seats in Mississippi
Read or Share this story: https://www.clarionledger.com/story/news/politics/2018/12/29/pensions-holding-office-mississippi-wants-clarification-ag-opinion/2437399002/
Madison police arrest doctor for alleged sexual battery
Mississippi female football player headed to Super Bowl
Pumps acquired to help drain lake, ease pressure on dam
Mississippi guard sentenced for assaulting inmate
UPDATE: Police safely remove man barricaded inside home


Welcome to the Hans-Zimmer.com website. Biography, discography, news, MP3 extracts, interviews, videos, medias. Completely redesigned for Windows 10, the latest version of StaffPad is a free update for existing users and boasts impressive new features like partial bar selection. Find album reviews, stream songs, credits and award information for Film Music of Hans Zimmer - Hans Zimmer on AllMusic - 2007 - Silva Screen Records specializes. Download Pirates of the Caribbean - He's a Pirate (1) midi. Best midi files in the world. Over 10,000+ MIDI files.
Best midi files in the world. Over 10,000+ MIDI files. This is the mfiles page for Hans Zimmer with career overview, filmography, soundtrack reviews, related composers and links. SONiVOX, your home for the best digital music creation tools available with products for professional composers, producers, musicians, and iPad and Android developers. Chords for Hans Zimmer - Time (Inception). Play along with guitar, ukulele, or piano with interactive chords and diagrams. Includes transpose, capo hints. Aug 15, 2013 be/yq6olOtN1SQ Sheet Music: ly/U2GrI Midi: ly/ U2Gp1 Subscribe to my Youtube Channel. Download Hans Zimmer - Time midi. Best midi files in the world. Over 10000+ MIDI files. Interstellar Docking Scene Music - No Time For Caution - Hans Zimmer Interstellar is a 2014 science fiction film directed by Christopher Nolan. Video Killed The Radio Star by Buggles song meaning, lyric interpretation, video and chart position. This is the twelfth title (Time) of the Inception soundtrack made by Hans Zimmer. Story: Inception is a 2010 American science fiction action film written. Hans Zimmer - Time, MIDI file download and video.
This piece is the theme music for the film Inception composed by Hans Zimmer. I loved it so much I couldn't help but want to work out the parts Hans Zimmer, Music Department: Pirates of the Caribbean: The Curse of the Black Pearl. German-born composer Hans Zimmer is recognized as one of Hollywood's. Hans Zimmer - Time MIDI (n/a - Originals ). Made by Zaikon for Nonstop2k - The Producer's Resource. This MIDI File Is Only A Partial Sequence for.


The US Navy has a large number of unmanned underwater vehicles (UUV), also known as underwater drones. These vehicles can be divided into two categories - remotely operated underwater vehicles (ROVs), which are controlled by a remote human operator, and autonomous underwater vehicle (AUVs), which operate independently of direct human contact.
But these submersible drones are vulnerable when they surface to recharge, which is why the US Department of Defense Space and Naval Warfare Systems Command (SPAWAR) has now developed a wireless charging system that can work underwater to recharge these vehicles.
"Unmanned and autonomous systems are used extensively for Navy missions and will continue to play a large role in future Navy and joint scenarios. While most of these systems are able to perform their mission without human interaction, limitations in the amount of power that can be stored place a limit on the overall system autonomy," said Dr. Alex Phipps, chief of the Advanced Integrated Circuits and Sensors Branch at SPAWAR.
SPAWAR recently demonstrated the technology by using a mobile phone. Wayne Liu (Project Lead of the wireless charging project) charged his mobile phone underwater by using this technology. His phone was protected by a plastic bag during the demonstration. This latest development will no doubt help the US Navy, who do not want to find themselves with incompatible charging devices.
Currently, if the navy acquires an UUV, it only works with a specific brand or type of charger. This project aims to create a standard by capturing the common elements used in wireless charging that can be reapplied for underwater vehicles and give it to the industry.


text:
Luke Has A Memorable Night at the Grand Ole Opry
Luke Bryan planned a special acoustic set for his appearances as part of the 11th annual Opry Goes Pink tonight at the Grand Ole Opry. Luke began each of the two sold-out shows "flipping the switch" on the signature barn turning it pink to raise awareness for the fight against breast cancer. During his first Opry show performance, Luke was surprised with a special presentation by the Academy of Country Music's RAC Clark naming him the first-ever recipient of the ACM Album of the Decade Award for Crash My Party.
"'Crash My Party' was such a life changing album for us," shared Luke from the stage of the Opry. "We didn't know it at the time, we were just loving making music for you guys. It blew my mind the love and support we had from the fans. It's so fun getting to do this. Thank you to my producer Jeff and my record label and management for sharing this experience with me tonight!"
The ACM Album of the Decade Award recognizes an album that has impacted country music over the decade. The factors to be considered are, but are not limited to the success at radio of singles released from album, album concept, commercial media, sales and streaming, artistic merit and ACM Award recognition.
Luke's four-time Platinum selling album Crash My Party, produced by Jeff Stevens, was released in 2013 and firmly planted his career as a superstar entertainer. Crash My Party was the largest sales debut for a country male artist since 2004, selling nearly 530,000 albums its first week and debuting at #1 on the Billboard 200 and the Country sales chart. The album went on to sell over four million copies and contains six consecutive #1 singles, "Crash My Party," "That's My Kind of Night," "Drink A Beer," "Play It Again," "Roller Coaster," and "I See You."


text:
71 drivers caught using mobiles during traffic operation
A one-day operation by Essex Police in Waltham Abbey saw more than 400 penalty points handed out to drivers caught using their mobile phone at the wheel.
Officers from Essex Police's Casualty Reduction Section staged the operation on the A121 in Waltham Abbey on 19 October, using a combination of engagement and enforcement.
During the course of the operation, 71 drivers were found to be driving while using their mobile phone. Each driver was given six points and a fine – meaning a total of 426 points were handed out.
104 drivers were stopped for failing to wear a seatbelt and one driver, a 37-year-old man from Enfield, was arrested on suspicion of driving while under the influence of drugs.
Six drivers were found to be driving without a valid MOT and two without valid insurance – and as a result their cars were seized under Section 165.
Matt Hine, operational tasking supervisor at the Casualty Reduction Section, said:
"Throughout the operation the team had to stop a significant number of drivers who were using their phones at the wheel. The law around driving while using a mobile phone exists for a reason.
"For new drivers, if you are given six points during your first two years of passing your test, that's your licence gone. Driving comes with responsibility and there is no excuse for taking risks that could see you seriously injuring or killing yourself and others."


text:
United Increases Its Number of Flights to College Football Hotspots This Fall
Emily McNutt
College football fans, rejoice. United Airlines wants to make it easier to travel to college cities across the country in order to see the biggest college games. This fall, the Chicago-based airline is adding frequencies to a number of existing destinations that it also qualifies as top college football markets, as well as adding larger planes to operate some of its routes.
Between September and November, United is adding more than 204,000 total seats to the popular college football destinations, amounting to 2,200 additional daily seats.
"Each fall, football fans travel from near and far to cheer on their alma matter or favorite college team," said Ankit Gupta, United's VP of domestic network. "Football brings families, friends and classmates together for thrilling and memorable moments, which is why we've added over 204,000 seats to top college markets this fall to help our customers more easily get to these exciting games."
These are the routes gaining additional frequencies between September and November:
Route Major College Nearby Typical Frequency (round-trips per week) New Frequency (round-trips per week)
Chicago (ORD) ⇒ Columbia, SC (CAE) University of South Carolina 2 3
Chicago (ORD) ⇒ Madison, WI (MSN) University of Wisconsin 7 9
Chicago (ORD) ⇒ Oklahoma City, OK (OKC) University of Oklahoma 3 4
Chicago (ORD) ⇒ Omaha, NE (OMA) University of Nebraska 5 6
Chicago (ORD) ⇒ South Bend, IN (SBN) University of Notre Dame 4 5
Chicago (ORD) ⇒ State College, PA (SCE) Penn State University 3 4
Denver (DEN) ⇒ Knoxville, TN (TYS) University of Tennessee 1 2
Houston (IAH) ⇒ College Station, TX (CLL) Texas A&M 2 3
New York (EWR) ⇒ Columbus, OH (CMH) Ohio State 7 8
New York (EWR) ⇒ Detroit, MI (DTW) University of Michigan 6 7
New York (EWR) ⇒ Madison, WI (MSN) University of Wisconsin 2 3
New York (EWR) ⇒ Omaha, NE (OMA) University of Nebraska 2 3
New York (EWR) ⇒ South Bend, IN (SBN) University of Notre Dame 1 2
Washington, DC (IAD) ⇒ Columbia, SC (CAE) University of South Carolina 2 3
Washington, DC (IAD) ⇒ Greenville, SC (GSP) Clemson 3 4
Washington, DC (IAD) ⇒ Knoxville, TN (TYS) University of Tennessee 2 4
Washington, DC (IAD) ⇒ State College, PA (SCE) Penn State University 2 3
In addition to the added frequencies in select markets, United is also adding larger aircraft on some other routes in order to accommodate more passengers.
The following routes will get larger aircraft on the routes from September through November:
Chicago (ORD) ⇒ Fayetteville, AR (XNA)
Chicago (ORD) ⇒ Lansing, MI (LAN)
Denver (DEN) ⇒ Austin, TX (AUS)
Houston (IAH) ⇒ Birmingham, AL (BHM)
Houston (IAH) ⇒ Fayetteville, AR (XNA)
Houston (IAH) ⇒ Tucson, AZ (TUS)
New York (EWR) ⇒ Austin, TX (AUS)
San Francisco (SFO) ⇒ Boise, ID (BOI)
If you're planning to take advantage of one of these limited-time route increases, consider signing up for one of these credit cards that are best for flying with United.
Emily McNutt is The Points Guy's Global News Editor and is based in London.


This way you have a full working LAMP server. Now if you need additional php extensions just open the Synaptics package manager (System -> Administration -> Synaptics Manager) and search for "php", this will give you all the available options.
In the above commands if you replace the "restart" with "stop" or "start" you can stop or start the server.
Again you should replace USER with your username and GROUP with the group that you belong to.
Our LAMP server is ready!
Now that you are ready you can start using your LAMP server. Visit http://localhost/ to visit it from your browser or visit http://localhost/phpmyadmin to administer the mySQL server.
This entry was posted on Saturday, May 16th, 2009 at 12:49 pm	and is filed under How to. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.


IROTATHERI, Venezuela – Venezuelan officials and journalists investigating reports of a possible massacre in a remote indigenous village in the Amazon have found people peacefully cooking plantains over a communal fire, and no sign of any killings.
Yanomami Indians in the village of Irotatheri spoke with journalists through a guide, who translated their accounts that there had been no violence. The government flew in journalists by helicopter Friday after a report of killings in the community by an indigenous group.
The villagers stood and watched in apparent amazement as the helicopter passed over their huts and landed nearby in a clearing. Women in the village carried their babies in slings, and people of all ages had their lips bulging with tobacco leaves that they stuff into their mouths and keep there without chewing throughout the day.
Leaders of the Horonami Yanomami Organization released a statement late last month saying that people from a nearby village had visited Irotatheri and reported a mass killing of unknown proportions in early July.
About 40 people live in Irotatheri, a collection of huts that officials say is 19 kilometers (12 miles) from the border with Brazil.
The villagers still largely keep to their traditional ways, wearing face paint and loincloths. But government officials who reached the village ahead of the journalists brought the people T-shirts to cover themselves, and also brought hammocks and cooking pots, which the Yanomami quickly accepted.
Officials gave them pasta and dried manioc that they could cook in their new pots, and also handed them their first spoons.
A doctor traveled with the group and was providing check-ups. Many people in the village were treated for skin ailments and conjunctivitis.
The villagers performed a dance for the visitors, holding bows and arrows.
The Yanomami are one of the largest isolated indigenous groups in the Amazon, with a population estimated at roughly 30,000 on both sides of the Venezuela-Brazil border.
The Yanomami have often had to contend with Brazilian gold miners, who for years have crossed into Venezuela and torn up the forest, leaving water laced with mercury. But military officials who reached the village said that patrols in the area had found no miners.
The government is providing the community with a radio so it communicate with the authorities if they have problems. Two men from the village climbed aboard a helicopter for the first time and flew to a nearby military outpost in La Esmeralda to learn how to use the radio system.


text:
2023: OPPORTUNISTIC ASPIRANTS AND THE GULLIBLE PUBLIC. By Dakuku Peterside
May 9, 2022 Publisher Politics 0
2023: OPPORTUNISTIC ASPIRANTS AND THE GULLIBLE PUBLIC.
Dakuku Peterside .
The holy grail of democracy is the widespread participation of people in the business of power, legitimised by the representation of elected leaders. Participation is so meaningful that the noun derivative of democracy, democratisation, means "the action of making something accessible to everyone". So, on face value, the democratisation of "presidential aspiration" seems to be a good thing, and one may argue that this might throw up a pool of aspirants for the primaries for the people to choose, but the reality may be more sinister and a bad omen for our democracy.
The presidential aspirants' field is getting crowded – the good, the bad, and the ugly are throwing their hats into the ring. In the past few weeks, more and more persons have indicated an interest in running on the platform of the two major political parties against all odds, including outrageous Expression of Interest and Nomination form fees.
The statistics of the aspirants for the two leading parties keep changing each day. APC has 23 Presidential aspirants with a possibility of getting to 25 by the close of nominations. 241 Senate aspirants with a chance of getting to 300 at the close of nominations. 821 House of Representatives aspirants with a possibility of getting to 1,000. For PDP, about 17 presidential aspirants, 301 Senate aspirants and 1218 House of Representative aspirants have declared their interest in the various posts for the 2023 general election and have already presented themselves for screening.
Never in the history of our democracy have many aspirants, at short notice, declared interest in occupying the highest position in the country than in this run-up to the 2023 elections.
The rash of aspirants is a symptom of too many negatives. Let us grant that democracy entitles every citizen to aspire to any position. Let us also concede that a democracy cannot put a ceiling on how many citizens aspire for elective offices. We can even further concede that the sheer volume of aspirants to various elective positions could indicate a deepening of the popularity of democracy in our country. Yet the sheer number, nature and character of most aspirants give us a cause for concern.
A few pertinent questions come to mind: What socio-political context is pushing this new phenomenon, and what does it portend to our democracy in general and the 2023 general elections in particular? How is this affecting the public? What must the public do to stem the negatives of this novel political phenomenon?
Three major issues are working in tandem to fuel the rush for nomination for the presidential ticket and other elective offices. The first is the commercialisation of political offices in Nigeria. Politics is big business, and everyone knows that. For the majority, the most accessible means to inexplicable wealth and power in Nigeria today is to hold a political office. Before taking a political office, people with no known means of wealth suddenly become so rich beyond the imagination of many, with no one asking why and how? Businessmen and political jobbers are now "investing in politics", intending to reap significant profit, albeit at the expense of the people. Related to this is elite joblessness, making politics the most lucrative openly available sector. The elite total engrossment in politics for economic survival is a breeding ground for rampant corruption.
See also kidnapping and banditry has been reduced with NIN - Isa Pantami
The juiciest of these political posts are the executive offices of the presidency and governors. This transactional nature of politics means that no matter the outrageous cost of nomination forms and electioneering, the political elite is hard done, doing whatever it takes and at all costs to have access to these offices. The first step is declaring an interest and getting a form for the primaries. Everyone wants a piece of the cake, fuelling corruption to unprecedented levels in Nigeria.
The second issue, especially for the offices of the president and governor, is what I will refer to as the demystification of these hallowed offices. Pre-independence and during the second republic, the people revered the president's and governor's offices. We expected only people of a certain calibre, political dexterity, and intellectual integrity to even dream of applying for the office; much more to attempt to do. Political sages like Awolowo, Azikiwe, Aminu Kano, Abiola, Obasanjo, and Falae summoned the courage to ask the public to trust them and vote for them to become the president of Nigeria. This time seems to have changed, especially in the past decade.
Unfortunately, recently, each election cycle inadvertently produces a declining quality of political leadership, which lowers the bar for those aspiring to occupy the office and causes public mistrust of officeholders. The bar is so low now that people with no pedigree or experience in leadership, even in their homes, are aspiring to the president's office. It is common knowledge that most aspirants will not get any executive position in any reputable private company. How can a man who cannot be employed to manage a conglomerate with about 1000 workers think he is qualified to manage Nigeria PLC?
The third issue is deliberate positioning to profit from political consensus. The two major political parties in Nigeria lack a deep culture of internal democracy, cohesion and unity, and this anomaly is because they are not ideologically driven, and there are intraparty frictions among party members. There are party godfathers' factions, ethnic and regional factions, and other factions of interest pulling the parties in different directions.
It is becoming common for political parties to resort to a democratic consensus to adopt candidates and avoid the ensuing brouhaha. Therefore, negotiations, deals, and rewards are given to those candidates at the table to arrive at this consensus. To be among these candidates on the table to negotiate an accord, you must have declared your interest, buy, complete, and submit the nomination forms.
See also Amaechi Will Resign When It Becomes Imperative According to The Electoral Act ~ APC Chieftain
So, the rush to purchase the N40 million or N100 million nomination forms may mean some aspirants buying a ticket to the negotiating table, where some would be asked to step down and promised rewards. And to be relevant, you must purchase your way to that table where the final act would play out before the convention, which may end in consensus or affirmation.
Another plausible reason for the proliferation of aspirants is not unconnected to a strategy by a tiny clique of serious aspirants to weaken the delegates' base of their co-competitors. Political entrepreneurs around the presidency and commanding height of the two major political parties may also be manipulating the internal process of the parties to enable them to achieve a predetermined outcome.
These happenings have grave consequences for our democracy and the 2023 general election. The Presidential aspirants' field in the two major political parties has thrown up what I refer to as opportunists. Some of these aspirants had earlier indicated an interest in Senate, Governorship or were hitherto not interested in the office but now are presidential aspirants. They are opportunists who just saw an opening to take advantage of for varied reasons.
A critical analysis of the character and qualities of some of these opportunistic aspirants shows traits that are worrisome to any true lover of democracy. These traits include being reluctant; emphasising ethnicity, region, and religion; twisting facts, manipulating the truth, ignoring their failings, take credit for what they know nothing about. They have no deep critical thinking, no personal values, self-centred, do not see good in other people: lack character and integrity; and have plenty of swagger and arrogance. Realistically, opportunist aspirants lack vision, discretion, and wisdom, putting the country under enormous pressure.
These opportunists come in various shades and colours. Kene Obiezu described them as "consummate liars whose ageless ability to describe white as black have retained their relevance in the corridors of power". He postulated that "there are the career sycophants whose lack of revulsion at licking any kind of boot as long as a powerbroker wears it keeps them gainfully employed. There are the perennial underachievers who though inept at everything else are adept at manipulating the levers of power to perpetuate themselves in office. There are the serial opportunists for whom survival is the name of the game no matter who has what baggage. Then there are the heinous hypocrites."
These people put our democracy at risk. We can easily deduce the enormous implications of these on politics and society. If those who always put themselves out to take up public office are so utterly bereft of character and the courage of conviction, what will be the fate of those public offices when they eventually get in?
See also We Shall Die Like Fools If We Have A Government Which Is Corrupt And Is Only Waiting To Be Given Money To Be Given By International Community
One unintended fallout of this crowded field of aspirants is that this may be the most expensive party primaries in our political history. Too many aspirants for each party indicate a trust deficit in the two leading political parties and come with a transactional mindset that is ready to negotiate. Some may play a spoiler role – as intermediaries prepared to deal and sell their delegates for peanuts. Some hope to emerge as compromise candidates. In the case of the presidency, some adopted this strategy of having many aspirants kill the idea of presidential endorsement.
Whatever their motive or intensions, their actions may throw up mediocre aspirants who are not prepared as compromise candidates. These opportunistic aspirants are there for their interests and will destroy the country for their greed.
Typically, the democratisation of aspirants should be good for the various parties and society because it gives us broader options to choose from and quality leaders. However, in this Nigerian case, it is evident, based on our political context and antecedents, that the ongoing muster parade of aspirants is a signal of a political locust invasion whose ultimate impact would be to sack the national treasury and ground Nigeria. This has broader ramifications for our development as a nation and people.
Nigeria needs quality leadership now. Any actions that jeopardise that must be resisted by all. The public must not be gullible and allow the political class to play ping pong with their future. This is the time to engage actively with the political process. Failure to do this may leave us with a decade of wasted hopes and dreams in the hands of charlatans, and political jobbers bent on holding our future and that of the next generation to ransom. In a democracy, the people are the last hope for good governance. The people must choose the right leaders to make the change they want. Getting this wrong will undermine everything good about our collective existence.
RIVERS APC: MY STORY Part 2: ~ Ikenda Elechi
My criticism Of Wike Not Driven By Personal Ambition – Dakuku Peterside


An adverse outcome pathway (AOP) helps to organize existing knowledge on chemical mode of action, starting with a molecular initiating event such as receptor binding, continuing through key events, and ending with an adverse outcome such as reproductive impairment. AOPs can help identify knowledge gaps where more research is needed to understand the underlying mechanisms, aid in chemical hazard characterization, and guide the development of new testing approaches that use fewer or no animals. A September 2014 workshop in Bethesda, Maryland considered how the AOP concept could improve regulatory assessments of chemical toxicity. Scientists from 21 countries, representing industry, academia, regulatory agencies, and special interest groups, attended the workshop, titled Adverse Outcome Pathways: From Research to Regulation. Workshop plenary presentations were followed by breakout sessions that considered regulatory acceptance of AOPs and AOP-based tools, criteria for building confidence in an AOP for regulatory use, and requirements to build quantitative AOPs and AOP networks. Discussions during the closing session emphasized a need to increase transparent and inclusive collaboration, especially with disciplines outside of toxicology. Additionally, to increase impact, working groups should be established to systematically prioritize and develop AOPs. Multiple collaborative projects and follow-up activities resulted from the workshop. (C) 2016 Elsevier Inc. All rights reserved.


text:
Franz Liszt - Harmonies poétiques et religieuses, S. 173 No. 3: Bénédiction de Dieu dans la solitude (1847)
Between 1847 and 1852, Liszt composed the piano cycle Harmonies poétiques et religieuses, a title borrowed from one of Alphonse de Lamartine's volumes of poetry. This cycle contains ten character pieces and the Bénédiction is the most expansive of them all.
Dedicated to Princess Carolyne Sayn-Wittgenstein, this work was completed in 1847 at Woronince, a Ukrainian country estate of the princess. It was a significant year for Liszt: he met the princess for the first time, and gave up his concert career to focus on composing. Most importantly, it was the year when Liszt turned back to the practice of his Catholic belief and this work celebrates his rekindled faith in God.
The Bénédiction gives an impression of being a timeless, improvised elaboration of harmonic colour. For Liszt, its home key of F-sharp major is a fluid tonality that also evokes a sense of sanctitude. This composition is prefaced by a stanza of one of Lamartine's poem (see the bottom) and interestingly, these lines fit the opening melody that has been drawn from an earlier piece called Marie-Poème.
The main theme of this stanza is the flooding of the heart with religious joy and renewed faith. Many words in these lines are associated with water, overflowing, waves, and storm. In this A-B-C-A form piece, the flowing imagery is portrayed by the usage of a legato and arpeggiated accompaniment throughout the A sections. Much of the melody of the D major B section lies in the top voice of first-inversion chords, reminiscent of the fifteenth century fauxbourdon technique. After a lunga pausa, the music proceeds to the B-flat major C section, which is a "Prélude" that Liszt composed in 1845. When the F-sharp major A section returns, the music becomes more densely harmonised with thicker textures and faster arpeggios, resulting in a more glorious sound.
While music from the nineteenth century is usually highly chromatic and contains plenty of unresolved harmonies, it is surprisingly not the case for this piece of music. In Western musical tradition, these compositional techniques usually represent suffering and death. These two conditions of human experience are seen as a symptom and result of sin in both the Christian and Catholic theological traditions. In the divine vision that the Bénédiction illustrates, there can be no sin and death has lost its sting. This work is therefore relatively less chromatic and harmonies are more straightforward.
Return to Program Notes Index
categories / Program notes
tags / Program notes, Programme notes, Piano, Music, Piano music, Liszt, Franz Liszt, Classical music, Romantic, Romantic music, 19th century, 19C music, 19C, Hungarian composer, History, Information, Introduction, Background, S 173, No 3, III, Blessing, God, Religious, Harmonies poétiques et religieuses, Benediction, Bénédiction
Sir Charles Villiers Stanford - Postlude in D Minor, Op. 105 No. 6 (1908)
Older May 09, 2018
Johann Sebastian Bach - English Suite No. 5 in E Minor, BWV 810 (ca. 1715 - 1720)


One hundred and one degrees today.....that was what my car thermometer said.
The weatherman said ninety-six degrees was the air temperature making it feel like one hundred and fifteen.
I think my car was right.
The kids were out selling snow cones. They only lasted a couple hours in the heat.
Here's one of the signs they made to advertise their snow cone stand.
The big kids plus a neighbor were the ones selling. They put the stand in Katie's yard since she's closer to the intersection.
I think each one had made a few dollars by the time they got so hot they quit for the day.
Here is a picture of their last two customers. I made Grace and Grant stay inside for most of the afternoon. It was just miserably hot.
We ran to Target and bought school supplies yesterday. All four kids are now school kids. That makes me sad. I am going to have a huge mental shift to make after twelve years of having at least one child tagging along with me all day long every day. I'm looking forward to the next part of parenting with bigger kids. I love my older kids at the age they are. It is such a fun time watching them change into more adult personalities.
We've had quite an interesting week or so since the Fourth of July. Emily got sick on the Fourth while we were at the farm.
I hauled her to the doctor on Tuesday and insisted they test her for strep even though the doctor insisted strep is not common in the summer. He doesn't know us very well.
We're a pretty uncommon family.
I silently celebrated just a little bit that I was right. It wasn't our regular pediatrician, so I'll give this guy a break since I don't see him on a regular basis. Sometimes moms do know best though.
In a couple days Emily felt much better.
He started showing symptoms on Thursday, so back to the doctor we went. He tested positive for strep as well, so we started the second kid on an antibiotic.
By Sunday, Grant was absolutely miserable. He had never started feeling better and had almost constantly run a fever. In addition he added a terrible cough to the symptom list.
I loaded him up once again and took him to a 'Doc-in-a-box' place Sunday afternoon to get checked. The doctor gave him a new antibiotic and said it was bronchitis in addition to the strep.
Now today Grace is the one seriously crouping around. She's not feeling good at all right now. I'm guessing by Wednesday it will be her turn to see a doctor.
My kids have done a lot of sitting, sleeping and TV watching this week. Today was a good day to be miserably hot outside. It meant there was no guilt for sitting inside a good portion of the day doing nothing.
It's a cool ninety-two degrees outside right now. Maybe I'll go sit on my front porch and sweat for a while. I can pretend I'm in some luxurious sauna somewhere.
Then again maybe I'll just go upstairs and do laundry.


John is Canada's first Master Sommelier, earning the title from the Court of Master Sommeliers in London, England in 2004, and is a member in good standing of both the Court Worldwide as well as CSM Americas. He has been working in the hospitality business at home and abroad for over 15 years, filling many positions including cook, sommelier, wine importer, restaurant & winery consultant, educator and wine writer. Today, John tastes, writes, judges and consults nationally and internationally, teaches, speaks, voices his views regularly on radio and travels the wine regions of the world in search of the best.
John manages a consulting and education firm specializing in restaurant wine program design and management and server staff training for clients across North America. John also develops and delivers professional trade seminars for dozens of trade organizations. Past and current clients include the Wine Council of Ontario, Italian Trade Commission, All About Greek Wines, California Wine Institute, Napa Valley Vintners Association, Austrian Wine Marketing Board, Tokaji Renaissance, Wine Australia, Wines of Argentina and Wines of Chile, among others.
John is a principal critic for WineAlign.com, a national tasting panel member for Wine Access Magazine and wine editor and columnist for CityBites Magazine. He writes freelance for other publications and dailies, and was recently the recipient of the 2009 Savour Ontario Wine Journalism Award. He has written the textbook entitled Sommelier Management, used across Canada by the Canadian Association of Professional Sommeliers for the diploma course, and has co-written a book on home entertaining entitled The Cocktail Chef. Currently he holds the title of President of the Wine Writer's Circle of Canada.
John is also committed to sharing his knowledge through teaching for organizations such as the Court of Master Sommeliers, the Canadian Association of Professional Sommeliers, The Wine Council of Ontario, George Brown School of Hospitality and Niagara College. John has judged at dozens of wine competitions both nationally and internationally. To round out his experience and get closer to the land, he also owns a small vineyard in Eger, Hungary. As a holder of a 2nd degree black belt in Karate, his grapes are well protected, too.


This week's special offers from Disney Cruise Line include a new Florida Resident rate for an Eastern and a Western Caribbean cruise on the Disney Fantasy. Also new this week is a deal for Canadian residents on the first Alaskan sailing which happens to be the 9-night sailing with a stop in Sitka. The US Military discount for the Panama Canal sailing remains available.
Special Rates for U.S. Military Personnel (MTO) are limited to 50 staterooms per category and sailing. Pricing varies, the lowest priced category per person per night listed below. New sailings added this week are in bold.
Special Rates for Canadian Residents are limited to 50 staterooms per category and sailing. Pricing varies, the lowest priced category per person per night listed below. New sailings added this week are in bold. Proof of residency is required an you must use the special offer code CAN when booking.
The previous limited time, Canadian residents deal on Bahamian cruises departing from Port Canaveral is still includes one sailing. Canadian residents can book a cruise on the Disney Magic for 20% off prevailing rates as quoted on the Disney Cruise Line website. The number of rooms allocated for this offer is limited.
This entry was posted in Special Offers and tagged Alaskan Cruise, CAN, Canadian Resident Rate, Disney Dream, Disney Fantasy, Disney Magic, Disney Wonder, Florida Resident Rate, FLR, Military Rates, MTO, Panama Canal by Scott Sanders. Bookmark the permalink.


text:
Events in the US
Most of our bequests come from modest and caring supporters who look after their family and friends appropriately before acknowledging their special appreciation for their University by including The University of Auckland in their wills. A percentage of what's left after you've made your gifts to your loved ones can go a long way to enhancing New Zealand's social, environmental and economic wellbeing. Through working with our philanthropic supporters over many years, we are proud to have played a leadership role in stimulating New Zealand's artistic and cultural life, enhancing innovation and economic prosperity, contributing to improvements in the health and wellbeing of the population, and fostering the debate and independent thinking that characterise our nation.
The Friends of The University of Auckland Inc. is a 501 (C) 3 not for profit organisation in the United States that has been founded to support the University of Auckland. By naming The Friends of The University of Auckland Inc. as a beneficiary in your will, you can be sure that 100% of your funds will be used to support your specific programme or project.
Bequests in favour of the University of Auckland may help you to save taxes and pass more on to your heirs. We advise first talking to your personal advisor about the options best suited to your circumstances and the taxation implications specific to your estate. Your attorney will be able to adapt the following wording to suit your needs:
'I give to The Friends of The University of Auckland Inc. a Sections 501(c) (3) not for profit organisation, the sum of [in words] OR a [in words] percentage share of the residue of my estate OR my [detail your specific item or items] to be used for [XYZ] and I declare that receipt by the Trustees of the Friends of The University of Auckland shall be a full and sufficient discharge to my Executors and Trustees.
Note: (XYZ) here could be "The (name) Scholarship/Research Fund" or similar with the supporting document (a "Statement of Intentions") being held here at the University of Auckland.
We recognise the fact that many of our bequestors would like to provide instruction for the application of their gift. We would have pleasure in talking with you to ensure that your intentions are carried out.
Our regional US Directors would welcome the opportunity to discuss your intentions to ensure that the University will be able to honour your wishes:
West Coast: Contact Ann Solomon
ann.solomon@auckland.ac.nz | (314) 604 9039
East Coast: Contact Melissa Halbridge
melissa.halbridge@auckland.ac.nz | (516) 972 8106
ENSURING YOUR INTENTIONS ARE CARRIED OUT
In the majority of cases, it is appropriate to define how the University will apply a legacy gift to reflect what is important and relevant to you. A "Statement of Intentions" serves the purpose of translating your motives and intentions into workable instructions for the University.
The "Statement of Intentions" represents the collaborative efforts of the University of Auckland and yourself in striking the best balance between achieving your long-term objectives and in supporting programmes and projects of on-going relevance and importance at the University.
A "Statement of Intentions" could include information regarding:
The distribution schedule for funds (commencement date, tenure, frequency etc.)
The process of distribution (decision-makers, application process etc.)
The recipients – criteria for the entity or for the individual (departments and Faculties, programme or research objectives, qualifications and grades, personal and financial situation, contribution to community or profession etc.)
Type of expenditure (tuition fees, capital expenditure, travel grants, research materials etc.)
How the University or an individual will recognise and acknowledge you (or your nominee)
The statement is able to be amended without re-writing a will and a copy will be retained at the University of Auckland to ensure the gift is applied appropriately.
We would be very happy to correspond with you in drawing together a Statement of Intentions that meets your satisfaction if that would work for you.
©2021 by The US Friends of the University of Auckland | Key Documents | Statement of Charitable Purposes and Public Benefit


text:
package org.apache.ofbiz.manufacturing.techdata;

import java.sql.Time;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilDateTime;
import org.apache.ofbiz.base.util.UtilMisc;
import org.apache.ofbiz.base.util.UtilProperties;
import org.apache.ofbiz.base.util.UtilValidate;
import org.apache.ofbiz.entity.Delegator;
import org.apache.ofbiz.entity.GenericEntityException;
import org.apache.ofbiz.entity.GenericValue;
import org.apache.ofbiz.entity.condition.EntityCondition;
import org.apache.ofbiz.entity.condition.EntityExpr;
import org.apache.ofbiz.entity.condition.EntityOperator;
import org.apache.ofbiz.entity.util.EntityQuery;
import org.apache.ofbiz.entity.util.EntityUtil;
import org.apache.ofbiz.service.DispatchContext;
import org.apache.ofbiz.service.ServiceUtil;

import com.ibm.icu.util.Calendar;

/**
 * TechDataServices - TechData related Services
 *
 */
public class TechDataServices {

    public static final String module = TechDataServices.class.getName();
    public static final String resource = "ManufacturingUiLabels";

    /**
     *
     * Used to retrieve some RoutingTasks (WorkEffort) selected by Name or MachineGroup ordered by Name
     *
     * @param ctx the dispatch context
     * @param context a map containing workEffortName (routingTaskName) and fixedAssetId (MachineGroup or ANY)
     * @return result a map containing lookupResult (list of RoutingTask <=> workEffortId with currentStatusId = "ROU_ACTIVE" and workEffortTypeId = "ROU_TASK"
     */
    public static Map<String, Object> lookupRoutingTask(DispatchContext ctx, Map<String, ? extends Object> context) {
        Delegator delegator = ctx.getDelegator();
        Map<String, Object> result = new HashMap<String, Object>();
        Locale locale = (Locale) context.get("locale");
        String workEffortName = (String) context.get("workEffortName");
        String fixedAssetId = (String) context.get("fixedAssetId");

        List<GenericValue> listRoutingTask = null;
        List<EntityExpr> constraints = new LinkedList<EntityExpr>();

        if (UtilValidate.isNotEmpty(workEffortName)) {
            constraints.add(EntityCondition.makeCondition("workEffortName", EntityOperator.GREATER_THAN_EQUAL_TO, workEffortName));
        }
        if (UtilValidate.isNotEmpty(fixedAssetId) && ! "ANY".equals(fixedAssetId)) {
            constraints.add(EntityCondition.makeCondition("fixedAssetId", EntityOperator.EQUALS, fixedAssetId));
        }
        constraints.add(EntityCondition.makeCondition("currentStatusId", EntityOperator.EQUALS, "ROU_ACTIVE"));
        constraints.add(EntityCondition.makeCondition("workEffortTypeId", EntityOperator.EQUALS, "ROU_TASK"));

        try {
            listRoutingTask = EntityQuery.use(delegator).from("WorkEffort")
                    .where(constraints)
                    .orderBy("workEffortName")
                    .queryList();
        } catch (GenericEntityException e) {
            Debug.logWarning(e, module);
            return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingTechDataWorkEffortNotExist", UtilMisc.toMap("errorString", e.toString()), locale));
        }
        if (listRoutingTask == null) {
            listRoutingTask = new LinkedList<GenericValue>();
        }
        if (listRoutingTask.size() == 0) {
            //FIXME is it correct ?
            // listRoutingTask.add(UtilMisc.toMap("label","no Match","value","NO_MATCH"));
        }
        result.put("lookupResult", listRoutingTask);
        return result;
    }

    /**
     *
     * Used to check if there is not two routing task with the same SeqId valid at the same period
     *
     * @param ctx            The DispatchContext that this service is operating in.
     * @param context    a map containing workEffortIdFrom (routing) and SeqId, fromDate thruDate
     * @return result      a map containing sequenceNumNotOk which is equal to "Y" if it's not Ok
     */
    public static Map<String, Object> checkRoutingTaskAssoc(DispatchContext ctx, Map<String, ? extends Object> context) {
        Delegator delegator = ctx.getDelegator();
        Map<String, Object> result = new HashMap<String, Object>();
        String sequenceNumNotOk = "N";
        Locale locale = (Locale) context.get("locale");
        String workEffortIdFrom = (String) context.get("workEffortIdFrom");
        String workEffortIdTo = (String) context.get("workEffortIdTo");
        String workEffortAssocTypeId = (String) context.get("workEffortAssocTypeId");
        Long sequenceNum =  (Long) context.get("sequenceNum");
        Timestamp fromDate = (Timestamp) context.get("fromDate");
        Timestamp thruDate = (Timestamp) context.get("thruDate");
        String create = (String) context.get("create");

        boolean createProcess = (create !=null && "Y".equals(create)) ? true : false;
        List<GenericValue> listRoutingTaskAssoc = null;

        try {
            listRoutingTaskAssoc = EntityQuery.use(delegator).from("WorkEffortAssoc")
                    .where("workEffortIdFrom", workEffortIdFrom,"sequenceNum",sequenceNum)
                    .orderBy("fromDate")
                    .queryList();
        } catch (GenericEntityException e) {
            Debug.logWarning(e, module);
            return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingTechDataWorkEffortAssocNotExist", UtilMisc.toMap("errorString", e.toString()), locale));
        }

        if (listRoutingTaskAssoc != null) {
            for (GenericValue routingTaskAssoc : listRoutingTaskAssoc) {
                if (! workEffortIdFrom.equals(routingTaskAssoc.getString("workEffortIdFrom")) ||
                ! workEffortIdTo.equals(routingTaskAssoc.getString("workEffortIdTo")) ||
                ! workEffortAssocTypeId.equals(routingTaskAssoc.getString("workEffortAssocTypeId")) ||
                ! sequenceNum.equals(routingTaskAssoc.getLong("sequenceNum"))
               ) {
                    if (routingTaskAssoc.getTimestamp("thruDate") == null && routingTaskAssoc.getTimestamp("fromDate") == null) sequenceNumNotOk = "Y";
                    else if (routingTaskAssoc.getTimestamp("thruDate") == null) {
                        if (thruDate == null) sequenceNumNotOk = "Y";
                        else if (thruDate.after(routingTaskAssoc.getTimestamp("fromDate"))) sequenceNumNotOk = "Y";
                    }
                    else  if (routingTaskAssoc.getTimestamp("fromDate") == null) {
                        if (fromDate == null) sequenceNumNotOk = "Y";
                        else if (fromDate.before(routingTaskAssoc.getTimestamp("thruDate"))) sequenceNumNotOk = "Y";
                    }
                    else if (fromDate == null && thruDate == null) sequenceNumNotOk = "Y";
                    else if (thruDate == null) {
                        if (fromDate.before(routingTaskAssoc.getTimestamp("thruDate"))) sequenceNumNotOk = "Y";
                    }
                    else if (fromDate == null) {
                        if (thruDate.after(routingTaskAssoc.getTimestamp("fromDate"))) sequenceNumNotOk = "Y";
                    }
                    else if (routingTaskAssoc.getTimestamp("fromDate").before(thruDate) && fromDate.before(routingTaskAssoc.getTimestamp("thruDate"))) sequenceNumNotOk = "Y";
                } else if (createProcess) sequenceNumNotOk = "Y";
            }
        }
        result.put("sequenceNumNotOk", sequenceNumNotOk);
        return result;
    }

    /**
     * Used to get the techDataCalendar for a routingTask, if there is a entity exception
     * or routingTask associated with no MachineGroup the DEFAULT TechDataCalendar is return.
     *
     * @param routingTask    the routingTask for which we are looking for
     * @return the techDataCalendar associated
     */
    public static GenericValue getTechDataCalendar(GenericValue routingTask) {
        GenericValue machineGroup = null, techDataCalendar = null;
        try {
            machineGroup = routingTask.getRelatedOne("FixedAsset", true);
        } catch (GenericEntityException e) {
            Debug.logError("Pb reading FixedAsset associated with routingTask"+e.getMessage(), module);
        }
        if (machineGroup != null) {
            if (machineGroup.getString("calendarId") != null) {
                try {
                    techDataCalendar = machineGroup.getRelatedOne("TechDataCalendar", true);
                } catch (GenericEntityException e) {
                    Debug.logError("Pb reading TechDataCalendar associated with machineGroup"+e.getMessage(), module);
                }
            } else {
                try {
                    List<GenericValue> machines = machineGroup.getRelated("ChildFixedAsset", null, null, true);
                    if (machines != null && machines.size()>0) {
                        GenericValue machine = EntityUtil.getFirst(machines);
                        techDataCalendar = machine.getRelatedOne("TechDataCalendar", true);
                    }
                } catch (GenericEntityException e) {
                    Debug.logError("Pb reading machine child from machineGroup"+e.getMessage(), module);
                }
            }
        }
        if (techDataCalendar == null) {
            try {
                Delegator delegator = routingTask.getDelegator();
                techDataCalendar = EntityQuery.use(delegator).from("TechDataCalendar").where("calendarId", "DEFAULT").queryOne();
            } catch (GenericEntityException e) {
                Debug.logError("Pb reading TechDataCalendar DEFAULT"+e.getMessage(), module);
            }
        }
        return techDataCalendar;
    }

    /** Used to find the fisrt day in the TechDataCalendarWeek where capacity != 0, beginning at dayStart, dayStart included.
     *
     * @param techDataCalendarWeek        The TechDataCalendarWeek cover
     * @param dayStart
     * @return a map with the  capacity (Double) available and moveDay (int): the number of day it's necessary to move to have capacity available
     */
    public static Map<String, Object> dayStartCapacityAvailable(GenericValue techDataCalendarWeek,  int  dayStart) {
        Map<String, Object> result = new HashMap<String, Object>();
        int moveDay = 0;
        Double capacity = null;
        Time startTime = null;
        while (capacity == null || capacity.doubleValue()==0) {
            switch (dayStart) {
                case Calendar.MONDAY:
                    capacity =  techDataCalendarWeek.getDouble("mondayCapacity");
                    startTime =  techDataCalendarWeek.getTime("mondayStartTime");
                    break;
                case Calendar.TUESDAY:
                    capacity =  techDataCalendarWeek.getDouble("tuesdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("tuesdayStartTime");
                    break;
                case Calendar.WEDNESDAY:
                    capacity =  techDataCalendarWeek.getDouble("wednesdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("wednesdayStartTime");
                    break;
                case Calendar.THURSDAY:
                    capacity =  techDataCalendarWeek.getDouble("thursdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("thursdayStartTime");
                    break;
                case Calendar.FRIDAY:
                    capacity =  techDataCalendarWeek.getDouble("fridayCapacity");
                    startTime =  techDataCalendarWeek.getTime("fridayStartTime");
                    break;
                case Calendar.SATURDAY:
                    capacity =  techDataCalendarWeek.getDouble("saturdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("saturdayStartTime");
                    break;
                case Calendar.SUNDAY:
                    capacity =  techDataCalendarWeek.getDouble("sundayCapacity");
                    startTime =  techDataCalendarWeek.getTime("sundayStartTime");
                    break;
            }
            if (capacity == null || capacity.doubleValue() == 0) {
                moveDay +=1;
                dayStart = (dayStart==7) ? 1 : dayStart +1;
            }
        }
        result.put("capacity",capacity);
        result.put("startTime",startTime);
        result.put("moveDay",Integer.valueOf(moveDay));
        return result;
    }
    /** Used to to request the remain capacity available for dateFrom in a TechDataCalenda,
     * If the dateFrom (param in) is not  in an available TechDataCalendar period, the return value is zero.
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the date
     * @return  long capacityRemaining
     */
    public static long capacityRemaining(GenericValue techDataCalendar,  Timestamp  dateFrom) {
        GenericValue techDataCalendarWeek = null;
        // TODO read TechDataCalendarExcWeek to manage execption week (maybe it's needed to refactor the entity definition
        try {
            techDataCalendarWeek = techDataCalendar.getRelatedOne("TechDataCalendarWeek", true);
        } catch (GenericEntityException e) {
            Debug.logError("Pb reading Calendar Week associated with calendar"+e.getMessage(), module);
            return 0;
        }
        // TODO read TechDataCalendarExcDay to manage execption day
        Calendar cDateTrav =  Calendar.getInstance();
        cDateTrav.setTime(dateFrom);
        Map<String, Object> position = dayStartCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
        int moveDay = ((Integer) position.get("moveDay")).intValue();
        if (moveDay != 0) return 0;
        Time startTime = (Time) position.get("startTime");
        Double capacity = (Double) position.get("capacity");
        Timestamp startAvailablePeriod = new Timestamp(UtilDateTime.getDayStart(dateFrom).getTime() + startTime.getTime() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        if (dateFrom.before(startAvailablePeriod)) return 0;
        Timestamp endAvailablePeriod = new Timestamp(startAvailablePeriod.getTime()+capacity.longValue());
        if (dateFrom.after(endAvailablePeriod)) return 0;
        return  endAvailablePeriod.getTime() - dateFrom.getTime();
    }
    /** Used to move in a TechDataCalenda, produce the Timestamp for the begining of the next day available and its associated capacity.
     * If the dateFrom (param in) is not  in an available TechDataCalendar period, the return value is the next day available
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the date
     * @return a map with Timestamp dateTo, Double nextCapacity
     */
    public static Map<String, Object> startNextDay(GenericValue techDataCalendar, Timestamp  dateFrom) {
        Map<String, Object> result = new HashMap<String, Object>();
        Timestamp dateTo = null;
        GenericValue techDataCalendarWeek = null;
        // TODO read TechDataCalendarExcWeek to manage execption week (maybe it's needed to refactor the entity definition
        try {
            techDataCalendarWeek = techDataCalendar.getRelatedOne("TechDataCalendarWeek", true);
        } catch (GenericEntityException e) {
            Debug.logError("Pb reading Calendar Week associated with calendar"+e.getMessage(), module);
            return ServiceUtil.returnError("Pb reading Calendar Week associated with calendar");
        }
        // TODO read TechDataCalendarExcDay to manage execption day
        Calendar cDateTrav =  Calendar.getInstance();
        cDateTrav.setTime(dateFrom);
        Map<String, Object> position = dayStartCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
        Time startTime = (Time) position.get("startTime");
        int moveDay = ((Integer) position.get("moveDay")).intValue();
        dateTo = (moveDay == 0) ? dateFrom : UtilDateTime.getDayStart(dateFrom,moveDay);
        Timestamp startAvailablePeriod = new Timestamp(UtilDateTime.getDayStart(dateTo).getTime() + startTime.getTime() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        if (dateTo.before(startAvailablePeriod)) {
            dateTo = startAvailablePeriod;
        }
        else {
            dateTo = UtilDateTime.getNextDayStart(dateTo);
            cDateTrav.setTime(dateTo);
            position = dayStartCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
            startTime = (Time) position.get("startTime");
            moveDay = ((Integer) position.get("moveDay")).intValue();
            if (moveDay != 0) dateTo = UtilDateTime.getDayStart(dateTo,moveDay);
            dateTo.setTime(dateTo.getTime() + startTime.getTime() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        }
        result.put("dateTo",dateTo);
        result.put("nextCapacity",position.get("capacity"));
        return result;
    }
    /** Used to move forward in a TechDataCalenda, start from the dateFrom and move forward only on available period.
     * If the dateFrom (param in) is not  a available TechDataCalendar period, the startDate is the begining of the next  day available
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the start date
     * @param amount                           the amount of millisecond to move forward
     * @return the dateTo
     */
    public static Timestamp addForward(GenericValue techDataCalendar,  Timestamp  dateFrom, long amount) {
        Timestamp dateTo = (Timestamp) dateFrom.clone();
        long nextCapacity = capacityRemaining(techDataCalendar, dateFrom);
        if (amount <= nextCapacity) {
            dateTo.setTime(dateTo.getTime()+amount);
            amount = 0;
        } else amount -= nextCapacity;

        Map<String, Object> result = new HashMap<String, Object>();
        while (amount > 0)  {
            result = startNextDay(techDataCalendar, dateTo);
            dateTo = (Timestamp) result.get("dateTo");
            nextCapacity = ((Double) result.get("nextCapacity")).longValue();
            if (amount <= nextCapacity) {
                dateTo.setTime(dateTo.getTime()+amount);
                amount = 0;
            } else amount -= nextCapacity;
        }
        return dateTo;
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /** Used to find the last day in the TechDataCalendarWeek where capacity != 0, ending at dayEnd, dayEnd included.
     *
     * @param techDataCalendarWeek        The TechDataCalendarWeek cover
     * @param dayEnd
     * @return a map with the  capacity (Double) available, the startTime and  moveDay (int): the number of day it's necessary to move to have capacity available
     */
    public static Map<String, Object> dayEndCapacityAvailable(GenericValue techDataCalendarWeek, int dayEnd) {
        Map<String, Object> result = new HashMap<String, Object>();
        int moveDay = 0;
        Double capacity = null;
        Time startTime = null;
        while (capacity == null || capacity.doubleValue() == 0) {
            switch (dayEnd) {
                case Calendar.MONDAY:
                    capacity =  techDataCalendarWeek.getDouble("mondayCapacity");
                    startTime =  techDataCalendarWeek.getTime("mondayStartTime");
                    break;
                case Calendar.TUESDAY:
                    capacity =  techDataCalendarWeek.getDouble("tuesdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("tuesdayStartTime");
                    break;
                case Calendar.WEDNESDAY:
                    capacity =  techDataCalendarWeek.getDouble("wednesdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("wednesdayStartTime");
                    break;
                case Calendar.THURSDAY:
                    capacity =  techDataCalendarWeek.getDouble("thursdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("thursdayStartTime");
                    break;
                case Calendar.FRIDAY:
                    capacity =  techDataCalendarWeek.getDouble("fridayCapacity");
                    startTime =  techDataCalendarWeek.getTime("fridayStartTime");
                    break;
                case Calendar.SATURDAY:
                    capacity =  techDataCalendarWeek.getDouble("saturdayCapacity");
                    startTime =  techDataCalendarWeek.getTime("saturdayStartTime");
                    break;
                case Calendar.SUNDAY:
                    capacity =  techDataCalendarWeek.getDouble("sundayCapacity");
                    startTime =  techDataCalendarWeek.getTime("sundayStartTime");
                    break;
            }
            if (capacity == null || capacity.doubleValue() == 0) {
                moveDay -=1;
                dayEnd = (dayEnd==1) ? 7 : dayEnd - 1;
            }
        }
        result.put("capacity",capacity);
        result.put("startTime",startTime);
        result.put("moveDay",Integer.valueOf(moveDay));
        return result;
    }
    /** Used to request the remaining capacity available for dateFrom in a TechDataCalenda,
     * If the dateFrom (param in) is not  in an available TechDataCalendar period, the return value is zero.
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the date
     * @return  long capacityRemaining
     */
    public static long capacityRemainingBackward(GenericValue techDataCalendar,  Timestamp  dateFrom) {
        GenericValue techDataCalendarWeek = null;
        // TODO read TechDataCalendarExcWeek to manage exception week (maybe it's needed to refactor the entity definition
        try {
            techDataCalendarWeek = techDataCalendar.getRelatedOne("TechDataCalendarWeek", true);
        } catch (GenericEntityException e) {
            Debug.logError("Pb reading Calendar Week associated with calendar"+e.getMessage(), module);
            return 0;
        }
        // TODO read TechDataCalendarExcDay to manage execption day
        Calendar cDateTrav =  Calendar.getInstance();
        cDateTrav.setTime(dateFrom);
        Map<String, Object> position = dayEndCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
        int moveDay = ((Integer) position.get("moveDay")).intValue();
        if (moveDay != 0) return 0;
        Time startTime = (Time) position.get("startTime");
        Double capacity = (Double) position.get("capacity");
        Timestamp startAvailablePeriod = new Timestamp(UtilDateTime.getDayStart(dateFrom).getTime() + startTime.getTime() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        if (dateFrom.before(startAvailablePeriod)) return 0;
        Timestamp endAvailablePeriod = new Timestamp(startAvailablePeriod.getTime()+capacity.longValue());
        if (dateFrom.after(endAvailablePeriod)) return 0;
        return  dateFrom.getTime() - startAvailablePeriod.getTime();
    }
    /** Used to move in a TechDataCalenda, produce the Timestamp for the end of the previous day available and its associated capacity.
     * If the dateFrom (param in) is not  in an available TechDataCalendar period, the return value is the previous day available
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the date
     * @return a map with Timestamp dateTo, Double previousCapacity
     */
    public static Map<String, Object> endPreviousDay(GenericValue techDataCalendar,  Timestamp  dateFrom) {
        Map<String, Object> result = new HashMap<String, Object>();
        Timestamp dateTo = null;
        GenericValue techDataCalendarWeek = null;
        // TODO read TechDataCalendarExcWeek to manage exception week (maybe it's needed to refactor the entity definition
        try {
            techDataCalendarWeek = techDataCalendar.getRelatedOne("TechDataCalendarWeek", true);
        } catch (GenericEntityException e) {
            Debug.logError("Pb reading Calendar Week associated with calendar"+e.getMessage(), module);
            return ServiceUtil.returnError("Pb reading Calendar Week associated with calendar");
        }
        // TODO read TechDataCalendarExcDay to manage execption day
        Calendar cDateTrav =  Calendar.getInstance();
        cDateTrav.setTime(dateFrom);
        Map<String, Object> position = dayEndCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
        Time startTime = (Time) position.get("startTime");
        int moveDay = ((Integer) position.get("moveDay")).intValue();
        Double capacity = (Double) position.get("capacity");
        dateTo = (moveDay == 0) ? dateFrom : UtilDateTime.getDayEnd(dateFrom, Long.valueOf(moveDay));
        Timestamp endAvailablePeriod = new Timestamp(UtilDateTime.getDayStart(dateTo).getTime() + startTime.getTime() + capacity.longValue() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        if (dateTo.after(endAvailablePeriod)) {
            dateTo = endAvailablePeriod;
        }
        else {
            dateTo = UtilDateTime.getDayStart(dateTo, -1);
            cDateTrav.setTime(dateTo);
            position = dayEndCapacityAvailable(techDataCalendarWeek, cDateTrav.get(Calendar.DAY_OF_WEEK));
            startTime = (Time) position.get("startTime");
            moveDay = ((Integer) position.get("moveDay")).intValue();
            capacity = (Double) position.get("capacity");
            if (moveDay != 0) dateTo = UtilDateTime.getDayStart(dateTo,moveDay);
            dateTo.setTime(dateTo.getTime() + startTime.getTime() + capacity.longValue() + cDateTrav.get(Calendar.ZONE_OFFSET) + cDateTrav.get(Calendar.DST_OFFSET));
        }
        result.put("dateTo",dateTo);
        result.put("previousCapacity",position.get("capacity"));
        return result;
    }
    /** Used to move backward in a TechDataCalendar, start from the dateFrom and move backward only on available period.
     * If the dateFrom (param in) is not  a available TechDataCalendar period, the startDate is the end of the previous day available
     *
     * @param techDataCalendar        The TechDataCalendar cover
     * @param dateFrom                        the start date
     * @param amount                           the amount of millisecond to move backward
     * @return the dateTo
     */
    public static Timestamp addBackward(GenericValue techDataCalendar, Timestamp  dateFrom, long amount) {
        Timestamp dateTo = (Timestamp) dateFrom.clone();
        long previousCapacity = capacityRemainingBackward(techDataCalendar, dateFrom);
        if (amount <= previousCapacity) {
            dateTo.setTime(dateTo.getTime()-amount);
            amount = 0;
        } else amount -= previousCapacity;

        Map<String, Object> result = new HashMap<String, Object>();
        while (amount > 0)  {
            result = endPreviousDay(techDataCalendar, dateTo);
            dateTo = (Timestamp) result.get("dateTo");
            previousCapacity = ((Double) result.get("previousCapacity")).longValue();
            if (amount <= previousCapacity) {
                dateTo.setTime(dateTo.getTime()-amount);
                amount = 0;
            } else amount -= previousCapacity;
        }
        return dateTo;
    }
}

redpajama_set_name: RedPajamaGithub


Throughout Obama's two terms in the White House , Fox News and right-wing media promoted the war on Christmas as a gimmick to boost their ratings. The Obama's never celebrated Christmas in the White House , never put up any Christmas trees , ornaments , and never sent out any Christmas cards. Obama hated Christmas , so apparently he sent out a decree or signed an executive order banning Christmas in America , forbidding retail stores from displaying Christmas decorations and saying Merry Christmas to their customers.
And so , the war on Christmas had begun. And each year that the un-American Obama's were in the White House it got worse and worse. Barack Obama and his family wished America a Merry Christmas each year , put up Christmas trees at the White House , including decorations , and sent out Christmas cards. Wal-Mart and other retail outlets displayed Christmas decorations , played Christmas music , and greeted their customers with Merry Christmas and other holiday greetings. Television channels like Hallmark played Christmas movies from August all the way through December , and ninety percent of Americans celebrated Christmas each year , even though according to conservatives , Obama The Grinch made it a crime for anyone to celebrate the holiday , or say Merry Christmas without being arrested and hauled off in hand cuffs , before being sentenced to death by firing squad.
At the recent Values Voters Summit last October , Trump told cheering conservatives that they were free to say Merry Christmas again , because Obama the Grinch was no longer in the White House. There were tears of joy as the audience went crazy , many of them declaring the forty-fifth president the second coming of Christ.
In 2015 Sarah Palin released her best-selling book , How Obama The Grinch Stole Christmas … Again : The Communist Liberal Media's War On Christmas. She's written several ridiculous books over the years , including the former. Her latest , a sequel , How President Trump Saved Christmas From Obama The Grinch , is her most ridiculous book to date. It was co-written with Victoria Jackson , who has also written several anti-Obama books , all of them even more ridiculous and insane than anything Sarah Palin has ever written.
They made a recent appearance on the Alex Jones show to discuss the new book.
"Welcome to the show ladies and gentlemen. I'm Alex Jones , your host for the number one show in Texas , and around the world. I bring you the real news , not the fake news that the mainstream liberal media brings you every day because they're controlled by George Soros , the biggest communist liberal in the world.


text:
Cost Of Brain Disorders In Europe Hits $1 Trillion
10/04/2011 11:37am EDT | Updated December 6, 2017
The annual cost of brain disorders in Europe has soared to 798 billion euros ($1 trillion) and the region is facing a political, social and financial "ticking bomb" as more people fall prey to mental illnesses, researchers said on Tuesday.
A study by the European Brain Council (EBC) said the bill for disorders such as depression, anxiety, insomnia and dementia, will rise as people live longer, making it "the number one economic challenge for European health care."
The cost projection comes in the wake of a study last month that found that Europeans are plagued by mental and neurological illnesses with almost 165 million people, or 38 percent of the European Union population, suffering each year.
The 798 billion euro figure -- which equates to 1,550 euros ($2,000) per person in Europe -- is more than double the estimate made by a previous EBC study, published in 2005.
"The increasing burden and the associated increasing cost of disorders of the brain is a ticking bomb under the European economy and the EU society as a whole," said the report by experts in Britain, Germany, Italy, Sweden and across Europe.
They called for a major increase in research funding and resources to help fend off the threat.
Some big drug companies, in Europe particularly GlaxoSmithKline and AstraZeneca, have been backing away from investment into research on how the brain works and affects behavior, putting the onus on governments and health charities to stump up funding for neuroscience.
LACK OF DRUG SUCCESS
Experts say stricter European regulations for drugs with an effect on the central nervous system have been partly to blame, as has the industry's recent lack of success in developing effective brain disease medicines.
The trend of pharmaceutical companies leaving Europe in favor of the United States, China and India has also undermined the industry's private-public co-operation with the European Commission, the Brain Council's report said.
The study looked at more than 100 mental and neurological disorders -- ranging from headaches, migraines and sleep disorders to strokes, Parkinson's disease, psychotic disorders and dementia -- and described their economic and social impact as "immense and expanding."
The cost of brain disorders is substantially higher than other long-term or chronic illnesses like heart disease or cancer. The European Heart Network set the EU cost of cardiovascular disease at 192 billion euros in 2008, while the total annual cancer cost is estimated at 150-250 billion euros.
Without action, the situation can only get worse, the report said.
"Because of the aging European population, degenerative disorders are particularly destined to become more common, such as dementia, Parkinson's disease and stroke, but anxiety and mood disorders are also very prevalent at high age."
The EBC study was conducted by epidemiologist and health economists and was more wide-ranging that the previous one in 2005, this time covering 30 countries, compared to 28, and taking in 19 diagnostic groups of disorders rather than 12.
It found that in 2010, direct healthcare costs of brain disorders -- covering things like doctors' visits, hospital care and drugs -- accounted for 24 percent of the European Union's total healthcare expenditure, which is estimated at about 1,260 billion euros for 2010.
Indirect costs such as loss of productivity because of absence from work or enforced early retirement, add "considerably" to this, the report said.
The World Health Organization estimates that brain diseases cause 35 percent of the burden of all disease in Europe.
According to the EBC, the costs of each disorder vary widely, with neuromuscular disorders costing just over 30,000 euros a patient a year, compared to headaches at 285 euros.
The total annual cost of mood disorders -- including major depression and bipolar disorder -- is the highest of the 19 groups, estimated at just over 113 billion euros. This is followed by dementia at 105 billion euros.
Sleep disorders cost 348 euros per patient per year -- but their burden is high because almost 45 million people suffer from them, compared to around 500,000 with multiple sclerosis. ($1 = 0.733 Euros)
Copyright 2011 Thomson Reuters. Click for Restrictions.
healthy livingHealthy Living Health News


text:
%% Nicholas Czarnek
% 23 February 2015
% SSPACISS Laboratory, Duke University
%
% getEventIdx
% The purpose of this function is to get event indices based on input time
% stamps and input event times.  This assumes that the input times are in
% UTC format

function eventIdx = getEventIdx(xT,eventTimes)

tDiff = xT(2) - xT(1);

%% Figure out how many time stamps there are per day based on the input time
% stamps
utcTRes = round(1/tDiff);

%% Adjust the timestamps so that they are not rounded.
xT = round(xT*utcTRes)/utcTRes;

%% Adjust the eventTimes accordingly so that they are in line with the time
% resolution of the input timestamps.
eventTimes = round(eventTimes*utcTRes)/utcTRes;

%% Find the indices for the events.  Since there may be repeated events, use
% a for loop for each event.
eventIdx = zeros(numel(eventTimes),1);

for eInc = 1:numel(eventTimes)
    eventIdx(eInc) = find(xT == eventTimes(eInc));
end

end