text:
Faculty and students benefit from interdisciplinary education, practice, and research across Emory University's Woodruff Health Sciences Center, which secured more than 574.6 million in research funding in FY 2016.
Extraordinary Support
Emory University ranks first in the U.S. for students with NIH predoctoral fellowships.
Researchers at the Lillian Carter Center for Global Health & Social Responsibility are engaged in scholarship that spans multiple continents and addresses issues facing underserved populations globally.
Emory's School of Nursing is home to 36 Fellows of the American Academy of Nursing, 8 Fellows of the American Association of Nurse Practitioners, and 2 National Academy of Medicine Fellow.
Get to Know Our Faculty
Our nursing faculty is comprised of nearly 100 educators, clinicians, and scholars who are recognized worldwide for their dedication to excellence in teaching, practice, and research.
Explore Our Areas of Expertise
Our faculty have received international recognition for excellence in a wide array of subjects in health care ranging from cancer and environmental health to pediatrics and genetics.
Tele-Savvy Online Family Caregiver Education
Tele-Savvy is designed to provide caregivers with the tools that they need to manage their caregiving responsibilities and to preserve their own and their loved one's quality of life.
Faculty & Post Doctoral Opportunities
Explore Our Openings
We are looking for the best and brightest faculty scholars and postdoctoral fellows to join our team.
Learn About Our Research Partners
We are known for intensive interdisciplinary collaboration. Our partners include academic institutions, health systems, corporations, government agencies, and non-profit organizations across the world.
Contact the ONR
The Office of Nursing Research (ONR) provides comprehensive support for the development of grant applications, the conduct and management of research projects, and publication of results.
Nursing research actually spans a huge range of topics. It is a tangle of psychology, biology and the social world.
Mark Risjord
Associate Professor of Philosophy


Guess that car game. Again?
That's right, it's a Toyota, now what? What is it. :D Best guess gets special DQ props. More, guess that car.
This is Toyota Kijang. Only in Indonesia. Last production 1996.
I know, but someone else needs to guess. The name is very fun to say.
we also got them here in Brunei!


text:
KC Hankins
LGBTQ+ Caucus Chair
KC Hankins currently serves as the LGBTQ+ Caucus Chair. He grew up in New Jersey and moved to New York City to attend college at Pace University to study economics and mathematics. After graduating, KC joined Teach for America, which enabled him to become a mathematics teacher at John Dewey High School, a historic public school in South Brooklyn. A few years ago, KC moved to Staten Island and, shortly thereafter, became a member of the Young Democrats of Richmond County. KC currently serves as the Treasurer of the YDRC. As LGBT Caucus Chair, KC works to unify and empower the LGBT community in each of the chapters in the New York State Young Democrats.

redpajama_set_name: RedPajamaCommonCrawl


text:
CDA'S latest news: the new E-FILL!
E-Fill for e-liquid, but not only !
The CDA monobloc on the way to a new design with an enriched range of applications!
Created in 2013 to meet the growing needs of the e-liquid industry, CDA's E-Fill monobloc quickly established itself as a bestseller at CDA before invading the market by equipping a large number of e-liquid producers.
This complete packaging line is acclaimed for its versatility and ultra-compact size, which allows it to be effective in the most confined spaces.
Capable of filling, screw capping and labelling, the E-Fill has until now been used to pack bottles from 5 to 250mL, similar to refills for electronic cigarettes.
Aware of the need of many industries for full packaging and the potential of E-Fill, CDA engineers have reviewed the features and capabilities of the E-Fill for a 2018 version with an enhanced range of applications.
E-Fill for e-liquid, but not only…
To keep pace with the changing needs of our customers, E-Fill has been redesigned to adapt to many applications beyond e-liquid.
While the monobloc created for the vape industry will always have its role to play in accurately packaging small vials, it is now also capable of handling many other products from 5mL to 1L with a maximum diameter of 90mm.
To open its performances to other sectors such as food industry, cosmetics, chemicals… the new E-Fill can be equipped with 3 different filling systems depending on the viscosity of the product to be filled: peristaltic, piston or mass pump.
Diversity and effectiveness
The new features of the E-Fill allow it to fill, screw cap and label larger containers than before, and especially to ensure the filling of various viscosities. Syrup bottles, e-liquid bottles, essential oils… the possibilities are numerous.
With its new applications, the complete line of CDA has lost none of the characteristics that make it so strong:
Ultra-compact size
Filling accuracy +/- 0.5%.
Intuitive touch screen management
Memorization of 50 products
Easy to adjust and use
Dispensing of up to 2 labels
Speed up to 25 products/minute
Ultra-compact complete line
In our workshops or at our next shows, CDA's team will be glad to present you its new E-Fill !
CDA engineers do not stop there. Our team is currently developing improvements for the other CDA star monobloc: the complete packaging line E-Fill S.
Would you like to be informed of our future tradeshows?
The CDA newsletter provides information on all of our tradeshows


As per estimates, there is only 1 dentist to every 10,000 people in this country. On one hand, there is a rising demand for dental practitioners among individuals. On the other, the number of dentistry setups continues to increase even across semi-urban spaces.
If you are about to set up your dental practice, you should invest in the future and aim to service the highest amount of patients possible.
One of the best ways to do so is through the best dental equipment. NBFCs provide dental equipment loan explicitly for this purpose.
These loans can help dentists purchase the latest tools that can aid them to deliver better service.
Everyone dislikes waiting in a long queue. Longer queues and service TATs will decrease customer satisfaction and retention.
Installing the latest equipment is one of the ideal ways to decrease the time you need to attend to a patient.
Purchasing the correct equipment will also help you implement digital dentistry, the future of dental practice.
Staying ahead of the competition is directly proportional to the services you deliver. Your patients will prefer you more if you provide quick and effective dental care. Upgrade your dental equipment as well as your dentistry setup to help you do so.
You can apply for a dental equipment loan to purchase such equipment. NBFCs like Bajaj Finserv disburse such loans within 24 hours of approval.
Most dental procedures and surgeries are painfully discomforting. As the associated healthcare professional, you should put the strong impetus on the comfort of your medical cases. Upgrade your equipment to provide the best possible comfort.
For example, the Wand is a computer-assisted tool to deliver local anesthesia. It is essentially an injection that does not cause any pain to the recipient. Thus, you can also help patients who fear needles to reduce anxiety.
Opt for a dental equipment loan if you aim to introduce these new tools to your dental practice.
Adding state-of-the-art equipment helps you to gain more patients which in turn, will increase your turnover. Thus, you have more revenue to grow your business operations.
You can establish a new practice, hire more dentists or dental assistants, or even physically expand to another location, with more income.
First impressions do matter to new patients. Adding the latest equipment to the practice will deliver an intense apprehension of your exceptional services. It also helps in word-of-mouth marketing – a promotion that takes place when a satisfied customer talks positively about your business to another person.
A Business Loan for Doctors from leading NBFCs such as Bajaj Finserv to purchase dental equipment can help you achieve all of the above.
You receive financing up to Rs. 30 Lakh to purchase any high-value equipment. These loans are also collateral-free.
NBFCs can provide you with these loans within 48 hours. Such a loan can prove exceptionally beneficial in case of emergencies.
The repayment tenors for these loans range from 12 to 96 months. Ensure that you choose the tenor carefully as the cost of loan and EMIs depend on it.
Using a loan EMI calculator can help you in this case. The calculator enables you to determine your loan EMIs based on the principal and tenor. It will also aid to pick the right tenor.
You only have to provide a few documents to avail these loans. Qualification certificate, identity proof, address proof, bank account statements, and income tax returns are some that you have to deliver.
Dentists will only need a post-qualification experience of 5 years to apply for these loans.
Apply for a dental equipment loan online today and achieve new growth limits of your clinic. Also, do make sure that you purchase the right medical equipment for your healthcare setup.


text:
The 2005–06 Chappell–Hadlee Trophy was the second edition of Chappell–Hadlee Trophy, a three-match ODI series between Australia and New Zealand. It was played in New Zealand from 3 to 10 December 2005.

New Zealand had come off a 4–0 loss in South Africa two months before, but in August they had defeated India to win the Videocon Tri-Series. Australia's most recent result against a regular national team was a tie in the final of the NatWest Series with England. From the last series, Jason Gillespie, Matthew Hayden and Darren Lehmann had been dropped by Australia, while Damien Martyn was out with injury and Glenn McGrath was rested. New Zealand's changes had mainly been through injuries, as Stephen Fleming had undergone surgery on a tumour and was replaced as captain by Daniel Vettori. Mathew Sinclair was also left out, for Craig McMillan, while Chris Harris had been replaced by James Franklin.

ODI series

1st ODI

The series began at Eden Park in Auckland on 3 December. Australia won the toss and chose to bat first, and made eight for 252 after Ricky Ponting and Simon Katich hit half-centuries, sharing a stand of 118. Makeshift captain Daniel Vettori took two wickets as Australia lost three men for 27, including ODI debutant Brad Hodge for 13, before a stand of 59 between Andrew Symonds and Michael Clarke took Australia past the 200 mark. Four wickets fell in the last eight overs, but Australia still batted out 50 overs to make eight for 252.

As mentioned, Glenn McGrath was rested, but the replacement Stuart Clark performed sufficiently, taking three wickets in his seven overs as New Zealand lost eight batsmen in single figures. Clark, who played in his second one-day international for Australia, was not named Man of the Match, however – that honour fell to Brett Lee, who bowled four maidens with the new ball, taking three wickets for five runs including both the Marshall twins, Hamish and James, and ending with the bowling analysis of 6–4–5–3. With Nathan Bracken, the replacement for Gillespie, taking two wickets as well, New Zealand finished on a total of 105, though after 12.3 overs they had been at 6 for 33. Jacob Oram put on 41 with Chris Cairns before Oram was bowled by Clark, and seven overs later the innings was over as Clark got another wicket and Andrew Symonds got the numbers 10 and 11.

2nd ODI

The second match was played at Westpac Stadium in Wellington on 7 December. This match saw an Australian record partnership between Michael Clarke and Andrew Symonds, who added 220 for the fifth wicket, Symonds hitting eight sixes and twelve fours on his way to a record score in ODIs between the two sides. His 156 was the third-highest by an Australian against any opponent, and the stand with Clarke paved the way for a total of 322 for 5. New Zealand had Lou Vincent hit 71 off 49 balls before he was first out, on 93 for 1, but rookie bowlers Mick Lewis and Stuart Clark (with four ODIs between them) shared four wickets, and New Zealand needed 53 from 33 balls when Jacob Oram cut a bouncer to Clark for 41. Brendon McCullum added 24 with substitute James Marshall, before the latter was run out, and New Zealand still needed 24 off the final two overs. The penultimate over yielded 18 runs as Brett Lee bowled a no-ball and a wide, and another ball was adjudged a no ball as Australia had too few players inside the circle. Lewis was left to bowl the last over, and with six runs required the last two batsmen were run out, leaving New Zealand on 320 – two runs short of victory. Australia thus clinched the Chappell–Hadlee Trophy with a match to spare.

