text:
post-title Fun facts
1. August 4, 1668, the monk Dom Perignon invented a sparkling drink "Champagne". By law, only France has the right to call its sparkling wine "Champagne". Producing sparkling wines in France began relatively recently, from the end of the 17th century, and in the 19th century their production became massive. And only at the beginning of the last century France received an exclusive right to call its sparkling wines "champagne".
2. One Dutch restaurant has introduced a rule according to which the client, having had lunch, pays not on the account, but as much as he deems necessary. Imagine the restaurant is booming, and its owner admitted that on average he gets a one and a half dollar more from the customer than if he showed him an account.
3. In Kuwaiti restaurants, it is forbidden to serve unopened oysters. The Kuwaiti authorities considered this a kind of gambling, since in any of the shells there may be a pearl.
4. It turns out in Brazilian restaurants with visitors taking a fine if they did not finish the ordered! This is a difference with the European-American, and already with our traditions, when visitors take away with them the half-eaten.
5. In New Hampshire in restaurants and cafes it is forbidden to knock with your foot, shake your head and tap your fingers on the table in time with the music.
6. Dr. Alice Chase, who wrote the book Healthy Nutrition and many books on proper nutrition, died of malnutrition.
7. The feeling of hunger disappears in man after 21 minutes after he has eaten a piece of bread.
8. Every year more money is spent on alcohol and cigarettes than on life insurance.
9. On average, a person drinks up to 750 liters. water a year, and for all life eats 35 thousand rolls and 70 thousand cutlets.
10. To commit suicide with coffee, you need to drink 100 cups in a row.
11. 7% of Americans eat daily in McDonald's restaurants.
12. In 1995, for the first time in history, the Japanese ate more meat than rice.
13. English coffee with milk is called "white coffee".
14. Charles de Gaulle once remarked about France: "How can you manage a country in which 246 kinds of cheese?".
15. The Flemish naturalist of the 16th century, Carl Closius, spoke of chocolate as follows: "It is more suitable for feeding pigs than for human food".
16. Fanta is the world's third most popular non-alcoholic beverage after Pepsi and Coca-Cola.
17. The sandwich was invented by John Montague, the fourth Earl of Sandwich.
18. Roquefort cheese is molded with penicillium rocforti.
19. Dry wine is called dry, because it completely ("dry") sugar is fermented.
20. Drinking coffee sex much more often and enjoy more than those who do not drink coffee.
21. After 1680, each frenchtuzu older than 7 years was charged with the obligation to consume annually 7 pounds of salt. For the infringement of this law, the guilty party was lobbied to the price of 300 livres.
22. In the restaurant Bollesje, located in the former prison of the German city of Rüdesheim, the guests in front of the entrance are fingerprints and read the rules of conduct. Then visitors are invited to try the "thieves cocktail" and put on a prison robes, in which they for a while are immersed in the atmosphere of prison life.
23. In the middle of Broadway in New York, you can travel back to the 50s. The interior and menu of the restaurant Ellen's Stardust correspond to the typical "diner" (roadside restaurant) of those times. All the attendants – professional singers, entertaining visitors with variety numbers.
24. In Oslo there is a fish restaurant "Kit", in which if you show documentary evidence that you wear the name of Jonah (in any version) – from Jonas to Yunus, you will get a free roast from the cetacean, and if your name is derived from this name, you Dinner is free. As compensation for the suffering of the biblical Jonah in the womb of the whale.
25. According to a survey conducted by the British restaurant chain Pizza Express, 70% of women reserve the right to choose a restaurant, (69%) choose all meals for both persons, (58%) manage to lay the whole process in 5 minutes and the responsibility for wine tasting is taken for themselves are still the same 70% of the women surveyed.
26. Honey was the best Russian drink until the end of the XVII century. All foreigners living in Muscovy, unanimously praised the dignity of Russian honey. It was drunk by kings, patriarchs and commoners. The absence of the owner of honey was considered a sign of extreme poverty. Prior to the reign of Peter I in Russia did not know such drinks as tea and coffee; vodka has not yet become widespread.
27. Not so long ago in nightclubs in the English city of Brighton, a giant snail 30 cm long and weighing half a kilogram was demonstrated as an attraction. She was famous for drinking beer.
28. The history of human nutrition is amazing. About two hundred years ago the world did not know any food concentrates, nor ways of artificial freezing. Even the most civilized countries often suffered from famine caused by crop failure; the lack of necessary forage crops led to massive fall slaughter of cattle; often people had to eat for months on corned beef and smoked meat. Even earlier, three hundred years before, in the food of Europeans there was no potato, corn, coffee, tea.
29. About 500 years ago, alcoholic beverages were already widely used, as evidenced by the first decisions of local authorities against drunkenness. Several generations later, the sailors of the Dutch fleet nearly raised a riot when the ale in their daily diet was replaced by gin.
30. Fork – the composite part of the cutlery, for the first time a fork in the form of a golden shiltsa on an ivory handle was made in a single copy for the Byzantine princess in the early seventies of the 11th century, almost a thousand years ago. In Italy, in Venice, the fork became known through Byzantium in the 12th century. and was made for the Doges, emperors, popes with two prongs in single copies, rather as a toy, a toy.
31. Chile is called a wine-growing paradise. Wine in Chile began to do since the middle of the XVI century, when Christian missionaries appeared here. True, the drink they produced did not cause true connoisseurs anything but a grin. Here is how the French historian André Julien describes the Chilean wines of that time: "They have the color of rhubarb and senna broth, and the taste is quite close to the taste of tarred goatskins, in which these wines are transported".
32. The ancient Greeks appreciated the figs to the same degree: for his smuggling could be brought to trial for treason.
33. Muslims almost banned coffee because of its exciting action – the mufti equated coffee to forbidden wine.
34. On October 25, 1955, the American company Tappan Company first introduced a microwave oven. The price of new items was 1200 dollars. The American engineer Spencer invented a microwave oven. In 1945, Spencer received a patent for the use of microwaves in cooking, and in 1949, his US patent produced the first microwave ovens to rapidly defrost strategic stocks of products.
35. People who regularly include chili in their diet noticeably improve their sleep quality, reports ABC. These interesting data were obtained by scientists from the University of Tasmania (University of Tasmania), who over the past 18 months have studied the effect of chili on the health and well-being of people.
36. British scientists decided to make life easier for sloths, and also for amateurs to save time. They invented a teapot, which can be turned on by SMS. As Ananova reports, now without getting up from the sofa or on the way from work it is enough to type the word "Turn on" and send a text message to your kettle, and he will start boiling water.
37. German crooks have developed a technology by which a beer mug can inform the bartender of when it is necessary to pour an extra portion of beer to the client. According to experts who developed the novelty, they were forced to "talk" the mug with the help of sensors that are built into a flat stand for a beer glass.
38. Brewing company Asahi Breweries in November-December begins in Japan, the sale of a new drink Asahi Super Yeast Draft – a beer, the taste and flavor of which change over time. If the bottles are stored at room temperature between 10 ° C to 20 ° C, the second phase of fermentation is guaranteed by specially selected yeast. The changes begin in 30 days from the date of manufacture, in another two to three months the beer noticeably changes, while, according to the company, "freshness remains." The drink will be poured into bottles with a volume of 334 milliliters. The retail price is 210-220 yen (approximately $ 2).
39. The opinion that coffee is in fact a useful drink has now received scientific confirmation. It not only refreshes the mind and stimulates the body, coffee provides organs with antioxidants more than any other food product. This is evidenced by a published study of American scientists.
40. 33-year-old American Donald Gorske called the king of the "big poppy". The fact is that during his life he ate twenty and a half thousand of these "high-calorie bombs".
41. The loudest eructation documented on the film was ripped from the throat of British Paul Hannah, 34 years old. The strength of sound was 104.9.
42. The most expensive omelet in the world can be tasted at the New York restaurant Norma? S. It is called the Zillion Dollar Lobster Frittata and costs 770.47 euros.
43. The new chef of the White House for the first time in history was a woman. The search lasted six months, and they were personally led by First Lady Laura Bush. A native of the Philippines, Christopher Comerford was 10 years old as an assistant to Walter Scheib III, who resigned as chef in February. W. Sheib was appointed to this post by Hillary Clinton. He recently signed a contract, according to which he will write a book on how to prepare food in the White House.
44. The British Bureau of Food Standards (FSA) first published the official definition of the multifaceted concept of "junk food". "Junk" (junk) in English means "junk". So far, such popular products as cornflakes, oat bran, sugar oats, hamburgers and roast chicken from fast food restaurants, white chocolate, salted nuts, potato chips, as well as a variety of "colas" and sodas have fallen into the black list.
45. What remains to be done, when the depression is rolling, everything falls from the hands, and love brings only suffering? As the study showed, a third of British boys and girls escape from unhappy love of food. Priory estimates that about 11 million British adults experience nutritional problems. 52% of adult survey participants admitted that they chew chocolate when not in the mood, while the other 25% lean in that case on hamburgers or on french fries.
46. Extravagant but essentially useless gifts, such as expensive lunches and opera tickets, are the most effective way for a man to win the heart of a woman. This is evidenced by a new British study. But when a man pays for entertainment on his first date, he often keeps gifts of long-term value for later.
47. It turns out in Brazilian restaurants with visitors taking a fine if they did not finish the ordered!!!
48. So, according to the ancient recipe, it was necessary to chop the small fish and all its entrails into a giant vat, pouring in layers of salt and leaving this vat in the sun. Within a few days, the contents of the vat should be stirred occasionally. After the mash was at the right time in the sun, the amber liquid is strained from it, which is the sauce, and at the bottom remains a sediment from rotten fish… With a similar sauce, hot dishes are prepared and products are fried…
49. In O'Noir Montreal, everything is done in dark colors. To carry guests to their tables, waiters have to use night vision devices. In Canada, this idea "improved" – in the local dark restaurant only blind waiters work. In black premises it is forbidden to use lighters, mobile phones and other devices with illuminations.
50. How about we dine at Dinner in the Sky? The height of 50 meters above the ground, a table for 22 people, three cooks, a waiter and entertainers – that's what you need for a heavenly dinner or dinner. All this company raises the crane in the sky. By the way, guests have to wear seat belts.
60. In Modern Toilet Taipei in Taiwan, dishes and chairs are made in the form of toilets. In this menu is no different from similar institutions. But, according to restaurant owner Eric Wang, this restaurant is very fun.
61. Gluttons and lovers of meat dishes should visit the restaurant Big Texan Steak Ranch Amarillo in the US. In it you can eat for free a steak, weighing 2 kg. One nuance – you need to cope with the dish strictly in an hour. Otherwise, you have to pay.


