Located 300 metres from Palais des Festivals de Cannes, Apartment Cannes ST-1548 offers accommodation in Cannes. The unit is 3.8 km from Fort Royal.
A dishwasher, a microwave and a fridge can be found in the kitchenette. A TV is featured.
Lérins Abbey is 6 km from Apartment Cannes ST-1548, while Cannes Media Library is 300 metres from the property. Côte d'Azur Airport is 20 km away.
Bed linen and towels are not included in the room rate. Guests can rent them at the property for an additional charge of 30 EUR per person per stay or bring their own.
Consumption costs are included in the room rate. Please note that the full amount of the reservation is due before arrival. NOVASOL will send a confirmation with detailed payment information. After full payment is taken, the property's details, including the address and where to collect keys, will be emailed to you.


Tallulah Gorge in Georgia, USA during fall season.
Loch Ard Gorge along the famous Great Ocean Road in Victoria, Australia, near Port Campbell and The Twelve Apostles. Long exposure.
Twelve apostles marina park on Great Ocean road view towards razorback thin limestone rock cut off shipwreck coast from Loch ard gorge side at sunset.
Karst mountain landscape on the Li River in Xingping, Guangxi Province, China.
The Vista House overlooks the Columbia Gorge at Crown Point near Portland, Oregon.
Karst Mountains of Xingping, China.
Guilin, China on the Li River.
Ronda, Malaga Province, Andalusia, southern Spain. The town on both sides of the El Tajo gorge, seen from below.
Ironbridge Gorge in Telford, Shropshire, England, World Heritage Site.
Yangshuo, China Karst Mountain landscape.
The Millau viaduct spans the Gorge du Tarn in Midi-Pyrénées, France.
The Dalles Dam, Columbia River Gorge.
Gorton Creek through lush rainforest in the Columbia River Gorge, Oregon, USA.
Leopard Rock overhanging the spectacular Umzimkulu River Valley in Oribi Gorge. KwaZulu Natal. South Africa.
Amazing view into Weano Gorge.


text:
The Phan River () is a river of Bình Thuận Province, Vietnam. It flows for 55 kilometres.

References

Rivers of Bình Thuận province
Rivers of Vietnam

redpajama_set_name: RedPajamaWikipedia