3rd ODI

The last match was played at Jade Stadium in Christchurch on 10 December. It was a dead rubber as Australia had already won the Trophy. Mitchell Johnson was given his debut as Super Sub, coming in after Australia had batted to seven for 331 with four half-centuries. Johnson bowled nine overs for 64, without taking a wicket, and Scott Styris hit a hundred as New Zealand chased down the target for the highest successful run chase in ODI cricket thus far. This was also New Zealand's first win in their last eight one-day internationals.

References

External links

Chappell-Hadlee Trophy 2005-06
Chappell-Hadlee Trophy 2005-06
Chappell-Hadlee Trophy 2005-06
2005-06
International cricket competitions in 2005–06

redpajama_set_name: RedPajamaWikipedia


ideas texas roadhouse butter recipe and roadhouse butter copycat 72 texas roadhouse bun butter recipe.
amazing texas roadhouse butter recipe or so whenever and i go out to eat we pretty much choose the restaurant based on whether they give you bread rolls chips and salsa or some other 15 texas roadhous.
best of texas roadhouse butter recipe or roadhouse cinnamon honey butter see original recipe at 59 texas roadhouse butter recipe without honey.
good texas roadhouse butter recipe for roadhouse rolls and cinnamon honey butter 55 texas roadhouse butter recipe pinterest.
beautiful texas roadhouse butter recipe for roadhouse dinner rolls cinnamon honey butter copycat recipe 51 texas roadhouse butter recipe without powdered sugar.
ideas texas roadhouse butter recipe or this roadhouse cinnamon butter recipe is easy to make with just 4 ingredients you 14 texas roadhouse butter recipe without honey.
fresh texas roadhouse butter recipe and roadhouse rolls words 6 4 14 texas roadhouse butter recipe without honey.
fresh texas roadhouse butter recipe or roadhouse buttery dinner rolls and cinnamon butter 87 texas roadhouse butter recipe honey cinnamon.
ideas texas roadhouse butter recipe and check out this roadhouse loaded sweet potato copycat recipe 93 texas roadhouse butter recipe pinterest.
inspirational texas roadhouse butter recipe and 52 texas roadhouse cinnamon butter recipe pinterest.
luxury texas roadhouse butter recipe for roadhouse cinnamon honey butter recipe also good on oatmeal pancakes french toast pumpkin bread more 59 texas roadhouse cinnamon butter recipe.
lovely texas roadhouse butter recipe and clean eating roadhouse butter 81 texas roadhouse rolls cinnamon butter recipe.
best of texas roadhouse butter recipe for roadhouse cinnamon butter in a jar 75 texas roadhouse cinnamon butter recipe.
beautiful texas roadhouse butter recipe for and these rolls here be complete without this melted honey cinnamon butter it pairs perfectly with these roadhouse rolls oh worry 23 texas roadhouse butter.
new texas roadhouse butter recipe for i first tried this recipe last mothers day my mom adores roadhouse and if ever it is her choice where we go out to eat that is always her pick 15 texas roadhouse.
inspirational texas roadhouse butter recipe or roadhouse butter resized 99 texas roadhouse garlic lemon pepper butter recipe.
new texas roadhouse butter recipe for 93 texas roadhouse roll butter recipe.
elegant texas roadhouse butter recipe for copycat roadhouse rolls and honey butter super easy to make right at home great 99 texas roadhouse roll butter recipe.
ideas texas roadhouse butter recipe or roadhouse rolls with honey cinnamon butter 96 texas roadhouse garlic lemon pepper butter recipe.
beautiful texas roadhouse butter recipe or these copycat roadhouse dinner rolls are amazingly soft and the cinnamon honey butter puts them 89 texas roadhouse shrimp butter recipe.


text:
Q: How do you "target" emotes I have seen this done, but I have no idea how to do it, and Google is not helpful (probably searching wrong).
Sometimes, players use emotes like

PlayerX says hello to PlayerY

but whenever I use the "Hello" emote, it just prints

Me says hello

How can I "target" emotes?

A: Hover over the circle indicating the emote over the desired player and press  F  in order to respond to that specific command. F is by default the "Understood/Agree" command.
You can "agree" with almost any voice line, including Ultimate Status, Health Needed, Hellos, and Voice Lines.

A: In addition to Retrosaur's answer, if you hover your crosshair over another player (even when they don't show the emote icon) and execute an emote it will be directed towards them, similar to your example.

PlayerX says hello to PlayerY

You see your second example when an emote is executed with no player in your crosshair.

Me says hello

redpajama_set_name: RedPajamaStackExchange


There are various surveillance solutions provided by Private Investigator Ashford within Wittersham to help you. Regardless of whether you wish to capture a good disloyal companion, keep track of your home, or person surveillance within Wittersham, you'll benefit from the most from Private Investigator Ashford.
Place of work theft investigations through Private Investigator Ashford within Wye resolves your own problem at the office. You believe your partner within Acton is actually maintaining secret assets during the process of your splitting up, Private Investigator Ashford Asset Place Solutions are available to find out.
How Quickly Is Really A Private Investigator Ashford Investigation Within Wittersham?
Private Investigator Ashford can guide you to find individuals through the nation whenever you utilize them. Private Investigator Ashford lost persons' investigation support within Wittersham will certainly track the actual location of the lost family member.
You will find tried methods which Private Investigator Ashford make use of to deliver productive results to reported issues. Consequently when you utilize Private Investigator Ashford within Wittersham you know that you will get specialist as well as extensive help for each investigation.
You ought to get the cash retrieved that somebody could have fraudulently obtained from a person within Aldington. Private Investigator Ashford is actually under the radar if this gathers the cash and in addition it safeguards you each stage.
You're suspicious of that the companion within Acton is not trustworthy for you while he offers openly altered their proper grooming routines To help you to be assured, the actual Private Investigator Ashford group may discover exactly what your lover can be.
Furthermore damaged as well as broken inventory are closely related to the negligence of hurried theft inside your Worten company. If you are having deep thoughts to this, you will arrest the actual thief by hiring Private Investigator Ashford in order to conduct a quick and efficient investigation.
Would you believe your own spouse resides another lady within Aldington and want proof to demonstrate this particular allegation? In the event you end up in cases like this, you might like to involve an investigator from Private Investigator Ashford to help you cope with your circumstances.
Will Private Investigator Ashford Help To Recover A Debt From A Person In Wittersham?
Your own spouse offers no details regarding some of the properties he has in Wittersham so that he does not share them with you as you finalize on the divorce case. This is an absolute breach of the divorce laws and Private Investigator Ashford can help by finding out about these assets and you can get some of it after the divorce is finalised.
I've no clue how to proceed when I wish to recover the cash from the previous renter that owes several weeks lease within my Woolpack Corner house. It's nearly impossible to get your money back from the previous renter, consequently, it's vital that you obtain the aid of Private Investigator Ashford.
Petty cash that is used in your organization in Wittersham has been running on shortage each time you audit them. To discover the person at fault, the best action you might take is to get in contact with Private Investigator Ashford.
You are doubting an e-mail received in your mailbox laming to be from your financial institution, which you doubt is not from their branch in Wittersham because they requested for rather private information. Private Investigator Ashford can provide help to you using the e-mail scams electronic forensic support.
You've organised an event at your child's college in Worten and also have made reservation for a few crucial people That's the reason you are searching for VIP security for your visitors.


Yesterday we said goodbye to mom. We're sure going to miss her.
Good Morning and welcome to Spelling Bee Saturday! Today is brought to you by the letter "N". Jody from Pleasant Home is showing off her uppercase N and I'm showing you my lower case N. We're both using Lori's cute Spelling Bee book to make our blocks. And are they ever cute!
N is for nice, and that's what this project is! The blocks come together in a snap and you'll be done before recess! I'm using the cute 30's Playtime by Moda that I had left over from my tablerunner project, these blocks are perfect for scraps.


text:
Will Paul Ryan Alienate Undecided Voters?
By Patrick Doyle· 8/13/2012, 11:42 a.m.
Photo via Flickr/Tobyotter
The unofficial rules for picking a vice president go something like this:
Pick someone who will help, not harm you. (John McCain broke this one with Sarah Palin.)
Pick someone who has experience in an area you're lacking. (Barack Obama picked Joe Biden; George W. Bush picked Dick Cheney.)
Pick someone from a swing state, to get a boost in the election. (Polling whiz Nate Silver says a VP helps by about two percentage points in his home state.)
Looking at this list, I'm still trying to figure out why Mitt Romney picked Congressman Paul Ryan as his vice-presidential candidate.
Okay, yes, at some level, I get it: Ryan is handsome, young, and smart. (He could pass for a Romney son or a nephew!) Over the past few years, despite his youth, he's certainly become the intellectual standard-bearer for the Republican party. Maybe he'll help with #3, by winning Wisconsin for the GOP.
Romney seems likely to have picked him, though, because he'll get the conservative base excited.
The problem is Romney doesn't need to win those voters. They're going to cast their ballot for him no matter what—they really don't like Barack Obama. The voters Romney needs to convince are still undecided, which is a small group: Only six to eight percent of voters haven't picked a corner yet.
The problem is that Paul Ryan is going to alienate a lot of those undecided voters, just based on his political stances. The economic plan Ryan released in 2011 would turn Medicare into a voucher program, which is remarkably unpopular: When he unveiled it, a CNN poll showed that 58 percent of voters opposed the plan, including 54 percent of conservatives. He's totally against abortion rights—even in the case of rape or incest—and is opposed to gay marriage. Just how conservative is Ryan? Nate Silver looked back on his voting record:
"…Mr. Ryan is the most conservative Republican member of Congress to be picked for the vice-presidential slot since at least 1900. He is also more conservative than any Democratic nominee was liberal, meaning that he is the furthest from the center."
That's right: Ryan is more conservative than Dick Cheney or Richard Nixon. I'm trying to figure out the Democratic equivalent of Romney's pick of Paul Ryan. Would it be Obama selecting Bernie Sanders as VP? Or Nancy Pelosi? Harry Reid? You know: the sort of picks that would make undecided voters' toes curl.
All of the Amenities. None of the Alligators.


