text:
This Week in Aurebesh
What is Aurebesh?
← This is Not the Aurebesh You're Looking For
Cat's-eye View →
December 10, 2016 · 10:16 am
First Impressions: Knights of the Eternal Throne
With a week or so of the new expansion under my belt, I'd like to share some first impressions of Knights of the Eternal Throne. To folks who haven't finished or started yet, fear not, I promise to avoid spoilers.
Following up on the events of Knights of the Fallen Empire, the nine-chapter conclusion is a terrific ride. Once again, Bioware has crafted a story where you get to be the center of a massive Star Wars adventure. The scope is epic, and the stakes couldn't be higher, but the drama stays focused on the characters. I'm not embarrassed to admit I got choked up a couple times and sat at the edge of my seat during the climax. While not everything is explained and a few plot threads dangle, the major characters and story beats come to an extremely satisfying conclusion. If you enjoyed the previous chapters, it's worth hopping on to see how it all ends.
New Abilities
Most of the classes have received some tweaking and several abilities have been revised or replaced with others. Operatives' new ability to throw ninja throwing stars already feels like something they should've been able to do from day one. However, I already miss some of the other old animations. Flame thrower is such an iconic Bounty Hunter ability that not only was Boba Fett shown shooting fire on both his first action figure card and poster but it is also the icon for SWTOR's Bounty Hunter class. The Jedi Knight's and Sith Warrior signature channeled attacks have also been replaced with instant abilities. Mechanically, the Jedi's Blade Dance and the Sith's Ravage were the same thing, but the animations boldly set the classes apart: the Jedi's attack was acrobatic and precise and the Sith's was an overwhelming display of power. The new animations are nice, but they just don't compare. I understand that these changes were made in the interest of giving melee classes more mobility, but from an aesthetics point of view, I can't help but feel like something has been lost.
And while Mercenary Bounty Hunters can still use Death from Above, my Powertech has had it replaced with a move a friend has dubbed "Backpack of Doom." In this case, the change strikes me as a solution to a problem I'm not really sure exists. I've always described Death from Above as my all time favorite MMORPG button to press, and I'm disappointed that the Bounty Hunter I play can no longer blast into the air and rain down missiles on her foes.
Galactic Command
Upon reaching level 70, characters will unlock the Galactic Command interface, which provides a wide array of activities in which to participate and the framework from which gear upgrades are now earned. The loot boxes with random rewards have been the cause of much uproar, but I can't say it's bothered me too much. After a week and a half, between crafting and drops from the boxes, I feel like my character is appropriately geared considering how early into the expansion it is.
The transition to Galactic Command has been a shock to be sure, but I think it's worth pointing out that the gearing system we had during KotFE was outright terrible. That we could farm content that ran the entire gamut from trivial to easy for 220 gear every week, and best-in-slot gear two out of every eight weeks was horrible design. It had the net result of rending every other bit of content irrelevant. Crafting and flashpoints and storymode ops (some of which are harder than HM Eternity Vault and Karagga's Palace) yielded worse gear, so why bother? As for other Hard Mode Operations, there was no incentive to attempt tougher content. Why spend hours banging your head against Hard Mode bosses for gear you can get for free elsewhere? I'm not blaming the players for taking advantage; heck, I got my 224 mainhand from Soa just like you did, but I won't fault Bioware for wanting to move away from that system.
Is Galactic Command the solution? I don't know, but I'd argue it is a step in the right direction. Players can participate in whatever content they like, and still work towards rewards whether their thing is farming heroics or wiping on HM Revan. Yes, there are flaws in the system. It's not friendly to off-specs and alts; for now crafting is going to have to cover those gaps. And you have to feel bad for folks on cold streaks. A friend has opened twice as many crates as me, but is still waiting on her first set piece. That's just not fun. In addition I truly believe teams running Hard Mode content beyond EV and KP should have more control over how their group gears up since they are actually doing stuff where that loot matters. However, these are not insoluble problems that require scrapping the entire Galactic Command system.
The last thing about Galactic Command upon which I want to comment is in regard to the Galactic Command XP boosts. It's not my place to tell people how to spend their money or cartel coins, but I will not be buying any. Having to pay extra on top of my subscription to maximize GC advancement is something I simply refuse to do. These boosts are something more than cosmetics or conveniences, and I think everyone knows that.
Uprisings and Veteran Chapters
I've only just dipped my toes into SWTOR's latest group content, Uprisings, but so far they are a blast. These are flashpoints without the fluff. They are intense and fun with hilariously over the top power-ups and genuinely neat boss fights. So far the best part for me has been how great it is again to be discovering challenges where I have no idea what the junk is going on. Learning fights, getting lost and screwing up with friends is a great way to pass the time in an MMO.
I've also tried a few story chapters in Veteran mode and was pleasantly surprised how challenging they are. I expected that they'd be nothing more than non-face roll mode but quickly learned that I couldn't spam AOE on every pack and expect to survive. I had to use my cool downs and play smart to finish many fights. I'm truly looking forward to learning these a bit more.
As I write this, it is a weird time for SWTOR. For the first time, I'm not really sure what to expect of the game next year. Beyond more Uprisings, Bioware has been frustratingly coy about their plans. With previous expansions, I felt like I knew what to expect in the months ahead. I don't have the impression that more story is coming anytime soon, and "operations" remains "the word that must not be spoken." Uprisings are great, and I expect I'll get some mileage out of replaying chapters on increased difficulties, but I've got to wonder how long that stuff will hold my interest. It really is long past time that Bioware let the players in on their roadmap for the game in the coming year. The ball is in your court, Bioware. No pressure.
Comments Off on First Impressions: Knights of the Eternal Throne
Filed under KotET
Cherish the Past
Fight the Future: Five Predictions for 2021
Echoes of Vengeance Review
A Day Long Remembered
Eat, Drink and Be Merry
Ancient Jedi Runes
Aurebesh to English
Dumb Top Five
Futhork to English
General Star Wars
General SWTOR
Huttese to English
KotET
KotFE
Mandalorian to English
This Week in Aurebesh · That's no moon, that's a SWTOR blog!
Powered by WordPress · Contact me: twia@generic-hero.com.


text:
Q: Extend a GUI but now events are not working anymore so I'm having a lot of classes that use the UIBinder to make the layout. Each one of those classes has a lot of added features in it though, so it's starting to get a little bit cluttered. My idea was to make a GUI class, where I will initialize the UiFields, and to make a class extend that one, and handle all the events in the subclass.
My problem is, the ClickHandlers are not working anymore. Anyone knows why?
Also is it bad practice to do it this way?

A: You probably have to implement HasHandlers interface and make sure you GUI extends composite

redpajama_set_name: RedPajamaStackExchange


It's no surprise that the big activity over the last week has been watering. Everything. Morning and night. Since we live off-farm, my dad has been Mr. Waterworks for us in the evenings. During the heat wave I did lose over 200 lettuce transplants but another 200 or so survived so I'm calling that a win!
Irrigation lines, providing water from 2 different sources.
I noticed a section of my garlic looked very dry until I remembered that I had planted some new "softneck" varieties, which mature much sooner than the usual "hardneck" varieties that I grow, so we got pulling. Without the chickens around this year, the big, well-ventilated coop is going to be the perfect place for drying the racks of garlic. We have 5,000 in the ground and garlic will be appearing in the CSA around the end of this month. Most of our garlic is marketed at the big Garlic Festival, the 2nd weekend in August at the Carp Farmers' Market. So far it all looks surprisingly good coming out of the ground, so I'm very pleased.
Cucumbers majorly busting out of their protective netting. Lots of blooms and soon loads of cucumbers!
I've also started doing some more seedings of beets and carrots. Both this season are very small and the fear of running out has been seeding any space I can get. It's difficult to get seeds to germinate in such dry conditions but I'm planning to irrigate those areas every day and then cover them with some of our "row cover" to help retain moisture. Hoping that works!
The asparagus experiment is going well. This was all rototilled just a few weeks ago and it has all come back. We are waiting for rain to germinate the oats and pea cover crop beneath.
Often cucumbers you buy in the store have a wax coating on them or plastic to keep them crispy. Obviously this is not the case for our cucumbers so make sure you store them in a sealed bag or container to prevent them from going rubbery. For carrots, remove the tops and store them in a container as well. Greens like kale and chard should also be stored in a sealed bag or container.
We have 3 kinds of hot peppers this year. This is our "Red Ember" starting out. If you want some hot ones, let me know!
Wash the kale and dry thoroughly with a towel or spinner.
Place the dry kale leaves in a large bowl and add the olive oil, nutritional yeast, onion powder, and garlic powder. Use your hands to mix, making sure each leaf gets some of the coating on it.
Spread kale in a single layer on the cookie sheets, making sure that they are spread out without touching.
Bake at 350 degrees for 9-12 minutes. Check on them periodically so they don't burn. When they are crisp, remove from the oven and sprinkle with salt. Let cool for a few minutes before eating.


Jesus calls us to love our neighbour as ourselves, and not just the ones next door or at the end of the street.
Christian Aid Week unites over 20,000 churches to put this love in to action. Together we'll hold church collections, host Big Brekkie fundraising breakfasts, and collect house-to-house..


The goal of the Gender Studies Steering Committee (GSSC) is to promote Gender Studies as an attractive interdisciplinary community of learning for students and faculty at the University. To achieve this goal requires a productive, collaborative working relationship between the Director and the other members of the GSSC with regard to developing the academic curriculum and academic programming of Gender Studies.
recommend a candidate or candidates for Director of Gender Studies to the Dean of the College of Arts and Letters.
The Gender Studies Steering Committee includes as part of its membership one undergraduate and one graduate student representative in a non-voting capacity. Because Steering Committee members work with the Gender Studies administration to develop the Program's academic curriculum and programming, they welcome students' input on their experiences within Gender Studies, as well as discussion of students' academic needs and interests. The student representatives are elected by their peers and serve one-year terms. They attend all Steering Committee meetings and bring student views and concerns to its members. The student representatives are excused from those parts of the meetings involving discussion of individual students and faculty in the Program. Following Steering Committee meetings, the representatives report back to their fellow students, informing them of upcoming events and new initiatives within the Program.