You are invited to attend a very unique art auction.
We will auction over 50 very morbid and some very rare antique art prints!
These are very old original prints ranging in age from the early 16th century to the early 20th century, all very dark subject matter!
Each print has been framed in antique frames and are ready for hanging.
So please join us, this will be a cash and carry, live auction held at Skull and Bones Gallery on Sunday, November 4th.
Preview is at 3:00 pm and the auction will commence at 5:00 pm.
2-1767 Portage Ave. (2nd Floor), Winnipeg.
call 204 889 3943 for inquiries.
1- Lion Tamer Ellen Bright Being Mauled to Death by a Tiger in 1851. Original steel plate engraving Printed in 1852. From a German magazine published in 1852.
2- Gustave Dore, Satan Resting On The Mountain, leaf from Milton's Paradise Lost and Paradise Regained, original woodcut printed in 1895.
About The Artist: Gustave Doré was an Alsacian artist who specialized in book illustrations. Born in Strasbourg, France, on January 6, 1832, he began his artistic career in Paris when he was only 15 years old. His drawings and illustrations were groundbreaking and very popular, although he never won the acclaim of the artistic elite in France. In his later years, he spent much time in London, where he also opened a very popular gallery. He died on January 23, 1883, at the age of 51.
3- Dance of Death - "The Empress". Extremely rare Dance of Death print by the Swiss artist Jacques-Antony Chovin after Merian. Hand coloured copper engraving printed and coloured in 1820, in Switzerland.
Dance after, the dance is mine.
Death has here sneaked up on you too.
My proud body had much pleasure.
I lived as an emperor's wife.
Now I must come to this dance.
All spirits and joy have been taken from me.
The Dance of Death from Basel was in particular made famous through the copperplates that Matthäus Merian created 1616-1649. Merian's copperplates along with later impressions made by Chovin, Beck and Felix Schneider were published in editions through several centuries and made Basel's dance of death world famous throughout Europe.
Matthäus Merian is considered to be the person who has made the most complete and reliable representation of the dance of death in Basel.
4- Ostrich Skeleton, engraving from "Physica Sacra" (Kupfer-Tafeln zu der Physica Sacra, Augsburg: Pfeffel , 1731), By Johann Jakob Scheuchzer. Printed in 1731.
This original copper engraving is from the monumental work by the palaeontologist Johann Jakob Scheuchzer (Aug.2, 1672- June 23, 1733), who believed in the literal meaning of the Bible. For instance, he believed that the Great Flood happened and was convinced that he had in his fossil collection the remains of a human victim who had perished in that Flood. Scheuchzer published this work, attempting to illustrate and help to explain the entire Bible based on the latest state of scientific knowledge, which turned out to be one of the most expensive Bible productions ever. The engraver signed the engraving and there are many signatories, showing that there was a large group of artists and artisans that worked on this wonderful undertaking.
5- "The Voice of the Tocsin" by A. Maignan, engraved by Gebbie & Husson printed in 1888.
A copy of this print was displayed at the 1889 Paris World Exhibition, which was a time of celebration and remembrance of the French Revolution. A tocsin is an alarm bell.
Had the French artist gone for his title to Shakespeare, he might have labelled this picture with an appropriate motto: "The harsh and "boisterous tongue of war."
The tricolor torn and given to the breeze, the smoke and flame tell of the demon of destruction, and the clouded air is charged with death and rapine and murder. We heard a worthy New Yorker say when he beheld this picture in the Paris Exposition: "I feel like running to a fire somewhere."
Albert Maignan was born at Beaumont in 1847; studied under Luminais; received his first medal in 1874, another in 1876 and 1879; his painting of Dante Encountering Mathilde received the honour of the Luxembourg in 1881. He received a gold medal at the Paris Exposition, 1889.
6- Adolf Hering, "Der Tod und das Madchen" (Death and the Maiden), Antique Postcard.
7- Rare hand coloured copper plate engraving printed in 1799. From a rare edition of "Histoire Naturelle, Generele et Particuliere" by George- Louis Leclerc, Comte de Buffon, Published in Paris, By DuFart.
8- "Death & The Woodcutter" by Gustav Dore, leaf from Fontaines Fables printed in 1870.
9- Dance of Death - "The Empress", by Wenceslaus Hollar, Printed in 1804. Based on Holbein's Dance of Death.
Ye also must be trodden low.
10- Dance of Death - "The Duchess", by D. Deuchar, , printed in 1803. Based on Holbein's Dance of Death.
On which thou art about to lie.
And, vain one! thou must surely die.
11- Original page from an 1871 issue of the UK weekly newspaper, The Graphic.
In 1871 there was conflict in Paris between a government known as the Paris Commune and loyalist Versailles troops, these troops and members of the national guard went around and burnt down many buildings in Paris. As part of a propaganda campaign the powers that be at the time came up with Les Pétroleuses, who, according to rumours at the time were a group of lower class women who went around using petroleum (molotov cocktails) to burn down the buildings in Paris. It turned out later that this was a completely made up story, there were no Pétroleuses, and no women were ever convicted of burning down buildings during the uprising.
This print survives as an original piece of that propaganda.
12- "Gods Acre" Steel Plate Engraving by Miss E. Osborne and H. Bourne printed in the 1870's.
13- Antique Medical Print from "Dictionnaire Histoire Naturelle" by Charles d'Orbigny (1802-1857). Hand coloured engraving printed in 1849.
Charles d'Orbigny was a French naturalist who made major contributions in many areas, including zoology, malacology, palaeontology, geology, archaeology and anthropology. D'Orbigny travelled on a mission for the Paris Museum, in South America between 1826 and 1833, and returned to France with an enormous collection of more than 10,000 natural history specimens. He described part of his findings in La Relation du Voyage dans l'Amérique Méridionale pendant les annés 1826 à 1833. His contemporary, Charles Darwin called this book "one of the great monuments of science in the 19th century". In 1853 he became professor of palaeontology at the Paris Muséum National d'Histoire Naturelle, his Dictionnaire Universel d'Histoire Naturelle published in 1849 by Renard & Martinet, Paris is considered by many experts to be the finest and best illustrated natural history work of the era.
14- Rowlandson's English Dance of Death. Printed in 1903 based on an early 1800's aquatint by Rowlandson.
15- Original woodcut from "Icones Historiarum Veteris Testamentihans". Shadrach, Meshach cast into the fire, from a suite of woodcuts designed by Hans Holbein the younger (1497-1543), printed in 1525.
The engraver for this series is Hans Lutzenburger (died 1526), a German engraver probably from Augsburg who was a citizen of Basel in 1505 and member of the academy of painters from Basel in 1508.
He was a German artist and printmaker who worked in a Northern Renaissance style. He is best known for his numerous portraits and his woodcut series of the Dance of Death. Holbein was born in Augsburg, Bavaria and learned painting from his father Hans Holbein the Elder. Later he went with his brother Ambrosius Holbein to Basel where he met many scholars, among them the Dutch humanist Erasmus. Holbein was asked by Erasmus to illustrate his satires. He also illustrated other books, and contributed to Martin Luther's translation of the Bible. Like his father, he designed stained glass windows and painted portraits.
This work, together with his Dance of Death is counted among his major achievements in woodcut series.
16- Greenwood Cemetery- Brooklyn, NY. by Rudolf Cronau, woodcut from an art journal printed in 1881.
17- "The Bathos", From the Original of design by William Hogarth. Very fine, steel engraving printed circa 1850. Surreal image of Satan at the end of the world!
18- "Death of Lucretia", Leaf from Galerie du Palais Royal by Couche & Builliard, Paris. Printed in 1786.
19- "The Death of Chramn", Luminais, Steel Plate Photogravure printed in the 1880's.
Chram rose in rebellion against his father Chlothar, a king of the Franks, on several occasions. Following one of these rebellions, he fled with his wife and children to the court of Chanao, the ruler of Brittany, pursued by his father. Chlotar gave battle to the combined forces of Chanao and Chram, and his army was successful; the Breton leader was killed, and Chram, delayed in making his escape by sea because of his concern for his family's safety, was captured. Chlothar gave orders that they should be burned, but Chram was strangled before being placed in a cottage, which was subsequently burned. Chlothar reportedly died of remorse later that year.
1. Phyllostoma spectrum - Vampire Bat.
2. Pteropus edulis . Kalong Bat.
3. Molossus Velox. Bulldog Bat.
Original steel engraving, printed in the 1800's.
21- Dance of Death - "The Merchant". Extremely rare Dance of Death print by the Swiss artist Jacques-Antony Chovin after Merian. Hand coloured copper engraving printed and coloured in 1820, in Switzerland.
22- Les Imfiniment Pette. Original steel engraving printed in the 1800's. Very detailed print of a wizard showing a fellow a magic mirror, skull and snake near the ground. Very rare print!
23- Junfern Kuss (Iron Maiden), from a magazine printed in 1876.
24- Original woodblock print of two men being burnt at the stake. Leaf from Sebastian Münster's "Cosmography", printed in 1568 (Reverse has an image of men harvesting wheat but is not visible in the frame).
This leaf originally appeared in this monumental 16th century landmark work, which was one of the earliest attempts in Europe to systematically and accurately organize, describe and depict the entire world as it was then known. It is encyclopedic in nature and scope, and discusses the various cultures, topography and history for all parts of the world -- much of it speculative and wildly inaccurate. It should be pointed out that Münster was writing this book only some 50 year or so after Columbus discovered the Americas, and thus captures the world through the eyes of this Renaissance/ early modern Europe era.
25- Collection of antique poison labels from the 1800's.
26- Original Hand Coloured Woodcut by Hans Weiditz. Leaf from a book originally published in Frankfurt in 1532, this leaf is possibly from a later edition printed between 1590 to 1620.
From Francesco Petrarca's Book entitled: Hülff Trost und Rath in allem anligen der Menschen. Francisci Petrarche... zwei Trostbücher von Artznei und Rath beyde im güten und widerwertigen Glück.
Hans Weiditz the Younger, Hans Weiditz der Jüngere, Hans Weiditz II (1495 Freiburg im Breisgau - c1537 Bern), was a German Renaissance artist, also known as The Petrarch Master for his woodcuts illustrating Petrarch's De remediis utriusque fortunae, or Remedies for Both Good and Bad Fortune, or Phisicke Against Fortune. He is best known today for his very lively scenes and caricatures of working life and people, many created to illustrate the abstract philosophical maxims of Cicero and Petrarch.
27- Leutemann, Reynard and Merknau from "Reynard the Fox" printed in the 1860's.
28- Jan Luyken, etching from "This Unworthy World" Printed in Amsterdam in 1710.
and This Unworthy World (1710), illustrated with his own etchings.
The world is personalized by a sphere with a cross on it.
Amsterdam born artist, engraver and poet Jan Luyken (1649-1712) was a very important etcher in the period after Rembrandt. His artistry is distinguished by its clarity and detail.
Jan Luyken was born in Amsterdam on April 16, 1649, into a family that had become Mennonites shortly before his birth. His father was a schoolteacher and writer. Jan Luyken was nineteen years old when his father died. After his father's death, he began to study painting at the studio of Martins Saeghmolen. Although Luyken became a fine painter, he eventually concentrated solely on being an engraver. While studying with Saeghmolen, Jan Luyken began to frequent the tavern, Zaete Rust (Sweet Rest), run by the innkeeper poet, Jan Zoet. At this time Jan Luyken began to write sensual love poetry. By 1673, Jan Luyken was twenty-four years old and a celebrated artist and poet. He had also married and had a two-year old son, named Casper. At this point, though, he turned his back on his former life and became a devout Christian, renewing his ties to the Mennonite church. The son, Casper, was a fine engraver himself, and worked closely with his father.
29- Antique postcard, Capuchin Catacomb, Palermo, Sicily.
30- Death Receiving his Latest Victim, Woodcut signed C. Kangey from an antique book of Goethe's works. Printed in 1885.
31- Hallstatt Salzkammergut, Beinhaus Antique postcard of an Austrian "Bonehouse" (Beinhaus).
32- "La Jeune Fille et la Morte" (The young girl and Death), Original etching by Leon Gaucherel from Sarah Bernhardt's (now lost) original Memento Mori painting, displayed in the 1880 Paris Salon. Printed in 1880. Very rare print!
33- "The Gambler". Original D. Deuchar, Dance of Death, printed in 1803. Based on Holbein's Dance of Death.
For Death is better now than life.
35- "The Departure of Witches" by Luis Falero from an antique art journal printed in 1902.
36- Rowlandson's English Dance of Death. Printed in 1903 based on an early 1800's aquatint by Rowlandson.
37- "Les Oubles" (The Forgotten), Salon de Paris 1894, Girardet.
38- Nosce te Ipsum (Know Thyself), Illustration of a Bible scene, Engraving from "Physica Sacra" (Kupfer-Tafeln zu der Physica Sacra. Augsburg: Pfeffel , 1731), By Johann Jakob Scheuchzer. Printed in 1731.
39- "Funeral Vault Of The Imperial Family" (Church Of The Capuchins Vienna), Drawn by W.H.Bartlett, Engraved by E.I.Roberts, printed in 1840.
William Henry Bartlett born in 1809, became one of the foremost illustrators of Topography of his generation, a prolific print Illustrator he travelled extensively.
This Print is from his travels and was published in "The Danube" a book by William Beattie in 1840.
40- Antique Medical Print from "Dictionnaire Histoire Naturelle" by Charles d'Orbigny (1802-1857). Hand coloured engraving printed in 1849.
41- "To nature and your self appeal, nor learn of others what to feel.", by William Hogarth. Original engraving produced in the 1840's. Very detailed and very unusual!
42- William Hogarth, Grave Diggers Gambling on a Coffin. Very detailed engraving. Produced by Nicol Pall-Mall and Boydell Cheapside between 1791 to 1798.
43- Rowlandson's English Dance of Death. Printed in 1903 based on an early 1800's aquatint by Rowlandson.
44- Antique Etching of two Skeletons embracing each other, Unknown artist and unknown age, possibly 1950's or earlier. Very fine print.
46- The Visions of Dom Claude, His Hallucinations by Lamplight, By Luc Olivier Merson and Gery Bichard. From Victor Hugos "Quasimodo" Printed in the 1890's.
47- "The Procession of Death", from a painting by Spangenberg. From an old art journal (Text and image on reverse) printed in 1892.
48- Antique postcard, "Palermo Catacombe dei Cappucini".
49- "The Death of Cleopatra" original steel plate engraving, printed in the 1860's or 1870's.
By Jones Quain, M.D.. Printed in 1854 (third edition) Very rare.
Bones, Plate 15 - Posterior View of Skeleton.
Bones, Plate 24 - Bones of the Femur.
52- Very rare hand coloured engraving, "Deadly Nightshade", from "Das Buch der Welt" (The Book of the World), printed in 1852.
54- Le Mort et le Bucheron (Death and the Woodcutter),Very Rare 19th Century Hand Colored engraving by Jules David, from Jean de la Fontaines Fables, Gouget Edition. Possibly printed in the 1830's.
55- Dance of Death, Original Hand Coloured Etching based on a painting by Kaspar Meglinger from his Dance of Death (Der Todtentanz) which consisted of 67 paintings which he painted between 1626 to 1635 on the Spreuer Bridge in Lucerne, Switzerland. Leaf from Der Todtentanz published in the late 1800's, Rare Edition.