text:
Residents fear 'congestion nightmare' with plans for 400 new homes in Biggleswade
Jo Gravett
Published: 10:42 Updated: 16:52 Friday 10 January 2020
Biggleswade residents and councillors are concerned that a planning application for more than 400 new homes will leave the town suffocating in congested traffic.
The proposal, submitted by Hallam Land Management, is for up to 416 dwellings on Land North of Biggleswade including affordable housing and green infrastructure with landscaping, allotments, a community orchard, public open space, children's playspace, new roads, car parking, cycleways and footways, and "associated infrastructure".
The site plot is to the east of the railway line and Furzenhall Road would cut through it diagonally.
However, councillors have told the Chronicle that the addition of potentially 800-plus family cars on the roads would not be welcome.
Cllr Dr Hayley Whitaker, of Central Bedfordshire Council claimed: "Hallam Land Management aims to get permission and then sell the land to a builder.
"But Furzenhall Road is already incredibly busy and with the addition of 400 homes this will only increase.
"We are a growing town and access to healthcare is also an issue. Ivel Medical Centre closed its books to new patients before Christmas, so only Saffron Health Partnership is taking new patients.
"Then there's the Baden Powell Way, which has outline approval for 1,500 homes, and the Saxon Drive application for 200 homes."
Cllr Whitaker also argued that although the land has been identified on the CBC Local Plan, the plan has not been approved yet, making the application "premature".
Cllr Mark Knight, of Biggleswade Town Council, claimed: "Hallam's exhibition, which they considered to be their consultation, was arranged for the first week of the school summer holidays between 3pm–7pm; there was not much of a window. I asked if they would consider an additional event, but they failed to do that.
"And submitting the application on Christmas Eve? I can't believe that was an accident. It doesn't build trust with the community.
"Section 5 of the access statement proposes chicanes and other traffic management features along Furzenhall Road. In my opinion, this is an acknowledgement that the proposal will have a significant adverse impact.
"Hallam probably could have submitted an application for 1,500 homes, but there would be far more focus on infrastructure.
"But the chances of being approved are greater if they put in smaller applications over time."
Consultation on BT's proposals to remove 30 payphones in Central Bedfordshire moves into second stage
Cllr Knight also claimed that other plans may make little difference.
For example, Hallam Land Management has proposed changes at junction of Drove Road/London Road (the removal of a bollard and addition of another lane) but Cllr Knight alleged that the road is already over-used and on a tight bend.
A total of 56 public responses have been received against the application and zero for.
In its Planning Statement, Hallam Land Management states: "It is acknowledged that the proposal conflicts with the adopted development plan in that it seeks permission for the provision of housing outside of the currently adopted settlement boundary of Biggleswade.
"However the emerging plan, which has allocated the application site for residential development, is at an advanced stage and is based on up to date evidence on housing needs. The need to ensure that Central Bedfordshire continues to deliver housing in a sustainable manner is considered to be a significant material consideration that justifies a departure from the adopted development plan.
"The proposal should be approved without delay because the proposal represents sustainable development, there are no clear reasons for refusing the scheme and any adverse impacts would not outweigh the benefits of providing dwellings in this sustainable location."
A spokesman for Central Beds Council said: "We have extended the normal consultation period for this application to February 1 to make sure all residents are given as much opportunity as possible to comment. People can comment online on our website or in writing to any of our offices. We welcome views on all planning applications."
To comment online, search CB/19/04301/OUT on the planning application section of the council website at www.centralbedfordshire.gov.uk.
The application is due to be discussed at the Biggleswade Town Council meeting on January 14.
Hallam Land Management was asked if it wanted to comment further on the application, but did not respond before our print deadline.
Sandy teenager shaves off her hair to raise money for St John's Hospice
Two HGV drivers killed in M1 collision named by police
Biggleswade's Neighbours Sing! is celebrating first anniversary and looking for partners
Meet the Biggleswade Community Police Team
More from Biggleswade Today


ORANGE, Calif. (AP) — A Southern California university has awarded an honorary degree to the mother of a quadriplegic student after she attended every class with him and took his notes while he pursued his Master of Business Administration.
Judy O'Connor, a retired elementary school teacher, pushed her son Marty in his wheelchair for him to receive his degree during commencement Saturday at Chapman University in the Los Angeles suburb of Orange.
Then a choked-up graduation announcer said the school's faculty, administrators and board of trustees had decided to give her an MBA. The idea for the surprise honorary degree came from her son.
A stunned but composed Judy O'Conner blew a kiss to the crowd giving her a standing ovation.


text:
Economy, Auto
Renault, Nissan to Strengthen Alliance
Renault's advisory board said on Friday it wants to strengthen its alliance with Nissan after the Japanese carmaker voiced concern over the French government increasing its voting rights in the French firm.
In a statement, Renault said it wanted to see a solution "reinforcing the alliance" with Nissan, with whom it has been linked for the past 16 years, AFP reported.
The 19-member advisory board said they had held talks with Renault's two main long-term shareholders, the French state and Nissan, to allay Japanese concerns.
The French state raised its stake in Renault to 19.7% this year, disturbing the fragile balance between the two companies and angering Renault-Nissan boss Carlos Ghosn.
That bolstered Paris' voting rights, effectively denying the Japanese company a say in how the business is operated.
It also prompted Nissan's chief competitive officer, Hiroto Saikawa, to say his company had expressed its concerns to both the French and Japanese governments.
Under a new French law, long-term investors in French companies automatically receive double voting rights unless two-thirds of shareholders are opposed.
French Economy Minister Emmanuel Macron denied on Tuesday that there was any attempt from the French state to "destabilize" the alliance. He insisted the increase in the stake was temporary and Paris would reduce the holding soon.
Under the alliance agreement struck in 1999, Renault owns about 43% of Nissan. The latter holds about 15% of the French's automaker's shares, but without voting rights.
Renault-Nissan Begins Cost Savings
Renault, France on Collision Course
France Close to Returning to 15% Renault Stake
Iran-Born Renault VP's Formidable Forte
Renault, Nissan in Merger Talks
Renault Board's Senior Member Quits


text:
Q: Touch through a node in SpriteKit So I am working on making a tower defense game and have the tile board working and able to place towers... to a degree.
When a player clicks a button above the grid, it will toggle on the tower placement and allow the player to place towers on a cell within the grid. However, each tower is also getting a circle ShapeNode around it to handle detection of a creep moving into firing range. This shape node shows up just fine around the tower once I place them.
The logic I used to place the towers is that it finds the node you touch (named "cell") and replaces it with a tower node. But if the tower node has the circle node attached and covering a cell next to it, I am unable to select the cell node below the circle.
How would I go about touching "through" the circle, or setting its fill space to be nothing so that I can access the cells below it?
I'm still learning sprite-kit as I go, so if there may be a simpler approach feel free to point me in the right direction too.

A: If you want find a node at a given point but not necessarily the deepest node you can use nodesAtPoint: available on SKNode including SKScene.
This allows you to find all child nodes of a scene, or node that intersect a given point.  You could then filter this further to find the particular node you want, perhaps by filtering the array based on node class or node name.
A similar approach can be applied if looking for physics bodies at a particular point, using the method enumerateBodiesAtPoint:usingBlock: available in SKPhysicsWorld
It is worth noting that when using nodesAtPoint: the point is in the calling nodes coordinate system where as enumerateBodiesAtPoint:usingBlock: will always be in the scenes coordinate system.

A: Without seeing any of your relevant code it's hard to say for certain but from your description, I think your issue is with the shape node. Instead of using a shape node to handle your contacts, I would suggest you use the tower's physics body instead. You can still have a circular physics body for your towers without resorting to adding a whole new node. Removing the shape node will also resolve your cross touch interference.

A: TouchesBegan automatically detects all nodes at that position, you just have to loop through them.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches)
    {
        CGPoint touchPoint = [touch locationInNode:self];
        NSArray *nodes = [self nodesAtPoint:touchPoint];

        if ([nodes count])
        {
            for (SKNode *node in nodes)
            {
                if ([node.name isEqualToString:@"cell"])
                {

                }
                else
                {

                }
            }
        }
    }
}

"self" being the node that touches began is called in (most likely your scene). You can also filter it by parent objects, for example; if you add all of your nodes to a parent node named "background", you can filter to only the children of the background node by replacing "self" with your background node (though this will result in it using the background nodes coordinates).


As Jon Bon Jovi took the stage to perform at a rally Sunday night for Democratic nominee for New Jersey governor Phil Murphy, the candidate's wife had a surprise waiting for the rock star.
Bon Jovi and Murphy are longtime neighbors in Middletown, and Tammy Murphy referred to the Jersey-bred musician as "probably our best friend."
She thank Bon Jovi and his wife Dorothea for all the work they've done over their years to support the Murphys' think tank and her husband's campaign.
"Each time I call Jon, I say: 'Can you just help us one more time?'" Tammy Murphy told the crowd Sunday at the House of Independents in Asbury Park. "Jon very kindly says, 'Yeah, OK, I'll do it."
"I said to Jon, 'There's no way we could ever repay you,'" she continued. "He said he wants a rest stop."
A rest stop bearing your name is one of the ultimate signs of achievement in the Garden State. The rest areas along the New Jersey Turnpike are named after famous Jerseyans.
But Tammy was clutching a framed picture.
"Phil and I have been a little busy, so we haven't actually produced the final metal sign," she said. "But I will show you -- I am going to unveil the new rest stop."
The photo was of the "Jon Bon Jovi Rest Area."
Of course, no such place exists -- although Murphy now has sway after beating Republican Kim Guadagno in Tuesday's race to succeed Gov. Chris Christie.
Bon Jovi -- second only to Bruce Springsteen in Jersey rock royalty -- laughed as he took the frame in his hands.
"What exit?!" the crowd shouted.
"I know better than to offend somebody by saying what exit," Bon Jovi said as he grabbed his guitar to play a three-song set. "But that is so funny."
For the record, Bon Jovi was born in Sayreville -- off Exit 9 on the Turnpike or Exit 124 on the Garden State Parkway.
Middletown -- where he and the Murphys now live -- is off Parkway Exit 114.


Founded in 2001, Chengdu Huilingfeng Diamond Bit Co., Ltd. (hereafter abbreviated as HLF Co.,) has a history of over 17 years now. Since then, HLF has been dedicated to the development, design, manufacture, marketing and sales of PDC bits and diamond bits. HLF not only possesses a strong technical and production team, equipped with specialized equipment for matrix body/steel body PDC bits and diamond bits, it is now grown up to be one of the strongest company in technology development and innovation in China. The three new series of bits, including the Conventional Series, Quik-Pen Series, and Tough-Pen Series PDC bits have been developed in recent years to meet the fast development of worldwide drilling demands and the requirements of local and foreign customers.These bits proved to be successful in different oilfields with various lithology formations, receiving good drilling results and appreciation from customers and end users at home and abroad.
HLF has developed a quick penetration steel body PDC bit applicable to drilling in soft to medium hard formation. This series of bits mainly refer to large size bits such as 17 1/2"and 16"bits used in the upper section of wells to drill medium soft to medium hard formations, sometimes interbedded with sandstone and siltstone.
HLF Tough-Pen series PDC bits are developed to drill through long sections of mudstone, sandstone and shale, in which the bit often encounters siltstone of high abrasiveness and hardness or interbedded layers of high compressive hard shale which is difficult to penetrate through.
HLF Special Diamond Bits include: Core Bits (HC),Thermal-stable Polycrystalline Bits (HT), Impregnated Segment Bits (HI) and Bi-center bits (HSB).
This series of bits are specially developed for non-oil & gas drilling applications such as water drilling, geothermal drilling, mining, construction…etc..