"My father is a miner, living at the Woolshed. For some time past he had been, owing to an accident to his arm, unable to work, but is now working in a claim at the Woolshed in which he has a share. The claim, however, has not yet been bottomed. I have six sisters and a brother, and five of the former and the latter are at home, and my father has to provide for them. It will, therefore, be seen that he has quite enough to do without keeping me. Besides, I could, and would, never live at the Woolshed, with which is connected such awfully painful associations since I was deprived of my husband and protector in life. I on one occasion went to live with my mother since my husband's death, but only remained a day, feeling quite ill at the unpleasant memories attached to the place which were recalled to my mind.
Ever since that terrible night when Aaron was slain I have been in ill-health, and at one period had two doctors attending me, owing to serious illness. I do not consider that I could live any way comfortably in Beechworth (where I am compelled from various reasons to reside) under 25s. per week. I have never received a penny from Government up to the present time; and were it not that my father, from time to time, according to his limited means, assisted me in procuring several necessary articles, I should be entirely destitute. I consider 10s. per week totally inadequate for the support of a person in my position—being in a weak state and unable to work, on account of trouble, anxiety, and illness. Moreover, I am obliged to have either my mother or one of my sisters living with me, as I am still anything but well. I was given to understand some time ago that ample provision was to have been made for me, and I now can hardly bring myself to believe that the Government really intend that I shall support myself on 10s. per week, which is just about sufficient to pay for house-rent and firewood; and how I am to obtain necessary food and clothing is a riddle I cannot solve. I had to sell my house at the Woolshed, which has subsequently been dismantled, and only get £1 for it."
When asked for a brief description of the shooting affray at the Woolshed on the night of the 26th June, Mrs Sherritt said:—As you know, my late husband had for some time previous been in the employ of the police in assisting to capture the Kellys, and had four constables in our house during the daytime, and they with Aaron used to go out at night and watch in the vicinity of Mrs Byrne's. On the night of the 26th June my husband, my mother, and myself were having our supper—the police having previously had theirs, and three of them had retired into the bedroom, which was divided from the sitting room with a calico partition, and the fourth, Duross, was sitting by the sitting room fire—when a knock came to the backdoor. I asked, "Who's there?" at the same time beckoning to Constable Duross to retire into the inner room before the door was opened, as such was the order the police had to observe. In reply to my question, a voice called out "Antoine Weeks. Sherritt, come and show me the road, I've lost my way."
It was a very dark night ; but we (my husband, my mother, and myself), laughed at the idea of Weeks losing his way, as his home was about a mile distant from ours, and he was an old resident of the locality. I advised Aaron to go out and put him on the main road in front of our house, which would take him straight to his place. Aaron went to the door laughing, and went a step outside the door. He pointed to a sapling growing a few yards from the house, but almost immediately afterwards made a movement backwards and said, "Who's that?"—having evidently seen a second person. Just as he asked the question a shot was fired into the house, and he walked, or rather staggered, into the middle of the room, where he stood still, without uttering a word. Joe Byrne, who I did not recognise at the time, came into the room, and, lifting a gun which he held in his hand, fired again at Aaron, who fell. When the first shot was fired a second one was fired almost simultaneously at the door, behind which I was standing, and the bullet passed close to my face; it having evidently been thought that someone was standing in ambush behind the door.
My mother stooped down to escape the shots near my husband, who, she said, did not live two minutes after being shot, and never spoke. I and my mother screamed out loudly. Byrne said, "You needn't be afraid, Mrs Barry; I won't shoot you nor your daughter, but I want whoever's in that room (pointing to the bedroom) out." He asked me who was in the room, and I replied a man who had come there that evening looking for work. He asked his name. I said, "Duross," as I had heard Constable Duross, who was not known in the district, and had only recently come from Melbourne , say that he had never met the Kellys, and that they would therefore not know him. Byrne then said, "Well, tell him to come out."My mother here asked Byrne if he would let her go outside, and he told her to open the front door. She did so, and Dan Kelly was standing at the door with a gun presented directly at her. She again asked Byrne if he would let her go out, and he consented to do so. All this time Byrne had a revolver presented close to my face, and threatened me. At this time he was standing just inside the back door, and reloaded his gun, a double-barrelled breechloader.
This page was last modified on 20 November 2015, at 11:05.


text:
EANS-News: AT&S Austria Technologie & Systemtechnik Aktiengesellschaft / AT&S Supervisory Board Approves Southeast Asia Investment Project
June 3, 2021 Abigail Anderson
News of companies transferred via the Euro Custom. The source is responsible for the content.compLeoben - The supervisory board of...
Daniela Katzenberger's new haircut is called "Sche * ß Blond".
June 3, 2021 Harley Allen
Daniela Katzenberger's new haircut is called "Sche * ß Blond". Daniela Katzenberger (34): A cool transformation? Just a few days...
Researchers want to decode the entire human genome for the first time
About 20 years ago, two competing research groups participated in an amazing race 92 percent From the human genome decoded....
Ancelotti wants to see 'fantastic football' from Real Madrid
June 3, 2021 Lillian Shelton
Carlo Ancelotti wants to bring Real Madrid back to the old successes. The 61-year-old Italian, who previously coached the "royal...
End of an era: Lapid's eight-party alliance against Netanyahu stands ضد
June 3, 2021 Sidney Leonard
Former Israeli opposition leader Jair Lapid announced the agreement on an Israeli government without Benjamin Netanyahu. The alliance must reconcile...
The United States has suspended penalties against Austria and other EU countries
June 2, 2021 Herman Webb
In the wake of the digital tax controversy, the US government has suspended fines against India for several European countries,...
JBoss EAP on Microsoft Azure
Red Hat now also offers the JBoss Enterprise Application Platform (JBoss EAP) on Microsoft Azure. This allows businesses to use...
24 million diamonds were removed from her forehead by Lil Uzi Vert
Rapper Lil Uzi Vert had $24 million implanted in his forehead. Now he has removed the piece of jewelry. American...
German astronaut goes to space station in autumn في
Matthias Maurer is scheduled to be the next German to travel to the International Space Station in October. It won't...
Pöstlberger defends Dauphine's lead in time trial
Professional cyclist Lukas Pöstlberger defended the lead shirt on the Tour Dauphine, even in the single time trial. The winner...
Previous 1 … 1,047 1,048 1,049 1,050 1,051 1,052 1,053 … 1,166 Next

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Error in hexadecimal conversion to base58-btc I am using the conversion algorithm of http://lenschulwitz.com/base58 , this perl code.

*

*MANY GOOD CONVERSIONS, AS: 18e559fc6cb0e8de2ce8b50007d474a0d886208e698a07948671e0df520c1525 was converted to 2gBdDRXoLPEhgf9Zd7zw5ujK1qcoPZoendBQJ22VjgqS, all 44 digits.

*BAD CONVERSION: 0ab3de5e16675aeb0c4831f5218901fec56f39cc8ad16e5559be4a0ee211f5d0 was converted to in9v3fi1cntD6ERD6QryMJq4r5BncjYZ32xZA6Uj4ST, 43 digits!

*other BAD: 00000000000000000000000000000000000000000000000000000000000000d0 to 11111111111111111111111111111114b
What is wrong with the Perl code?
I can use some kind of padding in base58-btc?

PS: I can use something as sudo apt-get install libbase58-0  that is reliable at UBUNTU... But need a  Perl interface for it.

A: Rather than debugging that poorly laid-out code, I suggest that you install Encode::Base58
or
Encode::Base58::GMP
Both of those modules have maintainers who will answer questions if you find you are getting incorrect results

A: Tested with other conversors, as bs58 js lib, all producing same and consistent results.
It seems XY problem... perhaps the real question is "base58 bitcoin use fixed size representation?"  Can I use something as pad 1s?
But it is also part of the answer, not edited the question (reverted) and proced an answer.

... It is a conversion between "incompatible" bases (!), so I think is impossible
... 58=2*29 is not a multiple of 16=2^4... only when digits are multiple of 2...  But:

*

*base50("E") = hex("0D"); base58("1E") = hex("000D"); ... the number of padding digits are converted as multiple...

*what the problem of cut/add for padding? base50("E") = hex("D"); base58("1E") = hex("D");  base50("E")=hex("000000D"); base50("1111111111E")=hex("D"); ... Not seems a problem, so padding-algorithm (fill 0s or 1s) can be used.
SOLUTION: ok, lets pad, fill 1s when converted have less than 44 digits.

redpajama_set_name: RedPajamaStackExchange


Lady Gaga performs "Shallow" at the 61st annual Grammy Awards on Sunday, Feb. 10, 2019, in Los Angeles.
Anthony Kiedis, left, of Red Hot Chili Peppers, and Post Malone perform a medley at the 61st annual Grammy Awards on Sunday, Feb. 10, 2019, in Los Angeles.
St. Vincent, left, and Dua Lipa perform a medley at the 61st annual Grammy Awards on Sunday, Feb. 10, 2019, in Los Angeles.
There's one night when everyone in music comes together.
On Sunday night at the Grammy Awards, the biggest names in rap, pop, hip-hop, rock and country gathered to honor each other.
Except, of course, for Childish Gambino, who wasn't there despite tying for most awards of the night. The rapper, real name Donald Glover, took home four awards: record of the year, song of the year, best rap/sung performance and best music video.
Country-pop singer Kacey Musgraves also nabbed four: album of the year, best country album, best country solo performance, best country song.
Though they were the big winners, they were far from the only things happening on the Grammy stage. I tuned in Sunday night, watching every minute of the nearly four-hour show.
Here are the best, the worst, the good and the bad of the 2019 Grammy Awards.
Had you heard of H.E.R.? It's OK if not. Most people hadn't. But the singer took home some gold and turned in an amazing performance where she sang, played guitar and was joined by a huge choir and multitude of musicians. Oh, and did I mention her voice is incredible? Count me as a fan.
I didn't expect this one, but Dua Lipa and St. Vincent combined their songs, "Masseduction" and "One Kiss," into a mash-up showing off each other's skills — St. Vincent the guitar god and Dua Lipa the powerhouse singer.
Alicia Keys was the best host the Grammys has had in years. Please bring her back. Having watched this thing quite a few times, it needs someone like her. She's warm. She's fun. She's has a connection to music. (Obviously.) She's everything a host needs to be.
I got actual chills watching Brandi Carlile sing "The Joke." In the best show of pure talent throughout the entire ceremony, Carlile played her empowering and touching ballad, showing her songwriting, her guitar playing and her vocal power.
The Dolly Parton tribute was good but uneven. It featured a great guest list, but Katy Perry leaned too hard into every vocal run, Miley Cyrus dropped into a southern accent for some reason and what was Little Big Town doing there? But Dolly deserves the honor and the new song she unveiled was worth the wait.
In a cool show of talent, Alicia Keys covered Roberta Flack ("Killing Me Softly"), Kings of Leon ("Use Somebody"), Ella Mai ("Boo'd Up"), Lauryn Hill ("Doo-Wop"), among others, before doing her own song, "Empire State of Mind." It was cool.
Travis Scott's rousing performance was a surprise. It started slow, but then he rapped rapid-fire from a cage before stage-diving into the gathered crowd and stood among them while he spit even more rhymes.
Post Malone and the Red Hot Chili Peppers were simply weak. Post strummed a guitar, then tried to rap a little. Then the Chilis did their best to save the performance with their own song, but it was so uneven. At least the Chili Peppers were the best-dressed people at the Grammys.
The presenters were occasionally interesting choices. There were NFL players and a long line of random CBS stars. I know it's a chance to promote the network where this thing airs, but it seemed they couldn't care less about it being a music event.
Lady Gaga's solo performance of "Shallow," her duet with Bradley Cooper from "A Star Is Born," was not good. There was no Bradley Cooper or, uh, anyone else to be her foil, which is one of the things that grounds that song. Instead, she did both parts, dropping her voice down to do the Cooper parts. It was weird, and not in a good way. Then she went full-Gaga, turning the overrated song into an overwrought performance.
Remember Drake's speech. Yes, it was damning of the Grammys. But it was also about remembering that, awards or not, every artist is a superstar. But that didn't stop CBS from cutting him off. Weak.
The ceremony was entirely overlong. I expected a three-hour show, but it was pushing four hours when it gratefully came to a close. Quite a bit could have been cut, including the multiple tributes to legendary artists. (They were all deserving, but together were a bit much.) Then the unmemorable performances from Camilla Cabello, Shawn Mendes, Dan + Shay, Post Malone/RHCP and Chloe X Halle, among others, could have been cut.
The show's pacing was all over the place. It was plodding at first and rapid-fire at the end. There were quiet numbers drowned out by epic jams. There were no awards for awhile and then a scramble to get the final awards called before the show ended. It took until halfway into the show before it felt like it was hitting its stride, but that meant the performances from the first hour were largely forgettable.