We offer pest prevention consultancy services to businesses, either as a one-off consultation or as part of your contractual pest management services package.
We find many of our clients choose our consultancy services because it gives them piece of mind and achievable solutions; enabling them to help manage ongoing pest control at their premises.
To find out more about our consultation services for pest management or if you would like us to provide a quote for assessing the pest control needs for your premises please contact us.


coal beneficiation process plant suppliers in china . coal beneficiation process plant suppliers in china Mobile Equipments In Beneficiation Plant Supplier in China.
coal beneficiation process plant suppliers in china - AKJM. coal beneficiation process plant suppliers in china.
dry clean beneficiation of coal plant suppliers . 21 Jan 214 ... China. coal beneficiation wet process introduce is manufactured from Shanghai Xuanshi,It is the .
coal beneficiation process plant suppliers in china. We are the manufacturer of coal mining machine,roadheader,coal loader,tunnel mucking loader,backfilling machine,concerte pumping machine and so on. coal beneficiation process plant suppliers in china manufacturer, supplier.
coal beneficiation process plant suppliers in china. Coal beneficiation plant suppliers mining equipment,chrome ore beneficiation plant supplier in china .
coal beneficiation process plant suppliers in ... coal beneficiation plant suppliers from china. coal beneficiation plant suppliers from china.


Each year, thousands of pedestrians, bicyclists, or joggers are killed by the car accidents. According to statistics, most of these cars accidents happen after the sunsets. It will be easy to spot if wearing reflective clothing.
In order to let people know the importance of wearing a safety clothing. Consumer Reports tested several options: dark color vest, white color vest, and an inexpensive safety vest. It turns out that the safety vest stood out from the rest and was easy to see, it can be seen far from 300 feet, the distance it takes for a car to stop if it's going 60 miles per hour. It's really important that the garment you wear can be seen from the front and the back. And the more reflective pieces, the better. You can also up your safety game with the addition of accessories like a battery-operated wristband or a reflective ankle band. And when they move up and down as you're biking or running, they really stand out.


Brian Allen of Flyland Designs contacted me last week and provided me with a brush set with the humble request to review his site.
I can say without a doubt that I would recommend his brush set first. A low price of $2.99, a hundred brushes and, most of all, demonstrations of most of them at work. You're essentially purchasing a brush pack with a tutorial. At that low price, there's really no competitor that I know of at the moment.
The inking brushes include a mixture between textured inks and classic replications of older brushes. If you're coming from Manga Studio 4 and are looking for faithful reproductions of some of the older tools, this brush pack provides them.
My personal favorites are the pencil brushes. Some of them are sketchy and some of them could probably be used for inking. They find that careful balance between soft and hard where sketching experience becomes fluid. Sketching and inking merge into a cohesive experience instead of being two different disciplines. It makes the overall journey towards cleaner art much more satisfying.
For expert artists, demonstrations aren't that important, but it is a critical touch for brush packs. There is a sense of guidance that comes from his examples. A human touch completes the pack. Seeing how the brush designer uses drawing tools helps the user understand how the brush works, how the user can adjust their settings to better suit the brush, and simply know with a sense of confidence that they work. I remember the times I would dig through DeviantArt for Photoshop brush packs and spend more time trying to figure out how things fit into place instead of drawing.
Throughout the week, I'll be posting drawings with this brush set. It's something I haven't done before or done much of to begin with, but it's worth it.
You can find the brush set and demonstration videos here.