As I stated at the end of last week's blog, Monday turned out to be the worst weather day of the week which prevented us from making any progress on the garage. As it was wet I wasn't able to progress our rear wall as it would have been too muddy, but it did allow me to continue hacking back the overgrown trees, brambles and vegetation on the opposite side of Hent Gorreker. We have already seen a significant difference with the amount of light falling on that part of the drive and garden and has opened up the view at the end of the drive to the forest beyond.
Garage work began again on Tuesday when we were able to progress with putting up the rafters in the 2 central bays which continues to make it look more like the garage it will ultimately be rather than a random collection of wooden supports! What it has also made clear is just how BIG the first floor space will be – HUGE!! Current plans are to divide this into 2, half will be the family games room for 'wet weather' activities (should it ever be wet!) and the other half storage for David and I to use however, the scale does give us a lot of flexibility for future ideas and plans.
Tuesday was a bit of a challenge following Monday's wet weather because, as we have decided not to build on a solid concrete pad, the floor of the car bays became a bit of a quagmire which the feet of the ladders kept sinking into. We had no such problem from Wednesday onwards when the cold weather returned and the ground remained frozen throughout the day.
We continued to make fairly rapid progress during the rest of the week, including putting up 3 of the 4 corner uprights made of the same douglas fir as the central supports that will give the building a real impact when it is complete. Again, these pictures show the progress of the last 4 days from the same point so it is hopefully evident what we have managed to complete. Next week, we hope, to start putting up the roofing rafters.
We let our builder have the weekends off(!) so yesterday I returned to the Hent Gorreker hedge. I would again have loved to make progress on our rear wall but the cold weather has meant the ground was far too frozen to do anything – it's always an advantage of having so many things that need doing!! Only 1 more day left to clear the bits that we want to – and then lots of wood to cut up and store for a couple of years before we can burn it. One 'disadvantage' is that it has made the caravans stored (abandoned?) in the field more visible, thankfully however, the bramble, hazel and sycamore will be back before we know it – but can (and will) be controlled!
Today, after we said goodbye to our B&B guests, we took advantage of the amazing weather and gave ourselves a day off too. As last week we took the dogs for a walk but this time somewhere new for us as we want to explore more this fantastic part of the world. Using a new walking book written by Dave's PT client, we headed north of Morlaix to a small village on the banks of the Bay of Morlaix, Dourduff and did a short circular walk along the Rivière de Morlaix and Le Dourduff river. It was a fabulous walk and, in the sunshine, could almost have been July it felt so hot. We saw our first daffodils of spring (but I think all the plants are a little confused right now) as well as some interesting, old, man-made structures in a small stream like this little fountain.
We also saw a lot of a plant which we have seen before – its is very prickly and has very stiff leaves and stems but has amazing red berries. We would love to know what it is as we would love to plant some in our garden but wouldn't want to do so if its berries are toxic. Can anyone assist and tell us what it is?
More progress on the garage in the week and, hopefully, some rafters and roof work completed.


Preheat oven to 200°. Trim the excess lamb fat off the lamb rack. Mix all other ingredients together. Cut between each chop almost all the way through. Place a small spoonful of mixture between each chop. Spread excess over the outside of the rack. Place in the oven and bake for 20 -30 minutes for medium rare or until cooked to your liking. Remove from oven and allow to stand, covered, in a warm place for 10 minutes. Meanwhile make a gravy with the pan juices. Serve with roast vegetables and gravy.
Melt the butter in a pan and then stir through the flour. Allow to cook for 5 minutes before slowly whisking in the roast juices. Add extra hot stock if too thick.
For more recipes & cooking tips, please see the demo team at the Farmers Market.
Heat the oil in a large pot and gently fry the onion, garlic, carrot, cabbage, parsnip, pumpkin, green beans and zucchini until the onion is tender. Add the ham hock and stock and bring to the boil before reducing the heat to a simmer and covering. Cook for at least 1 ½ hours making sure to stir regularly so it doesn't stick to the bottom. Uncover and cook for a further half an hour until the soup is thickened and the ham falls from the bone. Remove from the heat and using tongs, carefully remove the hock and place aside. Once cool enough to handle shred the ham meat and discard the bones, fat and skin. Add the ham back into the soup and heat through. Serve with lots of buttered, crusty bread.
Heat the olive oil in an oven proof pot and sear the shanks so that each side is browned. Remove to a plate and add the butter. Sauté the leek, carrot and garlic until tender. Add in the flour and cook stirring for 2 minutes. Return shanks to the pot and add in the stock, wine, rosemary and thyme. Bring to a boil making sure to scrape any residual flour mixture from the bottom. Pop a lid on the top, or cover with baking paper and alfoil, then bake in a 180°C oven for 2 hours or until tender, stirring occasionally. Season to taste and serve with mash.
Season oyster blade with salt and pepper. Heat oil in pan and add meat and cook over medium heat for 8 – 10 minutes until browned all over. Stir in onions and garlic, cook until soft. Remove from pan and place in an oven proof dish and set aside. Add wine or beef stock to deglaze pan. Once the wine/stock has deglazed and reduced down add in the sugo dulce, oregano and basil. Pour pan sauce over the oyster blade. Cover with baking paper and alfoil. Place in oven at 180°C for first 30 minutes. Turn down oven to 160°C and cook for at least 2 – 21/2 hours until meat is tender. Serve over your favourite pasta or with a crunchy Italian loaf.
Lightly beat eggs and cream together and season with salt & pepper.
Melt butter in a small frying pan on medium heat, add Olive oil, add egg mixture. Cook until lightly set. Using a spatula, fold the edges into the centre of the pan and leave to cook for another 2 minutes. Gently fold through Smoked Salmon and Chives. Serve immediately over some crunchy Turkish bread.
In a deep casserole dish, add the onions, oil, salt and pepper and massage together well to release the juice of the onions – this is critical for the marination of the meat. Add the capsicum, garlic, Moroccan spice and verjus and combine together. Place the oyster blade steaks in the casserole dish, pour over beef stock. Cover and place in fridge for 2hrs. Preheat oven to 180°C. Place in oven and bake for 1 hour reduce heat 160°C , further 45mins – 1hr or until tender. Serve with cous cous or rice.


Real simple tale to tell you- The Grass Roots are one of Jeff Eats favorite Rock N Roll bands of all time!
Trust me when I tell you- that the current lineup featuring Mark Dawson on lead- puts on an absolutely incredible show!
Jeff Eats and Mrs. Jeff Eats will be there!
The Grass Roots are coming to South Florida for a must-see show. Since their debut in 1965, the band has garnered worldwide success selling more than 20 million records and obtaining 29 chart-topping singles. Considered to be one of the most recognizable bands on "Classic Rock" radio stations, the band continues to attract audiences of all ages. You're sure to be "Lovin' Things" as they perform smash hits like, "Let's Live for Today," "Sooner or Later," "Midnight Confessions" and many more this July at The Casino @ Dania Beach!
I saw them a couple of years ago at The Amp in Pompano and they were great. Non stop hits and Dawson is actually better than original lead singer Grill was.
* Tommy James & The Shondells and The Grass Roots.
The legendary 60's Rock N Roll bands Tommy James & The Shondells and The Grass Roots are set to play the Pompano Beach Amphitheater- Saturday, June 11th (8pm).
You can get tickets at theamppompano.org.
If you guys can keep a secret, Tommy James & The Shondells and The Grass Roots are two of Jeff Eats and Mrs. Jeff Eats' favorite bands of all time. Just so you know, we saw both bands in "action" late last year and they absolutely killed! These guys got so many hits between them, that it's scary…just for starters- songs like Temptation Eyes, Hanky Panky, Mony Mony, Sooner or Later, I'd Wait A Million Years, Crystal Blue Persuasion, Draggin' The Line, I Think We're Alone Now- kept both bands on the top of the charts for years!
Jeff Eats and Mrs. Jeff Eats can't wait to see this concert!
For those of you guys "into" 60's Rock N Roll…Tuesday Night June 18, 2013 at 8pm The Grass Roots will be in concert at the Mardi Gras Casino in Hallandale Beach.
Jeff Eats has seen The Grass Roots a number of times and they are absolutely terrific. By the way, Jeff Eats' friend-Mark Dawson is the band's lead singer, so if you see him at the "Meet & Greet" tell him I said–HELLO! For what it's worth…in Jeff Eats' humble opinion, The Grass Roots were one of the top bands back in the 60's and are definitely right up there with the best 60's bands currently working the "oldies" circuit. By the way, if you speak to Mark do Jeff Eats a big favor and -don't mention the word "oldies" to him…kinda touchy, if you know what I mean? Terms like "classic," "revolutionary," "inspiring" & "ground breaking" will get you better photos and more legible autographs from Mark and the other Grass Roots.
Tickets just went on sale at Mardi Gras Casino's website http://www.mardigrascasinofl.com. Tickets are $10, $15, $25—and based on the setup that Jeff Eats saw at the casino's- The Lovin' Spoonful concert…every seat in the house works.
Like I said 3 seconds ago, you can buy tickets at http://www.mardigrascasinofl.com. The site also has some nice "history" on the band and special player/meal deals which maybe of interest to some of you guys.