While the bulk of Division I men's soccer players are preparing for the spring season, a lucky handful will spend the upcoming days in sunny Costa Rica.
The CONCACAF Under-20 World Cup qualifying tournament kicks off on Saturday, and a total of 14 players from U.S. based college soccer will be on hand to battle for a spot in the 2017 World Cup.
A variety of programs will be represented, from familiar Division I powers like Maryland, California, Indiana and Georgetown, to smaller schools like Iowa Western Community College and Roberts Wesleyan.
Five of the players from the U.S. Under-20 squad hail from college soccer. Goalkeepers James Marcinkowski (Georgetown), Jonathan Klinsmann (California), Aaron Herrera (New Mexico), Jeremiah Gutjahr (Indiana) and Eryk Williamson (Maryland) are set to help head coach Tab Ramos and the United States in their qualifying efforts.


EASTER is coming soon, so it is time to get organised for the holidays.
If you want to ensure your fridge is fully prepped, it's better to be up to date with your local supermarket's opening times.
Here are the details…How can I find the opening hours for my local Asda store?
Opening and closing times can vary from store to store, so it's always important to check your local branch.
When is Asda open/closed over Easter?
Asda stores will be closed on Easter Sunday, which falls on April 21 this year.
Some supermarkets are also likely to have reduced opening hours on Monday.
Customers are advised to check their local store for exact timings for the rest of the weekend to avoid disappointment.
Easter can take place anytime between March 22 and April 25.
This year, it falls on Sunday, April 21.
For those with kids, the school holidays this year start on Friday, April 5, and end on Easter Tuesday, April 23 – which is also St George's Day in England.
How can I check the term dates for my child's school?
Most schools publish their term dates on their websites.
And councils will usually also provide the details online.
This handy website also lists all bank holidays and the school holidays in every local authority area for the academic years 2018/2019 and 2019/20.


Quarry Stone Crusher in Nigeria,Rock Breaker,Mineral Ore. Quarry is a type of open-pit mine from ... quarry di pulau rimau palembang Next Post: tar sand ratio.
ZENITH Stationary Basalt Crushing Line In Jeddah. ZENITH 300 TPH Stone Production Line in Suhar-Liwa. Know More. quarry malaysia case – Grinding Mill China.
Ballan, Victoria . Save. Ballan  is a small town in the state of Victoria, Australia located on the Werribee River, 78 kilometres (48 mi) northwest of Melbourne.
basalt quarries concrete stone; basalt mining in the ... basalt powder mill for sale; hornfels density of crushed basalt ... Learmonth Quarry & Dunnstown Quarry.
A homogeneous sphere floats with half of its volume immersed in mercury and the other half in oil. What will be the density of the material of the sphere?


text:
Map and Directory
Article Hub
Mims Davies speech: Gambling Commission's new strategy
Mims Davies speech at the launch of the Gambling Commission's new National Strategy to Reduce Gambling Harms
I am delighted to be here today at the launch of the Gambling Commission's new National Strategy to Reduce Gambling Harms.
This event is another milestone in a year of strong policy developments that this Government has led. It provides us with an opportunity to reflect on the progress made to date and to think about our vision for the future.
Protecting people from harm should be at the heart of every gambling business, working with a strong regulator.
It's been three years since the Gambling Commission's advisers published the previous Strategy.
It is right to recognise there have been changes in technology, changes in consumer behaviour and changes in attitudes to gambling.
Some have led to positive developments, such as greater understanding and awareness of gambling-related harm, and innovative new ways to protect people and enforce rules.
However, changes have also increased concern about what the future of the gambling industry may hold - on both sides.
When I took this role, my first words at the GambleAware Conference were that we don't want to stop people having fun, but we need the right balance between freedom and protections.
Government's Gambling Review included strong measures to boost protections across gaming machines, online gambling and gambling advertising. And analysed what support is available for people who experience harm. I'm pleased to see this approach reflected in the new Strategy's two vital pillars of prevention and treatment.
This new Strategy builds on the vision from the last, and this is a good thing. It shows that we are heading in the right direction, and positive progress is being made.
So what has changed? It is our joint ambition about how much can be achieved, and how quickly. Now this overarching strategy is published, we are keen to see swift progress on the implementation plan, to turn words into further action.
I would like to take this opportunity to thank the Gambling Commission for the engagement I have had with them and the excellent work they do day to day, much of which is reflected in this new Strategy.
As the statutory regulator, the Gambling Commission's role is to ensure industry is strongly regulated and accountable - and that people recognise this.
The Commision has the key role in preventing harm, through the extensive powers it has to set and enforce licence conditions, its understanding of the industry and its leadership.
I know that there are concerns about online gambling and my honourable friend Richard Graham raised some of these yesterday in the House. I want to assure him and colleagues across the House that I am listening, the industry is listening, the Commission is watching and we understand those concerns.
The growth of the internet and mobile technology has changed every aspect of our lives. It has made many of our transactions smoother, such as banking and online shopping.
This is also true of gambling - it is now available at any time, anywhere, to those with a smartphone. The market has evolved and we see new types of games and bets.
But online also offers an opportunity for strong protections. There is more data available to understand customers, detect vulnerabilities and intervene. People can be reached directly through their devices.
It is important the Gambling Commission ensures its regulation keeps pace with technological change. It has the power to respond to changes in the market. It has taken strong action to tighten rules around identity and age verification - these come into force next month.
For people in need of support, there are also digital tools that make it easier to take control, seek help or stop gambling. Vitally, GAMSTOP helps people self-exclude from all operators. The new identity requirements will make the system much more robust.
I was delighted to meet the innovators, Gamban, whose software has led to a further step change in protections with the ability to block gambling sites and apps. It is available free to all users of GambleAware services. Netline, the webchat service run by GamCare, is easily accessible too.
This is not to diminish the importance of human interaction. Sometimes we all need to talk to somebody about what is going on in our lives.
GamCare's National Gambling Helpline has teams working 8am to midnight - I always like to give the phone number, which is 0808 8020 133. GamCare is working with operators to better link up their customer services teams with advisers at the Helpline, and I welcome this.
Now to focus on the Gambling Act. It gave the Gambling Commission strong powers to change requirements as needed, as gambling evolves. And the pillars of the Act - to keep gambling fair, free from crime, and to protect people from harm - are the key tenements today, as they rightly were when it was written.
So let's turn to now. I am very clear - protecting vulnerable people is a priority.
Government will intervene and act where there are dangerous products and evidence of harm - as we did on B2 machine stakes in betting shops.
The Commission will support this, as it did recently in ensuring the spirit of the new regulations was adhered to. The only industry I want to see is a responsible industry.
To achieve this, collaboration with industry is essential. I am pleased this new strategy identifies collaboration as key to achieving our goals.
Operators are in a unique position to deliver early interventions, before harm occurs, and preventative work will benefit greatly from industry expertise.
I understand that excellent progress has already been made through the Remote Gambling Association on operator-led projects. And I'll say more about our own positive engagement with operators later.
Meanwhile industry must recognise why the debate on gambling has become so divided. Of course we want to see a responsible industry that generates enjoyment, employment and investment.
But problem gambling can destroy the lives of people, their families and even their communities. Industry must mitigate those risks with appropriate protections.
Other businesses engaging has great power to prevent harm, beyond just the gambling industry. The Secretary of State and I met major and challenger banks recently. We recognise the excellent work taking place to develop tools customers can use to block spending on gambling.
The stigma of talking about gambling problems must be removed. We need to explain the potential risks. I want better awareness of where to find help if it is needed. And I want us to talk about what healthy gambling looks like.
I'm pleased to see the Strategy acknowledge the important role for those with lived experience to contribute.
Key partners such as GamCare and GambleAware have also initiated projects to reach out to young people, including programmes for schools. We are working with Ministerial colleagues to see what advice we can give to parents.
I'm pleased GambleAware has launched the 'Bet Regret' advertising campaign, as set out in the Gambling Review. This is a fantastic initiative that resonates with the target audience.
GambleAware has also established partnerships with organisations such as Citizens Advice to try to reach people earlier and intervene before serious harm occurs.
Prevention is crucial, but we must also make sure those with gambling problems can get the right help.
The whole of government is committed to this and I want to use our departmental relationships for good, bringing all our interests together.
In particular, we committed in the Review to working closely with the Department for Health and Social Care, and I will continue to work with the Minister for Suicide Prevention in particular. This is one of her key priorities as well.
I've spoken about stigma. A gambling addiction or compulsion is an addiction like any other. So I am very pleased we are expanding specialist support in the NHS Long Term plan.
Supporting action on gambling-related harm is now a priority for Public Health England. This a really important step. And their evidence review will help to inform action on prevention and treatment.
I'm keen that future work builds on the strong arrangements already in place for coordinating and commissioning treatment.
We have a national network of counselling services. And GambleAware funds existing NHS gambling services - such as the National Problem Gambling Clinic in London - as well as the GamCare helpline.
I saw first-hand the vital frontline work both carry out, providing support to those who need it.
GambleAware has long held an ambition to expand its treatment services, and I look forward to the formal opening of the new NHS Leeds clinic later this year.
70% of GamCare clients complete their treatment plans successfully, showing significant reduction in harms and improved quality of life.
I've been listening to concerns around funding, and taking action. Just yesterday, Secretary of State and I had a constructive meeting with chief executives of a number of gambling companies yesterday. We set out very clear expectations from Government and consumers. We will meet again very shortly.
As the minister, I want to see further and faster progress on protecting those vulnerable to harm, including by increasing funding for research, education and treatment.
The voluntary system does work and continues to have support from government and industry. GVC has already announced today that it will donate 1% of its gross gambling yield.
We believe the voluntary system is capable of delivering sustainable funding to meet the increased targets that will be set as evidence of needs emerges. I encourage the Gambling Commission to support this and will look forward to the detailed Implementation Plan.
Let me be clear, if it turns out that the voluntary system is not capable of meeting current and future needs, we will look at alternatives. Everything is on the table.
Strong evidence must underpin all action and debate. The Strategy sets out innovative new ways to collect this, some of which are already in progress, such as a data hub and new research partnerships.
I look forward to seeing progress and working with my colleagues, business and others to make sure the good work taking place continues under Gambling Commission's new Strategy.
It is absolutely right that gambling-related harm is recognised as a serious issue and that it is given the same attention as other addictions.
There is a lot of work being done by a range of bodies and it is important that we acknowledge their good will and commitment as well as recognising that more must be done.
Mims Davies MP
Supplier Subscription
Tweets by PSN
Data Transparency
Website User Privacy Policy
Local Authority Political Analysis
Local Authority Report
Care Homes Report
Housing Associations Report
December 2020 PSN Newsletter
November 2020 PSN Newsletter
October 2020 PSN Newsletter
September 2020 PSN Newsletter
All content Copyright ©