text:
Columbia Pictures/YouTube
22 Kids Movies From The '80s To Watch With Your Kids & Relive All Over Again
By Chrissy Bobic
Being able to share your favorite movies from your childhood with your kids is like a rite of passage. I couldn't wait for the day when my son was old enough to appreciate Ghostbusters and The Goonies, and little does he know, that's just the tip of the iceberg. But the kids movies from the '80s to watch with your kids aren't limited to those two gems or any of the others on this list.
I may have been born on the latter end of the decade, but I know the value in a solid '80s movie, of which there seems to be an endless supply. I can still appreciate movies from the '90s and more recent releases, because I also love how far we have come cinematically. But there are so many '80s movies that a lot of parents grew up with and should now pass down to their own kids. As a parent, I believe it's my duty to do just that.
Maybe my son doesn't yet love Bill & Ted's Excellent Adventure, but there's still plenty of time to indoctrinate him. There are just too many kids movies from the '80s to not give your kids a taste of a memorable decade, even if it was a fleeting memory of your own childhood. So while there might be some missing here depending on personal preference, these are 22 of the best kids movies from the '80s to watch with your kids and indulge in some sweet sweet nostalgia.
Warner Bros./YouTube
If you ever watched The Goonies and didn't want to go on a pirate treasure hunting adventure with your own friends for some "rich stuff," did you ever really watch The Goonies?
The sequel was, to me, just as good as the movie that started it all. But I recommend introducing your kid to the original Ghostbusters first to ease them into the world of slime and Bill Murray.
The great thing about E.T. is that, while it does show an actual alien, there's nothing inherently scary about it. Most kids will get a kick out of watching E.T. and Elliot's friendship without being too freaked out by the alien himself.
Twentieth Century Fox/YouTube
We all know that there are some semi-adult themes peppered in throughout The Princess Bride. At its core, however, it's one of those hilarious prince and princess movies that everyone can enjoy. Think of it as the first movie about a princess falling in love that actually makes fun of the whole thing.
Variety reported that streaming platform WarnerMedia will premiere an animated Gremlins series to serve as a prequel to the 1984 movie. There's no better time to introduce your kid to the alcoholic and light-averse creatures than now.
Beetlejuice does deal with the afterlife and demons, so if your kid may not be able to handle that yet, feel free to hold off on this one. For the most part, however, Beetlejuice is pretty tame with the horror while being hilarious in other spots.
As a kid, Little Monsters made me wonder if there was an entire monster dimension living under my bed too. As an adult, I can't help but wonder how Fred Savage's character sneaks out of his room every night without his parents finding out.
Universal Pictures/YouTube
If your kid transitioned out of the animation phase and toggles back and forth between animation and live action like my kid does, then Back to the Future is another one they should be able to appreciate. Just don't be surprised if they ask you where your flux capacitor is the next time you get in the car.
Honey, I Shrunk The Kids
This is another one that had sequels follow it. But it's always best to start with the source material and Honey, I Shrunk the Kids will definitely play with your kid's imagination.
When Bastian hides in the school attic to read a book called The Neverending Story, he starts to recognize a character as himself and begins to wonder if the story is actually real. This is definitely one of those movies that might inspire your kid to suddenly believe they, too, are part of some fantastical story elsewhere, so you have been warned.
Touchtone Pictures/YouTube
I am well aware of Jessica Rabbit's, ahem, assets, and the fact that there is some heavy cartoon violence in Who Framed Roger Rabbit. But it's also rated PG, so if you think your kid can handle it, then I'm sure they can.
John Candy plays the title character, who unexpectedly has to care for his nieces and nephew when their parents are called out of town for an emergency. Obviously he's as goofy and carefree as you'd expect and there was probably no one better than Candy to have filled the role.
Indiana Jones And The Raiders of the Lost Ark
No one is ever too old or too young for Indiana Jones's adventures. So do it up old school with this one from 1981.
Sarah Jessica Parker and Helen Hunt are basically babies in this under the radar '80s movie. As teenagers, they played two new best friends who find adventure in a TV dance competition show while competing with your typical '80s movie bullies.
As is universally understood, Tom Hanks can do no wrong. Big is another example of that, as he plays a kid who finds himself in a grownup body and has to learn to adult with the help of his kid best friend.
There aren't many animated '80s movies on this list, but The Little Mermaid is essential for your kid's movie memory bank. I'm not wild about the protagonist being a girl who loses her voice and finds a husband who loves her that way, but it's still a Disney staple.
As the only other animated movie from the '80s that I feel is a must watch with your kids, The Land Before Time gets a lot of credit from me. It tells the heartbreaking story of a dinosaur who loses his mom to another, more vicious one, and follows him on a journey to find his true home.
Look Who's Talking
There are some adult themes and jokes in Look Who's Talking meant for the parents to understand while the kids enjoy the talking baby. But the talking baby is where it's at and what kid can't appreciate that?
There are just some '80s classics that you can't live without and I think The Karate Kid is one of them. Any story about an underdog who rises up to overcome a group of bullies is one that kids should probably pay attention to.
Long before MTV used the name to make their own dark version of the '80s movie, Michael J. Fox starred as the title character in Teen Wolf, wherein he became a popular high school jock in full wolf form. He has to learn to manage his life as both a human and werewolf, which he miraculously does.
While you enjoy some primo vintage Keanu Reeves, your kids can get a roundabout history lesson without even realizing it as the title characters go back in time and bring important historical figures to their present day shopping mall.
Pee-Wee's Big Adventure
If your kid can get past Pee-Wee Herman's utter strangeness, then they will definitely appreciate his wacky nature and attitude throughout his movie. It gets bonus points for featuring a Rube Goldberg breakfast making machine, as was customary for most '80s movies.
There are a lot of other kids movies from the '80s that you might prefer to watch with your kid more than these, but I feel like this is the perfect jumping off point. Whether you're still dealing with the toddler stage or your kid is teetering on the horrifying pre-teen years, these movies can provide a fun and easy way to bond while indulging in the classics.

redpajama_set_name: RedPajamaCommonCrawl


text:
package com.gemstone.gemfire.internal.security;

import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.security.Principal;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.gemstone.gemfire.cache.Cache;
import com.gemstone.gemfire.cache.InterestResultPolicy;
import com.gemstone.gemfire.cache.operations.*;
import com.gemstone.gemfire.cache.operations.internal.GetOperationContextImpl;
import com.gemstone.gemfire.distributed.DistributedMember;
import com.gemstone.gemfire.i18n.LogWriterI18n;
import com.gemstone.gemfire.internal.ClassLoadUtil;
import com.gemstone.gemfire.internal.cache.operations.ContainsKeyOperationContext;
import com.gemstone.gemfire.internal.cache.tier.sockets.ClientProxyMembershipID;
import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
import com.gemstone.gemfire.security.AccessControl;
import com.gemstone.gemfire.security.NotAuthorizedException;

/**
 * This class implements authorization calls for various operations. It provides
 * methods to invoke authorization callback ({@link AccessControl#authorizeOperation})
 * before the actual operation to check for authorization (pre-processing) that
 * may modify the arguments to the operations. The data being passed for the
 * operation is encapsulated in a {@link OperationContext} object that can be
 * modified by the pre-processing authorization callbacks.
 *
 * @author Sumedh Wale
 * @since 5.5
 */
public class AuthorizeRequest {

  private AccessControl authzCallback;

  private final Principal principal;

  private boolean isPrincipalSerializable;

  private ClientProxyMembershipID id;

  private final LogWriterI18n logger;