MURFREESBORO – Tennesseans generally want U.S. Muslims to have the same rights as other Americans, and while most state residents oppose building an Islamic facility near "Ground Zero" in New York, most wouldn't mind construction of such facilities in Murfreesboro or even closer to home, the latest MTSU Poll shows.
Sixty-six percent of Tennesseans say U.S. Muslims deserve the same rights as other Americans. About the same proportion say they either support or would not oppose construction of an Islamic facility in Murfreesboro or near where they live.
Most Tennesseans also reject the idea that Muslims in the U.S. should have to register their whereabouts with the government, and most consider it wrong to profile people as potential terrorists because they are Muslim, the poll shows.
Sixty-three percent of Tennesseans do, however, oppose construction of the Park51 Community Center, the Islamic facility proposed for construction in Lower Manhatten near the World Trade Center site. The proportion is similar to the 67 percent of New York state likely voters who said in a September poll that the center should be built elsewhere.
Other findings show Republican Bill Haslam running well ahead of Democrat Mike McWherter in Tennessee's gubernatorial race. Haslam draws 42 percent support to McWherter's 19 percent among all Tennessee adults, with 34 percent undecided. Among Tennesseans who say they both voted in the 2008 presidential election and are eligible to vote in the upcoming election, Haslam attracts 50 percent, and McWherter, 21 percent, with 24 percent undecided.
Conducted by Middle Tennessee State University's College of Mass Communication, the telephone poll of 614 Tennessee adults chosen at random from across the state has an error margin of plus or minus four percentage points at the 95 percent level of confidence. Full results are available on the poll's website, www.mtsusurveygroup.org.
The poll also found continued erosion of President Barack Obama's popularity in the state. Fifty-five percent disapprove, and only 35 percent approve, of the job Obama is doing. Approval is down and disapproval is up compared to previous MTSU Polls. Significantly for Obama, a majority of independents disapprove, with concern about the national economy as the deciding factor.
The poll did not estimate the standing of specific candidates in the state's various Congressional races, but Tennesseans are more likely to say that the country would be better off with Republicans controlling Congress (34 percent) than with Democrats controlling Congress (20 percent). A sizable 36 percent, though, think that conditions will be the same regardless of which party ends up controlling Congress. The same attitudes show up when Tennesseans are asked about which party they'd like to see controlling the state Legislature.
Tennesseans say, too, that Congressional Republicans and Obama are both to blame for gridlock on Capitol Hill. Meanwhile, 37 percent continue to believe that Obama was born in another country, and 34 percent think he is a Muslim. The White House and officials in Hawaii, where Obama's birth certificate is on file, have repeatedly attempted to dispel the rumor that Obama was born outside the United States. And Obama as well as others in his administration have said that he is a Christian.
• A 48-percent plurality of Tennesseans disapprove of the federal health reform law passed in March and want to see the law repealed.
• A 60-percent majority of Tennesseans consider protecting the right of Americans to own guns more important than controlling gun ownership.
• Half of Tennesseans think going to war in Afghanistan was the right decision, but only 41 percent consider going to war in Iraq the right decision.
"Sixty-six percent of Tennesseans say U.S. Muslims deserve the same rights as other Americans."
And 34% say Muslims do not deserve the same rights?
"A sizable 36 percent, though, think that conditions will be the same regardless of which party ends up controlling Congress."
Says more than the other two numbers--not even the King's horses can undue this.
"Meanwhile, 37 percent continue to believe that Obama was born in another country, and 34 percent think he is a Muslim"
Driven by the likes of Beck, Palen, Super 99 and their ilk! Much like the 34% noted above--a pretty pathetic picture of that segment who call themselves Americans.
" A 48-percent plurality of Tennesseans disapprove of the federal health reform law"
The survey didn't say "34% of Americans say Muslims do not deserve the same rights", just "facts" you pull out your---.
MANY of us should leave the gathering of data, generation of news and the spreading of that news to the people who are capable of doing so.
rachel--and neither did I, did you not see the question mark?
Herein is the problem, rachel, many are incapable of reading and understanding the written word and read into it their predujices.
Most distrubing is that only 49% feel the Iraq War was a mistake.
A unprovoked, unnecessary, unwarranted war, based on nothing more than hyped up mistruths, a war that cost the lives of thousands of our troops, inflicting injuries on tens of thousands more, killing off upward to 100,000 or more innocent Iraqis--men. women and childrem and injuring tens of thousands more along with driving millions out of their country and only 49% feels that was an injustice!
Hope you were talking to yourself, "incapable of reading and understanding the written word" without" reading into it their prejudices".
As for your "?" which I and, I sure most, would see as not actually asking a question but as pondering and making a STATEMENT which required an assumption. If you were asking a question, then the answer is NO. Just because 100 - 66 = 34 maybe true in NO WAY reflects that your statement is correct.
As far as your "unprovoked, unnecessary, unwarranted, rant on new topic: maybe we should have imposed more sanctions and deprived them of cold drinks and electric blankets--yea that will teach them. We had been attacked many times at the cost of American lives on foreign soil by these extremest with little to no retaliation. We were viewed as weak and that maybe ok with you but NOT ME. When the attack was on our soil someone had to pay and sorry but Iraq was at top of list. One thing is for sure we did it and it is done.
Rachel you will never make a Democrat understand the importance of military strength in our nation.
The Democrats are like the French. It truly isn't a war until the French or Democrats surrender.
Being weak militarly, cutting defense spending, allowing Americans to be held hostage, allowing Navy ships to be bombed and doing nothing about it, being politically correct and playing footsie with countries that are known to have terrorist sympathies are all the Democrats know how to do.
Wasting your time explaining something as simple as toothpaste to dailyreader is useless because he is a radical, left-wing aethist who believes everyone should live off of the government.
Don't even bother. The man does not even live in Woodbury and does not vote in Woodbury. He just wants to stir trouble because no one else will listen to his garbage he so desperately wants people to hear.
Freud has a good word to describe him and it is called: Neurotic!
I'll take all these insults more seriously when all learn how to spell "aethist" as in "a radical, left-wing aethist."
I may have had a typo and mispelled atheist, but I did spell Neurotic correctly on the first try.
I hope you take that seriously since I spelled it correctly?
I am sure there are some good doctor's that might help you.
So you take atheist ,radical, and left wing as insults which so many (many times true leaders) hold in honor, but you have no problem with " wants to stir trouble because no one else will listen to his garbage he so desperately wants people to hear" and " wasting time explaining something as simple as toothpaste to dailyreader" and then resort to pointing out grammatical errors (posted to small town online news opinion post) in retaliation. I have spell check too--aint it nice.
GOP I hold no party affiliation and believe one of the biggest problems with our current system is yellow dog voters but we definitely agree on showing our strength to those who threaten us.
You know rachel, the truth is I am really not a radical. I personally believe there are good and bad in both parties. And that includes people and ideas.
The problem I have is people like dailyreader who accuse anyone who has a different idea or belief than his liberal agenda as being radical.
He proclaims to know it all, he proclaims his party is the greastest thing since sliced loaf bread, he claims all Republicans are radicals and "extremists" and yet him and others like him are the very problem America faces today.
Blasting off at people because they don't agree with you just puts people on the defensive.
Instead of taking the time like Mr. Davenport did in his letter to the editor recently and explaining why he felt the Democrats didn't tell the whole truth about the Health Care Law in their ad last week, dailyreader just wants to cut people down, be sarcastic and try to promote himself as well read, intelligent and sooooo knowledgeable.
Yet, he offers no real solutions except more of the same. More government, more taxes, no spending cuts, making our military weaker and making sure everything is anti-God.
I will debate him all day long. I will offer solutions to any problem he poses. I will go toe to toe with him anywhere, anytime just name the place.
I will 100% legitimately debate him in any forum he chooses. No name calling, no sarcasm with no problem.
But, he won't and it is hard to find any Democrat who will.
More of the same results in our country becoming worse by the day. And, it will never change as long as neither party is willing to work together.
Radical to call someone atheist, anti-Christ, anti-God, idiot, moron and a few other expressions when the caller does not even know the individual he is addressing---except that the individual is a liberal Democrat with a tour of duty in a combat zone who is also a believer in not squandering the lives of our troops on wars where God has told someone to invade and conquer and do a little nation building.
No nothing radical about all that, just normal for some.
PS, I voted for Truman, Ike, demonstrated against LBJ's war, think Carter deserves his low rating as a president, felt Clinton should have resigned after lying, experienced the effects of NAFTA, hired Negoes when no other company in the area would touch them, helped young women to obtain abortions after being raped, knew, at one time, most of Luther's Smaller Catechism and try to practice what Jefferson and Adams said: Be just and do good.
Seems from my viewpoint dailyreader that by your own definition you are a radical and extremist, because it apears the only criteria to qualify as one is to have opinions on issues which are different than yours. Many people hold views on a variety of issues which are the exact opposite of yours, and in a majority of instances you would be the one considered radical. Privatizing Social Security may be a viable option. Aborton may be legal but it is still killing a child that otherwise would be born. The gay lifestyle may not suit all people, and people are entitled to expressing their opinion about it. It is well known that there are welfare recipients who abuse the system. It would probably be possible to eliminate or downsize some federal departments and let states and local communities handle matters more.
As to name-calling, I must ask, have you ever listened to liberal TV or radio stations, or read liberal newspapers or blogs? They thrive on character assasination. Do you not engae in it yourself?
GOP in my last statement I was addressing dailyreader in the first part of my statement and you in the second. I don't find you radical and as I stated find it hard to believe dailyreader would take insult to that labeling.
Ah, Kevin, when I see what has taken place within the once revered Republican Party I am reminded of two quotes.
"Extemism in search of a vote is no vice"
"Fortune is guiding our affairs better than we ourselves could have wished. Do you see over yonder, friend Sancho, thirty or forty hulking giants? I intend to do battle with them and slay them".
Typical dailyreader who quotes some obscure passage he reasearched, cut, copied and pasted off the internet and never offering any solution or rebuttal to comments asked of him.
I said it before. It is people like him who are the very problem Amercia faces today in politics. He calls everyone and extremists and he does the name calling, the sarcasm and promotes continuation of more of the same.
Like all Democrats, he has no viable solutions, only liberal agendas.
He is an aethist who believes we all should live off of the government.
rd77--the paraphrase came from a biography I have of BG and the other came from another book I have--perhaps some day you will read it also.
no thanks dailyreader on reading your books, anything you read is the exact opposite of what I read with very few exceptions.
Personally I like to be inspired by the books I read, instead of the psychoanalytical garbage I am sure that fills your bookshelves. Liberal inanity is not my cup of tea.
Unlike you, I search through all things looking for peace, understanding and a common ground. I find the broader you allow yourself to be the more intelligent you are able to talk, write and explain things when asked or given the opprotunity.
Like I said previously, all you want to do is complain, use sarcasm, berate and call people names because they disagree with you and your liberal mantra.
You offer no solutions to any of the problems we face in America and that is why you and the Democrats fail to capture the minds and hearts of the American people.
That is also why of the 234 years America has been in existence, the Republicans has held the Presidency 92 years. That is why there has been almost half of the Presidents elected Republicans.
You don't get it. You don't try to get it and you probably never will get it. The majority of the time for over the last 100 years, the American people just are not buying what the Democrats are trying to sell.
Why don't you stop bashing and start listening for a change?
You seem like a semi-intelligent person and I am sure you have something good to offer. But if all you do is condone people then don't expect anyone to listen.
everyone take your meds and a deep breath and remember a quote that I believe came from the infamous ber rabbit 'please dont throw me in that brier patch"
rd77, you are correct that more Republicans than Demcorats have been elected--but it is more meaningful to look at the accomplishments of those in office then years spent in futility.
Contrast that with FDR 1st, Clinton 3rd, Truman 6th, JFK 7th, LBJ 10th and even Carter at 40 bettered Jr.
Look at domestic accomplishments: Bush Jr 38th, Ford 30th, Bush Sr 28th, Reagan 23rd, Nixon 24th, Ike 11th.
Compared to FDR 3rd, LBJ 5th, TRuman 7th, Clinton 10th, JFK 15th and even Carter with 29th fared better than Bush and Ford.
And forbid that we would look at intelligence in these leaders for all we would find would rankings way down with Bush Jr at 42nd.
dailyreader just so you know, I am not a member of the Tea Party. I have never been and I never will be a memeber of the Tea Party. I am a conservative Republican. Period. Exclamation point. Please do not lump me into any group you love to hate on outside of the Republican party.
I have nothing against Tea Party members, it is just not my cup of tea (no pun intended).
I call you an aethist because you promote anti-God sentiment, you believe in a so- called "Seperation of Church and State" that doesn't exist in the Constitution and because you have never denied it.
I don't recall (but I won't say I didn't) calling you an idiot. I remember calling your liberal ideas idiotic. And I am certain someone else called you neurotic.
You love to quote facts and obscure passages from your own liberal websites and bash other people who quote from their conservative sites. How can you not see that is the very definition of hypocrisy?
And you are getting way to caught up in the "rankings" of Presidents. In the end, you know that the Presidential powers are extremely limited. The power resides in the Congress. It was intended to be that way by the founding fathers.
How much research have you done to discover what Congress was in power during the years of the Presidents who were ranked the lowest?
And honestly who caresssss? Not me and I bet not many others.
What makes a good leader is not defined by their scale of 1 to 10. What makes a good leader is someone who inspires, unites, and causes people to want to do what is right and not what is popular.
There have been some good Democrat leaders and good Republican leaders. I have seen both. You have seen both even if you won't admit it.
I don't agree with your liberal views. I never will. But, that doesn't mean because I disagree with most everything you say that I shouldn't continue to try and find the middle ground.
That is what Americans want more than anything. They want the middle. They do not want to be too liberal or too conservative.
Arguing who is ranked in the top ten does nothing and is a waste of time typing it out.
do yall have the same conversation on every story regardless of topic? i bet most like me find you both quite comical at best.
dailyreader and I do have the same back and forth on most every article.
I agree with you in some ways that it is a waste of time.
I had much rather we be looking at problems, discussing what we each think could solve them and then work toward a middle ground.
I am more than willing to do that. However, dailyreader is not.
I feel it necessary to respond to his liberal agenda with my conservative beliefs when he comments because most people never take the time to actually study the issue from both sides. If all they see and read is liberal garbage they will never know there is another side to the argument.
I pledge to you that if you can get him to agree to stop blabbing on every single subject posted about how great a President was in 1897 and where they were ranked greastest to least and focus on the issues, I will do the same.
Until he stops being part of the problem, I feel we all should try to rebutt his liberal agenda.