We have all been shocked by Typhoon Haiyan. Here, Mark Goldring, Oxfam's Chief Executive, reflects on the challenge of responding effectively and preparing for the future, in the Philippines and beyond.
It is only three years since the world was shocked by Haiti's earthquake and Pakistan's terrible floods. In 2010 both governments and private donors responded with massive generosity. In the UK, the Disasters and Emergency Committee was inundated with donations worth more than £170million. International humanitarian aid shot up to US$20.2billion (£12billion) as the world attempted to cope with the year of two mega disasters.
By 2012, however, international humanitarian aid was down by more than 10%. UN appeals, were underfunded by almost 40 per cent – the highest figure for a decade.
while governments and international donors have been swift to respond to the Philippines disaster, that and sufficient humanitarian aid elsewhere is the real test of global decency as 2013 draws to an end.
while much of the aid was good, 'there is a tremendous need to do better and support communities' own relief and recovery efforts, and… to invest much more in disaster risk reduction and preparedness' in the future.
people's resilience to future disasters as well. 'The real test for international action is whether it can support the local, and remember the long-term'The overwhelming scale of Haiyan certainly does not mean that the Philippines government's work to improve its ability to prepare and respond has not been vital. It has.
Getting that right in the Philippines will be crucial. Few would dispute that the USS George Washington and such visible signs of international support are vital. But the real test for international action is whether it can support the local, and remember the long-term. Because, tragically, Haiyan is not going to be the last terrible disaster that the Philippines and an increasing number of countries are likely to face.
Donate to Oxfam's Philippines Typhoon Appeal here.


text:
Meet the volunteers who make The CARE Clinic possible
Written by CYNTHIA SPEARS
The CARE Clinic, established in 1993, provides free basic medical care, dental extractions, chiropractic care, lab testing, diagnostic testing, pharmacy service, health education, community resource information, social services and referrals to specialists to uninsured, low-income residents of Cumberland County. The clinic would not be able to provide any of these services without its volunteers. All of The CARE Clinic's physicians, nurses, dentists, dental assistants, phlebotomists, pharmacists, pharmacy technicians and receptionists are volunteers. Volunteers also serve on numerous committees, prepare dinner for their fellow volunteers on clinic evenings, assist with fundraising events and much more. Without volunteers, The CARE Clinic could not function. Here are just a few of those volunteers.
Glenn Thorp is a pharmacist with Cape Fear Valley Health System. He has been volunteering for six months.
"I wanted to give back to the community that I live in," he said. "The pharmacy residency introduced me to this opportunity. A woman recently lost her job and prescription insurance/medical insurance. She came to The CARE Clinic and was extremely grateful for the services we were able to provide. We were able to prevent her from missing refills with her blood pressure, thyroid and asthma medications.
Sgt. Arjay Mendoza is a pharmacy technician in the U.S. Army. He has been volunteering for almost a year. "I choose to volunteer at The CARE Clinic because I want to give back to the community by helping the underserved population," he said. "Since I'm (in the) military, one patient thanked me for my service. I replied, 'Thank you. I am grateful that I have the opportunity to help those people in need.'"
Yung Lee is a student at University of North Carolina at Chapel Hill School of Dentistry. He has been volunteering since January 2017. "I chose to volunteer at The CARE Clinic to give back to my community and to gain experience in the field of dentistry," he said. "It is rewarding to be able to help others while at the same time working alongside compassionate dentists. The people at the clinic truly care about the patients and their wellbeing. Being in such a positive environment makes volunteering that much more fun and exciting.
"One of the patients was terrified of needles and anesthetics. The patient asked me to hold their hand during the anesthesia and throughout the treatment. The patient was very thankful (to me for) comforting them throughout the procedure. Moments like these remind me why I want to pursue this profession. It further solidified my commitment to pursue dentistry.
Ginna Pugh is a retired educator with Cumberland County Schools. She has been volunteering for more than a year. "I had always been interested in The CARE Clinic and what they do for their patients," she said. "Patients are so appreciative. One patient came in and wanted to make a donation. She did not have an appointment that evening, but her son had sent her money for her birthday and she wanted to give part of it to The CARE Clinic because they had done so much for her."
Kerstin Hudgins is a registered nurse at Cape Fear Valley Health System. She has been volunteering for four years. "It is a nice way to give back to the community and to practice nursing with a more personal touch," she said. "(Once), we were seeing our last patient and getting ready to close when I observed the patient's mother having a severe cough. She was also a patient but had no appointment that evening. I advocated for her to be seen. We saved her from a potential Emergency Department visit and worsening of her symptoms."
Cheryl P. Colvin is a physician in the Emergency Department at Cape Fear Valley Health System. She has been volunteering for five years. "I completely understand the needs of the community, and the patients at The CARE Clinic appreciate the services provided," she said. "The heartfelt appreciation from every patient makes it memorable."
Erin Stevens is a nurse at Cape Fear Valley Health System. She has been volunteering for two years.
"It is a great cause," she said. "It is rewarding to see how appreciative the patients are."
Jacqueline Merritt-Evans is a territory manager with Premier Concepts, LLC. She has been volunteering for two years. "I wanted to keep up my skills as a medical assistant and in the field of phlebotomy," she said. "I enjoy the people and atmosphere. I enjoy giving back and helping out where I can. I had a patient who was very nervous about getting her blood drawn. I gave her a squeeze ball that is shaped like a brain, and I said to her, 'Please hold my brain.' She gave me a funny look as I put the ball (brain) in her hand, and we both laughed so hard. She was OK after that, and I was able to draw her blood. She laughed away her nervousness."
Ana Mercurio is a dental assistant at Dr. Walter Scott DDS & Associates. She has been volunteering for seven years. She said she volunteers "to give back, to help others. The gratitude of the patients is (from) genuine, hard-working people who truly appreciate us.
The CARE Clinic is located at 239 Robeson St. Contact Julie Dixon or Cathy Riddle at 910-485-0555 if you are interested in volunteering. Visit thecareclinic.org to learn more about the clinic.
To be eligible for The CARE Clinic's services, you must:
• Be an adult resident of Cumberland County or the surrounding area • Have no insurance – including Medicaid
• Meet an income requirement
• Display proof of household income and a valid, North Carolina DMV-issued picture ID card or driver's license showing your current address
• No walk-ins.
• Appointments are made only by phone; for more information on making an appointment, call 910-485-0555.
• Medical appointments may be made Monday- Thursday, 9 a.m. to 2 p.m. • Dental appointments may be made Friday from 9 a.m. to noon for the following week.
• The clinic serves patients each Tuesday and Thursday and the second and fourth Wednesday of each month from 5:30-8:30 p.m.
• Dental clinics are every Tuesday and the second and fourth Wednesday of each month. Appointments are made on a space available basis.
• To cancel an appointment, you must call by 8 a.m. the day of the appointment and leave a message on the answering machine in order not to be penalized.
Patients are given the opportunity to make a donation at the time of their visit.


text:
Posted on 23 September, 2015 by Paul
Oh joy of joys. Did you hear that that great homophobe/misogynist Mr Potato Head is making a comeback on radio? I know seems unlikely after t'Yerkshire gimp was kicked out of Radio 1 three years ago for calling a spade a gay shovel and failing to cut it as a stage actor (titter) or tv sleb. But now Xfm Radio has been re-launched as Blerks' RadioX and 42 year old PH (or to give him his native American name, Dresses Like a Farmer, Eats Like a Pig) has been recruited to do his dj thang once again playing music and discussing topics with no appeal whatsoever to the ladeez. Like Vindaloo and Leeds Utd's most admirable managers. Oh and they've recruited Chris Moyles too.
But even bigger news today was the unlikely announcement that a trio of grizzled middle-aged men from Glasgie have been tartanned up in a grim attempt to reform as the Bay City Rollers despite looking like they shipped more drugs, booze and groupies in an afternoon than Keith Richards, Keith Moon, Jimmy Page, Jimi Hendrix and Jim Morrison managed in their lifetimes…
Why on earth would the now milk-drinking (ha!) trio of 60 year-olds want to start warbling Shang-a-Lang again after a bitter and litigation-strewn break of 40 years? Well I thought it might be a desperate last attempt to cash in any shred of their remaining dignity for the money. But lead singer Les McKeown pointed out how wrong I was… "You think we're doing it for money but we're doing it for the glory of Scotland and the glory of the tartan. Taking the Scottish name all around the globe. That's what we're doing it for – to see our fans again one more time." Ah right. He added that they have promised "a very special Christmas present to all the fans that have kept the faith with the band over the years". So touching and so genuine.
Wouldn't it be great to see them top the charts again and, as Les stares into Cheryl's eyes, perform those classic words on the X Factor finals night…
Should've told her that I can't linger
There's a wedding ring on my finger
She's got me but I'm not free, so
Bye bye baby, baby guidbye
(Bye baby, baby bye bye)
Bye bye baby, don't make me cry
This entry was posted in MEDIA WATCH, radio and tagged Bay City Rollers, Chris Moyles, entertainment, media, Mr Potato Head, radio, Radio X by Paul. Bookmark the permalink.


"CLICK HERE" or on picture to the left to see more "Group Photo's On The Step" pictures.
All of our Corgi's live in our house, and have been raised around Children and Other Animals.
Click On This Photo To Enlarge It.
"Click Here" or on the picture of the "Sleeping Puppy" to go to our "In The Nursery" page.
"CLICK HERE" or on the picture of the "Smiling Pup" to go to our "Puppies First Day Out" page.
"CLICK HERE" or on picture of the Puppy In The Basket "Sweetie Pie" to go to our "Basket Shots" page.