  public AuthorizeRequest(String authzFactoryName, DistributedMember dm,
      Principal principal, Cache cache) throws ClassNotFoundException,
      NoSuchMethodException, IllegalAccessException, InvocationTargetException,
      NotAuthorizedException {

    this.principal = principal;
    if (this.principal instanceof Serializable) {
      this.isPrincipalSerializable = true;
    }
    else {
      this.isPrincipalSerializable = false;
    }

    this.logger = cache.getSecurityLoggerI18n();
    Method authzMethod = ClassLoadUtil.methodFromName(authzFactoryName);
    this.authzCallback = (AccessControl)authzMethod
        .invoke(null, (Object[])null);
    this.authzCallback.init(principal, dm, cache);
    this.id = null;
  }

  public AuthorizeRequest(String authzFactoryName, ClientProxyMembershipID id,
      Principal principal, Cache cache) throws ClassNotFoundException,
      NoSuchMethodException, IllegalAccessException, InvocationTargetException,
      NotAuthorizedException {
    this(authzFactoryName, id.getDistributedMember(), principal, cache);
    this.id = id;
    if (this.logger.infoEnabled()) {
      this.logger.info(
        LocalizedStrings.AuthorizeRequest_AUTHORIZEREQUEST_CLIENT_0_IS_SETTING_AUTHORIZATION_CALLBACK_TO_1,
        new Object[] {id, authzFactoryName});
    }
  }

  public AccessControl getAuthzCallback() {

    return this.authzCallback;
  }