Yes! Registration for summer camp starts on November 13th at noon for returning families and on November 14th at noon for new families. Click here to register online!
Can I fax or mail in my registration form?
Our registration platform is completely online. If this is an issue for you please give us a call and we can assist you further.
When do I pay for summer camp?
A $100 deposit is required to reserve a reservation ($200 for two-week sessions).
Please pay in full by May 1st. You will, have the opportunity to add-on horseback rides, climbing tower, group photo, photo CD's, e-mail service, or the canteen store at camper check-in.
Check in is from 3:00-4:15pm. Please do not arrive before 3pm. Staff will be preparing for your child until 3pm, and only after that time will they be ready to welcome you. Thank you for observing this request. Staff will greet you at the driveway and give you a card that will direct you through the check-in process.
How does closing pick-up work?
The closing parent program begins at 4:30. All parents and family members are invited to attend the program. Camper pick-up is at the conclusion of the program, around 4:50pm. A complementary picnic supper is provided after the program.
For the deposit, we require that payment is made by credit card. The balance, which is due by May 1st, may be paid with credit card or by check.
Yes. Financial Aid is available to those who would otherwise be unable to attend Camp without it. Financial Aid request forms can be found here.
Can I come and do a tour before Camp begins?
We have an Open House on Mothers Day from 11AM – 2PM. Tours are given continuously throughout that time. Also, feel free to call and schedule a tour during a time that might work better for you.
Yes. Camp Gray will honor up to two cabin mate requests. Please indicate requests for cabin mates on the registration form. Please note that cabin mate requests will only be honored if both campers are in the same age group and program. Please communicate with the family of your friend request to ensure that both campers request each other and independently register for the same session before it fills. If you did not request a cabin mate, no problem! Camp is a great place to meet new friends.
There are 8 -10 kids per cabin group with one counselor and 1-2 co-counselors.
Do you have videos showing what your camp is like?
Yes! You can watch videos here.
For a pre-paid fee of $8, you may send up to 5 e-mails to your child, and your child may send 4 e-mails to you. (Please note that your child will not actually sit down at a computer to e-mail you. We will e-mail you a scanned image of a hand-written note that your child writes on special stationary that we provide. Complete instructions for this service, as well as necessary stationary, will be available at Sunday registration.
Yes! Throughout the summer, you may visit a password protected page of our website, at no cost to you, to view photos updated usually twice daily and read the daily newsletter. Complete instructions for this service (including this summer's password) will be available at Sunday registration.
If your camper needs to leave early, please call the office 608-356-8200 and give the office the time and day that you need to pick them up. That way your camper will be ready when you arrive. You can also let us know when you check your campers in. All campers must sign out in the office if leaving at any time other than the scheduled end of session departure.
Yes. We must have written, signed permission in advance if the camper is to be picked up by someone other than the legal guardian.
What type of Health Care is available during my child's stay?
Our Health Center is staffed by a volunteer Health Manager who works within the treatment procedures provided by our consulting physician, Dr. Brian Reeder. The Health Manager is typically a Registered Nurse, Licensed Practical Nurse, Nurse Practitioner, or M.D. Nearly all of our staff are certified in CPR and First Aid.
Why do I have to complete the Health History Form every year?
The State of Wisconsin and the American Camp Association require each camper to submit a Health History Form each year. If you applied online, we thank you for taking the time to fill out the Health History Form (if you are a returning camper you can simply update your Health History Form on-line). If you did not apply online, please complete the health form and return it to us as soon as possible (no later than two weeks before the beginning of your child's session).
Can my child bring medications?
It is not necessary to bring over-the-counter medications to camp, as our Health Center is stocked with common over-the-counter medicines (see list on the last page of the health form). Our health care staff will administer all medications. The State Board of Health and the American Camp Association require that all medication must come to camp in the original container and be clearly labeled with the correct name, drug, and dosage schedule. The camp will not give campers any medication that is improperly labeled or not prescribed for your child. Please send no more than what is needed for the week. We cannot accept day-planners or other containers used at home. All medications are kept in locked storage (typically in the Health Center) and will be checked in with the Health Manager upon your arrival at camp. Please bring all medications to check-in. Medications may not be kept with the camper, including non-prescription drugs (exceptions made for "rescue" inhalers [bronco-dilators such as Albuterol or Ventolin] and epi-pens). Look at the camp schedule and speak with your doctor, if necessary, and think about a medication dosing schedule for your child that fits the camp schedule.
What happens if my child becomes ill or is injured?
Minor medical treatment will be provided by the camp staff. Our consulting physician (Dr. Brian Reeder) is available on call for any emergency or major medical treatment. If your child becomes acutely ill, we will keep him or her in the Health Center no more than 24 hours, and any child with a contagious illness will be sent home. If you suspect that your child has been exposed to a contagious illness (such as chicken pox or head lice) before coming to camp, or has had a fever within the 24 hours before camp arrival, please call camp to discuss rescheduling your child.
What if I am unable to attend the session I registered for?
Cancellation/Refund Policy: The full amount paid will be refunded if a camper cannot be placed in the programs or dates of her/his choice. The deposit is not refundable after registration has been confirmed in a program. The balance of fees paid (not the $100 deposit) will be refunded if the camper does not attend camp due to illness or injury. In all other instances, no refund of camp fees will be given unless notice of cancellation is given to Camp Gray at least two weeks prior to the beginning of the camper's scheduled session. A prorated portion of the fee paid will be refunded if the camper is sent home due to illness or injury. Refund will not be made for a remaining period of two days or less. If a camper leaves camp early due to homesickness, disciplinary reasons, or parent request, no refund will be given.
The decision to dismiss a camper will be made by the Camp Director or his/her designee. Camp Gray reserves the right to dismiss campers for the following reasons: 1) Violation of camp rules, including the use or possession of alcohol or other illegal drugs. 2) If a camper's sickness or injury requires care beyond the scope of the Health Manager's abilities and authority. 3) Violent acts toward other campers, staff, or property, especially if a camper threatens the safety of himself or others.
What is available in the Canteen Store and how much money does my child need?
Campers are able to visit the Canteen Store 2 times a day. Items available for purchase include t-shirts, sweatshirts, bandannas, hats, jewelry, flashlights, stuffed animals, and much more. Ice-cream novelties may be purchased once a day. The average camper brings $20-$30 to camp. Any unspent funds will be returned to you at the end of the week unless you choose to contribute it to the campership fund. The Canteen Store is also open during camper registration and pick-up.
What if I think my child will be homesick?
The Camp Gray staff is well trained to work with a homesick camper. For more information on what you can do as a parent to ease the chances of homesickness click here.
How do I get to Camp Gray?
Yes, we do have a waiting list. If the session you prefer is full, please get on the wait list. Lots of shuffling takes place in the few months leading up to summer, so there's always a chance a spot will open up for wait list campers.


text:
Q: rCharts Sankey Diagram not plotting Using the code from this demo demo2 I am unable to view the plot. I am using rStudio and all I see in the "viewer" window is the url
http://timelyportfoli.github.ip/rCharts_d3_sankey//layouts/chart.html
I must be doing something wrong, but I am not getting any errors or warnings, and cannot find the solution.
require(rCharts)
require(plyr)

gallery <- read.csv(
  "https://docs.google.com/spreadsheet/pub?key=0AovoNzJt5GetdEhQVDgyYXpJMnZ2M2J2YmtvX0I5Snc&output=csv",
  stringsAsFactors = FALSE
)

gallery.use <- gallery[,c("technology","visualizationType","documentType","author")]
colnames(gallery.use) <- rep("column",4)

gallery.edge <- rbind(
  gallery.use[,1:2],
  gallery.use[,2:3],
  gallery.use[,3:4],
  deparse.level=1
)

colnames(gallery.edge) <- c("source","target")

gallery.edge <- ddply(gallery.edge,~source+target,nrow)

colnames(gallery.edge) <- c("source","target","value")

#verify that no source = target
#or will get stuck in infinite loop
gallery.edge[which(gallery.edge[,1]==gallery.edge[,2]),]

gallery.edge$source <- as.character(gallery.edge$source)
gallery.edge$target <- as.character(gallery.edge$target)
sankeyPlot2 <- rCharts$new()
sankeyPlot2$setLib('http://timelyportfolio.github.io/rCharts_d3_sankey/')
sankeyPlot2$set(
  data = gallery.edge,
  nodeWidth = 15,
  nodePadding = 10,
  layout = 32,
  width = 960,
  height = 500
)