Every program should start with a comment saying briefly what it is for. Example: 'fmt - filter for simple filling of text'. This comment should be at the top of the source file containing the 'main' function of the program.
Also, please write a brief comment at the start of each source file, with the file name and a line or two about the overall purpose of the file.
Please write the comments in a GNU program in English, because English is the one language that nearly all programmers in all countries can read. If you do not write English well, please write comments in English as well as you can, then ask other people to help rewrite them. If you can't write comments in English, please find someone to work with you and translate your comments into English.
Please put a comment on each function saying what the function does, what sorts of arguments it gets, and what the possible values of arguments mean and are used for. It is not necessary to duplicate in words the meaning of the C argument declarations, if a C type is being used in its customary fashion. If there is anything nonstandard about its use (such as an argument of type char * which is really the address of the second character of a string, not the first), or any possible values that would not work the way one would expect (such as, that strings containing newlines are not guaranteed to work), be sure to say so.
Also explain the significance of the return value, if there is one.
Please put two spaces after the end of a sentence in your comments, so that the Emacs sentence commands will work. Also, please write complete sentences and capitalize the first word. If a lower-case identifier comes at the beginning of a sentence, don't capitalize it! Changing the spelling makes it a different identifier. If you don't like starting a sentence with a lower case letter, write the sentence differently (e.g., "The identifier lower-case is …").
The comment on a function is much clearer if you use the argument names to speak about the argument values. The variable name itself should be lower case, but write it in upper case when you are speaking about the value rather than the variable itself. Thus, "the inode number NODE_NUM" rather than "an inode".
There is usually no purpose in restating the name of the function in the comment before it, because readers can see that for themselves. There might be an exception when the comment is so long that the function itself would be off the bottom of the screen.


When you're adding any software or hardware provider to your business suite, the first question you'll ask yourself is "How much will this cost me?" Cost is an important consideration, but sometimes the option that is more expensive upfront is better than the free option that requires add-ons and multiple providers.
CS-Cart is just such a solution. CS-Cart is used by businesses that operate e-commerce stores. It's jam-packed with features, providing a better all-in-one experience than a patchwork of providers. Your business may have multiple components, so simplifying even one aspect of your sales strategy can provide numerous benefits in the form of fewer middlemen, clearer financials and usability.
Here are four reasons to partner with CS-Cart for your e-commerce needs.
If you're just starting out, a simple hosted checkout option might be best to get your e-commerce sales up and running. Over time, however, you'll want additional bells and whistles to generate more sales and make the most of your e-commerce potential.
CS-Cart offers more than 500 features out of the box. While its software comes in three editions costing between $385 and $1,450, the service can save you a ton of time, money and headaches down the road — unlike free solutions. Free solutions often offer less functionality, so as you decide you need more, you may need to purchase add-ons from various third-party resellers. These resellers aren't responsible for software development, so if you encounter a bug or lose service, you don't have a direct point of contact to direct questions or request a fix.
Additionally, adding new features from different providers can take development time, which costs money and impacts your business's roadmap, not to mention that if you're accepting credit card payments, security has to be a major consideration. Conducting security checks of each software vendor you use takes time — at least if done correctly — further slowing down business operations.
An e-commerce store should help you grow your sales, not drag down business operations or distract you. CS-Cart offers numerous features that help drive more sales and optimize your web presence.
Layout editor: Make the most of your e-commerce software by customizing it to your needs and preferences. The layout editor lets you make edits to every page of your e-commerce store — no coding experience required.
Promotions: Generate promotions for customers who meet the criteria of your offers (e.g., 10 percent off purchases over $100; free shipping on purchases over $50, etc.).
Rewards-points system: Launch a loyalty rewards program to motivate one-time customers to become repeat customers.
Cross-selling and upselling tools: Showcase your best-selling and most popular products and provide discounts for bundled items.
Multi-store functionality: Manage multiple storefronts without service setup or software installation — this lets you experiment with price, marketing expenses, and audience targeting to optimize your e-commerce sales.
To process e-commerce transactions, you'll need a Merchant Account Provider and a Payment Gateway. It's good to partner with integrated shopping carts that offer numerous payment providers so that you have the freedom to decide who you want to handle your payment processing.
It's important to take the time to compare providers. Depending on the size of your business and credit card volume, a provider that offers Flat rate pricing might not be as good as one that offers Interchange-plus. Likewise, you want to think about the honesty and integrity of any business that will be handling your finances. Take the time to read online reviews, and call providers to ask about available rate plans and the level of support you can expect.
If you also accept card-present transactions, you can reduce the number of providers you have by selecting a Merchant Account Provider that can manage both your e-commerce and your in-store transactions. Take this a step further by opting for an all-in-one Merchant Account Provider and Payment Gateway. PayJunction is integrated with CS-Cart and can reduce the number of e-commerce providers you have while also handling your card-present payments. An all-in-one provider will help reduce your monthly bills, make it easier to understand your effective processing rate and reduce the number of customer support desks you have to call.
Managing a business takes a lot of work — your e-commerce store shouldn't complicate things further. Proactively manage your e-commerce workload by delegating work among your team members. CS-Cart allows for various levels of admin access so you can distribute store design, product management and customer communication among your team members.
Whichever shopping cart you end up using, it's important to factor available functionality into your purchase decision. Look for features like these when partnering with a long-term e-commerce provider.
Do you already use CS-Cart for your e-commerce transactions? If so, how is it going for you? We'd love to hear from you!


text:
Nigeria vs. Sudan
AFRICA: Africa Cup of Nations
Time: 17:00PM
Venue: Stade Omnisport Roumdé Adjia (Garoua)
Nigeria started their Africa Cup of Nations (AFCON) campaign with a 1-0 win over favourites Egypt, making it the seventh time across their last 11 tournament appearances that they've achieved a winning start. Intriguingly, six of their last eight AFCON group openers have ended 1-0 either way, so the scoreline wasn't a surprise for history readers, as the 36th-ranked 'Super Eagles' extended their unbeaten run (W3, D1).
Up next is Sudan, a side Nigeria have defeated in eight of their previous 14 encounters (W8, D4, L2). A win here will bring back memories of the 2006 edition for the then-and-now coach Augustine Eguavoen, as they look to break a preceding sequence of four consecutive finishes as group stage runners-up in AFCON finals.
Back in the AFCON group stages after missing four editions, 125th-ranked Sudan started with a goalless draw against Guinea-Bissau, and they're now winless across 12 outings (D5, L7), with eight of those matches witnessing the 'Falcons of Jediane' fail to score.
Six of Sudan's eight H2H losses – including the last AFCON H2H group stage match back in 1976 – have also come 'to nil'. They have also failed to win any match against teams currently ranked inside FIFA's top 50 since October 2014, though encouragingly for them, that win came against this game's opponents Nigeria!
Key battle: Albeit without scoring, Moses Simon was instrumental against Egypt on Group D matchday one. He has seen three of his five goals in Nigeria colours come as their last strike, as have his two league goals for club side Nantes this season. He will be up against talented Sudanese stopper Ali Abdallah Abu-Eshrein, who kept a clean sheet on his AFCON group stage debut.
Recent Stats:
Nigeria's form in last 5 matches: WDWWL.
Sudan's form in last 5 matches: DDLLL.
PREDICTION: Home Win
NextAccumulator……………Predictions………. 17-01-22Next
Hey Buddy!, I found this information for you: "Nigeria vs. Sudan". Here is the website link: https://www.allsportspredictions.com/nigeria-vs-sudan/. Thank you


Ideally they are looking for a talented Sous Chef with plenty of experience working with fresh, seasonal produce. They prepare a mix of modern and traditional British cuisine and everything is made in house.
There is a stable brigade of 6 chefs and 2 full-time K.P's. As Sous Chef you will be involved in menu design, stock control, ordering and training and motivating the junior members of the team. This is a high volume, fast paced kitchen so experience within a similar establishment would be a huge advantage.


According to the Nivaklé of Paraguay, dry seasons are exacerbated by the Tsamtás serpents, which lie in the middle of the sky and radiate heat. A tsamtáx will intercept and eat the Fanxás or thunderbirds flying from the south and bringing rain with them. Only the shamans can prevent this state of things by tearing down the tsamtás nest, making them fall to their death and allowing the rainy season to return.
Tosetáx is even more terrifying. He arrived after the tsamtás had been dealt with, and installed himself in the center of the sky. Tosetáx is an enormous green and red snake, with three mouths – one at the head, one at the tail, and one in the middle of his body. As with the tsamtás, Tosetáx was waiting to ambush the returning thunderbirds.
Tosetáx was defeated by five powerful shamans who turned themselves into snakes. One of the shamans coiled himself around Tosetáx and, by turning and coiling, took him to the north out of the thunderbirds' flight path. There the shamans cut off the serpent's three mouths and cut him in half, killing him.
Chase-Sardi, M.; Costa, M. M.; Mashnshnek, C. O.; Siffredi, A.; Tomasini, J. A.; Wilbert, J. and Simoneau, K. eds. (1987) Folk Literature of the Nivaklé Indians. UCLA Latin American Center Publications, University of California, Los Angeles.


text:
AGENTS & Co
Pentagon Downplays 'Close Encounter' Between US, Chinese Planes Over S. China Sea
The United States is downplaying the severity of what is being described as a "close encounter" between U.S. and Chinese military aircraft over the South China Sea.
"We don't see any evidence that this was intentional," Pentagon spokesman Captain Jeff Davis said Friday, describing the incident as a "one-off."
According to U.S. officials, during Wednesday's encounter, a Chinese KJ-200 early warning aircraft passed about 200 meters (1,000 feet) in front of a U.S. Navy P-3 plane on a routine mission in international airspace near Scarborough Shoal, between the Chinese mainland and the Philippines. As a result, the P-3 was forced to make an immediate turn.
Both planes were in "normal radio contact" following the incident, Davis said, describing the communications as "professional."
Close call was accidental
Despite the early indications that incident was accidental, the Pentagon says it will still be reviewed, and that U.S. military officials would be in contact with their appropriate Chinese counterparts.
"Clearly we have our disagreements with China over militarization of the South China Sea, over their reclamation of the islands and some of their broader strategic objectives," Davis said. "But when it comes to simply the [military] interactions, those are largely professional and safe."
The close encounter between the two aircraft comes as tensions between the U.S. and China are heightened because of China's moves to create man-made islands in the South China Sea.
A message from China?
In an interview, Dr. Thomas G. Mahnken, president of the Center for Strategic and Budgetary Assessments, told VOA that while there is an effort by the Chinese to exert control over the South China Sea and treat it like Chinese airspace, it's important to acknowledge that pilots do sometimes make mistakes.
"If we look at the totality of Chinese behavior, it's some mixture of those two things, and the challenge for American policymakers and American soldiers is to disentangle what's deliberate and what is unprofessional," he said. "We don't want to lump in a deliberate behavior with unprofessional, poor piloting."
Mahnken said he thinks the Chinese are trying to create an atmosphere where U.S. officials tacitly acknowledge that large parts of the international waters in the South China Sea are Chinese territory.
"They want us to avoid operating in and near these artificial features they've created," Mahnken said, referring to man-made islands erected by the Chinese as military bases near the Philippines.
It is important, Mahnken said, for the U.S. to remind the Chinese that under international law, the islands "do not exist."
"It's perfectly legitimate for the United States, and in accordance with our long-standing policy, to essentially treat those man-made features for what they are: They're hazards to navigation. They're not Chinese sovereign territory," he said. "So we should operate around, above, near those man-made features routinely, limited only by the safety of our ships and the safety of our aircraft."
VOA's Mandarin service contributed to this story.
Could Kazakhstan Efforts to Repatriate Foreign Fighters Be a Model? 01/16/2021
'Criminal State' China Intensifying Human Rights Abuses, Say British MPs 01/15/2021
Families Hold Out Hope for Eritrea's Disappeared Journalists 01/15/2021
As Ordered by Trump, US Down to 2,500 Troops in Afghanistan 01/15/2021
Pandemic Closes, Repurposes Kenya's Private Schools 01/15/2021
Copyright © 2021 AGENTS & Co All Rights Reserved
Support by wPress • TrueNet • seLLines • Купуй! • Dmnsa member • MeNeedIt