  public GetOperationContext getAuthorize(String regionName, Object key,
      Object callbackArg) throws NotAuthorizedException {

    GetOperationContext getContext = new GetOperationContextImpl(key, false);
    getContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, getContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_GET_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      if (this.logger.fineEnabled()) {
        this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      }
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform GET operation on region [" + regionName
            + ']');
      }
    }
    return getContext;
  }

  public PutOperationContext putAuthorize(String regionName, Object key,
      Object value, boolean isObject, Object callbackArg)
      throws NotAuthorizedException {

    return putAuthorize(regionName, key, value, isObject,
        callbackArg, PutOperationContext.UNKNOWN);
  }

  public PutOperationContext putAuthorize(String regionName, Object key,
      Object value, boolean isObject, Object callbackArg, byte opType)
      throws NotAuthorizedException {

    PutOperationContext putContext = new PutOperationContext(key,
        value, isObject, opType, false);
    putContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, putContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_PUT_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform PUT operation on region [" + regionName
            + ']');
      }
    }
    return putContext;
  }

  public PutAllOperationContext putAllAuthorize(String regionName, Map map, Object callbackArg)
  throws NotAuthorizedException {
    PutAllOperationContext putAllContext = new PutAllOperationContext(map);
    putAllContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, putAllContext)) {
      final String errStr =
        LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_PUTALL_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      if (this.logger.warningEnabled()) {
        this.logger.warning(LocalizedStrings.TWO_ARG_COLON, new Object[] {this, errStr});
      }
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      } else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform PUTALL operation on region [" + regionName
            + ']');
      }

      // now since we've authorized to run PUTALL, we also need to verify all the
      // <key,value> are authorized to run PUT
      /* According to Jags and Suds, we will not auth PUT for PUTALL for now
       * We will only do auth once for each operation, i.e. PUTALL only
      Collection entries = map.entrySet();
      Iterator iterator = entries.iterator();
      Map.Entry mapEntry = null;
      while (iterator.hasNext()) {
        mapEntry = (Map.Entry)iterator.next();
        String currkey = (String)mapEntry.getKey();
        Object value = mapEntry.getValue();
        boolean isObject = true;
        if (value instanceof byte[]) {
          isObject = false;
        }
        byte[] serializedValue = ((CachedDeserializable)value).getSerializedValue();

        PutOperationContext putContext = new PutOperationContext(currkey,
            serializedValue, isObject, PutOperationContext.UNKNOWN, false);
        putContext.setCallbackArg(null);
        if (!this.authzCallback.authorizeOperation(regionName, putContext)) {
          String errStr = "Not authorized to perform PUT operation on region ["
              + regionName + ']' + " for key "+currkey +". PUTALL is not authorized either.";
          if (this.logger.warningEnabled()) {
            this.logger.warning(toString() + ": " + errStr);
          }
          if (this.isPrincipalSerializable) {
            throw new NotAuthorizedException(errStr, this.principal);
          }
          else {
            throw new NotAuthorizedException(errStr);
          }
        } else {
          if (this.logger.finestEnabled()) {
            this.logger.finest(toString()
                + ": PUT is authorized in PUTALL for "+currkey+" isObject("+isObject+") on region ["
                + regionName + ']');
          }
        }
      } // while iterating map
      */
    }
    return putAllContext;
  }

  public RemoveAllOperationContext removeAllAuthorize(String regionName, Collection<?> keys, Object callbackArg)
  throws NotAuthorizedException {
    RemoveAllOperationContext removeAllContext = new RemoveAllOperationContext(keys);
    removeAllContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, removeAllContext)) {
      final String errStr =
        LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_REMOVEALL_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      if (this.logger.warningEnabled()) {
        this.logger.warning(LocalizedStrings.TWO_ARG_COLON, new Object[] {this, errStr});
      }
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      } else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform removeAll operation on region [" + regionName
            + ']');
      }
    }
    return removeAllContext;
  }
  public DestroyOperationContext destroyAuthorize(String regionName,
      Object key, Object callbackArg) throws NotAuthorizedException {

    DestroyOperationContext destroyEntryContext = new DestroyOperationContext(
        key);
    destroyEntryContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, destroyEntryContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_DESTROY_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform DESTROY operation on region ["
            + regionName + ']');
      }
    }
    return destroyEntryContext;
  }

  public QueryOperationContext queryAuthorize(String queryString,
      Set regionNames) throws NotAuthorizedException {
    return queryAuthorize(queryString, regionNames, null);
  }

  public QueryOperationContext queryAuthorize(String queryString,
      Set regionNames, Object[] queryParams) throws NotAuthorizedException {

    if (regionNames == null) {
      regionNames = new HashSet();
    }
    QueryOperationContext queryContext = new QueryOperationContext(queryString,
        regionNames, false, queryParams);
    if (!this.authzCallback.authorizeOperation(null, queryContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFOM_QUERY_OPERATION_0_ON_THE_CACHE.toLocalizedString(queryString);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform QUERY operation [" + queryString
            + "] on cache");
      }
    }
    return queryContext;
  }

  public ExecuteCQOperationContext executeCQAuthorize(String cqName,
      String queryString, Set regionNames) throws NotAuthorizedException {

    if (regionNames == null) {
      regionNames = new HashSet();
    }
    ExecuteCQOperationContext executeCQContext = new ExecuteCQOperationContext(
        cqName, queryString, regionNames, false);
    if (!this.authzCallback.authorizeOperation(null, executeCQContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFOM_EXECUTE_CQ_OPERATION_0_ON_THE_CACHE.toLocalizedString(queryString);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform EXECUTE_CQ operation [" + queryString
            + "] on cache");
      }
    }
    return executeCQContext;
  }

  public void stopCQAuthorize(String cqName, String queryString, Set regionNames)
      throws NotAuthorizedException {

    StopCQOperationContext stopCQContext = new StopCQOperationContext(cqName,
        queryString, regionNames);
    if (!this.authzCallback.authorizeOperation(null, stopCQContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFOM_STOP_CQ_OPERATION_0_ON_THE_CACHE.toLocalizedString(cqName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform STOP_CQ operation [" + cqName + ','
            + queryString + "] on cache");
      }
    }
  }

  public void closeCQAuthorize(String cqName, String queryString,
      Set regionNames) throws NotAuthorizedException {

    CloseCQOperationContext closeCQContext = new CloseCQOperationContext(
        cqName, queryString, regionNames);
    if (!this.authzCallback.authorizeOperation(null, closeCQContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFOM_CLOSE_CQ_OPERATION_0_ON_THE_CACHE.toLocalizedString(cqName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform CLOSE_CQ operation [" + cqName + ','
            + queryString + "] on cache");
      }
    }
  }

  public void getDurableCQsAuthorize()
      throws NotAuthorizedException {

    GetDurableCQsOperationContext getDurableCQsContext = new GetDurableCQsOperationContext();
    if (!this.authzCallback.authorizeOperation(null, getDurableCQsContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_GET_DURABLE_CQS_OPERATION_0_ON_THE_CACHE.toLocalizedString();
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform GET_DURABLE_CQS operation on cache");
      }
    }
  }

  public RegionClearOperationContext clearAuthorize(String regionName,
      Object callbackArg) throws NotAuthorizedException {

    RegionClearOperationContext regionClearContext = new RegionClearOperationContext(
        false);
    regionClearContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, regionClearContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_REGION_CLEAR_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform REGION_CLEAR operation on region ["
            + regionName + ']');
      }
    }
    return regionClearContext;
  }

  public RegisterInterestOperationContext registerInterestAuthorize(
      String regionName, Object key, int interestType,
      InterestResultPolicy policy) throws NotAuthorizedException {

    RegisterInterestOperationContext registerInterestContext = new RegisterInterestOperationContext(
        key, InterestType.fromOrdinal((byte)interestType), policy);
    if (!this.authzCallback.authorizeOperation(regionName,
        registerInterestContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_REGISTER_INTEREST_OPERATION_FOR_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger
            .finest(toString()
                + ": Authorized to perform REGISTER_INTEREST operation for region ["
                + regionName + ']');
      }
    }
    return registerInterestContext;
  }

  public RegisterInterestOperationContext registerInterestListAuthorize(
      String regionName, List keys, InterestResultPolicy policy)
      throws NotAuthorizedException {

    RegisterInterestOperationContext registerInterestListContext;
    registerInterestListContext = new RegisterInterestOperationContext(keys,
        InterestType.LIST, policy);
    if (!this.authzCallback.authorizeOperation(regionName,
        registerInterestListContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_REGISTER_INTEREST_LIST_OPERATION_FOR_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger
            .finest(toString()
                + ": Authorized to perform REGISTER_INTEREST_LIST operation for region ["
                + regionName + ']');
      }
    }
    return registerInterestListContext;
  }

  public UnregisterInterestOperationContext unregisterInterestAuthorize(
      String regionName, Object key, int interestType)
      throws NotAuthorizedException {

    UnregisterInterestOperationContext unregisterInterestContext;
    unregisterInterestContext = new UnregisterInterestOperationContext(key,
        InterestType.fromOrdinal((byte)interestType));
    if (!this.authzCallback.authorizeOperation(regionName,
        unregisterInterestContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_UNREGISTER_INTEREST_OPERATION_FOR_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform DESTROY operation on region ["
            + regionName + ']');
      }
    }
    return unregisterInterestContext;
  }

  public UnregisterInterestOperationContext unregisterInterestListAuthorize(
      String regionName, List keys) throws NotAuthorizedException {

    UnregisterInterestOperationContext unregisterInterestListContext;
    unregisterInterestListContext = new UnregisterInterestOperationContext(
        keys, InterestType.LIST);
    if (!this.authzCallback.authorizeOperation(regionName,
        unregisterInterestListContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_UNREGISTER_INTEREST_LIST_OPERATION_FOR_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger
            .finest(toString()
                + ": Authorized to perform UNREGISTER_INTEREST_LIST operation for region ["
                + regionName + ']');
      }
    }
    return unregisterInterestListContext;
  }

  public KeySetOperationContext keySetAuthorize(String regionName)
      throws NotAuthorizedException {

    KeySetOperationContext keySetContext = new KeySetOperationContext(false);
    if (!this.authzCallback.authorizeOperation(regionName, keySetContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_KEY_SET_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform KEY_SET operation on region ["
            + regionName + ']');
      }
    }
    return keySetContext;
  }

  public void containsKeyAuthorize(String regionName, Object key)
      throws NotAuthorizedException {

    ContainsKeyOperationContext containsKeyContext = new ContainsKeyOperationContext(
        key);
    if (!this.authzCallback.authorizeOperation(regionName, containsKeyContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_CONTAINS_KEY_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform CONTAINS_KEY operation on region ["
            + regionName + ']');
      }
    }
  }

  public void createRegionAuthorize(String regionName)
      throws NotAuthorizedException {

    RegionCreateOperationContext regionCreateContext = new RegionCreateOperationContext(
        false);
    if (!this.authzCallback.authorizeOperation(regionName, regionCreateContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_CREATE_REGION_OPERATION_FOR_THE_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform REGION_CREATE operation of region ["
            + regionName + ']');
      }
    }
  }

  public RegionDestroyOperationContext destroyRegionAuthorize(
      String regionName, Object callbackArg) throws NotAuthorizedException {

    RegionDestroyOperationContext regionDestroyContext = new RegionDestroyOperationContext(
        false);
    regionDestroyContext.setCallbackArg(callbackArg);
    if (!this.authzCallback
        .authorizeOperation(regionName, regionDestroyContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_REGION_DESTROY_OPERATION_FOR_THE_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform REGION_DESTROY operation for region ["
            + regionName + ']');
      }
    }
    return regionDestroyContext;
  }

  public ExecuteFunctionOperationContext executeFunctionAuthorize(
      String functionName, String region, Set keySet, Object arguments, boolean optimizeForWrite)
      throws NotAuthorizedException {
    ExecuteFunctionOperationContext executeContext = new ExecuteFunctionOperationContext(
        functionName, region, keySet, arguments, optimizeForWrite, false);
    if (!this.authzCallback.authorizeOperation(region, executeContext)) {
      final String errStr = LocalizedStrings.
        AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_EXECUTE_REGION_FUNCTION_OPERATION
          .toLocalizedString();
      if (this.logger.warningEnabled()) {
        this.logger.warning(LocalizedStrings.TWO_ARG_COLON,
            new Object[] {this, errStr});
      }
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform EXECUTE_REGION_FUNCTION operation ");
      }
    }
    return executeContext;
  }

  public InvalidateOperationContext invalidateAuthorize(String regionName,
      Object key, Object callbackArg) throws NotAuthorizedException {

    InvalidateOperationContext invalidateEntryContext = new InvalidateOperationContext(
        key);
    invalidateEntryContext.setCallbackArg(callbackArg);
    if (!this.authzCallback.authorizeOperation(regionName, invalidateEntryContext)) {
      String errStr = LocalizedStrings.AuthorizeRequest_NOT_AUTHORIZED_TO_PERFORM_INVALIDATE_OPERATION_ON_REGION_0.toLocalizedString(regionName);
      this.logger.warning(
          LocalizedStrings.TWO_ARG_COLON,
          new Object[] {this, errStr});
      if (this.isPrincipalSerializable) {
        throw new NotAuthorizedException(errStr, this.principal);
      }
      else {
        throw new NotAuthorizedException(errStr);
      }
    }
    else {
      if (this.logger.finestEnabled()) {
        this.logger.finest(toString()
            + ": Authorized to perform INVALIDATE operation on region ["
            + regionName + ']');
      }
    }
    return invalidateEntryContext;
  }

  public void close() {

    this.authzCallback.close();
  }

  @Override
  public String toString() {
    return (this.id == null ? "ClientProxyMembershipID not available" : id.toString()) + ",Principal:"
    + (this.principal == null ? "" : this.principal.getName());
  }

}