text:
Renewable »
Green norms
MPCB gets notice, asked to follow green norms
The duo has sought a reply from the board about the necessary steps initiated as per the National Green Tribunal's (NGT) judgment dated November 6, 2015.TNN | October 25, 2016, 08:26 IST
New Delhi: With the festival of lights just around the corner, a couple of activists have served a legal notice to the Aurangabad unit of Maharashtra Pollution Control Board (MPCB) for allegedly not complying with the directions given by the National Green Tribunal.
The duo has sought a reply from the board about the necessary steps initiated as per the National Green Tribunal's (NGT) judgment dated November 6, 2015.
They have threatened of contempt proceedings against the MPCB if the board fails to submit the action taken report after the festival.
In the legal notice, socio-legal analyst and advocate Asim Sarode as well as environmentalist Vivek Dhakane alleged that the MPCB was not complying with the NGT's directions with regards to following environment norms, especially during Diwali.
The notice, which was served on October 19, stated that the government authorities, particularly the environment department, MPCB and municipal corporations/councils, shall give wide publicity to the ill-effects of firecrackers, as per the orders of the Supreme Court.
"The MPCB shall conduct noise and air monitoring during Diwali period in order to assess adverse noise impacts of firecrackers by involving local municipal and police authorities. It should share information online with them ," it stated.
"The MPCB and local authorities shall also conduct necessary sampling and analysis of solid waste generated though bursting of firecrackers to verify its hazardous contents so that necessary waste disposal practices can be adopted. On basis of Polluter Pays Principle, all firecracker sale agencies and shops shall pay Rs 3,000 to the municipal body as environmental cleanliness charges.
In case of default, the municipal authorities shall take stringent action against such defaulting agencies or shops," B Sanjewar, MPCB's regional officer (Aurangabad), said the board will serve a notice to the Aurangabad Municipal Corporation soon asking it to comply with the NGT's judgment.
Tags : Renewable, NGT, MPCB, Green norms
Most Read in Renewable
Economic Survey pitches for $330 billion investment in renewable energy
Solar play: Vedanta to bid aggressively for government projects
BHEL bags Rs 800 crore orders for setting up two solar power plants


text:
Home » TOP SHELF » You are reading »
THE ROVING DIPLOMAT
subra THE ROVING DIPLOMAT2019-04-01T05:19:52+00:00 TOP SHELF
TRIBUTE SERIES
TENSIONS SCALE NEW HEIGHTS
An epidemic of simmering tensions could possibly be waiting to boil over
The international scene is currently experiencing an escalation of tension, not only in traditionally tense parts of the world but others too – and this amounts to a veritable epidemic. There is no general explanation for this and it may be a coincidence where simmering tensions are boiling over at the same time.
Heading the list is the long-suffering Middle East peace process, which is facing yet another ordeal with the election of Ariel Sharon as Israel's prime minister; resignation of Ehud Barak due to a crisis in the Labor Party; and resultant failure of his proposed coalition with Sharon.
This leaves the Palestinians regarding the turn of events as a deathblow to their hopes of a settlement.
Sharon had sounded conciliatory in a letter to the President of the Palestinian National Authority Yasser Arafat. He pledged to find a solution in accordance with the relevant UN resolutions on the clear understanding that the Palestinians would renounce violence, which is the crucial issue at the moment that the future depends on.
The Israeli prime minister had made three demands from Arafat – viz. a public statement by him calling unequivocally for an end to violence, that the Palestinian Authority must act to stop incitement and a renewal of security coordination. This was accompanied by the imposition of a blockade by Israel in the West Bank and Gaza, which has been described by the Palestinians as 'collective punishment.'
There's yet another explosive situation in the Middle East with the furore created by the Anglo-US bombing of Iraq in February 2001, which was ostensibly directed at Iraqi radar systems. Apart from the storm of protests this raised in the Arab world following the appeal by the Iraqi parliament to the Arab community, these raids have also caused a split in NATO with several EU countries – notably France – condemning these raids.
Turning to Asia, there's a looming crisis in Indo-Pakistan relations, which is currently in a paradoxical situation. India declared a unilateral ceasefire last November and extended it for a further three months from 23 February 2001. However, its credibility is being questioned because of continuing violence on the part of Islamic militants, which has resulted in the deaths of 242 civilians and 187 guerrillas.
The position of the militants is their insistence on talks between the two countries on Kashmir with a view to a settlement. This position has been officially endorsed in a recent statement by Pakistan's foreign secretary: "If the Kashmir issue is settled according to the wishes of the Kashmiri people, and if a strategic regime on nuclear and conventional matters is in place, both countries can work together to develop bilateral economic cooperation."
US President George W. Bush had expressed a similar sentiment in a letter to General Pervez Musharraf wherein he emphasised that dialogue is vital for resolving differences between them. India's position is that it's up to Pakistan to control the separatists as terrorism and dialogue can't go hand in hand.
Meanwhile, India is embarking on measures that are designed to strengthen its military and defence capacities. These initiatives include the import of nuclear fuel from Russia for its atomic power station; the recent purchase of 300 tanks from Russia; and its naval carnival in Mumbai where 25 warships from 19 countries and 95 Indian destroyers participated.
Apart from being an impressive display of Indian naval might, it also opened the door to naval cooperation between India and other countries in the region, in matters such as shipbuilding and manpower training.
Bangladesh and Nepal are also facing unrest. The former has been virtually paralysed by a series of strikes organised by the four opposition parties, which demanded the resignation of Prime Minister Sheikh Hasina Wazed.
This is part of a relentless campaign waged against her by the opposition parties, which has resulted in 80 days of national strikes. The objective is to overthrow the government, which has been branded as corrupt, inefficient and repressive. But the PM is adamant in her decision not to quit but hold elections after 13 July.
Nepal is facing an insurgent movement by so-called Maoist guerrillas, which has made considerable headway in the country. The insurgents are suspected of planting the booby-trap bomb that blew up a vehicle in central Nepal.
There is concern over the apparent inability of the government to overcome this threat to its security so far and speculation as to whether a foreign hand is behind it.
BY The late Deshamanya Dr. Vernon L. B. Mendis
« CONSUMER CONFIDENCE
BOOKRACK »