SUMMARY: "The myth that genetically modified crops are harmful to people and environment is wrong. Farmers and the public must be made aware of it scientifically, according to Palpu Pushpangadan, Director-General, Amity Institute for Herbal and Biotech Products Development, Thiruvananthapuram. [...] The population is on the rise and so is malnutrition and it is in this context that transgenic crops gain significance,? he said. [...] The yield of GM crop cultivation per hectare will be three fold more and of better quality than the normal crop."
KOCHI: The myth that genetically modified (GM) crops are harmful to people and environment is wrong. Farmers and the public must be made aware of it scientifically, according to Palpu Pushpangadan, Director-General, Amity Institute for Herbal and Biotech Products Development, Thiruvananthapuram.
He was in Kochi to participate in a seminar on modern streams of biochemistry organised at the St Albert?s College.
Bacillus thuringiensis (Bt) is a toxic protein which is safe for consumption but at the same time the toxicity in it will keep pesticides at bay. Only thing is that they should be cultivated in isolation so that they won?t cross with other plants, Pushpangadan said. Experiments are on to transfer the protein in chicken to pulses so that they would like chicken, but the question whether it is vegetarian will linger.
Genetical modification takes place in nature also, evolving over the years by acquisition of genes from the environment.
The yield of GM crop cultivation per hectare will be three fold more and of better quality than the normal crop. ?Now experiments are on to create golden rice which would have other vitamins besides carbohydrate and can give 50 percent of the required nutrients to children,? he said. There is good scope for GM rubber, pepper and cardamom in Kerala, he said.
Numerous transgenic crops are being developed but only the best with least side-effects would be allowed for cultivation. So there is no cause for fear of terminator genes. Hence the little demerit of GM crop is nothing compared to the great purpose it would serve, he said.
Pushpangadan who has the most number of patents in India, (232) is the first scientist to get a patent for tribal folks. While he went trekking with the Kani tribes along with scientists working on the All India Co-ordinated Research Project on Ethnobiology (AICRPE), he realised they were full of energy while he sagged as he walked on. But when he gobbled a few of the berry-like fruits that they offered, it had a magical effect. This ?magical? plant was identified as Trichopus zeylanicus. He took it to the Regional Research Laboratory in Jammu, got it tested and evaluated, which led to the herbal medicine ?Jeevani? and got them a patent for it.
Pushpangadan was instrumental in setting up the first ethnopharmacology laboratory in India at RRL Jammu, in 1987 and full-fledged ethnopharmacology laboratories at Tropical Botanic Garden and Research Institute, Thiruvananthapuram, and the National Botanical Research Institute, Lucknow.
This multi-disciplinary scientist is a recognised PhD and MD guide and examiner of various universities in India and abroad. He is the recipient many national and international awards.
SUMMARY: "Haryana Agricultural University today said that it has developed Bt pigeonpea plants in the laboratory for resistance against pod borer insect known to cause huge loss to the production of different crops. HAU Vice-Chancellor K S Khokhar said [...] the genetically modified pigeonpea plants carried ?Bt Cry 1 Ac? gene that had been successfully transferred into an early maturing pigeonpea variety ?Manak? by Pushpa Kharab, Professor, Molecular Biology & Biotechnology of the university."
o increase the production of pulses, he said. HAU Director of Research, R P Narwal said that the protocol used to transfer gene in pigeonpea was the same as it was applied in Bt gram. He said the university had filed a patent for this technique.He further said the gene Bt Cry 1 Ac used to develop Bt pigeonpea was procured from P Anand Kumar, Project Director, National Research Centre on Plant Biotechnology (NRCPB). It may be mentioned that the Bt chickpea was also developed by Pushpa Kharab and her team. Kharab at present is on deputation to Centre for Plant Biotechnology as its Director (Technical).


Have you ever had a hard time learning how to talk to women? Are you always running out of things to talk about when meeting someone new?
We all know starting a conversation with a complete stranger can be intimidating. As we walk over, sometimes our minds go blank unsure of what to say.
Today, I'm going to share a powerful technique that teaches you not only how to talk to women, but it's something that you can use to spark a conversation and build massive rapport with anyone.
The FORD Method is a great way to start strong when getting to master how to talk to women that you've just met.
The conversation possibilities from these four categories are endless. Just be sure to ask open-ended questions and avoid questions that can be answered with a yes or no.
Use their answers, and the tips I went over last week to build on the conversation. You can check last week's post by clicking here.
Here are some example questions you can ask, and breakdown of each topic.
What was it like growing up as a kid?
Do you have any siblings? And then a follow-up question. If she does have siblings, you can ask her what her siblings are like. If she doesn't, you can ask do you ever wish you did.
Studies have shown that when people share family-related matters with strangers, they feel closer to them. You'll have to keep that in mind when knowing how to talk to women. After all, you usually only share personal information with close friends.
The challenge, however, is that asking about family upfront can sometimes come off too strong.
What you want to do instead is branch the conversation in a way that family naturally comes up.
One, you can talk about your family first.
For example, when I was recently talking to a girl, I mentioned how I was excited to see my little sister over the holidays. I then asked if she had any siblings, which she didn't. I then asked if she ever wishes she had some, which lead the conversation towards the family.
Whether your right or wrong doesn't matter, making assumptions is a great way to create a sense of curiosity and spark a conversation.
She'll either wonder why you think she comes from a big family or corrects your statement. Either way, you're now on the topic of family.
Our work makes up a big portion of our lives and is probably one of the most used conversation starters. Because of that, it's the easiest topic out of the four to start with.
The trick about making this topic work is not to dwell on the surface level conversation.
Let's say you're on a date and ask her, "What do you do for a living?". "I'm a school teacher," she says.
Most guys make the mistake of staying on the surface level asking questions like, "What subject do you teach?", "What grade?", "What school?".
Instead, I recommend you move to deeper topics.
What do you like to do that brings a smile to your face?
Any vacations planned for next year?
Are you into any pro sports? What's your favorite team?
Everyone has some sort of hobby, interest, and passion. When getting to know how to talk to women, it's important to talk about interests.
Like the occupation questions, avoid sticking to surface level topics. Instead, jump into the deep end by focusing on motivation and emotions.
Chances are, the person you're talking to has a hobby that you may know nothing about.
Following up with questions like this allow the other person to dive deeper into their hobby and explain why they love it.
What's the most exciting thing on your bucket list?
This is one of the most powerful topics you can talk to someone about.
Unfortunately, most people are told to take the "safe" route instead of pursuing their dreams.
If you're one of the few people that actually brings up and supports their dream, the other person will think very fondly of you.
This is usually the last of the four topics I bring up. Most people are sensitive when discussing their dreams since they are so used to people focusing on why it can't happen.
Because of this, be sure to build up a good amount of rapport, from the other three topics, so you can get truly meaningful responses to dream questions.
Again, just like the previous two topics, get into deeper level conversations. Focus on the motivation and emotions associated with their response. You're getting to understand how to talk to women. And you'll definitely have an easier time establishing rapport.
Beginners: Memorize one question for each section and make 3 approaches with the focus of using the FORD method to build comfort. The goal would be to touch all four topics using the questions you memorized.
Advanced: Same as beginners, but 6 approaches. They only count if you can get through the entire FORD method.
Alright, guys, that's how to talk to women and have deeper conversations. Using the FORD method!


text:
Ferdinand Büchner (* 13. Dezember 1823 in Pyrmont; † 1906 in Moskau) war ein Flötist und Komponist.

Leben

Ferdinand Büchner begann im frühen Alter das Flötenstudium bei seinem Vater, der eine führende Rolle im Musikleben von Bad Pyrmont spielte. Anschließend erhielt er Unterricht bei dem Flötisten Christian Heinemeyer. Im Alter von 13 Jahren trat er in London mit großem Erfolg erstmals öffentlich auf. 1847 erhielt er ein Engagement in Berlin, wo er drei Jahre lang blieb. 1850 reiste er nach Russland und nahm sechs Jahre lang intensiv am Musikleben in St. Petersburg teil. 1856 berief man ihn als Soloflötist an das Bolschoi-Theater in Moskau. Er behielt die Stellung bis kurz vor seinem Tod. Sein ausgezeichneter Ruf als Solist und Lehrer brachte ihm die Berufung als Professor an das Moskauer Konservatorium von Nikolai Rubinstein, dessen Mitgründer er war.

Werk

Büchner stand in der romantischen Tradition virtuoser Musiker, die auch komponierten. Er schrieb zahlreiche Stücke für Flöte, darunter acht Konzerte. Als sein schönstes Konzert gilt das Konzert in f-Moll op. 38, das dem Verleger Julius Heinrich Zimmermann gewidmet ist.

Quellen

 Biographieen zur Porträts-Sammlung hervorragender Flöten-Virtuosen, Dilettanten und Komponisten, Berlin 1906

Weblinks

Einzelnachweise

Komponist (Romantik)
Klassischer Flötist
Hochschullehrer (Moskauer Konservatorium)
Geboren 1823
Gestorben 1906
Mann

redpajama_set_name: RedPajamaWikipedia


Goodwill of Southwestern Pennsylvania aims to help local families achieve financial stability. Our on-site income supports specialist will help you access food stamps, CHIP, Social Security Disability, Utility Assistance, free tax preparation services, and more. On-site financial counseling will help improve your credit and improve your budgeting.
Goodwill's Financial Opportunity Center offers FREE one-on-one appointments with a financial coach, where you will talk about your goals, learn how to overcome obstacles, and set a plan that will help keep you on track.
During tax season, Goodwill SWPA offers free guidance and filing services to taxpayers with low income.
The Voucher Assistance Program is our way of partnering with other nonprofit agencies to meet the needs of individuals and families in the community. The funds are limited, one-time use.


text:
package metric

import (
	"context"
	"fmt"
	"math"
	"net/url"
	"reflect"
	"strings"
	"sync"
	"time"
	"unicode"

	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/sdk/instrumentation"
	"go.opentelemetry.io/otel/sdk/metric/metricdata"
	"go.opentelemetry.io/otel/sdk/resource"

	monitoring "cloud.google.com/go/monitoring/apiv3/v2"
	"go.uber.org/multierr"
	"google.golang.org/api/option"
	"google.golang.org/genproto/googleapis/api/distribution"
	"google.golang.org/genproto/googleapis/api/label"
	googlemetricpb "google.golang.org/genproto/googleapis/api/metric"
	monitoredrespb "google.golang.org/genproto/googleapis/api/monitoredres"
	monitoringpb "google.golang.org/genproto/googleapis/monitoring/v3"
	"google.golang.org/protobuf/types/known/timestamppb"

	"github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping"
)