redpajama_set_name: RedPajamaGithub


Russia Understands Ukraine's Geopolitical Importance but Does the West?
As Ukraine prepares to mark five years since the start of the country's Euromaidan protests, the repercussions continue to reverberate across the globe. What began as an ordinary protest movement soon morphed into a revolution that sparked a Russian invasion and ushered in a new Cold War.
Without the Euromaidan, Russia and the West would still be engaged in business as usual and everybody would be far too busy making money to dwell on the ugly realities of the Putin regime. Without the Kremlin's hybrid war, it is entirely plausible there would be no Trump presidency and no Brexit.
Ukrainian Populists Still Think They Can Be Pro-EU but Anti-IMF. They're Wrong.
Ukrainian voters have long believed that in her drive for power, long-time politician Yulia Tymoshenko will do and say anything. This is not unusual for populists who routinely make promises that cannot be met and are flexible with the truth.
That characteristic has been on display since Tymoshenko announced her intention to run for the presidency. Tymoshenko's claim to be a supporter of NATO and European Union membership is at odds with both the voting record of her Batkivshchina (Fatherland) parliamentary party and her own populist campaign rhetoric. In fact, Tymoshenko has little love for IMF-driven reforms and there is little chance she will enact them if elected. This would bode very badly for Ukraine's European hopes.
Georgia, Where Everything Old Is Maybe New Again?
On October 28, Georgians went to the polls to elect their fifth president, possibly for the last time. Neither candidate, both former foreign ministers, won outright. An unprecedented run-off is slated for December 2.
The United National Movement (UNM) presidential candidate Grigol Vashadze achieved an unexpectedly strong showing (37.7 percent) against the ruling Georgian Dream party backed candidate (38.6 percent) Salome Zurabishvili. The outcome belies the current level of one-party rule and presents a surprise proxy rematch between political personalities which have defined the national landscape since 2011. Six years after defeating Misha Saakashvili's UNM in parliamentary elections, Georgian Dream grey cardinal and oligarch Bidzina Ivanishvili may be losing his Midas touch.
Since Russia annexed Crimea in 2014, Moscow and its proxies have put dozens of Ukrainian and Crimean Tatar political prisoners behind bars. However, there are many other people in Russian prisons who have been incarcerated for their unwillingness to bow down to Russian President Vladimir Putin's regime.
The fabrication of these cases has been refined in Russia's courts. There a court does not need real evidence, just an order from above. The evidence and all other case-related elements can be carelessly thrown together, as the details don't matter. Moreover, Russians can hold people in pre-trial detention centers for years without trial.
The number of political prisoners in Russia has been growing in recent years, and this is unlikely to change. More interference and pressure from the international community is necessary, as this has proven to be the only factor which secures the rare and occasional release of political prisoners.
Below are ten political prisoners—Ukrainian, Tatar, Russian, and Danish—whose cases should be followed.
"There are 52 million of us," went the catchphrase that was broadcast every evening on popular Ukrainian television channel 1+1 in the 90s. The numbers were based on a 1989 population census.
It is uncertain how many people live in Ukraine today. Following Russia's 2014 invasion and a subsequent significant labor migration outflow, the number has contracted by at least 10 million over the past two decades.
Approximately five million Ukrainians, roughly 25 percent of the country's economically active population, work abroad. Around two million live in Poland. I visited Warsaw this summer; out of six Uber rides that I took, four of the drivers were Ukrainian.
A key reason for this hefty flight is that Ukraine has the lowest average monthly salary in Europe, a meager $320. The workforce in Poland earns four times more.
In 2018, Ukrainians will send home $11 billion in remittances, a whopping 10 percent of the country's gross domestic product.
As Ukrainians continue to leave, the toll in the motherland is being felt.
Ukraine's presidential race is in full swing, even though the official campaign period has not yet begun. At this point, incumbent President Petro Poroshenko and former Prime Minister Yulia Tymoshenko may make the second round; no candidate is expected to take 50 percent in the first round. If elections were held now, Tymoshenko would take 12.9 percent while Poroshenko polled second at 8.4 percent. Interestingly, Ukrainian comedian Volodymir Zelensky and rock star Svyatoslav Vakarchuk would receive 7.9 and 7.6 percent respectively, which points to society's deep fatigue and distrust of the old faces.
For Poroshenko and Tymoshenko, it's a do-or-die race. Both have been in politics nearly twenty years and the loser will find it difficult if not impossible to recover.
Ukraine's civil society is realizing an unfortunate fact: reforming the country is going to be more of a marathon than a sprint. Consequently, pro-reform advocates have had to adjust their expectations.
Describing her hopes for the speed of change in Ukraine, Anticorruption Action Center executive director Daria Kaleniuk said that she and her colleagues now see the project of fixing Ukraine as a generational one. And after nearly five years of intense hand-to-hand combat, civil society is exhausted.
Fortunately, some of the country's top activists and leaders are taking much-needed breaks, logging off their devices and cracking books. Increasing numbers of US organizations are providing fellowships to help Ukraine's leaders regroup and renew their energies.
One is the Center for European Policy Analysis, a small think tank in Washington, DC, that houses the James Denton Transatlantic Fellowship. In late September, CEPA brought three leaders to Washington for a three-week fellowship. The Ukraine fellows include an IT guy who unexpectedly became a national fundraiser for Ukraine's army, a top lawyer and city councilman, and a brilliant strategist who is helping civil society mature.
With every new election cycle, Ukrainians freeze in hope and despondency. Each time, we face an inner conflict between the desire for fair and systemic change and the fear and distrust acquired from experience. We've been trying to break out of this vicious cycle for twenty-seven years, and each time we try, the enthusiasm subsides within a year or two and we return to dreadful despair.
Today, 54 percent of the world's population lives in cities, and by 2030, two-thirds likely will. Mayors are city managers, responsible not only for quality of life issues like access to water, roads, and infrastructure; they're also facing global challenges like climate change, security, and migration.
After twenty-seven years of independence, the Ukrainian economy continues to struggle. The country appears to be stuck in partial transition from the command to market economy. Many state-owned companies have been privatized, but many more remain in the custody of the state and are mismanaged. There is corporate governance and independent boards, but the assets are continuously stripped from companies by insiders. There are private but insecure property rights. There is liberalization in energy markets, but household gas prices are heavily subsidized. There is a shadow market for land, but the legislature has extended the land market moratorium sixteen times. There is private investment, but the movement of capital is restricted and minority shareholders are abused. The list goes on.
The standard logic of economic transition goes like this: reforms are unpopular. There are short-term losers. People will lose jobs in inefficient industries and will have to pay higher market prices on utilities and groceries. There are also long-term winners. The entire population and especially future generations will benefit from a better, more efficient, and prosperous economy. But the losers—pensioners, state employees, miners—are better organized than the winners. The losers will resist the reforms. The weak "populist" politicians will listen and reforms will stall.
This appears to be the tale of Ukraine's reforms, too.