Arriving in Shaftesbury on a rainy day I had a very warm welcome from the people involved in Transition Town Shaftesbury. The Transition Movement, which developed as a response to peak oil production, uses a proactive approach to engage with alternatives to dependence on oil and to address global issues at a local level.
In a nutshell, the transition idea rebuilds local resilience and self-sufficiency by setting up local networks and reducing carbon emissions and the reliance on oil. In many ways it is turning back the clock to a time when towns and villages had their own infrastructure, so they were self-supporting. For example, the local baker, miller and farmer combined to produce your daily bread, and market gardens supplied fruit and veg within a few miles of a town. Local resilience was used to great effect during the Second World War when we grew as much of our own food as we could. Apply this concept today, where fossil fuel prices are rocketing and food supplies worldwide are increasingly volatile, and it makes complete sense.
By their very nature Transition Towns are based not on the actions of one individual but on a combination of local groups, so each town develops differently according to its communitys needs. In Shaftesbury current activities include a thought-provoking eco-circus spreading the word about the movement, a community farm project and a transition tree initiative, as well as local groups nurturing sustainable development.
Robin Walter, Chairman of Transition Town Shaftesbury Committee, is very clear that the driving force behind the movement must come from the town. What happens very much depends on seeing what is already in the community and supporting development of existing projects or, if there is a gap in services, developing something to meet those needs.
Part of that process is developing awareness of issues and opportunities through local meetings. Robin cites an example of a community lunch held last October that brought together a diverse mixture of individuals over baked potatoes from the Shaftesbury Home Grown project.
Participants, including faith groups, the council and businesses, were invited to talk about a sustainable Shaftesbury and fostering connections. For example, the council said it was looking at developing cycle paths and the NHS project Hope 2 Cycle was reconditioning bikes, so cycling is being supported as a means of local transport.
In Robin Walter, Shaftesbury has a resident tree expert who has worked in both commercial forestry and conservation. Robin is currently involved with the community tree-planting schemes that have taken place around Shaftesbury, both on the community farm and also in public areas, where the fruit can be picked by anyone. Trees can be a tool in finding sustainable ways to sequester more carbon than you emit, he says. They are also an important component of agroforestry systems, for example managing nitrogen/ammonia nutrient cycles which are as significant as carbon management. On his website Trees for Transition, Robin combines his expertise with transition knowledge and suggests a range of roles trees can have that landowners and community groups could consider.
Getting the word out into the community about the benefits of a transition town is crucial. With this in mind, composer Karen Wimhurst, in collaboration with writer Dr Amanda Boulter, artist Peter Rush, director Paul Jordan and producer Julia Markus have developed an Eco-Circus. Their show A Tipping Point is an engaging way to explore issues,bringing them to a broad family audience. The performance is preceded by a circus skills workshop and, if funding can be found, A Tipping Point will be performed at the Big Green Fortnight in Poole.
Shaftesbury Home Grown is a recently established community farm. With a sloping south-facing aspect, the site has beautiful views as well as great growing conditions. Heather Crump is a regular volunteer at the community farm and has found that the project is a slow but steady grower with the local community. There has been a certain amount of apathy because it is easy to get in the car and go to the supermarket, but the farm is not just about growing food, it has a nice spirit; for example, we hosted a community lunch here last summer.
A small core group of hardy volunteers work on the farm Friday and Sunday mornings, carrying out garden tasks and selling produce. Last year the farm produced 27 varieties of fruit and vegetables. The vegetable beds are protected from badgers by an electric fence that uses photovoltaic energy to supplement the batteries.
The soil is on a green sand bed, so is easy to work but needs fertilising. Fortunately, the site combines animal husbandry with fruit and vegetable growing. This is a classic combination which provides environmentally friendly fertiliser in the form of manure rather than expensive oil-derived fertilisers. But having animals on site isnt problem free. David Godden, another volunteer, told me that the sheep grazing under the apple trees had eaten all the labels. Well be relabelling the trees, out of the sheeps reach, so we can see what they are! he laughs. The farm also has pigs and free-range chickens.
Up for future discussion is setting up a local garden share scheme, a bee share and a chicken share. So sharing in the good life for Shaftesburys residents is certainly part of this transition towns dream.
What is the Transition Movement?
The Transition Movement aims to help ordinary people reconnect to their local communities, re-energise their local economies and change their lives for the better. Started in 2006, it has spread to 31 countries and there are now over 352 official Transition Initiatives ranging from streets and villages to cities. In the Westcountry these include Bristol, Exeter and Bath, and theres even a Transition island the Isle of Wight. Transition towns in Dorset include Wimborne, Blandford Forum, Bridport, Sturminster Newton, Sherborne, Weymouth and Portland, Dorchester, Poole, Christchurch and Bournemouth, which is also a hub for transition initiatives in south-east Dorset. At the other end of the scale is Thorncombe, a transition village, though perhaps the most famous transition village of all is Ambridge on BBC Radio 4s The Archers.


text:
#include "QtAV/VideoFrame.h"
#include "QtAV/private/Frame_p.h"
#include "QtAV/SurfaceInterop.h"
#include "ImageConverter.h"
#include <QtCore/QSharedPointer>
#include <QtGui/QImage>
#include "QtAV/private/AVCompat.h"
#include "utils/GPUMemCopy.h"
#include "utils/Logger.h"

// TODO: VideoFrame.copyPropertyies(VideoFrame) to avoid missing property copy
namespace QtAV {
namespace{
static const struct RegisterMetaTypes
{
    inline RegisterMetaTypes()
    {
        qRegisterMetaType<QtAV::VideoFrame>("QtAV::VideoFrame");
    }
} _registerMetaTypes;
}

VideoFrame VideoFrame::fromGPU(const VideoFormat& fmt, int width, int height, int surface_h, quint8 *src[], int pitch[], bool optimized, bool swapUV)
{
    Q_ASSERT(src[0] && pitch[0] > 0 && "VideoFrame::fromGPU: src[0] and pitch[0] must be set");
    const int nb_planes = fmt.planeCount();
    const int chroma_pitch = nb_planes > 1 ? fmt.bytesPerLine(pitch[0], 1) : 0;
    const int chroma_h = fmt.chromaHeight(surface_h);
    int h[] = { surface_h, 0, 0};
    for (int i = 1; i < nb_planes; ++i) {
        h[i] = chroma_h;
        // set chroma address and pitch if not set
        if (pitch[i] <= 0)
            pitch[i] = chroma_pitch;
        if (!src[i])
            src[i] = src[i-1] + pitch[i-1]*h[i-1];
    }
    if (swapUV) {
        std::swap(src[1], src[2]);
        std::swap(pitch[1], pitch[2]);
    }
    VideoFrame frame;
    if (optimized) {
        int yuv_size = 0;
        for (int i = 0; i < nb_planes; ++i) {
            yuv_size += pitch[i]*h[i];
        }
        // additional 15 bytes to ensure 16 bytes aligned
        QByteArray buf(15 + yuv_size, 0);
        const int offset_16 = (16 - ((uintptr_t)buf.constData() & 0x0f)) & 0x0f;
        // plane 1, 2... is aligned?
        uchar* plane_ptr = (uchar*)buf.constData() + offset_16;
        QVector<uchar*> dst(nb_planes, 0);
        for (int i = 0; i < nb_planes; ++i) {
            dst[i] = plane_ptr;
            // TODO: add VideoFormat::planeWidth/Height() ?
            // pitch instead of surface_width
            plane_ptr += pitch[i] * h[i];
            gpu_memcpy(dst[i], src[i], pitch[i]*h[i]);

        }
        frame = VideoFrame(width, height, fmt, buf);
        frame.setBits(dst);
        frame.setBytesPerLine(pitch);
    } else {
        frame = VideoFrame(width, height, fmt);
        frame.setBits(src);
        frame.setBytesPerLine(pitch);
        // TODO: why clone is faster()?
        // TODO: buffer pool and create VideoFrame when needed to avoid copy? also for other va
        frame = frame.clone();
    }
    return frame;
}

void VideoFrame::copyPlane(quint8 *dst, size_t dst_stride, const quint8 *src, size_t src_stride, unsigned byteWidth, unsigned height)
{
    if (!dst || !src)
        return;
    if (dst_stride == src_stride && src_stride == byteWidth && height) {
        memcpy(dst, src, byteWidth*height);
        return;
    }
    for (; height > 0; --height) {
        memcpy(dst, src, byteWidth);
        src += src_stride;
        dst += dst_stride;
    }
}

class VideoFramePrivate : public FramePrivate
{
    Q_DISABLE_COPY(VideoFramePrivate)
public:
    VideoFramePrivate()
        : FramePrivate()
        , width(0)
        , height(0)
        , color_space(ColorSpace_Unknown)
        , color_range(ColorRange_Unknown)
        , displayAspectRatio(0)
        , format(VideoFormat::Format_Invalid)
    {}
    VideoFramePrivate(int w, int h, const VideoFormat& fmt)
        : FramePrivate()
        , width(w)
        , height(h)
        , color_space(ColorSpace_Unknown)
        , color_range(ColorRange_Unknown)
        , displayAspectRatio(0)
        , format(fmt)
    {
        if (!format.isValid())
            return;
        planes.resize(format.planeCount());
        line_sizes.resize(format.planeCount());
        planes.reserve(format.planeCount());
        line_sizes.reserve(format.planeCount());
    }
    ~VideoFramePrivate() {}
    int width, height;
    ColorSpace color_space;
    ColorRange color_range;
    float displayAspectRatio;
    VideoFormat format;
    QScopedPointer<QImage> qt_image;