const (
	cloudMonitoringMetricDescriptorNameFormat = "workload.googleapis.com/%s"
)

// key is used to judge the uniqueness of the record descriptor.
type key struct {
	name        string
	libraryname string
}

func keyOf(metrics metricdata.Metrics, library instrumentation.Library) key {
	return key{
		name:        metrics.Name,
		libraryname: library.Name,
	}
}

// metricExporter is the implementation of OpenTelemetry metric exporter for
// Google Cloud Monitoring.
type metricExporter struct {
	o        *options
	shutdown chan struct{}
	// mdCache is the cache to hold MetricDescriptor to avoid creating duplicate MD.
	mdCache      map[key]*googlemetricpb.MetricDescriptor
	client       *monitoring.MetricClient
	mdLock       sync.RWMutex
	shutdownOnce sync.Once
}

// ForceFlush does nothing, the exporter holds no state.
func (e *metricExporter) ForceFlush(ctx context.Context) error { return ctx.Err() }

// Shutdown shuts down the client connections
func (e *metricExporter) Shutdown(ctx context.Context) error {
	err := errShutdown
	e.shutdownOnce.Do(func() {
		close(e.shutdown)
		err = multierr.Combine(ctx.Err(), e.client.Close())
	})
	return err
}

// newMetricExporter returns an exporter that uploads OTel metric data to Google Cloud Monitoring.
func newMetricExporter(o *options) (*metricExporter, error) {
	if strings.TrimSpace(o.projectID) == "" {
		return nil, errBlankProjectID
	}

	clientOpts := append([]option.ClientOption{option.WithUserAgent(userAgent)}, o.monitoringClientOptions...)
	ctx := o.context
	if ctx == nil {
		ctx = context.Background()
	}
	client, err := monitoring.NewMetricClient(ctx, clientOpts...)
	if err != nil {
		return nil, err
	}

	cache := map[key]*googlemetricpb.MetricDescriptor{}
	e := &metricExporter{
		o:        o,
		mdCache:  cache,
		client:   client,
		shutdown: make(chan struct{}),
	}
	return e, nil
}

var errShutdown = fmt.Errorf("exporter is shutdown")

// Export exports OpenTelemetry Metrics to Google Cloud Monitoring.
func (me *metricExporter) Export(ctx context.Context, rm metricdata.ResourceMetrics) error {
	select {
	case <-me.shutdown:
		return errShutdown
	default:
	}
	return multierr.Combine(
		me.exportMetricDescriptor(ctx, rm),
		me.exportTimeSeries(ctx, rm),
	)
}

// exportMetricDescriptor create MetricDescriptor from the record
// if the descriptor is not registered in Cloud Monitoring yet.
func (me *metricExporter) exportMetricDescriptor(ctx context.Context, rm metricdata.ResourceMetrics) error {
	if me.o.disableCreateMetricDescriptors {
		return nil
	}

	me.mdLock.Lock()
	defer me.mdLock.Unlock()
	mds := make(map[key]*googlemetricpb.MetricDescriptor)
	extraLabels := me.extraLabelsFromResource(rm.Resource)
	for _, scope := range rm.ScopeMetrics {
		for _, metrics := range scope.Metrics {
			k := keyOf(metrics, scope.Scope)

			if _, ok := me.mdCache[k]; ok {
				continue
			}

			if _, localok := mds[k]; !localok {
				md := me.recordToMdpb(metrics, extraLabels)
				mds[k] = md
			}
		}
	}

	// TODO: This process is synchronous and blocks longer time if records in cps
	// have many different descriptors. In the cps.ForEach above, it should spawn
	// goroutines to send CreateMetricDescriptorRequest asynchronously in the case
	// the descriptor does not exist in global cache (me.mdCache).
	// See details in #26.
	var err error
	for kmd, md := range mds {
		cmdErr := me.createMetricDescriptorIfNeeded(ctx, md)
		if cmdErr == nil {
			me.mdCache[kmd] = md
		}
		err = multierr.Append(err, cmdErr)
	}
	return err
}

func (me *metricExporter) createMetricDescriptorIfNeeded(ctx context.Context, md *googlemetricpb.MetricDescriptor) error {
	mdReq := &monitoringpb.GetMetricDescriptorRequest{
		Name: fmt.Sprintf("projects/%s/metricDescriptors/%s", me.o.projectID, md.Type),
	}
	_, err := me.client.GetMetricDescriptor(ctx, mdReq)
	if err == nil {
		// If the metric descriptor already exists, skip the CreateMetricDescriptor call.
		// Metric descriptors cannot be updated without deleting them first, so there
		// isn't anything we can do here:
		// https://cloud.google.com/monitoring/custom-metrics/creating-metrics#md-modify
		return nil
	}
	req := &monitoringpb.CreateMetricDescriptorRequest{
		Name:             fmt.Sprintf("projects/%s", me.o.projectID),
		MetricDescriptor: md,
	}
	_, err = me.client.CreateMetricDescriptor(ctx, req)
	return err
}

// exportTimeSeries create TimeSeries from the records in cps.
// res should be the common resource among all TimeSeries, such as instance id, application name and so on.
func (me *metricExporter) exportTimeSeries(ctx context.Context, rm metricdata.ResourceMetrics) error {
	tss := []*monitoringpb.TimeSeries{}
	mr := me.resourceToMonitoredResourcepb(rm.Resource)
	var aggError error

	extraLabels := me.extraLabelsFromResource(rm.Resource)
	for _, scope := range rm.ScopeMetrics {
		for _, metrics := range scope.Metrics {
			ts, err := me.recordToTspb(metrics, mr, scope.Scope, extraLabels)
			aggError = multierr.Append(aggError, err)
			tss = append(tss, ts...)
		}
	}

	if len(tss) == 0 {
		return aggError
	}

	// TODO: When this exporter is rewritten, support writing to multiple
	// projects based on the "gcp.project.id" resource.
	req := &monitoringpb.CreateTimeSeriesRequest{
		Name:       fmt.Sprintf("projects/%s", me.o.projectID),
		TimeSeries: tss,
	}

	return multierr.Append(aggError, me.client.CreateTimeSeries(ctx, req))
}

func (me *metricExporter) extraLabelsFromResource(res *resource.Resource) *attribute.Set {
	set, _ := attribute.NewSetWithFiltered(res.Attributes(), me.o.resourceAttributeFilter)
	return &set
}

// descToMetricType converts descriptor to MetricType proto type.
// Basically this returns default value ("workload.googleapis.com/[metric type]")
func (me *metricExporter) descToMetricType(desc metricdata.Metrics) string {
	if formatter := me.o.metricDescriptorTypeFormatter; formatter != nil {
		return formatter(desc)
	}
	return fmt.Sprintf(cloudMonitoringMetricDescriptorNameFormat, desc.Name)
}

// metricTypeToDisplayName takes a GCM metric type, like (workload.googleapis.com/MyCoolMetric) and returns the display name.
func metricTypeToDisplayName(mURL string) string {
	// strip domain, keep path after domain.
	u, err := url.Parse(fmt.Sprintf("metrics://%s", mURL))
	if err != nil || u.Path == "" {
		return mURL
	}
	return strings.TrimLeft(u.Path, "/")
}

// recordToMdpb extracts data and converts them to googlemetricpb.MetricDescriptor.
func (me *metricExporter) recordToMdpb(metrics metricdata.Metrics, extraLabels *attribute.Set) *googlemetricpb.MetricDescriptor {
	name := metrics.Name
	typ := me.descToMetricType(metrics)
	kind, valueType := recordToMdpbKindType(metrics.Data)

	// Detailed explanations on MetricDescriptor proto is not documented on
	// generated Go packages. Refer to the original proto file.
	// https://github.com/googleapis/googleapis/blob/50af053/google/api/metric.proto#L33
	return &googlemetricpb.MetricDescriptor{
		Name:        name,
		DisplayName: metricTypeToDisplayName(typ),
		Type:        typ,
		MetricKind:  kind,
		ValueType:   valueType,
		Unit:        string(metrics.Unit),
		Description: metrics.Description,
		Labels:      labelDescriptors(metrics, extraLabels),
	}
}

func labelDescriptors(metrics metricdata.Metrics, extraLabels *attribute.Set) []*label.LabelDescriptor {
	labels := []*label.LabelDescriptor{}
	seenKeys := map[string]struct{}{}
	addAttributes := func(attr *attribute.Set) {
		iter := attr.Iter()
		for iter.Next() {
			kv := iter.Attribute()
			// Skip keys that have already been set
			if _, ok := seenKeys[normalizeLabelKey(string(kv.Key))]; ok {
				continue
			}
			labels = append(labels, &label.LabelDescriptor{
				Key: normalizeLabelKey(string(kv.Key)),
			})
			seenKeys[normalizeLabelKey(string(kv.Key))] = struct{}{}
		}
	}
	addAttributes(extraLabels)
	switch a := metrics.Data.(type) {
	case metricdata.Gauge[int64]:
		for _, pt := range a.DataPoints {
			addAttributes(&pt.Attributes)
		}
	case metricdata.Gauge[float64]:
		for _, pt := range a.DataPoints {
			addAttributes(&pt.Attributes)
		}
	case metricdata.Sum[int64]:
		for _, pt := range a.DataPoints {
			addAttributes(&pt.Attributes)
		}
	case metricdata.Sum[float64]:
		for _, pt := range a.DataPoints {
			addAttributes(&pt.Attributes)
		}
	case metricdata.Histogram:
		for _, pt := range a.DataPoints {
			addAttributes(&pt.Attributes)
		}
	}
	return labels
}

type attributes struct {
	attrs attribute.Set
}

func (attrs *attributes) GetString(key string) (string, bool) {
	value, ok := attrs.attrs.Value(attribute.Key(key))
	return value.AsString(), ok
}

// resourceToMonitoredResourcepb converts resource in OTel to MonitoredResource
// proto type for Cloud Monitoring.
//
// https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.monitoredResourceDescriptors
func (me *metricExporter) resourceToMonitoredResourcepb(res *resource.Resource) *monitoredrespb.MonitoredResource {
	gmr := resourcemapping.ResourceAttributesToMonitoredResource(&attributes{
		attrs: attribute.NewSet(res.Attributes()...),
	})
	newLabels := make(map[string]string, len(gmr.Labels))
	for k, v := range gmr.Labels {
		newLabels[k] = sanitizeUTF8(v)
	}
	mr := &monitoredrespb.MonitoredResource{
		Type:   gmr.Type,
		Labels: newLabels,
	}
	return mr
}