sankeyPlot2$setTemplate(
  afterScript = "
  <script>
  // to be specific in case you have more than one chart
  d3.selectAll('#{{ chartId }} svg path.link')
  .style('stroke', function(d){
  //here we will use the source color
  //if you want target then sub target for source
  //or if you want something other than gray
  //supply a constant
  //or use a categorical scale or gradient
  return d.source.color;
  })
  //note no changes were made to opacity
  //to do uncomment below but will affect mouseover
  //so will need to define mouseover and mouseout
  //happy to show how to do this also
  // .style('stroke-opacity', .7)
  </script>
  ")

sankeyPlot2

A: Solved the issue. The package was installed incorrectly.


Parker, Horatio William, 1863–1919, American composer, b. Auburndale, Mass.; pupil of Rheinberger in Munich. He was an organist and choirmaster in Boston and New York City and taught at the National Conservatory, New York. In 1894, Parker became the first chairman of the music department at Yale, a position he held until his death. He composed for the stage, for orchestra, and for organ, but he is remembered as a writer of church music in the style of late German romanticism.
See biography by his daughter, Isabelle Semler (1942, repr. 1973).


When so many web pages, whitepapers, and webinars promise that finance-led data analytics programs will transform an organization, it's easy to buy into the hype. Cooler heads, though, understandably wonder: how effective are data analytics projects, really? Are finance chiefs (and other C-suite leaders) actually improving decision-making and boosting performance through the insights provided by mountains of data? And what kinds of barriers to success are organizations encountering once they embark on a project?
Though these questions remain largely unanswered, U.S. organizations are jumping into the pool — at least half have adopted some kind of analytics software, according to IDC. Similarly, a spring survey by The Hackett Group of global companies with more than $1 billion in revenue found that 40% are using advanced analytics already, and 80% plan to adopt it in two to three years. Forrester estimates the global market for advanced analytics tools will grow from $10.3 billion in 2017 to $18.6 billion by 2021, a nearly 16% compound annual growth rate.
The numbers are no surprise, given that use cases now encompass a wide range of corporate goals, from boosting product quality to deploying workers efficiently to re-engaging customers who appear headed for the arms of a competitor. And the data science tools available are improving. In particular, self-service programs like IBM Watson Analytics, Microsoft Power BI, Salesforce's Einstein, and Tableau Desktop put easy-to-use dashboards in the hands of line-of-business workers and are driving new applications.
But, as CFO found in its 2017 IT survey, data analytics projects are "full of trouble spots, stumbling blocks, and blind alleys." Enterprises can't expect the insights to start rolling in just because a data analytics project has been greenlighted. Success may lie much farther down the path.
Thirty years ago, finance used data analytics in budgeting, planning, and procurement decisions. There were no enterprise resource planning, customer relationship management, or e-commerce systems to draw data from. That's no longer the case, but finance is still in a position to implement analytics programs not just for itself, but across the company.
"Finance is one of the few departments that is required to work cross-departmentally all the time, to provide transparency and help find efficiencies and opportunities," says Matt Hibbard, CFO of cybersecurity firm Distil Networks.
Neetu Shaw, a partner at analytics consulting firm Clarity Insights, says she always recommends that the CFO of a company lead forward-looking data initiatives because of his or her strategic role. Yet, she acknowledges, often the CFO is nowhere to be found.
Other experts agree: many CFOs, especially those who lack foresight, are ceding power to other executives, especially chief marketing officers (CMOs) and sales executives, who need to react quickly to marketplace changes. Some CFOs can take a whole month to close the books, points out Boris Evelson, a principal analyst at Forrester Research, but when a marketing chief sees that a campaign isn't working, they can't wait to react.
That's why some CMOs need their own data and technologies. "[They] have to change that campaign today because tomorrow customers are going to be gone," Evelson says.
But finance still holds the reins at some companies. The finance team at Toyota Financial Services (TFS), for example has been at the forefront of the company's strategic use of data analytics across the organization. In one early win, it identified field offices whose year-over-year performance (measured in market share and profits) differed from peers regionally or nationwide. Management then worked with the underperformers to boost their results. Within one year individual field offices experienced 5% to 15% improvements, for an average 10% lift nationally.
The widespread use of analytics within organizations, by those other than finance, can also present a challenge for CFOs who spearhead adoption projects: they may have to tread more carefully with other functions than perhaps they normally would. Payroll outsourcer Paychex has developed more than 50 analytical models in-house that do everything from evaluate the credit risk of potential customers to improve employee retention. One of the most valuable models anticipates which clients might be thinking of leaving.
The model was so successful early on that the company created a dedicated client retention team to work from the information the model provided. The team reaches out to clients who have been identified as likely to jump ship, and reels them back in by, for instance, answering pricing concerns or fixing previously unknown service issues. In one particular group of customers targeted by the retention specialists, client losses fell by 50%.
But the analytics group at Paychex, which reports to the CFO, initially experienced pushback from business users when its predictive models suggested certain courses of actions with customers.
TFS learned to involve business users from the beginning. Finance or whichever department is leading has to be careful about how it communicates projects; otherwise users will just roll their eyes. "Even if internally you use words like 'finance-led,' a lot of people don't want to be led by other people," says Amit Shroff, vice president of finance and chief competitive officer at TFS. Labeling a program as an enterprise initiative produces a lot more buy-in, energy, and cross-functional acumen, he says.
All that is not to say that data analytics can't be directly aimed at financial initiatives. Applications in finance present some of the strongest use cases.
Consultancy Maine Pointe, for example, was able to free up cash for a large agricultural products distributor that had made 40 acquisitions in five years, according to Nathanael Powrie, vice president of data analytics. Sales were declining and inventory levels ballooning. Within eight weeks, the data analytics team helped release $18 million by identifying ways to reduce inventory, close offices, and shed assets.
Among those assets was a bloated fleet of light vehicles. The team looked at how many trucks the client had at each branch location, how many miles each vehicle was traveling, and how many runs each was completing. From there, the team was able to increase utilization of each truck and eliminate excess capacity.
Maine Pointe also uncovered ways to cut the company's roster of suppliers and the products it carried, leading to an ongoing 15% reduction in inventory. "The data analytics team is still working with the CFO on a strategy to go after another $50 million in inventory reductions" that Maine Pointe has identified, says Powrie.
The company responded nimbly by modifying hiring and investment plans for the rest of the year to dial back costs and meet Wall Street expectations. By year-end, SAP had exceeded the earnings guidance set at the beginning of the year. "Without the analytics tools there's no question in my mind that we probably would not have achieved that same result," says McElhatton.
Analytics projects, unfortunately, aren't plug and play, for finance or any other function. Even self-service analytics programs come with a learning curve. Oracle's Clayton says companies need to upgrade the skills of people throughout the organization, especially the CFO. When Clayton meets a new client, he tells the CFO to take a data science class to better understand the risks of data-driven decision making. And he emphasizes that such learning shouldn't be delegated. "Algorithms are going to be making operational decisions for [the organization] and perhaps there will be unintended consequences," Clayton tells them.
A few years ago, finance leaders at the $16 billion University of Pittsburgh Medical Center recognized that, due to industry-wide trends, they needed to switch their focus to containing costs from maximizing revenues. They looked for a cost activity accounting system but couldn't find a health-care solution that worked for them. They ended up creating a system in-house that identified costs down to the patient and physician levels.
One of the hospital system's biggest successes came from comparing the costs and patient outcomes of three different kinds of hysterectomy surgeries that UPMC doctors perform: traditional, laparoscopic, and robotic. They realized that the minimally invasive laparoscopic surgery, when appropriate, had the best outcomes for patients and was also more cost effective than invasive surgeries. So, when possible, the hospital moved toward having more physicians who could perform laparoscopic surgery. "We were able to optimize the quality outcome and also the cost," says DeMichiei.
Of course, it wasn't as easy as it sounds. DeMichiei says his team worked with a user group during the project's development phase, and that group revealed gaps in the software's performance that the team went back and closed. "You want to make sure that you've actually created what you wanted to create," he says.
Avocat Group, a commercial real estate consultancy, is beta testing a system that automates previously manual tasks. For instance, it combs through clients' current lease information and compares it to market data to find variances. If market rents are significantly lower than what the client is paying, the client might want to renegotiate its lease terms or take additional space at an attractive rate.
The system also sends alerts for upcoming events, such as the date when clients can take additional space or when they have to terminate a lease. It can even calculate real estate costs as a percentage of revenue and then compare real-estate-cost-per-revenue-dollar for each client location.
But he says his team also understands that the data project will require ongoing adjustments.
"I think, like most companies, we're going to need to modify the software, not necessarily daily, but pretty frequently, and we're expecting that it will always be a work in progress for us," Batansky emphasizes.
Yasmin Ghahremani writes about business and technology.
Capital-strapped companies may be willing to pay for the analytics capabilities you build internally.
According to one survey, about 55% of all organizations are outsourcing some or all of their data analytics needs. So, if the projected return on investment for a data analytics project would make it a tough sell internally, it pays to consider whether the resulting tools or insights would be valuable to other businesses. In doing so, some organizations are turning their data and analytical capabilities into revenue-generating products.
A few years after University of Pittsburgh Medical Center launched its homegrown cost-accounting program, an analytics company called Health Catalyst bought the rights to the software and hired the team that had created it. In return, UPMC received a small stake in Health Catalyst and a commercial version of the system, which is much more user-friendly than the old version. The ownership stake means UPMC indirectly benefits from sales of the revamped software.
One financial institution is going a step further and creating a direct source of revenue from a data analytics platform that Clarity Insights is helping it build. The financial institution will sell the platform, slated to be released next year, to credit unions that are its clients. The tool is designed to help credit unions understand how their customers are performing and what the competition is doing.
"Data and analytics should be looked at as assets," Neetu Shaw, a partner at Clarity Insights, says. "Creating a revenue stream is one of the best ways to monetize and get value from your data." | Y.G.


The T20s need teams to play a maximum of 20-overs for each inning. T20 matches are played over the course of around three hours. Cricket is similarly played at bat level below the supports of regional bodies. Cricket panels do not know as formal cricket matches but they are frequently parallels of formal cricket matches. One has to even discover self-determining proceedings of this illegal game. For example, the West Indies has dissimilar self-governing regions. Bat cricket is played in several countries.
The best bat cricketers in Trinidad will contest for selection to the Trinidad also Tobago team. After that, a cricketer can courage to improvement choice to the West Indies to play Tests, one-day internationals, and Twenty20 Internationals. It was first presented also played on 2003 in the UK, though, its status extent to all other cricket-playing countries. For each team requires an allocation of 20 overs also the race whoever finalizes it first. ICC world cup T20 2009 is, however, to start very shortly afterwards great a magnificence of IPL Season 2.
It is a fast stepped essence of the classic game, cricket, which is similarly identified as the game of guys. The typical form of cricket is test cricket by each match over 5 days by 90 overs each day. An additional speedier form of cricket is One Day International, in which together the teams play instead of 50 overs respectively and the perfect match proceeds practically a complete day. The latest form of cricket, Twenty20 Cricket, is a newly planned form of cricket in which together the teams play for 20 overs each bowler requires the extreme bowling boundary of 4 overs Importance is on receiving as several runs as one can, then the number of balls to be played per team is very fewer.
Basically, the perfect match develops a festival of fours and sixes, as team's effort to become runs quickly. You might spectator the committed test cricketers hiking towards long on totally beside their very personal gambling methods. Totally the though after the show goes on, the tussle among bat and bowl endures as bowlers keep trying to success the block hole also bowl Yorkers, fielders have running around pursuing the bowl. As a clear result, gamblers of making faults for each player develop very less. If you fall a hook otherwise let the bowl cross limit, you might just mislay the match since the batsman on slowdown is at all times aiming to success the next ball above your head.
The massive scores, rapid outfields, very good fielding, also, of course, no separate big scores have turned into the identifiers for this form of cricket wherever now attraction has been field an establishment. Cheers to competitions similar to the Indian Premier League also other domestic competitions, wherever supporters keep a lot of money on the prize, just as Twenty20 matches are much more possible to collect huge gatherings.
Twenty20 World Trophy would be the worldwide contestants of Twenty20 cricket. The Event is prepared by sport's leading form, International Cricket Council. The competition contains twelve all-male teams similarly as is tested by each one of the Test-playing countries and the finalists.
The Complete cricket worlds wait to create the T20 World Cup and use a seamless fun watching it with associates then good friends. You can discover a lot of ideal cricket teams energetically playing in the country by their fans allocate all over also since it certainly is tough for your enthusiast outs to preserve a trail of their very greatly valued cricketers. The cricket is played all around the year similarly as Cricket lovers stay for any Twenty20 World Trophy dreadfully.


text:
Want to skip December? There's an app for that
Warwick Ashford
Google Play bug bounty hunts RCE vulnerabilities – SearchSecurity
Will Motorola's Xoom "Android Tablet" work for ... – ComputerWeekly.com
Adobe's new twist on bug bounty programs: No cash for... – SearchSecurity
nyone wanting to skip December – and there are bound to be a fair number who fall into that category – is in luck because there is an app for that.
No, not from Apple, but rival Google.
The ability to skip December, however, is not by design but by omission. Google developers failed to include December in the People app in the latest version of the Android mobile operating system.
Users attempting to add a friend's birthday using the "date picker" feature of the People app in recently-released Android 4.2 are able to do so in any month as long as it is not December.
According to initial reports, the bug appears to be limited to the People app and does not affect Android's Calendar app.
Google has acknowledged the bug, and is working on a fix for the problem, but there's no date for a fix release.
"The cause turns out to be a subtle but common one in the world of programming: an off-by-one mistake, where the array that's used for the month references is zero-indexed, so it goes {0,1,2,3… 11},"The Guardian explains. "But the month numbers go {1,2,3….12}. If you shift the index by 1, but forget to allow the highest value of the array to be 12 rather than 11, you'll kill December."
Presumably Google will eventually restore December, but hopefully they will wait until January, so we can all opt out.

redpajama_set_name: RedPajamaCommonCrawl


This entry was posted on Saturday, June 23rd, 2018 at 7:33 am and is filed under animal crackers.	You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.
Very funny. My cat Kiki has taken to jumping from one adjacent window to the next and although we're only on the second floor, I was forced to place a screen to hinder her playtime once she decided she wanted to jump atop the construction workers below.
I caught her just in time because she was so focused on them that she damned near missed the ledge twice. All I saw was a tail and front paws grabbing for the ledge.
Those construction workers should send you flowers–there's no telling what sort of calamities might have ensued if Kiki had achieved her goal!
Ouch! and triple triple OUCH!
These are so funny, especially the last one.


Website: Visit the Lyddington Bede House website.
Lyddington Bede House is a Grade I listed building that was once the wing of a medieval palace owned by the Bishops of Lincoln. The house was later made into an almshouse (poor house) and it is presented as this now. There is also a small herb garden.
You are welcome use the lawn to have your own picnic.
Gift shop selling souvenirs and cold drinks.
Please check the Lyddington Bede House website for opening hours.
Before you start your journey to Lyddington Bede House for your day out, we recommend that you check their website or contact them to confirm opening times and admission prices.


Sugar has a delicious sweet taste that we often crave, but it may be having a very sour effect upon our health! Learn why in this engaging interview with leading trainer, Richard Scrivener. Richard has worked as a Health, Fitness and Nutrition Lecturer, a Health and Fitness Course Developer, Strength and Conditioning Coach (athlete focused) and Nutritional Therapist. He also works widely with lots of the top fitness publications as an author, fitness model and contributing expert. Richard is also the Animal Flow master instructor for the UK. Today's episode answers a number of important questions and topics, including: - what is the physical structure of white sugar? - does sugar really have a negative impact upon our health? - is fruit sugar (fructose) different and is it harmless to eat? - what impact has sugar had upon the obesity epidemic? is it to blame? If you enjoy this episode, then please rate the show and share it with your friends so they can benefit from this free expert information. Your comments and feedback are always welcome. Please subscribe to the podcast on iTunes or the video series on You Tube so you will receive each update immediately upon release.


text:
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using TeamBins.Common.Infrastructure.Enums.TeamBins.Helpers.Enums;
using TeamBins.Common.ViewModels;
using TeamBins.Services;
using TeamBins.Controllers;
using TeamBins.Infrastrucutre;
using TeamBins.Infrastrucutre.Filters;

namespace TeamBins.Controllers
{
    [LoginCheckFilter]
    public class SettingsController : BaseController
    {
        readonly IUserAccountManager _userAccountManager;
        public SettingsController(IUserAccountManager userAccountManager, IOptions<AppSettings> settings) : base(settings)
        {
            this._userAccountManager = userAccountManager;
        }

        // GET: Settings
        public async Task<IActionResult> Index()
        {
            var vm = new SettingsVm
            {
                Profile = await _userAccountManager.GetUserProfile(),
                NotificationSettings = await _userAccountManager.GetNotificationSettings(),
                IssueSettings = await _userAccountManager.GetIssueSettingsForUser()
            };
            return View(vm);
        }

        [HttpPost]
        public async Task<ActionResult> Notifications(UserEmailNotificationSettingsVM model)
        {
            await _userAccountManager.SaveNotificationSettings(model);
            SetMessage(MessageType.Success, "Settings updated successfully");
            return RedirectToAction("Index", "Settings");
        }
        [HttpPost]
        public async Task<ActionResult> EditProfile(EditProfileVm model)
        {
            if (ModelState.IsValid)
            {
                await _userAccountManager.UpdateProfile(model);
                SetMessage(MessageType.Success, "Profile updated successfully");
                return RedirectToAction("Index", "Settings");

            }
            //TO DO : Redirect to the Tab ?
            return RedirectToAction("Index");
        }

        //[HttpPost]
        //public ActionResult Password(ChangePasswordVM model)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        userAccountManager.UpdatePassword(model);

        //        var msg = new AlertMessageStore();
        //        msg.AddMessage("success", "Password updated successfully");
        //        TempData["AlertMessages"] = msg;
        //    }
        //    //TO DO : Redirect to the Tab ?
        //    return RedirectToAction("Index");
        //}

        [HttpPost]
        public ActionResult Settings(DefaultIssueSettings model)
        {

            _userAccountManager.SaveDefaultProjectForTeam(model);
            SetMessage(MessageType.Success, "Settings updated successfully");
            return RedirectToAction("Index", "Settings");

        }

    }

}

redpajama_set_name: RedPajamaGithub


BookEnds is a Southern California-based nonprofit that, as they say on their website (BookEnds.org) "…recycles quality children's books through student-run book drives and places them in schools and youth organizations." Since 1998, BookEnds has donated more than two million books.
BookEnds not only provides books to schools, but also teaches their student volunteers the value of community service – that's why their catchphrase is "Kids Helping Kids." In fact, BookEnds was created by eight-year-old Brandon Keefe, who organized the first book drive.
The offices of Sobul, Primes & Schenkel went dark on noon, November 22, so that everyone could go to BookEnds and help out. The SPS crew set a record on that Friday afternoon with 5,356 books sorted, counted, and boxed for delivery before the holidays.
Visit BookEnds.org to find out how your company or community service organization can partner with this important cause.


Contact Us to Incorporate Now!
For the complete corporate package, including our current schedule of charges and fees, please complete the following form or call today to speak with a Corporate Staff Specialist, (702) 367-1931.
If you are ready to incorporate now, please download our forms (Adobe Acrobat file) and FAX the appropriate set to us at (702) 871-4086 (for corporation or LLC; if in doubt, use the corporation form). For any questions, please contact us at (702) 367-1931. You can download a free Acrobat reader by clicking here.
If you are planning a trip to Las Vegas and would like to discuss your incorporation needs please call or come by our office located at The Centre at Spanish Trail.
Here's a map to our office.


5 p.m. is just the best, isn't it? Have you ever been so bored at work that you just couldn't wait to get out? Well, Audrey O. is doing just that today!
Hey everyone! Being bored at work is common, especially when there's no work. People even say that sometimes they're so bored at work that they actually start to work!
But does it ever happen with you that you're so bored at work for no particular reason? Maybe the work is particularly boring, or you had to do your boss's work, or maybe he's not there, or it's just because it's Monday and you're still hung up from the weekend, or that it's Friday and you're waiting for the weekend! Well, I don't know what is the reason for Audrey O. to be getting so bored at work today. Maybe it's all of the above! At least it's either Monday or Friday!
Well, trust me this is based on a true story. In fact I'm sure you can relate too! What do you do when you're really bored in office? Do you relate to Audrey and Daisy? Let me know by tweeting @shilpa1ahuja!


text:
Q: Input 20 elements as one I am trying to automate an input by inserting 20 elements at a time. The textarea that I need to use won't let me use ("A2:A21") as a range. I need to  create a variable somehow to stock 20 elements at a time, but I also have a second problem, if I have let's say a total of 65 elements, how can I create the variable so when it finishes all the 20 elem groups to create a 5 group?
    Sub test()
Set thisWbs = ActiveWorkbook.ActiveSheet

Set ie = CreateObject("InternetExplorer.Application")

i = i
x = i + 19
ie.Visible = True

Set Rng = thisWbs.Range("A2:A" & x)

my_url = "index.html"
ie.navigate my_url
While ie.readyState <> 4 Or ie.Busy: DoEvents: Wend
ie.document.getElementsByTagName("input")(2).Focus
ie.document.getElementsByTagName("input")(2).Click

ie.document.getElementsByName("fnsku")(1).Focus
ie.document.getElementsByName("fnsku")(1).Click
ie.document.getElementsByName("fnsku")(1).innerText = Range("A2" & x)
i = i + 1
Next x
End Sub

I will attach here a code that works:
Sub test()
    Set thisWbs = ActiveWorkbook.ActiveSheet

    Set ie = CreateObject("InternetExplorer.Application")

    ie.Visible = True

    my_url = "index.html"
    ie.navigate my_url
    While ie.readyState <> 4 Or ie.Busy: DoEvents: Wend
    ie.document.getElementsByTagName("input")(2).Focus
    ie.document.getElementsByTagName("input")(2).Click

    ie.document.getElementsByName("fnsku")(1).Focus
    ie.document.getElementsByName("fnsku")(1).Click
    ie.document.getElementsByName("fnsku")(1).innerText = Range("A1")
    End Sub

Using the code up-mentioned it populates the textarea with the value from A1, but I want it to populate it with the values from A1 to A19 and then with A20 to A39 and A40 to A45 (so with 20 items when it's possible and when not with the remaining items).

All my data is in column A as it follows: A2=1, A3=2, A4=3...A64=63, A65=64.

A: Do you mean something like that?
Const WINDOW_SIZE As Long = 20

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'your worksheet name

Dim LastRow As Long 'find last data row in column A
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Dim iRow As Long
For iRow = 2 To LastRow Step WINDOW_SIZE 'pick window sizes of 20 rows
    Dim ConcatValues As String
    ConcatValues = vbNullString 'initialize

    'concatenate the 20 values to one
    Dim sRow As Long
    For sRow = iRow To WorksheetFunction.Min(iRow + WINDOW_SIZE - 1, LastRow)
        ConcatValues = ConcatValues & ws.Range("A" & sRow).Value & vbCrLf
    Next sRow

    'put that concatenated value in your element
    ie.document.getElementsByName("fnsku")(1).innerText = ie.document.getElementsByName("fnsku")(1).innerText & ConcatValues & vbCrLf
    Debug.Print ConcatValues & vbCrLf 'this can be removed in productive code later
    'this has to be adjusted by your needs
Next iRow

A: Edit: Same idea like Pᴇʜ
You can do it with a loop
Sub test()

Dim thisWbs As Worksheet
Dim ie As Object
Dim my_url As String
Dim upToTwenty As String
Dim upToTwentyCounter As Long
Dim currentRow As Long

  Set thisWbs = ActiveWorkbook.ActiveSheet
  currentRow = 2
  my_url = "index.html"

  Set ie = CreateObject("InternetExplorer.Application")
  ie.Visible = True
  ie.navigate my_url
  While ie.readyState <> 4 Or ie.Busy: DoEvents: Wend

  'What happens after each click?
  'It is possible that a small pause is necessary to
  'execute the action behind a click before continuing
  ie.document.getElementsByTagName("input")(2).Click
  ie.document.getElementsByName("fnsku")(1).Click

  'Combine up to 20 values from column A
  'If a separator is required, it must be inserted
  Do While thisWbs.Cells(currentRow, 1).Value <> "" Or upToTwentyCounter > 20
    upToTwenty = upToTwenty & thisWbs.Cells(currentRow, 1).Value
    upToTwentyCounter = upToTwentyCounter + 1
    currentRow = currentRow + 1
  Loop

  ie.document.getElementsByName("fnsku")(1).innerText = upToTwenty

  'Reset variables
  upToTwenty = ""
  upToTwentyCounter = 0
End Sub


text:
/* $Id: m68k-execute.c,v 1.24 2009/08/29 19:25:48 fredette Exp $ */

/* ic/m68k/m68k-execute.c - executes Motorola 68k instructions: */

/*
 * Copyright (c) 2002, 2003 Matt Fredette
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by Matt Fredette.
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

_TME_RCSID("$Id: m68k-execute.c,v 1.24 2009/08/29 19:25:48 fredette Exp $");

/* includes: */
#include "m68k-auto.h"

/* the m68k instruction executor: */
static void
_TME_M68K_EXECUTE_NAME(struct tme_m68k *ic)
{
#undef _TME_M68K_SEQUENCE_RESTARTING
#undef _TME_M68K_INSN_FETCH_SAVE
#ifdef _TME_M68K_EXECUTE_FAST
  tme_bus_context_t bus_context;
  struct tme_m68k_tlb *tlb;
  const tme_shared tme_uint8_t *fetch_fast_next;
#define _TME_M68K_INSN_FETCH_SAVE \
do { \
  ic->_tme_m68k_insn_fetch_fast_next = fetch_fast_next; \
} while (/* CONSTCOND */ 0)
#define _TME_M68K_SEQUENCE_RESTARTING	(FALSE)
#else  /* !_TME_M68K_EXECUTE_FAST */
  unsigned int exceptions;
  tme_uint32_t linear_pc;
#define _TME_M68K_INSN_FETCH_SAVE \
do { \
} while (/* CONSTCOND */ 0)
#define _TME_M68K_SEQUENCE_RESTARTING	TME_M68K_SEQUENCE_RESTARTING
#endif /* !_TME_M68K_EXECUTE_FAST */
#if (_TME_M68K_EXECUTE_CPU == TME_M68K_M68020) || (_TME_M68K_EXECUTE_CPU == TME_M68K_M68030)
  unsigned int eai_function_code;
  int ea_post_index;
  unsigned int ea_i_is;
  tme_uint32_t ea_od;
  unsigned int src_specifier;
#else  /* !TME_M68K_M68020 && !TME_M68K_M68030 */
#define eai_function_code ea_function_code
#endif  /* !TME_M68K_M68020 && !TME_M68K_M68030 */
  unsigned int function_code_program;
  unsigned int function_code_data;
  tme_uint16_t opw, extword;
  void (*func) _TME_P((struct tme_m68k *, void *, void *));
  tme_uint32_t params;
  int ea_size;
  int ea_reg, ea_pre_index;
  unsigned int ea_index_long, ea_index_scale;
  tme_uint32_t ea_address;
  unsigned int ea_function_code;
  tme_int32_t ea_bd;
  tme_uint32_t imm32;
  tme_uint16_t transfer_next_before;
  int rc;

  /* silence gcc -Wuninitialized: */
  ea_size = 0;

  /* get the function codes.  if the privilege ever changes as a
     result of any instruction, we must redispatch: */
  if (TME_M68K_PRIV(ic)) {
    function_code_program = TME_M68K_FC_SP;
    function_code_data = TME_M68K_FC_SD;
  }
  else {
    function_code_program = TME_M68K_FC_UP;
    function_code_data = TME_M68K_FC_UD;
  }

  /* if we have used up our burst: */
  if (ic->_tme_m68k_instruction_burst_remaining == 0) {

    /* start a new burst: */
    ic->_tme_m68k_instruction_burst_remaining
      = ic->_tme_m68k_instruction_burst;

    /* if this is a cooperative threading system, yield: */
#if TME_THREADS_COOPERATIVE
    tme_thread_yield();
#endif /* TME_THREADS_COOPERATIVE */
  }

#ifdef _TME_M68K_EXECUTE_FAST

  /* get our instruction TLB entry and reload it: */
  bus_context = ic->_tme_m68k_bus_context;
  tlb = &ic->_tme_m68k_itlb;
  tme_m68k_tlb_busy(tlb);
  if (__tme_predict_false(tme_m68k_tlb_is_invalid(tlb)
			  || tlb->tme_m68k_tlb_bus_context != bus_context
			  || (tlb->tme_m68k_tlb_function_codes_mask
			      & TME_BIT(function_code_program)) == 0
			  || ic->tme_m68k_ireg_pc < (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first
			  || ic->tme_m68k_ireg_pc > (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last
			  || tlb->tme_m68k_tlb_emulator_off_read == TME_EMULATOR_OFF_UNDEF)) {
    tme_m68k_tlb_fill(ic, tlb,
		      function_code_program,
		      ic->tme_m68k_ireg_pc,
		      TME_BUS_CYCLE_READ);
  }

  /* if we have to go slow, run the slow executor: */
  if (TME_M68K_SEQUENCE_RESTARTING
      || tme_m68k_go_slow(ic)) {
    tme_m68k_tlb_unbusy(tlb);
    _TME_M68K_EXECUTE_SLOW(ic);
    return;
  }

  /* set up to do fast reads from the instruction TLB entry: */
  ic->_tme_m68k_insn_fetch_fast_last = tlb->tme_m68k_tlb_emulator_off_read + ((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - (sizeof(tme_uint32_t) - 1);
  ic->_tme_m68k_insn_fetch_fast_itlb = tlb;
  ic->_tme_m68k_group0_hook = tme_m68k_group0_hook_fast;
#else  /* !_TME_M68K_EXECUTE_FAST */

  /* set up to do slow reads from the instruction TLB entry: */
  ic->_tme_m68k_group0_hook = NULL;
#endif /* !_TME_M68K_EXECUTE_FAST */

  /* the execution loop: */
  for (;;) {

    /* reset for this instruction: */
#ifdef _TME_M68K_EXECUTE_FAST
    fetch_fast_next = tlb->tme_m68k_tlb_emulator_off_read + ic->tme_m68k_ireg_pc;
    ic->_tme_m68k_insn_fetch_fast_start = fetch_fast_next;
    assert (ic->_tme_m68k_insn_fetch_fast_itlb == tlb
	    && tlb->tme_m68k_tlb_emulator_off_read != TME_EMULATOR_OFF_UNDEF
	    && (tlb->tme_m68k_tlb_function_codes_mask & TME_BIT(function_code_program)) != 0
	    && (fetch_fast_next > ic->_tme_m68k_insn_fetch_fast_last
		|| ((tme_m68k_tlb_is_valid(tlb)
		     || !TME_THREADS_COOPERATIVE)
		    && tlb->tme_m68k_tlb_bus_context == ic->_tme_m68k_bus_context
		    && ic->tme_m68k_ireg_pc >= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_first
		    && (ic->tme_m68k_ireg_pc + sizeof(tme_uint16_t) - 1) <= (tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last)));
    tme_m68k_verify_begin(ic, fetch_fast_next);
#else  /* !_TME_M68K_EXECUTE_FAST */
    linear_pc = ic->tme_m68k_ireg_pc;
    ic->_tme_m68k_insn_fetch_slow_next = 0;
    if (!_TME_M68K_SEQUENCE_RESTARTING) {
      ic->_tme_m68k_insn_fetch_slow_count_fast = 0;
      ic->_tme_m68k_insn_fetch_slow_count_total = 0;
    }
    exceptions = 0;
    if (__tme_predict_false((ic->tme_m68k_ireg_sr & ic->_tme_m68k_sr_mask_t) == TME_M68K_FLAG_T1)) {
      ic->tme_m68k_ireg_pc_last = ic->tme_m68k_ireg_pc;
      exceptions |= TME_M68K_EXCEPTION_TRACE;
    }
    tme_m68k_verify_begin(ic, NULL);
#endif /* _TME_M68K_EXECUTE_FAST */
#ifdef _TME_M68K_VERIFY
    if (ic->tme_m68k_ireg_pc == 0x6000) {
      tme_m68k_verify_hook();
    }
#endif
#ifdef _TME_M68K_STATS
    ic->tme_m68k_stats.tme_m68k_stats_insns_total++;
#ifndef _TME_M68K_EXECUTE_FAST
    ic->tme_m68k_stats.tme_m68k_stats_insns_slow++;
#endif /* !_TME_M68K_EXECUTE_FAST */
#endif /* _TME_M68K_STATS */
    ic->_tme_m68k_instruction_burst_remaining--;

    /* fetch and decode the first word of this instruction: */
    _TME_M68K_EXECUTE_FETCH_U16_FIXED(opw, _tme_m68k_insn_opcode);
    ic->_tme_m68k_insn_opcode = opw;
    params = _TME_M68K_EXECUTE_OPMAP[opw];
    func = tme_m68k_opcode_insns[TME_M68K_OPCODE_INSN_WHICH(params)];

    /* now that we no longer need the insn index part of the params,
       replace it with the least significant bits of the opcode, which
       contain any EA mode and reg fields: */
    TME_FIELD_MASK_DEPOSITU(params,
			    TME_M68K_OPCODE_INSN_MASK,
			    (opw & (TME_M68K_OPCODE_INSN_MASK / TME_M68K_OPCODE_INSN(1))));

    /* if this is a special opcode: */
    if (__tme_predict_false((params & TME_M68K_OPCODE_SPECOP) != 0)) {

#if (_TME_M68K_EXECUTE_CPU == TME_M68K_M68020) || (_TME_M68K_EXECUTE_CPU == TME_M68K_M68030)

      /* a general floating-point instruction: */
      if (__tme_predict_false((opw & 0xffc0) == 0xf200)) {

	/* if there is no FPU present, or if it isn't enabled: */
	if (__tme_predict_false(!ic->tme_m68k_fpu_enabled)) {

	  /* mark this instruction as illegal and use an FPgen command
	     word of zero: */
	  func = tme_m68k_illegal;
	  extword = 0;
	}

	/* otherwise, there is an FPU present and it is enabled: */
	else {

	  /* fetch the FPgen command word: */
	  _TME_M68K_EXECUTE_FETCH_U16_FIXED(ic->_tme_m68k_insn_specop, _tme_m68k_insn_specop);

	  /* temporarily store the FPgen command word in extword: */
	  extword = ic->_tme_m68k_insn_specop;
	}

	/* the goal here is not to decide whether or not an FPgen
	   instruction is legal, although some illegal instructions
	   are caught.  the goal is to only decide if this FPgen
	   instruction uses the EA field.

	   we need to know this here because only the executer can
	   calculate all memory EAs (i.e., absolute addresses,
	   indirect addresses, PC-relative addresses, etc.) and fetch
	   immediates.

	   in general, all other decisions about whether or not an
	   instruction is legal (including whether or not certain EAs
	   are legal, like data register direct or address register
	   direct) or how to dispatch it is done somewhere else.

	   all legal FPgen instructions that use the EA field are
	   handled by one of the following ifs.  all illegal FPgen
	   instructions, and all FPgen instructions that do not use
	   the EA field are handled by the final unconditional else
	   clause that cancels memory EA calculation and immediate
	   fetching.

	   for those FPgen instructions that do use the EA field, they
	   either leave the EA cycles unchanged, as TME_M68K_OPCODE_EA_READ, to
	   indicate that they read the EA, or they change it to
	   TME_M68K_OPCODE_EA_WRITE to indicate that they write the EA.
	   additionally, they either flag any immediate operand as
	   illegal, fetch it themselves, or specify its size for the
	   normal immediate fetching code to use: */

	/* m68k-iset.txt must assume that any EA is not written: */
	assert (!TME_M68K_OPCODE_HAS_EA(params)
		|| ((params
		     & (TME_M68K_OPCODE_EA_READ
			| TME_M68K_OPCODE_EA_WRITE))
		    == TME_M68K_OPCODE_EA_READ));

	/* m68k-iset.txt must assume that any immediate is 32 bits: */
	assert (!TME_M68K_OPCODE_HAS_IMM(params)
		|| (params & (TME_M68K_OPCODE_IMM_16 | TME_M68K_OPCODE_IMM_32)) == TME_M68K_OPCODE_IMM_32);

	/* if this is an FMOVE or FMOVEM of floating-point control
	   registers (command word pattern 10dr rr00 0000 0000): */
	if ((extword & 0xc3ff) == 0x8000) {

	  /* override the function: */
	  func = tme_m68k_fmovemctl;

	  /* if this is a register-to-memory operation: */
	  if (extword & TME_BIT(13)) {

	    /* any EA must be writable: */
	    params |= TME_M68K_OPCODE_EA_WRITE;
	  }

	  /* otherwise, this is a memory-to-register operation: */
	  else {

	    /* if this instruction has an immediate, and this
	       instruction is moving multiple control registers, this
	       is an illegal instruction: */
	    /* NB the trick we use to see if multiple bits are set in
	       the rrr field - we subtract one from the base of the
	       rrr field (0x0400), binary-AND the result with extword,
	       and mask off all bits except the rrr field.  this
	       result will be nonzero iff the rrr field has multiple
	       bits set: */
	    if (__tme_predict_false(TME_M68K_OPCODE_HAS_IMM(params)
				    && ((extword & (extword - 0x0400)) & 0x1c00))) {
	      func = tme_m68k_illegal;
	    }
	  }
	}

	/* if this is an FMOVEM
	   (command word pattern 11dm m000 rrrr rrrr): */
	else if ((extword & 0xc700) == 0xc000) {

	  /* override the function: */
	  func = tme_m68k_fmovem;

	  /* if this instruction has an immediate, this is an
	     illegal instruction: */
	  if (__tme_predict_false(TME_M68K_OPCODE_HAS_IMM(params))) {
	    func = tme_m68k_illegal;
	  }

	  /* if this is a register-to-memory operation: */
	  if (extword & TME_BIT(13)) {

	    /* any EA must be writable: */
	    params |= TME_M68K_OPCODE_EA_WRITE;
	  }
	}

	/* if this is a register-to-memory FMOVE instruction
	   (command word pattern 011d ddss skkk kkkk): */
	else if ((extword & 0xe000) == 0x6000) {

	  /* override the function: */
	  func = tme_m68k_fmove_rm;

	  /* any EA must be writable: */
	  params |= TME_M68K_OPCODE_EA_WRITE;
	}

	/* if this is a memory-to-register true FPgen instruction
	   (command word pattern 010s ssdd dooo oooo): */
	else if ((extword & 0xe000) == 0x4000
		 && (_tme_m6888x_fpgen_opmode_bitmap[TME_FIELD_EXTRACTU(extword, 0, 7) / 8]
		     & (1 << (TME_FIELD_EXTRACTU(extword, 0, 7) % 8)))
		 && TME_FIELD_EXTRACTU(extword, 10, 3) != TME_M6888X_TYPE_INVALID) {

	  /* if this instruction has an immediate: */
	  if (TME_M68K_OPCODE_HAS_IMM(params)) {

	    /* if the source specifier is for a size that the normal
	       immediate fetching code can handle, let it handle it,
	       otherwise we have to fetch the immediate ourselves: */

	    /* m68k-iset.txt must have specified the EA operand to be
	       operand one: */
	    assert((void *) TME_M68K_OPCODE_OP1_WHICH(ic, params)
		   == (void *) &ic->tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32 + 0));

	    /* dispatch on the source specifier: */
	    src_specifier = TME_FIELD_EXTRACTU(extword, 10, 3);
	    switch (src_specifier) {

	      /* we can let the normal immediate fetching code fetch
		 word integers, long-word integers, and
		 single-precision reals: */
	    default:
	      assert (func == tme_m68k_illegal);
	      /* FALLTHROUGH */
	    case TME_M6888X_TYPE_WORD:
	      /* we can simply flip TME_M68K_OPCODE_IMM_16 and
		 TME_M68K_OPCODE_IMM_32 to select a 16-bit immediate;
		 we know that only TME_M68K_OPCODE_IMM_32 is set,
		 thanks to the assert we did at the beginning of the
		 fpgen specop handling: */
	      params ^= (TME_M68K_OPCODE_IMM_16 | TME_M68K_OPCODE_IMM_32);
	      /* FALLTHROUGH */
	    case TME_M6888X_TYPE_LONG:
	    case TME_M6888X_TYPE_SINGLE:
	      break;
	    case TME_M6888X_TYPE_EXTENDED80:
	    case TME_M6888X_TYPE_PACKEDDEC:
	    case TME_M6888X_TYPE_DOUBLE:
	      _TME_M68K_EXECUTE_FETCH_U32(imm32);
	      ic->tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32 + 0) = imm32;
	      _TME_M68K_EXECUTE_FETCH_U32(imm32);
	      ic->tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32 + 1) = imm32;
	      if (src_specifier != TME_M6888X_TYPE_DOUBLE) {
		_TME_M68K_EXECUTE_FETCH_U32(imm32);
		ic->tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32 + 2) = imm32;
	      }
	      /* we only need to clear TME_M68K_OPCODE_IMM_32 here to
		 cancel the later immediate fetching; we know that
		 only TME_M68K_OPCODE_IMM_32 is set, thanks to the
		 assert we did at the beginning of the fpgen specop
		 handling: */
	      params &= ~TME_M68K_OPCODE_IMM_32;
	      break;
	    case TME_M6888X_TYPE_BYTE:
	      _TME_M68K_EXECUTE_FETCH_U16(imm32);
	      ic->tme_m68k_ireg_uint32(TME_M68K_IREG_IMM32 + 0) = TME_EXT_S8_U32((tme_int8_t) imm32);
	      /* we only need to clear TME_M68K_OPCODE_IMM_32 here to
		 cancel the later immediate fetching; we know that
		 only TME_M68K_OPCODE_IMM_32 is set, thanks to the
		 assert we did at the beginning of the fpgen specop
		 handling: */
	      params &= ~TME_M68K_OPCODE_IMM_32;
	      break;
	    }
	  }
	}

	/* otherwise, this FPgen instruction does not need any memory
	   EA or immediate.  we'll decide later if this instruction is
	   actually legal: */
	else {
	  /* cancel immediate fetching and all EA work: */
	  params &= ~(TME_M68K_OPCODE_IMM_32
		      | TME_M68K_OPCODE_IMM_16
		      | TME_M68K_OPCODE_EA_SIZE_MASK
		      | TME_M68K_OPCODE_EA_READ
		      | TME_M68K_OPCODE_EA_WRITE);
	}

	/* if this instruction has already been marked as illegal, or
	   this EA must be writable, and this is a PC-relative or
	   immediate EA, this instruction is illegal: */
	if (__tme_predict_false(func == tme_m68k_illegal
				|| (params & TME_M68K_OPCODE_EA_WRITE
				    && (TME_M68K_OPCODE_HAS_IMM(params)
					|| (TME_M68K_OPCODE_EA_MODE_WHICH(params) == 7
					    && (TME_M68K_OPCODE_EA_REG_WHICH(params) & 6) == 2))))) {
	  func = tme_m68k_illegal;
	  /* cancel immediate fetching and all EA work: */
	  params &= ~(TME_M68K_OPCODE_IMM_32
		      | TME_M68K_OPCODE_IMM_16
		      | TME_M68K_OPCODE_EA_SIZE_MASK
		      | TME_M68K_OPCODE_EA_READ
		      | TME_M68K_OPCODE_EA_WRITE);
	}

	/* otherwise, if this instruction has a memory EA: */
	else if (params & TME_M68K_OPCODE_EA_READ) {

	  /* override any m68k-iset.txt guess about the operand
	     size, and cancel all memory cycles.  the instruction
	     itself will do the actual operand reading and any address
	     register postincrement or predecrement: */
	  params =
	    ((params
	      & ~(TME_M68K_OPCODE_EA_READ
		  | TME_M68K_OPCODE_EA_WRITE
		  | TME_M68K_OPCODE_EA_SIZE_MASK))
	     | TME_M68K_OPCODE_EA_UNSIZED);
	}

	/* otherwise, this instruction does not have a memory EA: */
	else {

	  /* cancel all EA work: */
	  params &= ~(TME_M68K_OPCODE_EA_SIZE_MASK
		      | TME_M68K_OPCODE_EA_READ
		      | TME_M68K_OPCODE_EA_WRITE);
	}
      }
      else
#endif /* TME_M68K_M68020 || TME_M68K_M68030 */

	/* if this is not a memory-to-memory move instruction: */
	if ((params & TME_M68K_OPCODE_EA_Y) == 0) {

	  /* many instructions have a single special extension word: */
	  _TME_M68K_EXECUTE_FETCH_U16_FIXED(ic->_tme_m68k_insn_specop, _tme_m68k_insn_specop);
	}
    }

    /* get any immediate operand: */
    if (__tme_predict_false(TME_M68K_OPCODE_HAS_IMM(params))) {
      if (params & TME_M68K_OPCODE_IMM_16) {
	_TME_M68K_EXECUTE_FETCH_S16(imm32);
      }
      else {
	_TME_M68K_EXECUTE_FETCH_U32(imm32);
      }
      ic->tme_m68k_ireg_imm32 = imm32;
    }

    /* loop over up to two effective addresses calculations.  this
       initializes for the normal, single effective address: */
    while (TME_M68K_OPCODE_HAS_EA(params)) {

      /* if this EA is described by the alternate EA mode and reg
	 fields, copy them into the EA mode and reg fields in
	 params: */
      if (__tme_predict_false((params
			       & (TME_M68K_OPCODE_EA_Y | TME_M68K_OPCODE_SPECOP))
			      == TME_M68K_OPCODE_EA_Y)) {

	/* reload to write the other memory EA: */
	params
	  = ((params
	      & ~(TME_M68K_OPCODE_EA_MODE_MASK
		  | TME_M68K_OPCODE_EA_REG_MASK
		  | TME_M68K_OPCODE_EA_READ
		  | TME_M68K_OPCODE_EA_Y))
	     | TME_M68K_OPCODE_EA_MODE(TME_FIELD_EXTRACTU(opw, 6, 3))
	     | TME_M68K_OPCODE_EA_REG(TME_FIELD_EXTRACTU(opw, 9, 3))
	     | TME_M68K_OPCODE_EA_WRITE);
      }

      /* get the reg, size, and function code of this EA: */
      ea_reg = TME_M68K_IREG_A0 + TME_M68K_OPCODE_EA_REG_WHICH(params);
      ea_size = TME_M68K_OPCODE_EA_SIZE_WHICH(params);
      ea_function_code = function_code_data;

      /* this EA must have either no size, or be exactly one, two, or
	 four bytes: */
      assert(ea_size == TME_M68K_SIZE_UNSIZED
	     || ea_size == TME_M68K_SIZE_8
	     || ea_size == TME_M68K_SIZE_16
	     || ea_size == TME_M68K_SIZE_32);

      /* for the effective address predecrement and postincrement
	 modes, we require that these size macros correspond exactly
	 to the number of bytes, that the %a7 register number be 15,
	 and that the ea reg not be greater than %a7: */
#if TME_M68K_SIZE_UNSIZED != 0
#error "TME_M68K_SIZE_UNSIZED must be 0"
#endif
#if TME_M68K_SIZE_8 != 1
#error "TME_M68K_SIZE_8 must be 1"
#endif
#if TME_M68K_SIZE_16 != 2
#error "TME_M68K_SIZE_16 must be 2"
#endif
#if TME_M68K_SIZE_32 != 4
#error "TME_M68K_SIZE_32 must be 4"
#endif
#if TME_M68K_IREG_A7 != 15
#error "TME_M68K_IREG_A7 must be 15"
#endif
      assert(ea_reg <= TME_M68K_IREG_A7);
#define TME_M68K_AREG_INCREMENT(areg, size) \
  (((((areg) + 1) / (TME_M68K_IREG_A7 + 1)) & (size)) + (size))

      /* initialize ea_address to silence -Wuninitialized: */
      ea_address = 0;

      /* set the EA inner function code: */
      eai_function_code = ea_function_code;

      /* dispatch on the mode: */
      switch (TME_M68K_OPCODE_EA_MODE_WHICH(params)) {

	/* address register indirect: */
      case 2:
	ea_address = ic->tme_m68k_ireg_uint32(ea_reg);
	break;

	/* address register indirect postincrement: */
      case 3:
	/* if we are not restarting, set the effective address: */
	if (!_TME_M68K_SEQUENCE_RESTARTING) {
	  ea_address = ic->tme_m68k_ireg_uint32(ea_reg);
	  ic->tme_m68k_ireg_uint32(ea_reg) += TME_M68K_AREG_INCREMENT(ea_reg, ea_size);
	}
	break;

	/* address register indirect predecrement: */
      case 4:
	/* if we are not restarting, set the effective address: */
	if (!_TME_M68K_SEQUENCE_RESTARTING) {
	  ic->tme_m68k_ireg_uint32(ea_reg) -= TME_M68K_AREG_INCREMENT(ea_reg, ea_size);
	  ea_address = ic->tme_m68k_ireg_uint32(ea_reg);
	}
	break;

	/* address register indirect with 16-bit displacement: */
      case 5:
	_TME_M68K_EXECUTE_FETCH_S16(ea_bd);
	ea_address = ic->tme_m68k_ireg_uint32(ea_reg) + ea_bd;
	break;

	/* miscellaneous modes: */
      case 7:

	/* absolute short addressing: */
	if (ea_reg == TME_M68K_IREG_A0) {
	  _TME_M68K_EXECUTE_FETCH_S16(ea_address);
	  break;
	}

	/* absolute long addressing: */
	if (ea_reg == TME_M68K_IREG_A1) {
	  _TME_M68K_EXECUTE_FETCH_S32(ea_address);
	  break;
	}

	/* the remaining modes use the PC of the first extension word
	   as a base register: */
#ifdef _TME_M68K_EXECUTE_FAST
	ic->tme_m68k_ireg_pc_next = ic->tme_m68k_ireg_pc + (fetch_fast_next - ic->_tme_m68k_insn_fetch_fast_start);
#else  /* !_TME_M68K_EXECUTE_FAST */
	ic->tme_m68k_ireg_pc_next = linear_pc;
#endif /* !_TME_M68K_EXECUTE_FAST */

	/* program counter indirect with 16-bit displacement: */
	if (ea_reg == TME_M68K_IREG_A2) {
	  _TME_M68K_EXECUTE_FETCH_S16(ea_bd);
	  ea_address = ic->tme_m68k_ireg_pc_next + ea_bd;
	  ea_function_code = function_code_program;
	  break;
	}

	/* everything else is just like mode 6 except with the PC of
	   the first extension word as the base register: */
	assert (ea_reg == TME_M68K_IREG_A3);
	ea_reg = TME_M68K_IREG_PC_NEXT;
	eai_function_code = function_code_program;
	/* FALLTHROUGH */

	/* various indexed modes: */
      case 6:

	/* fetch the extension word and take it apart.  the 68000 and
	   68010 ignore the scale field in the extension word and always
	   behave as if it is zero: */
	_TME_M68K_EXECUTE_FETCH_U16(extword);
	ea_pre_index = TME_M68K_IREG_D0 + TME_FIELD_EXTRACTU(extword, 12, 4);
	ea_index_long = (extword & TME_BIT(11));
#if (_TME_M68K_EXECUTE_CPU == TME_M68K_M68020) || (_TME_M68K_EXECUTE_CPU == TME_M68K_M68030)
	ea_index_scale = TME_FIELD_EXTRACTU(extword, 9, 2);
#else  /* !TME_M68K_M68020 && !TME_M68K_M68030 */
	ea_index_scale = 0;
#endif /* !TME_M68K_M68020 && !TME_M68K_M68030 */

	/* if this is a full extension word: */
	if (__tme_predict_false(extword & TME_BIT(8))) {
#if (_TME_M68K_EXECUTE_CPU == TME_M68K_M68020) || (_TME_M68K_EXECUTE_CPU == TME_M68K_M68030)

	  ea_i_is = TME_FIELD_EXTRACTU(extword, 0, 3);

	  /* optionally suppress the base register: */
	  if (extword & TME_BIT(7)) {
	    ea_reg = TME_M68K_IREG_ZERO;
	  }

	  /* fetch any base displacement: */
	  ea_bd = 0;
	  switch (TME_FIELD_EXTRACTU(extword, 4, 2)) {
	  case 0: abort();
	  case 1: break;
	  case 2: _TME_M68K_EXECUTE_FETCH_S16(ea_bd); break;
	  case 3: _TME_M68K_EXECUTE_FETCH_S32(ea_bd); break;
	  }

	  /* optionally suppress the index register.  this is also
	     where we check for combined IS-I/IS fields greater than
	     or equal to 0xc, which are reserved: */
	  if (extword & TME_BIT(6)) {
	    ea_pre_index = TME_M68K_IREG_ZERO;
	    if (ea_i_is >= 0x4) {
	      abort();
	    }
	  }

	  /* fetch any outer displacement: */
	  ea_od = 0;
	  switch (ea_i_is & 3) {
	  case 0: case 1: break;
	  case 2: _TME_M68K_EXECUTE_FETCH_S16(ea_od); break;
	  case 3: _TME_M68K_EXECUTE_FETCH_S32(ea_od); break;
	  }

	  /* dispatch on the I/IS fields: */
	  ea_post_index = TME_M68K_IREG_ZERO;
	  switch (ea_i_is) {

	    /* no memory indirect action: */
	  case 0x0:
	    ea_post_index = TME_M68K_IREG_UNDEF;
	    break;

	    /* indirect preindexed with null outer displacement: */
	    /* indirect preindexed with word outer displacement: */
	    /* indirect preindexed with long outer displacement: */
	  case 0x1: case 0x2: case 0x3:
	    break;

	    /* reserved: */
	  case 0x4: default: abort();

	    /* indirect postindexed with null outer displacement: */
	    /* indirect postindexed with word outer displacement: */
	    /* indirect postindexed with long outer displacement: */
	  case 0x5: case 0x6: case 0x7:
	    ea_post_index = ea_pre_index;
	    ea_pre_index = TME_M68K_IREG_ZERO;
	    break;
	  }

	  /* preindex and base-displace the original address register
	     to arrive at the indirect EA: */
	  ea_address =
	    (ic->tme_m68k_ireg_uint32(ea_reg)
	     + ((ea_index_long
		 ? ic->tme_m68k_ireg_int32(ea_pre_index)
		 : ((tme_int32_t) ic->tme_m68k_ireg_int16(ea_pre_index << 1)))
		<< ea_index_scale)
	     + ea_bd);

	  /* if this is a memory indirect, read the indirect EA.
	     don't disturb the EA in the IC state if we're restarting,
	     for two reasons:

	     first, the value in the IC state may belong to some later
	     part of the instruction handling, in which case we must
	     (continue to) preserve it, and

	     second, if the EA in the IC state *is* from this part of
	     the instruction handling, it's correct, while our EA may
	     *not* be correct, since it was generated from IC state
	     that may have changed since the instruction originally
	     started (i.e., address register changes by the user or by
	     our own postincrement/predecrement, or function code
	     register changes by the user): */
	  if (ea_post_index != TME_M68K_IREG_UNDEF) {
	    if (!_TME_M68K_SEQUENCE_RESTARTING) {
	      ic->_tme_m68k_ea_address = ea_address;
	      ic->_tme_m68k_ea_function_code = eai_function_code;
	    }
	    _TME_M68K_INSN_FETCH_SAVE;
	    tme_m68k_read_mem32(ic, TME_M68K_IREG_MEMY32);
	    ea_address =
	      (ic->tme_m68k_ireg_memy32
	       + ((ea_index_long
		   ? ic->tme_m68k_ireg_int32(ea_post_index)
		   : ((tme_int32_t) ic->tme_m68k_ireg_int16(ea_post_index << 1)))
		  << ea_index_scale)
	       + ea_od);
	  }
	  else {
	    ea_function_code = eai_function_code;
	  }

#else  /* !TME_M68K_M68020 && !TME_M68K_M68030 */
	  /* XXX - illegal instruction */
	  abort();
#endif /* !TME_M68K_M68020 && !TME_M68K_M68030 */
	}

	/* otherwise, this is a brief extension word: */
	else {
	  ea_address =
	    (ic->tme_m68k_ireg_uint32(ea_reg)
	     + ((tme_int32_t) ((tme_int8_t) (extword & 0xff)))
	     + ((ea_index_long
		 ? ic->tme_m68k_ireg_int32(ea_pre_index)
		 : ((tme_int32_t) ic->tme_m68k_ireg_int16(ea_pre_index << 1)))
		<< ea_index_scale));
	  ea_function_code = eai_function_code;
	}
	break;

      default: assert(FALSE);
      }

      /* we have calculated the effective address.  we don't store it
	 if we're restarting, because it may have been calculated
	 using user-visible registers (address registers and even
	 function code registers!) that the user may have changed (or,
	 in the case of pre/postdecrement EAs, that *we* may have
	 changed) between the bus fault and the instruction restart.
	 when we restart an instruction we *always* want to use the
	 same effective address as before: */
      if (!_TME_M68K_SEQUENCE_RESTARTING) {
	ic->_tme_m68k_ea_address = ea_address;
	ic->_tme_m68k_ea_function_code = eai_function_code;
      }

      /* XXX XXX XXX - if we detect a store to program space, that's an illegal: */
      /* XXX but maybe not for moves? */
      if (__tme_predict_false(ea_function_code == function_code_program
			      && (params & TME_M68K_OPCODE_EA_WRITE) != 0)) {
	abort();
      }

      /* if we're loading this operand: */
      if (params & TME_M68K_OPCODE_EA_READ) {
	_TME_M68K_INSN_FETCH_SAVE;
	(*_tme_m68k_read_memx[ea_size])(ic);
      }

      /* stop unless this is a memory-to-memory move: */
      if (__tme_predict_true(!(params & TME_M68K_OPCODE_EA_Y)))
	break;

      /* loop to reload for the other memory EA at the same size: */
      params &= ~TME_M68K_OPCODE_SPECOP;
    }

    /* we've fetched all of the instruction words: */
    _TME_M68K_INSN_FETCH_SAVE;

    /* set the next PC: */
#ifdef _TME_M68K_EXECUTE_FAST
    ic->tme_m68k_ireg_pc_next = ic->tme_m68k_ireg_pc + (fetch_fast_next - ic->_tme_m68k_insn_fetch_fast_start);
#else  /* !_TME_M68K_EXECUTE_FAST */
    ic->tme_m68k_ireg_pc_next = linear_pc;
#endif /* !_TME_M68K_EXECUTE_FAST */

    /* if we're not restarting, or if this instruction function can
       fault, call the instruction function: */
    if (!_TME_M68K_SEQUENCE_RESTARTING
	|| (ic->_tme_m68k_mode_flags & TME_M68K_EXECUTION_INST_CANFAULT)) {
      transfer_next_before = ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next;
      (*func)(ic, TME_M68K_OPCODE_OP0_WHICH(ic, params), TME_M68K_OPCODE_OP1_WHICH(ic, params));
      assert(!(ic->_tme_m68k_mode_flags & TME_M68K_EXECUTION_INST_CANFAULT)
	     != (ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next
		 != transfer_next_before));
      ic->_tme_m68k_mode_flags &= ~TME_M68K_EXECUTION_INST_CANFAULT;
    }

    /* store up to one EA path: */
    if ((params & TME_M68K_OPCODE_EA_WRITE) != 0) {
      (*_tme_m68k_write_memx[ea_size])(ic);
    }

    /* an instruction has ended: */
    tme_m68k_verify_end(ic, func);

    /* update the PC: */
    ic->tme_m68k_ireg_pc = ic->tme_m68k_ireg_pc_next;
    TME_M68K_SEQUENCE_START;

#ifdef _TME_M68K_EXECUTE_FAST
    /* if we haven't finished the instruction burst yet, continue: */
    if (__tme_predict_true(ic->_tme_m68k_instruction_burst_remaining != 0)) {
      continue;
    }
#endif /* _TME_M68K_EXECUTE_FAST */

    /* try to acquire the external mutex and check for external
       resets, halts, or interrupts, and process them along
       with any internal exceptions: */
    rc = tme_mutex_trylock(&ic->tme_m68k_external_mutex);
    if (TME_THREADS_ERRNO(rc) == TME_OK) {
      tme_m68k_external_check(ic,
#ifdef _TME_M68K_EXECUTE_FAST
			      0
#else  /* !_TME_M68K_EXECUTE_FAST */
			      exceptions
#endif /* !_TME_M68K_EXECUTE_FAST */
			      );

      /* unlock the external mutex: */
      tme_mutex_unlock(&ic->tme_m68k_external_mutex);
    }

#ifndef _TME_M68K_EXECUTE_FAST

    /* otherwise, if we have internal exceptions, process them: */
    else if (exceptions) {
      tme_m68k_exception(ic, exceptions);
    }

    /* if we can go fast now, go fast: */
    if (!tme_m68k_go_slow(ic)) {
      tme_m68k_redispatch(ic);
    }

    /* otherwise, unless we've used up our burst, continue: */
    if (ic->_tme_m68k_instruction_burst_remaining != 0) {
      continue;
    }

#endif /* !_TME_M68K_EXECUTE_FAST */

    /* start a new burst: */
    ic->_tme_m68k_instruction_burst_remaining
      = ic->_tme_m68k_instruction_burst;

    /* if this is a cooperative threading system, yield: */
#if TME_THREADS_COOPERATIVE
#ifdef _TME_M68K_EXECUTE_FAST
    /* unbusy and forget the fast instruction TLB entry: */
    assert (ic->_tme_m68k_insn_fetch_fast_itlb == tlb);
    tme_m68k_tlb_unbusy(tlb);
    ic->_tme_m68k_insn_fetch_fast_itlb = NULL;
#endif /* _TME_M68K_EXECUTE_FAST */
    tme_thread_yield();
#endif /* TME_THREADS_COOPERATIVE */

#ifdef _TME_M68K_EXECUTE_FAST
    /* if this instruction TLB entry has been invalidated, redispatch.
       this can only happen in a multiprocessing (preemptive or true
       multiprocessor) environment, and it means that during the
       previous burst, another thread invalidated this instruction TLB
       entry, but we didn't make any callouts at all (for TLB fills,
       slow bus cycles, etc.) where we would have noticed this
       earlier: */
    if (tme_m68k_tlb_is_invalid(tlb)) {
      tme_m68k_redispatch(ic);
    }
#endif /* _TME_M68K_EXECUTE_FAST */

  }
  /* NOTREACHED */

#ifdef _TME_M68K_EXECUTE_FAST

  /* if we get here, we "faulted" trying to fetch an instruction word
     from host memory.  it's possibly not a "real" fault, since this
     instruction may simply cross a page boundary, but since the fast
     executor can't restart instructions we have to treat this like a
     group 0 fault: */
 _tme_m68k_fast_fetch_failed:

  /* mimic a group 0 exception: */
  _TME_M68K_INSN_FETCH_SAVE;
  ic->_tme_m68k_group0_flags = TME_M68K_BUS_CYCLE_FETCH | TME_M68K_BUS_CYCLE_READ;
  ic->_tme_m68k_group0_function_code = function_code_program;
  ic->_tme_m68k_group0_address = ic->tme_m68k_ireg_pc + (fetch_fast_next - ic->_tme_m68k_insn_fetch_fast_start);
  ic->_tme_m68k_group0_sequence = ic->_tme_m68k_sequence;
  ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted_after = 0;
  ic->_tme_m68k_group0_buffer_read_size = 0;
  ic->_tme_m68k_group0_buffer_read_softrr = 0;
  tme_m68k_group0_hook_fast(ic);
  ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_faulted =
    ic->_tme_m68k_group0_sequence._tme_m68k_sequence_transfer_next;

  /* mimic the rte: */
  ic->_tme_m68k_sequence = ic->_tme_m68k_group0_sequence;
  ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next = 1;
  TME_M68K_SEQUENCE_RESTART;

  tme_m68k_redispatch(ic);
  /* NOTREACHED */
#endif /* _TME_M68K_EXECUTE_FAST */
}


text:
Brawn F1
Tyrrell F1
Amalgam Miniatures
Chevrolet Corvette Sculptures
Ferrari 250 GTO Collection
Ferrari at Le Mans
Ferrari Dream Collection
Ferrari SF90 Collection
Porsche 911 Story
Road & Track Collection
Weathered Models
Road & Track Collection (US website)
Modern GT Road
Modern GT Race
Classic GT Road
Classic GT Race
Modern F1
Historic F1
Replica Steering Wheels
Miniature Steering Wheels
Miniature Nosecones
Model Parts Display
In Build
Bespoke Models
Unique Commissions
Amalgam models can now be purchased using PayPal Credit (UK only) or in four interest-free installments using Splitit - click here to find out more. Flexible payment methods available. You are now able to purchase Amalgam models using PayPal Credit (UK clients only) or in four interest-free installments using Splitit. Click here to find out more about Splitit.
EnglishGermanJapaneseSpanishChinese TraditionalChinese Simplified 0
Home > All Collections > 1950s Models
1950s Models
Amalgam are recognised worldwide as makers of the finest hand-made large scale models. Our work is unique in its attention to detail together with a focus on creating models that truly capture the style and spirit of each car. We have dedicated our energy and passion to achieving a level of accuracy, precision and excellence that raises the finished replica far above anything previously created.
Ferrari 250 TR 1:18 SCALE
The 250 Testa Rossa is now one of the world's most sought after Ferraris. The TR was designed with existing Ferrari customers in mind, many of whom were currently racing with the 500 TRC model....
Ferrari 250 TR - 1958 Le Mans - 'Lucybelle II' 1:8 SCALE
Ferrari 250 TR - 1958 Le Mans - 'Lucybelle II' - Race Weathered 1:8 SCALE
We have available a special edition of three race weathered Ferrari 250TRs, 'Lucybelle II', as raced at the 1958 24 Hours of Le Mans. This unique edition of only three models has been meticulously hand-painted and...
Ferrari 250 TR - 1958 Sebring 12 Hours Winner 1:8 SCALE
This is the car, number 14, which powered Phil Hill and Peter Collins to victory at the 12 Hours of Sebring in 1958. Six of these Testa Rossas competed in the 1958 edition of the...
Ferrari 375 Plus (1954) 1st Carrera Panamericana 1:8 SCALE
This model is a representation of the actual 1954 Carrera Panamericana-winning Ferrari, driven to global acclaim by its pilot Umberto Maglioli. The 1954 edition was the fifth and final running of the legendary Mexican sports...
Ferrari 375 Plus (1954) 1st Le Mans 1:8 SCALE
A fine 1:8 large-scale collector's model of the Ferrari 375 Plus as raced to victory by José Froilán González and Maurice Trintignant at Le Mans in June 1954. This fine 1:8 scale model of the...
Jaguar D-Type Ecurie Ecosse - 1957 Le Mans Winner 1:8 SCALE
Designed specifically to win the 24 Hours of Le Mans, the exemplary Jaguar D-Type was extremely successful in its mission, becoming one of the most dominant Le Mans cars in history. Victorious in three of...
Jaguar E-Type Roadster 1:8 SCALE
Often hailed as the most beautiful production road car of all time, the sublime Jaguar E-type Series 1 stirred passions in automotive aficionados the world over when launched at the Geneva Salon in 1961. Based...
Jaguar XKSS 1:18 SCALE
Often referred to as the world's first supercar, the XKSS was the road-going version of the Le Mans dominating D-Type, which was victorious in 1955, 1956 and 1957. Jaguar withdrew from the competition at the...
Jaguar XKSS 1:8 SCALE
Mercedes-Benz W196 Monoposto (1955) British GP 1:8 SCALE
A full twenty years after Mercedes Formula One Championship-winning year in 1934, the German giant returned to the sport with the W196 in 1954. It was no coincidence that this was the first year of...
Mercedes-Benz W196 Streamliner (1954) French GP 1:8 SCALE
A full twenty years after Mercedes Formula One Championship-winning year in 1934, the German giant returned to the sport with the W196. It was no coincidence that this was the first year of the new...
Model Parts Display - Ferrari 375 Plus 1:8 SCALE
A beautiful display showing the thousands of parts of the Amalgam Ferrari 375 Plus model at 1:8 individually wired to a black Alcantara covered panel. Dimensions: 1360mm x 680mm Please note: We have included an image...
Porsche 550 Spyder - Road & Track 1:18 SCALE
The 550 Spyder was Porsche's first full-scale endeavour into sports car racing, and one of its most successful ever. In an era where nearly every aspect of cars was getting larger, the 550 Spyder, remarkably...
Copyright © 2020 Amalgam Collection.


This roller offers any athlete simple, effective myofascial release, relaxing contracted muscles and improving circulation in sore or stiff muscles. This light and portable tool reliably holds its shape and delivers consistent, deep tissue therapy. Best of all is the compact size, allowing you to take it with you! Fits conveniently in your gym bag!


There is something wonderful about watching both sunrises and sunsets. Nature at its best; beautiful, colourful, unique, peaceful and, above all, phenomena that occur on a daily basis.
It is no surprise to me that websites offering mental wellbeing support and coaching often feature gems of nature, particularly those connecting us to a bigger peaceful world and something beyond ourselves.
As a consequence, my response to the question from the child in the time zone behind me has always been: "Yep, all good – tomorrow is okay." It was years later that I came across further evidence: a permanently fixed notice in a bar I once frequented, proudly proclaiming "Free Beer Tomorrow". Optimism that is recharged daily.
So, whilst I know that there will be challenges and that some days are hard or very hard, the idea of tomorrow being a new day that continually refreshes, that is always new and unique, is one that I carry with me. Enjoy the good days; and for the not so good ones, tomorrow is a new day.
My mother was the eternal optimist and, for all that life threw at her, she lived and died mostly happy. And although she insisted she never led anything – something I might dispute – she had the key attribute of leadership: instilling in others, in this case her kids, that tomorrow could always be better and bigger than today. And that the most important leadership of all was internal – that somewhere deep inside we each have the ability to lead ourselves into tomorrow, with the sun setting on the old and perpetually rising to the new.
These words offer me perspective and thus solace through the hyper-speed schedule of everyday life.
This is a lovely Blog. I echo….. that the natural environment can be both uplifting and create a sense of calm; a unique space to experience the wonder and beauty of the natural world.
Beautiful ! Tomorrow is HOPE.


text:
RB Kenyan Drake transition-tagged by Arizona Cardinals
Mar 16, 2020, 8:32 AM | Updated: 1:32 pm
Running back Kenyan Drake #41 of the Arizona Cardinals celebrates after scoring on a five yard rushing touchdown against the Cleveland Browns during the first half of the NFL game at State Farm Stadium on December 15, 2019 in Glendale, Arizona. (Photo by Christian Petersen/Getty Images)
(Photo by Christian Petersen/Getty Images)
BY ARIZONA SPORTS
The Arizona Cardinals on Monday placed a transition tag on Kenyan Drake, giving them the option to match a contract another team offers the running back who starred for Arizona in the back-half of 2019.
The transition tag is a one-year tender that is set at a fixed amount based on the past market. That amount for a running back is set at $8.5 million after the new CBA was approved on Saturday, and that dips into Arizona's leftover cap space.
The Cardinals will not be awarded compensation if Drake leaves for another team after it chooses not to match an offer. Drake can work out a long-term deal with Arizona or another team and has until July 22 to do so.
Arizona had until 8:59:59 a.m. on Monday to tag Drake and cannot tag another player.
Drake, 25, was acquired the day after a Week 8 loss to the New Orleans Saints in exchange for a conditional fifth- or sixth-round pick in the 2020 NFL Draft. At the time, the Cardinals were desperate for healthy bodies at running back with Chase Edmonds, David Johnson and D.J. Foster injured.
Reports: Cards get DeAndre Hopkins, trade David Johnson to Texans
David Johnson, players, fans react to Cardinals' trade for DeAndre Hopkins
Rapid reaction: Cardinals agree to acquire DeAndre Hopkins
Arizona signed Alfred Morris and Zach Zenner to join Drake in the backfield, but it was all Drake in Week 9 against the San Francisco 49ers, as he rushed 15 times for 110 yards and a touchdown while also catching four balls for 52 yards.
It was Drake's job from there. Even as Edmonds and Johnson returned from injuries, Drake dominated the touches. He had 79 in the last four games, far more than the other two combined.
Drake led the team in rushing with 643 yards on the ground and eight touchdowns, adding 28 catches for 171 yards as a receiver. His 123 carries were the most on the team and he was fifth in receptions.
"I thought he made big steps," head coach Kliff Kingsbury said of Drake a day after the season finale. "I think with an entire offseason in our system, he has a chance to really, really take off."
Drake teased his extension on Feb. 10, when he posted an image of himself wearing a Cardinals jersey and beanie with the comment, "#NewProfilePic" to his Twitter account.
#NewProfilePic pic.twitter.com/l89O20NHav
— Kenyan Drake™ (@KDx32) February 10, 2020
Drake spent his previous three seasons with the Miami Dolphins, who selected him in the third round of the 2016 NFL Draft. Counting the six games he played in 2019, Drake's three-plus years with Miami amounted to 1,532 rushing yards and nine touchdowns.
Cardinals general manager Steve Keim told Doug & Wolf on 98.7 FM Arizona's Sports Station on Nov. 1 that the team had internal discussions about signing Drake next offseason. Those talks were prior to any trade considerations, Keim said.
"We did our homework on him and more than anything, I think organizationally we felt like he was the perfect fit for this scheme, a guy who could get isolated in space, had tremendous footspeed, straight line explosiveness, caught the ball extremely well out of the backfield," Keim said.
On Dec. 20, the general manager said he would "love" to re-sign Drake and insinuated he'd like to get a deal done before free agency begins with the start of the new league year in March.
The return of Drake to Arizona would add even more questions to the future of David Johnson, who quickly faded to the background of the Cardinals' long-term picture after his below average play and the emergence of Drake.
General manager Steve Keim said in February that Johnson would not be cut.
Johnson, a First Team All-Pro in 2016, had 94 carries for 345 yards with two touchdowns last season. He makes a base salary of $10.2 million in 2020, and $2.1 million of his $7.95 million salary for 2021 fully guarantees on March 20, per Spotrac.
If Drake were to be the Cardinals' leading rusher next year for the second straight season, he would be the first Cardinals running back to do so since Edgerrin James topped the team for three seasons in a row from 2006-08.
Follow @AZSports
Arizona Cardinals self-destruct in glaring Wild Card loss to Rams
The Cardinals' return to the postseason was quick and painful in a 34-11 shellacking at the hands of NFC West division winner L.A. Rams.


"She is trust worthy, punctual, spotless clean, and has the added advantage of having a full, clean, driving license. "
Juvy has a sweet and lovely character. She has over 13 years of experience as a Carer and her main duties were to give assistance to the client and make sure that the personal and medical needs are met. Juvy said she feels absolutely confident with all carer and housekeeping duties because of her vast experience in this field of work. Her previous employers described her as a loving, caring and professional Carer.