text:
Tapeworms in Cats: Symptoms, Diagnosis & Treatment
Posted by Matt Terrill
Published at: December 2, 2020
What Are the Symptoms of Tapeworms in Cats?
How To Treat Tapeworms in Cats
How to Keep Your Cats Safe from Tapeworms
Tapeworms are a common feline ailment that most cats will experience at least once in their lifetime. They are not life-threatening and don't usually cause lasting harm. However, it's essential to know how to recognize that your pet has an infection. That way, you know how to proceed with treatment.
Tapeworms are intestinal parasites that live inside of a host body and absorb nutrients from it. Flat and segmented, these parasites have hook-like anatomical features in their mouths. They use these hooks to attach to the intestinal wall.
There are several different types of tapeworms, such as Taenia and Echinococcus. The most common tapeworm in cats is the Dipylidium caninum. This species is unrelated to other intestinal parasites that commonly affect felines, such as hookworms and roundworms. The adult parasites can be anywhere between 6 and 23 inches in length.
So how do you know if your cat has a tapeworm infection? The only sign of an infection that is certain is the presence of proglottids.
Proglottids are tapeworm segments, about one half of an inch in length. These pieces break off from the parasite's main body as it grows and passes through the animal's feces.
If you want to diagnose an infection, you may notice these signs of proglottids:
Tapeworm segments – pieces that look like grains of cooked white rice may be present in a cat's feces or around its anus.
Butt scooting – some felines will scoot their butts across the ground due to irritation from these tapeworm segments around the anus, so if you see this behavior, it could be a sign of infection.
Regurgitation - sometimes, the parasite can detach from the intestinal wall and move into the animal's stomach. In this case, the cat may regurgitate a live tapeworm, a definite infection sign.
The above symptoms are the only characteristics that can determine the presence of a parasitic infection without question.
There are some other secondary symptoms. These could always be the result of other ailments or conditions. However, they can also sometimes be an indicator that a cat has tapeworms:
Poor appetite and diarrhea can be the result of the presence of parasites in the intestines. Other indicators include a patchy, deteriorating coat as well as weight loss of a significant amount.
Intestinal blockages and seizures may occur in cats with particularly heavy infections.
Haw's syndrome is another side effect of a significant amount of tapeworms in cats. This condition causes the cat's third eyelid to protrude.
Tapeworms can cause quite a bit of discomfort for your pets. Luckily, they are easy to treat. You can eliminate tapeworms in cats using various deworming treatments, all of which have very high success rates.
Anthelmintic
The most common of these treatments is Anthelmintic, which is available in the form of a tablet or an injection.
Anthelmintic causes the worm to die and become digested inside the intestine. As a result of this, the parasite will not release proglottids, and there will be no tapeworm segments in the animal's stool.
Another recommended option for treatment is the medication Praziquantel. This medication is effective against all tapeworms species and is available as a tablet, injection, and even a topical cream.
Praziquantel works within hours of administering the medication. For effective treatment, the cat must receive one dose to kill the adult tapeworm and a second dose after two weeks to kill any remaining parasites.
Fenbendazole and Epsiprantel
Another medication that is effective against Dipylidium caninum is fenbendazole.
If your cat has an infection of taenia, a tapeworm species which uses mice, birds, and rabbits as its intermediate host, a prescription for Epsiprantel may be more suitable.
Post-Treatment Care
After treatment, it is crucial to take precautions to prevent reinfection. Take care to properly dispose of pet feces and keep your pet's environment free of fleas. You can also observe these steps regularly as a preventative measure against infection.
While there is no vaccine for tapeworms in cats, some preventative measures can reduce the likelihood of an infection.
Invest in Flea and Pest Control
The most critical of these preventative measures by far is flea control.
What do fleas have to do with tapeworms? A lot more than you'd think. They are a vital component to the life cycle of the Dipylidium caninum species of tapeworm:
The parasite's life cycle begins at the egg stage. Adults of the species have both male and female reproductive organs and thus can fertilize their own eggs, which they store in the proglottids.
When proglottids release into an animal's feces, they dry up and break open, releasing up to 20 fertilized eggs.
Cats cannot get tapeworms from eating these eggs off their feces. An intermediate species needs first to ingest the eggs before they can become infectious. That situation is where the fleas come into the picture.
Flea larvae will ingest the eggs, which will live inside the host as it matures into adulthood. If your pet accidentally ingests an infected flea while grooming itself, as is most often the case, it is at risk for a parasitic infection.
During the digestion process, the eggs can release and hatch, allowing the tapeworm larvae to attach themselves to the intestinal wall. The larvae will absorb nutrients from the animal's intestinal lining, where they will remain as they develop into adults.
Ingestion by the intermediate host is crucial in this parasite's developmental cycle that allows it to become infectious. Therefore, eradicating the immediate host—the flea—is an effective way of preventing a parasitic infection.
Treating your pet and their environment for fleas is the best way to reduce the risk of infection.
A human can also become a host for a tapeworm by accidentally ingesting a flea, so clearly, it is in everyone's best interest to make sure that their home is a flea-free environment.
But fleas only function as the intermediate host for the Dipylidium caninum. Other species of tapeworm use different organisms to carry their eggs onward to a permanent host.
Prevent Your Feline from Hunting Wildlife
The Taenia taeniaeformis species use small animals such as mice, birds, and rabbits. Therefore, cats that enjoy hunting have a greater risk of getting this kind of tapeworm.
If your feline hunts regularly, it will need to undergo routine deworming treatments. Otherwise, you may have to switch it to an indoor lifestyle to eliminate the risk of infection.
The Echinococcus species uses large animals such as coyotes, foxes, and rodents. However, this species can also infect a host by ingesting eggs alone and can be fatal to humans.
The most crucial thing to do to reduce your cat's risk of infection is to treat the cat and its environment for fleas. It would be best to dispose of an infected animal's feces properly as well. That way, another creature won't ingest the eggs from the proglottids and spread the infection.
Your cat's intestinal health is a vital part of its overall comfort and well-being. Take all precautions and preventive measures to ensure that your pet is living a happy and healthy life.
Dipylidium FAQs
Tapeworm Infection in Cats
Tapeworms in Dogs and Cats
Gastrointestinal Parasites of Cats
Tapeworms in Cats - Pet MD
Tapeworms in Cats - Wag Walking
Common Health Concerns in Senior Dogs
An Overview on Hypothyroidism in Dogs
Pancreatitis in Dogs: What It Is and Possible Natural Alternatives
Crusty Dog Nose: Why It Happens & How To Treat It
Canine Vestibular Disease: An Overview
Heavy Breathing in Cats (Dyspnea): Symptoms, Prevention & Treatment
Back to Diseases