// recordToMdpbKindType return the mapping from OTel's record descriptor to
// Cloud Monitoring's MetricKind and ValueType.
func recordToMdpbKindType(a metricdata.Aggregation) (googlemetricpb.MetricDescriptor_MetricKind, googlemetricpb.MetricDescriptor_ValueType) {
	switch agg := a.(type) {
	case metricdata.Gauge[int64]:
		return googlemetricpb.MetricDescriptor_GAUGE, googlemetricpb.MetricDescriptor_INT64
	case metricdata.Gauge[float64]:
		return googlemetricpb.MetricDescriptor_GAUGE, googlemetricpb.MetricDescriptor_DOUBLE
	case metricdata.Sum[int64]:
		if agg.IsMonotonic {
			return googlemetricpb.MetricDescriptor_CUMULATIVE, googlemetricpb.MetricDescriptor_INT64
		} else {
			return googlemetricpb.MetricDescriptor_GAUGE, googlemetricpb.MetricDescriptor_INT64
		}
	case metricdata.Sum[float64]:
		if agg.IsMonotonic {
			return googlemetricpb.MetricDescriptor_CUMULATIVE, googlemetricpb.MetricDescriptor_DOUBLE
		} else {
			return googlemetricpb.MetricDescriptor_GAUGE, googlemetricpb.MetricDescriptor_DOUBLE
		}
	case metricdata.Histogram:
		return googlemetricpb.MetricDescriptor_CUMULATIVE, googlemetricpb.MetricDescriptor_DISTRIBUTION
	default:
		return googlemetricpb.MetricDescriptor_METRIC_KIND_UNSPECIFIED, googlemetricpb.MetricDescriptor_VALUE_TYPE_UNSPECIFIED
	}
}

// recordToMpb converts data from records to Metric proto type for Cloud Monitoring.
func (me *metricExporter) recordToMpb(metrics metricdata.Metrics, attributes attribute.Set, library instrumentation.Library, extraLabels *attribute.Set) *googlemetricpb.Metric {
	me.mdLock.RLock()
	defer me.mdLock.RUnlock()
	k := keyOf(metrics, library)
	md, ok := me.mdCache[k]
	if !ok {
		md = me.recordToMdpb(metrics, extraLabels)
	}

	labels := make(map[string]string)
	addAttributes := func(attr *attribute.Set) {
		iter := attr.Iter()
		for iter.Next() {
			kv := iter.Attribute()
			labels[normalizeLabelKey(string(kv.Key))] = sanitizeUTF8(kv.Value.Emit())
		}
	}
	addAttributes(extraLabels)
	addAttributes(&attributes)

	return &googlemetricpb.Metric{
		Type:   md.Type,
		Labels: labels,
	}
}

// recordToTspb converts record to TimeSeries proto type with common resource.
// ref. https://cloud.google.com/monitoring/api/ref_v3/rest/v3/TimeSeries
func (me *metricExporter) recordToTspb(m metricdata.Metrics, mr *monitoredrespb.MonitoredResource, library instrumentation.Scope, extraLabels *attribute.Set) ([]*monitoringpb.TimeSeries, error) {
	var tss []*monitoringpb.TimeSeries
	var aggErr error
	if m.Data == nil {
		return nil, nil
	}
	switch a := m.Data.(type) {
	case metricdata.Gauge[int64]:
		for _, point := range a.DataPoints {
			ts, err := gaugeToTimeSeries[int64](point, m, mr)
			if err != nil {
				aggErr = multierr.Append(aggErr, err)
				continue
			}
			ts.Metric = me.recordToMpb(m, point.Attributes, library, extraLabels)
			tss = append(tss, ts)
		}
	case metricdata.Gauge[float64]:
		for _, point := range a.DataPoints {
			ts, err := gaugeToTimeSeries[float64](point, m, mr)
			if err != nil {
				aggErr = multierr.Append(aggErr, err)
				continue
			}
			ts.Metric = me.recordToMpb(m, point.Attributes, library, extraLabels)
			tss = append(tss, ts)
		}
	case metricdata.Sum[int64]:
		for _, point := range a.DataPoints {
			var ts *monitoringpb.TimeSeries
			var err error
			if a.IsMonotonic {
				ts, err = sumToTimeSeries[int64](point, m, mr)
			} else {
				// Send non-monotonic sums as gauges
				ts, err = gaugeToTimeSeries[int64](point, m, mr)
			}
			if err != nil {
				aggErr = multierr.Append(aggErr, err)
				continue
			}
			ts.Metric = me.recordToMpb(m, point.Attributes, library, extraLabels)
			tss = append(tss, ts)
		}
	case metricdata.Sum[float64]:
		for _, point := range a.DataPoints {
			var ts *monitoringpb.TimeSeries
			var err error
			if a.IsMonotonic {
				ts, err = sumToTimeSeries[float64](point, m, mr)
			} else {
				// Send non-monotonic sums as gauges
				ts, err = gaugeToTimeSeries[float64](point, m, mr)
			}
			if err != nil {
				aggErr = multierr.Append(aggErr, err)
				continue
			}
			ts.Metric = me.recordToMpb(m, point.Attributes, library, extraLabels)
			tss = append(tss, ts)
		}
	case metricdata.Histogram:
		for _, point := range a.DataPoints {
			ts, err := histogramToTimeSeries(point, m, mr)
			if err != nil {
				aggErr = multierr.Append(aggErr, err)
				continue
			}
			ts.Metric = me.recordToMpb(m, point.Attributes, library, extraLabels)
			tss = append(tss, ts)
		}
	default:
		aggErr = multierr.Append(aggErr, errUnexpectedAggregationKind{kind: reflect.TypeOf(m.Data).String()})
	}
	return tss, aggErr
}

func sanitizeUTF8(s string) string {
	return strings.ToValidUTF8(s, "�")
}

func gaugeToTimeSeries[N int64 | float64](point metricdata.DataPoint[N], metrics metricdata.Metrics, mr *monitoredrespb.MonitoredResource) (*monitoringpb.TimeSeries, error) {
	value, valueType := numberDataPointToValue(point)
	timestamp := timestamppb.New(point.Time)
	if err := timestamp.CheckValid(); err != nil {
		return nil, err
	}
	return &monitoringpb.TimeSeries{
		Resource:   mr,
		Unit:       string(metrics.Unit),
		MetricKind: googlemetricpb.MetricDescriptor_GAUGE,
		ValueType:  valueType,
		Points: []*monitoringpb.Point{{
			Interval: &monitoringpb.TimeInterval{
				EndTime: timestamp,
			},
			Value: value,
		}},
	}, nil
}

func sumToTimeSeries[N int64 | float64](point metricdata.DataPoint[N], metrics metricdata.Metrics, mr *monitoredrespb.MonitoredResource) (*monitoringpb.TimeSeries, error) {
	interval, err := toNonemptyTimeIntervalpb(point.StartTime, point.Time)
	if err != nil {
		return nil, err
	}
	value, valueType := numberDataPointToValue[N](point)
	return &monitoringpb.TimeSeries{
		Resource:   mr,
		Unit:       string(metrics.Unit),
		MetricKind: googlemetricpb.MetricDescriptor_CUMULATIVE,
		ValueType:  valueType,
		Points: []*monitoringpb.Point{{
			Interval: interval,
			Value:    value,
		}},
	}, nil
}

func histogramToTimeSeries(point metricdata.HistogramDataPoint, metrics metricdata.Metrics, mr *monitoredrespb.MonitoredResource) (*monitoringpb.TimeSeries, error) {
	interval, err := toNonemptyTimeIntervalpb(point.StartTime, point.Time)
	if err != nil {
		return nil, err
	}
	return &monitoringpb.TimeSeries{
		Resource:   mr,
		Unit:       string(metrics.Unit),
		MetricKind: googlemetricpb.MetricDescriptor_CUMULATIVE,
		ValueType:  googlemetricpb.MetricDescriptor_DISTRIBUTION,
		Points: []*monitoringpb.Point{{
			Interval: interval,
			Value:    histToTypedValue(point),
		}},
	}, nil
}

func toNonemptyTimeIntervalpb(start, end time.Time) (*monitoringpb.TimeInterval, error) {
	// The end time of a new interval must be at least a millisecond after the end time of the
	// previous interval, for all non-gauge types.
	// https://cloud.google.com/monitoring/api/ref_v3/rpc/google.monitoring.v3#timeinterval
	if end.Sub(start).Milliseconds() <= 1 {
		end = start.Add(time.Millisecond)
	}
	startpb := timestamppb.New(start)
	endpb := timestamppb.New(end)
	err := multierr.Combine(
		startpb.CheckValid(),
		endpb.CheckValid(),
	)
	if err != nil {
		return nil, err
	}

	return &monitoringpb.TimeInterval{
		StartTime: startpb,
		EndTime:   endpb,
	}, nil
}

func histToTypedValue(hist metricdata.HistogramDataPoint) *monitoringpb.TypedValue {
	counts := make([]int64, len(hist.BucketCounts))
	for i, v := range hist.BucketCounts {
		counts[i] = int64(v)
	}
	var mean float64
	if !math.IsNaN(hist.Sum) && hist.Count > 0 { // Avoid divide-by-zero
		mean = hist.Sum / float64(hist.Count)
	}
	return &monitoringpb.TypedValue{
		Value: &monitoringpb.TypedValue_DistributionValue{
			DistributionValue: &distribution.Distribution{
				Count:        int64(hist.Count),
				Mean:         mean,
				BucketCounts: counts,
				BucketOptions: &distribution.Distribution_BucketOptions{
					Options: &distribution.Distribution_BucketOptions_ExplicitBuckets{
						ExplicitBuckets: &distribution.Distribution_BucketOptions_Explicit{
							Bounds: hist.Bounds,
						},
					},
				},
				// TODO: support exemplars
			},
		},
	}
}

func numberDataPointToValue[N int64 | float64](
	point metricdata.DataPoint[N],
) (*monitoringpb.TypedValue, googlemetricpb.MetricDescriptor_ValueType) {
	switch v := any(point.Value).(type) {
	case int64:
		return &monitoringpb.TypedValue{Value: &monitoringpb.TypedValue_Int64Value{
				Int64Value: v,
			}},
			googlemetricpb.MetricDescriptor_INT64
	case float64:
		return &monitoringpb.TypedValue{Value: &monitoringpb.TypedValue_DoubleValue{
				DoubleValue: v,
			}},
			googlemetricpb.MetricDescriptor_DOUBLE
	}
	// It is impossible to reach this statement
	return nil, googlemetricpb.MetricDescriptor_INT64
}

// https://github.com/googleapis/googleapis/blob/c4c562f89acce603fb189679836712d08c7f8584/google/api/metric.proto#L149
//
// > The label key name must follow:
// >
// > * Only upper and lower-case letters, digits and underscores (_) are
// >   allowed.
// > * Label name must start with a letter or digit.
// > * The maximum length of a label name is 100 characters.
//
//	Note: this does not truncate if a label is too long.
func normalizeLabelKey(s string) string {
	if len(s) == 0 {
		return s
	}
	s = strings.Map(sanitizeRune, s)
	if unicode.IsDigit(rune(s[0])) {
		s = "key_" + s
	}
	return s
}

// converts anything that is not a letter or digit to an underscore
func sanitizeRune(r rune) rune {
	if unicode.IsLetter(r) || unicode.IsDigit(r) {
		return r
	}
	// Everything else turns into an underscore
	return '_'
}

redpajama_set_name: RedPajamaGithub