    VideoSurfaceInteropPtr surface_interop;
};

VideoFrame::VideoFrame()
    : Frame(new VideoFramePrivate())
{
}

VideoFrame::VideoFrame(int width, int height, const VideoFormat &format, const QByteArray& data)
    : Frame(new VideoFramePrivate(width, height, format))
{
    Q_D(VideoFrame);
    d->data = data;
}

VideoFrame::VideoFrame(const QImage& image)
    : Frame(new VideoFramePrivate(image.width(), image.height(), VideoFormat(image.format())))
{
    setBits((uchar*)image.constBits(), 0);
    setBytesPerLine(image.bytesPerLine(), 0);
    d_func()->qt_image.reset(new QImage(image));
}

/*!
    Constructs a shallow copy of \a other.  Since VideoFrame is
    explicitly shared, these two instances will reflect the same frame.

*/
VideoFrame::VideoFrame(const VideoFrame &other)
    : Frame(other)
{
}

/*!
    Assigns the contents of \a other to this video frame.  Since VideoFrame is
    explicitly shared, these two instances will reflect the same frame.

*/
VideoFrame &VideoFrame::operator =(const VideoFrame &other)
{
    d_ptr = other.d_ptr;
    return *this;
}

VideoFrame::~VideoFrame()
{
}

int VideoFrame::channelCount() const
{
    Q_D(const VideoFrame);
    if (!d->format.isValid())
        return 0;
    return d->format.channels();
}

VideoFrame VideoFrame::clone() const
{
    Q_D(const VideoFrame);
    if (!d->format.isValid())
        return VideoFrame();

    // data may be not set (ff decoder)
    if (d->planes.isEmpty() || !d->planes.at(0)) {//d->data.size() < width()*height()) { // at least width*height
        // maybe in gpu memory, then bits() is not set
        qDebug("frame data not valid. size: %d", d->data.size());
        VideoFrame f(width(), height(), d->format);
        f.d_ptr->metadata = d->metadata; // need metadata?
        f.setTimestamp(d->timestamp);
        f.setDisplayAspectRatio(d->displayAspectRatio);
        return f;
    }
    int bytes = 0;
    for (int i = 0; i < d->format.planeCount(); ++i) {
        bytes += bytesPerLine(i)*planeHeight(i);
    }

    QByteArray buf(bytes, 0);
    char *dst = buf.data(); //must before buf is shared, otherwise data will be detached.
    VideoFrame f(width(), height(), d->format, buf);
    const int nb_planes = d->format.planeCount();
    for (int i = 0; i < nb_planes; ++i) {
        f.setBits((quint8*)dst, i);
        f.setBytesPerLine(bytesPerLine(i), i);
        const int plane_size = bytesPerLine(i)*planeHeight(i);
        memcpy(dst, constBits(i), plane_size);
        dst += plane_size;
    }
    f.d_ptr->metadata = d->metadata; // need metadata?
    f.setTimestamp(d->timestamp);
    f.setDisplayAspectRatio(d->displayAspectRatio);
    f.setColorSpace(d->color_space);
    f.setColorRange(d->color_range);
    return f;
}

VideoFormat VideoFrame::format() const
{
    return d_func()->format;
}

VideoFormat::PixelFormat VideoFrame::pixelFormat() const
{
    return d_func()->format.pixelFormat();
}

QImage::Format VideoFrame::imageFormat() const
{
    return d_func()->format.imageFormat();
}

int VideoFrame::pixelFormatFFmpeg() const
{
    return d_func()->format.pixelFormatFFmpeg();
}

bool VideoFrame::isValid() const
{
    Q_D(const VideoFrame);
    return d->width > 0 && d->height > 0 && d->format.isValid(); //data not empty?
}

QSize VideoFrame::size() const
{
    Q_D(const VideoFrame);
    return QSize(d->width, d->height);
}

int VideoFrame::width() const
{
    return d_func()->width;
}

int VideoFrame::height() const
{
    return d_func()->height;
}

int VideoFrame::effectivePlaneWidth(int plane) const
{
    return planeWidth(plane)*effectiveBytesPerLine(plane)/bytesPerLine(plane);
}

int VideoFrame::planeWidth(int plane) const
{
    Q_D(const VideoFrame);
    return d->format.width(width(), plane);
}

int VideoFrame::planeHeight(int plane) const
{
    Q_D(const VideoFrame);
    if (plane == 0)
        return d->height;
    return d->format.chromaHeight(d->height);
}

float VideoFrame::displayAspectRatio() const
{
    Q_D(const VideoFrame);
    if (d->displayAspectRatio > 0)
        return d->displayAspectRatio;

    if (d->width > 0 && d->height > 0)
        return (float)d->width / (float)d->height;

    return 0;
}

void VideoFrame::setDisplayAspectRatio(float displayAspectRatio)
{
    d_func()->displayAspectRatio = displayAspectRatio;
}

ColorSpace VideoFrame::colorSpace() const
{
    return d_func()->color_space;
}

void VideoFrame::setColorSpace(ColorSpace value)
{
    d_func()->color_space = value;
}

ColorRange VideoFrame::colorRange() const
{
    return d_func()->color_range;
}

void VideoFrame::setColorRange(ColorRange value)
{
    d_func()->color_range = value;
}

int VideoFrame::effectiveBytesPerLine(int plane) const
{
    Q_D(const VideoFrame);
    return d->format.bytesPerLine(width(), plane);
}

QImage VideoFrame::toImage(QImage::Format fmt, const QSize& dstSize, const QRectF &roi) const
{
    Q_D(const VideoFrame);
    if (!d->qt_image.isNull()
            && fmt == d->qt_image->format()
            && dstSize == d->qt_image->size()
            && (!roi.isValid() || roi == d->qt_image->rect())) {
        return *d->qt_image.data();
    }
    VideoFrame f(to(VideoFormat(VideoFormat::pixelFormatFromImageFormat(fmt)), dstSize, roi));
    if (!f)
        return QImage();
    QImage image((const uchar*)f.frameData().constData(), f.width(), f.height(), f.bytesPerLine(0), fmt);
    return image.copy();
}

VideoFrame VideoFrame::to(const VideoFormat &fmt, const QSize& dstSize, const QRectF& roi) const
{
    if (!isValid() || !constBits(0)) {// hw surface. map to host. only supports rgb packed formats now
        Q_D(const VideoFrame);
        const QVariant v = d->metadata.value(QStringLiteral("surface_interop"));
        if (!v.isValid())
            return VideoFrame();
        VideoSurfaceInteropPtr si = v.value<VideoSurfaceInteropPtr>();
        if (!si)
            return VideoFrame();
        VideoFrame f;
        f.setDisplayAspectRatio(displayAspectRatio());
        f.setTimestamp(timestamp());
        if (si->map(HostMemorySurface, fmt, &f)) {
            if ((!dstSize.isValid() ||dstSize == QSize(width(), height())) && (!roi.isValid() || roi == QRectF(0, 0, width(), height()))) //roi is not supported now
                return f;
            return f.to(fmt, dstSize, roi);
        }
        return VideoFrame();
    }
    const int w = dstSize.width() > 0 ? dstSize.width() : width();
    const int h = dstSize.height() > 0 ? dstSize.height() : height();
    if (fmt.pixelFormatFFmpeg() == pixelFormatFFmpeg()
            && w == width() && h == height()
            // TODO: roi check.
            )
        return *this;
    Q_D(const VideoFrame);
    ImageConverterSWS conv;
    conv.setInFormat(pixelFormatFFmpeg());
    conv.setOutFormat(fmt.pixelFormatFFmpeg());
    conv.setInSize(width(), height());
    conv.setOutSize(w, h);
    conv.setInRange(colorRange());
    if (!conv.convert(d->planes.constData(), d->line_sizes.constData())) {
        qWarning() << "VideoFrame::to error: " << format() << "=>" << fmt;
        return VideoFrame();
    }
    VideoFrame f(w, h, fmt, conv.outData());
    f.setBits(conv.outPlanes());
    f.setBytesPerLine(conv.outLineSizes());
    if (fmt.isRGB()) {
        f.setColorSpace(fmt.isPlanar() ? ColorSpace_GBR : ColorSpace_RGB);
    } else {
        f.setColorSpace(ColorSpace_Unknown);
    }
    // TODO: color range
    f.setTimestamp(timestamp());
    f.setDisplayAspectRatio(displayAspectRatio());
    f.d_ptr->metadata = d->metadata; // need metadata?
    return f;
}

VideoFrame VideoFrame::to(VideoFormat::PixelFormat pixfmt, const QSize& dstSize, const QRectF &roi) const
{
    return to(VideoFormat(pixfmt), dstSize, roi);
}

void *VideoFrame::map(SurfaceType type, void *handle, int plane)
{
    return map(type, handle, format(), plane);
}

void *VideoFrame::map(SurfaceType type, void *handle, const VideoFormat& fmt, int plane)
{
    Q_D(VideoFrame);
    const QVariant v = d->metadata.value(QStringLiteral("surface_interop"));
    if (!v.isValid())
        return 0;
    d->surface_interop = v.value<VideoSurfaceInteropPtr>();
    if (!d->surface_interop)
        return 0;
    if (plane > planeCount())
        return 0;
    return d->surface_interop->map(type, fmt, handle, plane);
}

void VideoFrame::unmap(void *handle)
{
    Q_D(VideoFrame);
    if (!d->surface_interop)
        return;
    d->surface_interop->unmap(handle);
}

void* VideoFrame::createInteropHandle(void* handle, SurfaceType type, int plane)
{
    Q_D(VideoFrame);
    const QVariant v = d->metadata.value(QStringLiteral("surface_interop"));
    if (!v.isValid())
        return 0;
    d->surface_interop = v.value<VideoSurfaceInteropPtr>();
    if (!d->surface_interop)
        return 0;
    if (plane > planeCount())
        return 0;
    return d->surface_interop->createHandle(handle, type, format(), plane, planeWidth(plane), planeHeight(plane));
}

VideoFrameConverter::VideoFrameConverter()
    : m_cvt(0)
{
    memset(m_eq, 0, sizeof(m_eq));
}

VideoFrameConverter::~VideoFrameConverter()
{
    if (m_cvt) {
        delete m_cvt;
        m_cvt = 0;
    }
}

void VideoFrameConverter::setEq(int brightness, int contrast, int saturation)
{
    if (brightness >= -100 && brightness <= 100)
        m_eq[0] = brightness;
    if (contrast >= -100 && contrast <= 100)
        m_eq[1] = contrast;
    if (saturation >= -100 && saturation <= 100)
        m_eq[2] = saturation;
}

VideoFrame VideoFrameConverter::convert(const VideoFrame& frame, const VideoFormat &fmt) const
{
    return convert(frame, fmt.pixelFormatFFmpeg());
}

VideoFrame VideoFrameConverter::convert(const VideoFrame &frame, VideoFormat::PixelFormat fmt) const
{
    return convert(frame, VideoFormat::pixelFormatToFFmpeg(fmt));
}

VideoFrame VideoFrameConverter::convert(const VideoFrame& frame, QImage::Format fmt) const
{
    return convert(frame, VideoFormat::pixelFormatFromImageFormat(fmt));
}

VideoFrame VideoFrameConverter::convert(const VideoFrame &frame, int fffmt) const
{
    if (!frame.isValid() || fffmt == QTAV_PIX_FMT_C(NONE))
        return VideoFrame();
    if (!frame.constBits(0)) // hw surface
        return frame.to(VideoFormat::pixelFormatFromFFmpeg(fffmt));
    const VideoFormat format(frame.format());
    //if (fffmt == format.pixelFormatFFmpeg())
      //  return *this;
    if (!m_cvt) {
        m_cvt = new ImageConverterSWS();
    }
    m_cvt->setBrightness(m_eq[0]);
    m_cvt->setContrast(m_eq[1]);
    m_cvt->setSaturation(m_eq[2]);
    m_cvt->setInFormat(format.pixelFormatFFmpeg());
    m_cvt->setOutFormat(fffmt);
    m_cvt->setInSize(frame.width(), frame.height());
    m_cvt->setOutSize(frame.width(), frame.height());
    m_cvt->setInRange(frame.colorRange());
    QVector<const uchar*> pitch(format.planeCount());
    QVector<int> stride(format.planeCount());
    for (int i = 0; i < format.planeCount(); ++i) {
        pitch[i] = frame.constBits(i);
        stride[i] = frame.bytesPerLine(i);
    }
    if (!m_cvt->convert(pitch.constData(), stride.constData())) {
        return VideoFrame();
    }
    const VideoFormat fmt(fffmt);
    VideoFrame f(frame.width(), frame.height(), fmt, m_cvt->outData());
    f.setBits(m_cvt->outPlanes());
    f.setBytesPerLine(m_cvt->outLineSizes());
    f.setTimestamp(frame.timestamp());
    f.setDisplayAspectRatio(frame.displayAspectRatio());
    // metadata?
    if (fmt.isRGB()) {
        f.setColorSpace(fmt.isPlanar() ? ColorSpace_GBR : ColorSpace_RGB);
    } else {
        f.setColorSpace(ColorSpace_Unknown);
    }
    // TODO: color range
    return f;
}

} //namespace QtAV

redpajama_set_name: RedPajamaGithub