within the modern decade of improvement in which conversation even though has touched the abounding heights of expertise, nonetheless is barred less than the clutches of social and political dominance. Journalism, the basic spinoff of communique has additionally been the sufferer of this chaotic syndrome. loose conversation and freedom of press have continually been the treatments of the crawling improvement that has dissolved the rustic in its propounding commercialisation.'Gandhi's loose verbal exchange and unfastened Press', sails throughout the obstacles to the freedom of verbal exchange and thereby journalism, and provides a Gandhian viewpoint to bridge the space among rights and freedom. The fight for independence within the historical past has now been remodeled into the fight at no cost communique as is illustrated during this work.
Because the identify indicates, private and non-private households: An advent, 7th variation, discusses the family members in senses: the personal relations, within which we are living so much of our own lives, and the general public relations, during which we, as adults, take care of broader societal concerns reminiscent of the care of the frail aged, the rise in divorce, and childbearing outdoor of marriage.
How can economists outline social personal tastes and interactions? tradition, familial ideals, faith, and other sources comprise the origins of social preferences. these preferences--the hope for social prestige, for example, or the disinclination to obtain monetary support--often accompany predictable economic results.
Issues approximately immigration and the emerging visibility of minorities have caused a full of life scholarly debate at the outcomes of ethnic range for belief, cooperation, and different features of social team spirit. during this accessibly written quantity, best students discover the place, whilst, and why ethnic range impacts social team spirit in terms of analyses overlaying the main eu immigration international locations, in addition to the us and Canada.


ROCKFORD — It's spring time in the American Hockey League, which means junior and college players are getting their first taste of the pro game.
For Rockford IceHogs defenseman Chad Krys, it's been more than a whet-your-appetite experience after signing a three-year entry deal with the Blackhawks on March 22. Since joining the IceHogs, he's been plugged into to Rockford power play and has three assists in three games. He certainly has the skill set and hockey IQ Rockford has lacked in its blueline corps all year.
Krys, 20, was one of five Terriers to sign with pro clubs following BU's season. He scored eight goals and 20 assists with Boston this season – a solid 30-game showing for a defenseman. He became the first BU skater in 47 years to register a two goals and three assists in a game March 2 against Merrimack. Chicago's second pick in the 2016 NHL Entry Draft logged 20 goals and 38 assists in three seasons at Boston.
With a contract worth $925,000 a season through 2021-22, Krys skated in the Blackhawks Prospects Camp the last two years, so he's somewhat acquainted with the system, staff and other young players vying for a spot with the big club.
So far, what brass sees is a D-man who can help usher in a new era for the Blackhawks' defense. Krys comes in with a style similar to that of Erik Gustafsson and Henri Jokiharju, with whom he's finding chemistry so far.
Krys also spent two seasons in the United States National Team Development Program and the United States Hockey League. He was the youngest member of Team USA that won the bronze medal at the 2016 World Junior Championship.
The Ridgefield, Connecticut, native was the youngest member of Team USA who won the bronze medal at the 2016 World Junior Championship. He also won bronze at the 2016 U18 World Junior Championships, serving as one of the team's assistant captains. He grabbed a gold with with Team USA at the 2015 U18 tournament, scoring a goal and four assists.
Some scouts were convinced Krys was ready to turn pro out of juniors, but a twist of hockey fate proved otherwise. He played in all 39 games as a freshman but struggled. He came into his sophomore years a new player though, logging 27 points. He was an assistant captain this season and finished with eight goals despite missing eight games with an injury.
The IceHogs face the Texas Stars this weekend in Austin before a return to the Midwest for road games with Milwaukee and Iowa. Rockford concludes its regular season April 14 at home against the Admirals. R.


Private Lessons are the perfect environment in which you get the most intensive and individually focused dance training. Working 1:1 with and instructor, you will learn a solid foundation of technique on which to build your dance skill, adding layers of artistic expression and personal creativity as you expand your knowledge base.
This New Student Introductory Special package is the perfect way to get your feet wet with learning a new dance style, while getting the most "bang for your buck" through personal instruction that is focused on YOU.
Open to all levels of dancers, group classes provide an opportunity to learn the basics of a new dance style, or add a new social pattern of steps to your existing knowledge base, while meeting other dancers as you rotate partners throughout the session.
Open social dancing is just what it sounds like. Open to the public, no partner required, and social in nature. Many of the group classes are followed by an hour or more of social dancing, where you can practice what you learned in the class, try some new moves of your own, or simply observe and socialize with fellow dancers. All levels share the floor from beginner to advanced. You may even spy a few professionals who come out to have some fun as well.
A couple's first dance can be a very special moment, both for them and for the family and friends who are present for the occasion. Preparing a dance to a song of your choice that has a special meaning allows you to tell the story of your love and commitment in a unique and memorable way.
This package is designed for the beginner or intermediate couple who want to learn a variety of social dance styles, creating a new activity you can share beyond your wedding day.
This package is designed for couples who have limited time to prepare, but still want to do more than just stand and sway for their wedding dance. In three lessons, our goal will be to provide you with some basic steps and possibly one "trick" or "attention-stealing" move that you can perform to a song of your choice during your first dance as a newly married couple.
This package is designed for the beginner or intermediate couples with sufficient time and desire to learn choreography the is created specifically for you. We promise you will make a statement, along with a memorable moment, when you take the floor on your wedding day!
Tomorrow's champions start learning today! This specially designed class provides a fun and interactive learning environment while teaching students the basics to many of today's most popular Ballroom and Latin dance styles. With a focus on movement, musicality, partnering and etiquette, your child will come away with new skills ad and self-confidence.
Fall 2018 classes start on September 6th.
Energy of dance is contagious.
Let NRG take your event to a new level of excitement with a professional dance performance.
Contact us to discuss the details of your event and how we can help make it a memorable experience for all who attend.
Jazzercise exercise programs are 60-minute fitness classes incorporating cardio, strength, and stretch moves for a total body workout. The classes combine moves from Yoga, Pilates, jazz dance exercise, hip-hop, and kickboxing. All ages, levels, and sizes welcome to join our dance exercise programs.
Want to Increase Range of Motion? Improve Dancing and Posture?
Stretch therapy is a complete and cohesive system of innovative manual therapy and movement training that rapidly and radically re-organizes, re-aligns and re-educates the entire body structure.
Our certified Fascial Stretch Therapist and Neurokinetic Therapist. Private One-on-One Stretch Sessions and Muscle Testing Sessions are available.
After a gently guided warm up connecting us with our center and our breath, we move to music selected to inspire our bodies and minds. No steps to learn, only free-form authentic ecstatic dance. Dress comfortably to move, bring drinking water.


Because we are committed to improving the overall eye health of our patients, we are providing the following selection of links to other websites you might find interesting and informative. Also, please visit our Facebook and Twitter pages for the latest information on eye health.
This is a guide to eye care, LASIK laser eye surgery, eyeglasses, contact lenses, low vision, eye exams, computer vision syndrome, glaucoma, cataracts, macular degeneration, and other eye problems and diseases. It contains eye doctor questions and answers, frequently asked questions and much more.


text:
Q: In Angular, how to display original data and filtered data on the same page? Let's say I have some data from a service call, and I store it as originalData.
Now in addition, I must filter the data and also display that filtered data. The way I'm doing that is like this:
this.service.getData((data) => {
  this.originalData = data;
  this.filteredData = data.filter(/* some filter condition */);
});

I have originalData and filteredData bound on the html template. This solution works. As I require more and more of the filtered versions to be displayed, so I'm storing more and more of these filtered or otherwise modified objects on my class.
This seems like a bad practice, as the state of my class is increasing and getting out of control, and managing the different copies of the data is getting cumbersome.
What would a better practice be?

A: Transforming data
You want to just transform the existing data. Here are two very simple examples on how to do that, both synchronously and asynchronously. Since usually the data from a service is async.
Synchronous
For synchronous data you can just use a function that takes your data as a parameter and returns the desired form of your transformed data.
component.ts:
data = [10, 20, 30, 40, 50, 60]

divisibleBy20(numbers: number[]) {
  return numbers.filter(number => number % 20 === 0)
}

component.html:
{{ data }}
{{ divisibleBy20(data) }}

Asynchronous
For asynchronous data RxJS provides tons op operators to pipe the data. You can find more operators here.
Service.ts:
getData() {
  return of([1, 2, 3, 4, 5, 6]);
}

Component.ts:
all$: Observable<number[]>
evens$: Observable<number[]>

constructor(
  private dataService: DataService
){}

ngOnInit() {
  this.all$ = this.dataService.getData()
  this.evens$ = this.all$.pipe(
    map((numbers: number[]) => numbers.filter(number => number % 2 === 0))
  )
}

Component.html:
{{ all$ | async }}
{{ evens$ | async }}

Here is an example for you to play with on Stackblitz.
Here is an example of what NOT to do according to the Angular documentation.
These kind of pipes have their uses, but can be triggered a lot for no reason. To prevent this u can make custom pipes 'pure'. This way Angular executes the pipe only when it detects a pure change to the input value.
You can do this by adding pure: true to the decorator:
@Pipe({
  name: 'myPipe',
  pure: true
})
export class MyPipe implements PipeTransform {
    // ...
}

redpajama_set_name: RedPajamaStackExchange


text:
Pop Culture's Most Complex Cat Characters
By Sarah Fonder
The Internet loves nothing more than cats, but it's rare that we look beyond the cute photos and memes to more seriously consider their place in our world. Flavorwire's Highbrow Cat Week is an attempt to remedy that, with a series of pieces devoted to analyzing their impact on the cultural realm.
Despite their endless dumbing-down at the hands of everyone with a wifi signal and a copy of Photoshop, cats have been rich symbols for thousands of years, commonly associated with intelligence, femininity, evil (more on that later this week), sin, and class. Themes like these prove that there's a lot behind the surface of our culture's most ubiquitous animal, and cats continue to be incredibly stimulating subjects in books, movies, and the like. The creators of the following feline characters expanded upon those themes, subverted them, or ignored them completely to create some of culture's most interesting cats.
Cheshire Cat, Alice in Wonderland
We'll start with the obvious choice, though the Cheshire Cat still intrigues audiences with good reason. Alice in Wonderland was written during a time of big change in the world of mathematics, and a lot of the characters and their behaviors are Lewis Carroll reacting to the introduction of phenomena such as imaginary numbers. In a breakdown of the inspiration behind Alice in Wonderland, Melanie Bayley of Oxford University calls the Cheshire Cat "the voice of traditional geometric logic — say where you want to go if you want to find out how to get there, he tells Alice after she's let the pig run off into the wood. He points Alice toward the Mad Hatter and the March Hare. 'Visit either you like,' he says, 'they're both mad.'"
Cat, Breakfast at Tiffany's
The nameless cat of Truman Capote's novel and Blake Edwards' film is one of the most well-known cats in literature. Holly Golightly projects all of her fears and insecurities on her accidental sidekick, a creature she claims to neither care about nor control. Nevertheless, the cat is very blatantly Holly's double, a lost animal with no history, wandering aimlessly until something steps up to take care of it. It's telling when Holly attempts to dispose of the cat by throwing it into a strange neighborhood, and though she finds it almost immediately in the film, Capote understood that it's much more interesting if she doesn't.
It's hard to imagine Felix the Cat as revolutionary now, but the iconic cartoon character was once held up as a pioneer of surrealism. The Charlie Chaplin-inspired Felix drew heavily from 1920s cinema, but used the freedom of animation to go beyond what a camera made possible. Thanks to quirks like an anthropomorphic tail, Felix won accolades from Aldous Huxley and MoMA film department founder Iris Barry. Barry called Felix "distinctly highbrow," while Huxley argued that the fantastical elements of the Felix shorts were proof of how film could transcend the written word: "What the cinema can do better than literature or the spoken drama is to be fantastic."
Noboru Wataya, The Wind-Up Bird Chronicle
Haruki Murakami is famous for using cats as motifs in his stories, and they're especially important in his novel The Wind-Up Bird Chronicle. It follows an unemployed man named Toru Okada through a strange chain of events that begins with the loss of his cat, Noboru Wataya. The cat is one of the novel's most important symbols, as most of its themes can be traced back to Noboru and his departure. For starters, Noboru ties directly to Toru's relationships with his family: the cat is begrudgingly named after Toru's enigmatic brother-in-law, and Noboru's departure foreshadows that of Toru's wife. But there are several layers to the seemingly innocuous cat, as Murakami's symbols never lend themselves to easy interpretation.
Blanche, Hausu
Cats are frequently used as a symbol of feminine sexuality, an idea taken to its extreme in the psychedelic horror movie Hausu. Fluffy Blanche is the vehicle of a widow who feeds on unmarried women, in this case, a group of comically one-dimensional schoolgirls named for their girlish characteristics. Blanche quickly goes from cute to grotesque, and the cat eventually spews an insane amount of blood onto the young, terrified girls (you can read into that however you want). As much as this crazy film eludes classification, an evaluation of symbols like Blanche makes Hausu pop culture's most batshit allegory for female coming-of-age.
Fritz the Cat
While cats are frequently portrayed in a morally negative light, there's usually an order to their behavior. This is not the case for Robert Crumb's Fritz the Cat, a hedonistic, sex-crazed college student. Crumb is like a gross-out Richard Scarry, using the type of animation and characterization previously reserved for children's stories to create something more in line with the grit of real life. There's no morality or life lessons in the universe of Fritz the Cat — just nasty, literal animals screwing each other in various fashions. This makes the comic an interesting subversion of the usually innocent format of animal stories, as it's fair for Crumb to say Fritz the Cat and company are "not unlike people in their manners and morals."
The Germans, Maus
At first glance, Art Spiegelman's graphic novel presents the most extreme example of the "cats are evil" trope, as cats play the role of Germans in his factual retelling of the Holocaust. But the style of Maus is much less about the choice of animals themselves than it is about the ways in which humans continue to categorize each other. Spiegelman used the animal imagery of Nazi propaganda to call attention to the futility of putting people in separate boxes. The metaphor is never simply cat-and-mouse, as species is a constant question throughout the story. A character could appear to be a cat in one panel and a mouse in the next. Because of this fluidity, you never forget that the animals of Maus are humans.
"The Black Cat," Edgar Allan Poe
Cats are a fixture of the horror genre, from the ominous screaming cat of scary movies to the black cats of superstition. Edgar Allan Poe created a textbook example of both with his classic short story "The Black Cat," in which the narrator's trapped cat leads police to discover the body of his murdered wife. The narrator frequently tortures the cat, who serves as an inescapable reminder of his guilt and latent insanity. At one point, the narrator's wife expresses her belief that all cats are witches in disguise, which draws upon old superstition in a fairly disturbing way. The story's combination of cats' ties to both evil and femininity puts it in a creepy, gendered light, but considering Poe's tendency for fridging his female characters, it's not much of a surprise.
As silly and random as his subject matter may seem, it's no secret that Dr. Seuss put a lot of layers into his children's books, and scholars still spend a lot of time analyzing them. Seuss was both a brilliant satirist and a writer at the time of the Red Scare, and some believe The Cat in the Hat was a response to McCarthyism. There was a pretty strong fear that if kids were left to their own devices, the media would lead them to chaos and rebellion. The theory that the red-hatted cat and his "things" are Communist representatives is both a bit hard to prove and probably fairly accurate. Political allegory or not, one message of the story is immediately clear: kids can figure things out for themselves.
Another brilliant political cat character exists in the old folk tale Puss-in-Boots, in which a sophisticated cat helps an unfortunate man scheme his way into power. While it is the story of an underdog's rise, the "moral" is not that good things happen to good people, but that charm and cunning can get you a long way. It's a story that has played itself out in history over and over again, perhaps even a reminder that some of history's cruelest politicians were once down-and-out young people who happened to learn the art of persuasion. While it may not be as well-known as Cinderella, there's a reason this fairy tale has stayed in our memory.

redpajama_set_name: RedPajamaCommonCrawl


Everyone herself on the ventures in the area and have found a lot of trouble finding herself to be able to skip hunting at Texas Long Range Shooting Schools? Have you not been able to be trained well and thinking to be able to go to and attend one of these Texas Long Range Shooting Schools? What's can help set apart you can see others comes to skills to do that is to attend one of these Texas Long Range Shooting Schools? Why does encourage you in this decision and want to tell you that you could if wages work with software solutions Corporation today to get this taken care of. They are an organization specializes in this area of training people in that skill and then also being able to provide people lots of different adventures to enjoy their skill.
One of the important reasons why people always go back to enjoy their times with them is by the fact that they provide the great customer service. If they didn't provide you with customer service it would surely be very confusing as to why they would be in business is the on tension of them being in business is to provide people with great adventures and the outdoors and guide them happy trips with their friends families and possibly the workers on corporate retreats. If they are able to do that they are unable to provide great experiences for people, then what's the point? That's what this company has been a tremendous help to people being able to receive great training and great skills in this endeavor.
When it comes to the different services of the trips of the go on, they very much carry you typed trips. So you go out on trips to other different parts states that the parts of the country you experience all kinds of different trips with hunting various kinds of animals and hunting. Scottish fish. Being able to hunt well is a great skill especially from the old mentality the lighter, being able to do that others in the family and the incident which of the sense in school. Let outdoor solutions be this kind of company that will train you up and be able to bring you onto various awesome trips out the country for you.
Back one of the important reasons why this company is in business what this company loves to do is to train people to be good at shooting ranges. Shooting guns and long ranges is an important skill for people that have they want be great hunters because that game is not sky, walk up to you and say shoot. You gotta have the skill of being in set yourself up well for great shot and then have low concentration silence to be able to shoot well get great focus.
So whether you truly interested in being awesome hunter whether you want to invest the time and to all things, I encourage you to look into Dr. solutions to schedule a time for strips and I think you'll definitely enjoy it.


text:
HomeMagazine
Credit: Alice Clark
Is the European Union in Crisis?
By Kieran Hyland on	 February 18, 2016 Magazine Politics
2016 was an unsettled year for the European Union. While Euroscepticism has grown within the hearts and minds of European citizens for decades, Europe has experienced unprecedented levels of anti-EU sentiment throughout 2016. Although, evaluating the causes of such hostility is anything but straightforward, the increase in the number of acts of terror across Europe, and poignant images of attacks in Paris and Berlin have undoubtedly multiplied fear and a feeling of insecurity amongst the citizens of countless western European states.
These images, coupled with pejorative headlines on the refugee crisis in Syria and the migrant jungle in Calais by numerous right wing publications, have been strewn across both old and new media platforms. This has resulted in greater antagonism between alienated citizens across European democracies and the established political elite. Individuals within several states have consequently turned their attention to questioning the effectiveness of the European Union in safeguarding the rights and security of their citizens, and the scaremongering ability of these individuals has proven particularly paramount in the resurgence of the far right. The outcomes of the British and Italian referenda, coupled with the ambiguity surrounding France's and Germany's 2017 Presidential Elections amid the rise of nationalist parties, will undoubtedly have ramifications for the future of the EU.
However, the threat of the far right towards the continued existence of an international organisation is not an unknown phenomenon. Comparisons are frequently drawn to the dissolution of the League of Nations in the 1930's, where the authoritarian regimes of Hitler's Germany and Mussolini's Italy were seen as increasingly effective at maintaining state security and economic stability in contrast to a Britain and France severely inhibited by the Great Depression. However, comparisons between the League of Nations to the EU today are not entirely representative; as the League of Nations was not solely a European institution and was also particularly undermined in Asia by Japan.
Accusations of ineffectiveness in Europe's regional institutions today are evidently not without merit. As in the 1930's, populist individuals on the right wing have capitalised on public dissatisfaction. Through the use of propaganda, these individuals have effectively been able to convince citizens of a better alternative to the European Union through a return to state sovereignty. The outcomes of Britain and Italy's referendums serve as a testament to these trends. While it is evident that the resurgence of the far right is not universal in Europe today, as seen in Austria, the rise of the right wing in Europe was by no means unanimous in the 1930's before the dissolution of the League.
With Europe plagued by extensive political discord and cultural differences throughout the twentieth century, the first question which should be examined is whether the EU was destined to fail from the start. It was founded with the core objectives of peace, collective security, solidarity and mutual respect amongst all citizens. Europe's belligerent history and rivalry between former superpowers meant such utopian ideals were always going to be difficult to achieve. The fragility of the EU's utopian vision is most clearly illustrated when acknowledging that these ideals undermined state sovereignty and the antagonism this would cause in the affected states.
The Brexit vote undoubtedly acted as a catalyst for the growth of the far right, not simply in Europe but also on a global scale. The United Kingdom's referendum over the continued membership of the EU provided a particularly significant example of the causes of antagonism against the EU. Several commentators viewed the leave vote as little more than a protest against the European political elite disregarding their concerns, particularly in regard to the free movement doctrine.
Yet, despite such disharmony, the collapse of the EU is by no means inevitable. While there is still uncertainty over what deal the United Kingdom will be able to secure from its negotiations with the EU (either a 'hard' or 'soft' deal), the exit alone will have a relatively minor political impact on the EU. Similarly, the outcome of Italy's referendum is predicted to cause greater political and economic problems on the domestic rather than international front. While Matteo Renzi, the Italian Prime Minister, resigned in the aftermath of the election, his successor has already been appointed and has formed a cabinet filled with politicians from the centre-right of the political spectrum. Italy is expected to experience a severe recession, and while several commentators contend that such recession could affect the Eurozone, it is unlikely this will cause a prolonged economic crisis such as that which shook the Eurozone in 2009.
It is unlikely any western state will attempt to follow Britain out of the EU in the immediate future. Indeed, France could be the next state to fall to the radical right, with President François Hollande polling at 4% at the end of 2016. His decision not to stand for re-election in 2017 has surprised few. In the build-up to the first round of voting Marine Le Pen, the right wing National Front leader, has emerged a surprise frontrunner for President, and is widely expected to be successful in the first round. While there is little consensus surrounding Le Pen's electability beyond this point, Trump's election in the US will undoubtedly have energised Le Pen's campaign to believe that the right wing might pull off another upset. 2016 has highlighted the danger of discrediting political outsiders, and upsets in France and Germany might further threaten the stability of the EU.
Kieran Hyland
Wessex Scene Politics Editor 2016/17 Modern History and Politics Student
Getting Our House in Order: Racism in British Football
The Human Rights Abuses of the British Empire


text:
FedEx sues Feds over export control burdens related to Huawei dispute
Shipping giant FedEx is suing the federal government in an effort to reverse what it says are unreasonable—if not impossible to adhere to—compliance burdens imposed by the Department of Commerce.
The lawsuit comes on the heels of the Commerce Department's May addition of controversial Chinese telecom giant Huawei to a list of targeted entities and restricted exports. FedEx and Huawei have subsequently battled over what the latter claims are illegally undelivered shipments.
The Memphis-based company is suing the Commerce Department, Secretary of Commerce Wilbur Ross, and the agency's Bureau of Industry and Security (BIS) in U.S. District Court in the District of Columbia for "injunctive relief to secure its constitutional due process and other rights which are imminently threatened."
The lawsuit claims it's "virtually impossible" for package delivery companies like FedEx to police the content of each and every package it handles.
As a common carrier, FedEx is subject to a variety of statutory and regulatory regimes, among them the Export Control Reform Act of 2018 (ECRA) and its implementing regulations, the Export Administration Regulations (EAR).
The EAR, enforced by the BIS, sets out the U.S. Government's principal export control regime, restricting the international transfer of certain commodities, technology, information, and software for reasons of national security and foreign policy.
To meet these requirements, FedEx, in the lawsuit, says it "has developed a sophisticated proprietary risk-based compliance system to perform such screening and takes seriously its responsibility to comply with the law."
"However, the Export Controls—specifically, the EAR—require considerably more screening than possible from common carriers like FedEx," the lawsuit claims.
The determination of whether the tendered package contains an "item subject to the EAR" and whether a license is required "are virtually impossible for common carriers to comply with" the company adds.
Typically, the law offers protection for common carriers, excepting them from liability for the contents of packages and communications they transmit, such as internet service providers and telecommunications companies. The EAR, however, defines common carriers such as FedEx as "forwarding agents" and offers no safe harbor provisions. To the contrary, it holds common carriers liable "as aiders and abettors" of EAR violations committed by their customers, with steep penalties.
"Thus, the EAR essentially deputize FedEx to police the contents of the millions of packages it ships daily even though doing so is a virtually impossible task, logistically, economically and, in many cases, legally. Indeed, the majority of transactions begin with the customer providing FedEx with a previously sealed package," the lawsuit says.
To put the business hazard and complexity of such screening in perspective and scope, FedEx provided a glimpse into its extensive operations. The company receives approximately 15 million packages for shipment daily. To support its operations, it has developed a complex logistics system consisting of over 450,000 team members, 679 aircraft, 650 airports, 39 ground hubs, 600 ground facilities, and 180,000 motorized vehicles spanning more than 220 countries and territories.
Without a safe harbor, the EAR provides FedEx "just two options," the company says: continue to operate under threat of imminent enforcement actions or cease operations that may conceivably lead to enforcement and face possible legal consequences from customers and foreign governments.
"The Due Process Clause of the Fifth Amendment to the U.S. Constitution was enacted to prevent such oppression and deprivations of liberty," it argued.
Tough demands, stiff penalties
The ECRA requires strict compliance with the EAR, and the BIS may impose civil penalties for each individual violation.
Specifically, the ECRA imposes criminal penalties of up to $1 million and civil penalties of $300,000 or twice the value of the transaction per individual violation.
The lawsuit outlines additional burdens faced by FedEx by the export control regime.
"The EAR effectively forces FedEx to police the content of its packages in a manner it is not able to do," it wrote. "Even if FedEx were to inspect the contents of every package for reexport that it delivers, the company would not have enough information to make highly technical determinations to assess whether an item outside the U.S. is an 'item subject to the EAR.' "
FedEx also argues that the BIS Entity List imposes "an overbroad, disproportionate burden." As for government guidance, the shipping company says it is lacking.
"The only way for FedEx to even attempt to avoid inadvertently violating [prohibitions] would be to inspect the contents of every package tendered for shipment. Alternatively, FedEx would have to cease shipping to listed entities in any of the more than 200 foreign jurisdictions on the Commerce Country Chart, which would make it unable to operate as a common carrier," the company says.
Past violations
FedEx is currently operating under a settlement agreement with the BIS, entered into in April 2018.
The BIS alleged FedEx committed 53 violations of the EAR. Specifically, that it "caused, aided or abetted acts prohibited by the EAR" when it transported "items subject to the [rules] valued in total at approximately $58,091, from the U.S. to France, or Pakistan, without the required BIS licenses."
The agreement required FedEx to pay a civil penalty of $500,000, plus interest. It was also required to "complete external audits of its export controls compliance program" covering fiscal years 2017-2020.
FedEx must report to the BIS where these audits "identify actual or potential violations of the regulations."
The settlement agreement further provides that "if FedEx should fail to … complete any of the audits and submit the results in a full and timely manner, [the BIS] may issue an order denying all of FedEx's export privileges under the [EAR] for a period of one year."
Joe MontJoe Mont has been an award-winning journalist for nearly 25 years in the Greater Boston area.
Follow @https://www.twitter.com/@josephmont
Warner, Rubio urge no retreat from Huawei pressures
A bipartisan duo of senators has expressed concern that the White House might go easy on Huawei to achieve a favorable outcome on trade negotiations.
U.S. could ban all Huawei products
New moves from the Commerce Department suggest a full domestic ban on products from the Chinese telecom giant Huawei are forthcoming.
Without OSHA vaccine policy, companies at risk of undercutting corporate culture
The Supreme Court's decision to block President Joe Biden's Covid-19 vaccine-or-test policy for large businesses leaves a patchwork quilt of state, local, and city requirements that companies will have to follow as best they can, according to experts.
More Regulatory Policy
Bumps in road expected as U.K. strives to be climate risk leader
The United Kingdom has paved the way for companies to report on the future financial impact of climate risks, but the process is far from easy and rates of noncompliance—at least initially—could be high.
Biden nominates Sarah Bloom Raskin as Fed supervision head
President Joe Biden nominated Sarah Bloom Raskin, a former Treasury official, to serve as the Federal Reserve's vice chair for supervision. Lisa Cook and Philip Jefferson were nominated to be Fed governors.
NSI Act reshapes U.K. acquisition landscape
The U.K. National Security and Investment Act might present "unforeseen" compliance problems for companies wanting to merge with or buy foreign businesses, according to legal experts.


Fontaine Bros. will build a new 115,000-square-foot school to accommodate Holyoke Catholic High School and Cathedral High School.
A new Science, Math and Technology Center for Northfield Mount Hermon.
A new 111,000-square-foot school in Worcester.


text:
Home / Sports / The Legal Aspects of Sports Broadcasting
Bliss Leave a Comment 33 Views
Sports broadcasting is an ever-evolving and complicated field. It involves copyright, trademark, and contract law, among other legal issues. An overview of the legal aspects of 라이브스포츠 broadcasting, including the rights of broadcasters, athletes, and viewers, will be provided in this article.
Copyright Law: Sports broadcasting relies heavily on copyright law. Any content that broadcasters wish to incorporate into their broadcasts must first receive permission from the owner of the copyright. This includes pictures, videos, and music. Broadcasters could be held liable for copyright violations without permission.
Trademark Law: Sports broadcasting also relies heavily on trademark law. Any logos, names, or other trademarks that broadcasters wish to use in their broadcasts must be used with the permission of the trademark owner. Broadcasters may be held liable for trademark infringement if they do not obtain permission.
Contract Law: Sports broadcasting also relies heavily on contract law. To broadcast sports events, broadcasters must sign contracts with athletes, teams, and leagues. The rights of the broadcaster, the athlete or team's rights, and the viewers' rights are typically included in these contracts.
Rights of Broadcasters Typically: Broadcasters have the right to air the games they have contracted to air. Additionally, they typically have permission to incorporate game footage into other broadcasts, such as highlight reels or documentaries.
Rights of Athletes Most of the time: Athletes have the right to control how broadcasts use their likeness. The right to approve or deny the use of their image or likeness in broadcasts is included in this.
Rights of Viewers Typically: Viewers have the right to watch paid-for broadcasts. Additionally, they typically have permission to record the broadcasts for their own use.
The field of 라이브스포츠 broadcasting is one that is constantly evolving and complex. Any content that broadcasters wish to incorporate into their broadcasts must first receive permission from the owners of the material's copyright and trademark. To broadcast their games, they must also sign contracts with athletes, teams, and leagues. Most of the time, athletes have the right to control how broadcasts use their likeness. Most of the time, viewers have the right to watch the paid-for broadcasts and record them for their own use.
Previous Article How To Use Instagram Likes To Increase Engagement On Your Profile
Next Article CANADA'S BIGGEST ONLINE MARIJUANA DISPENSARY
Step-by-step guide on Which app to use to place games?
Learn How Sports Can Improve Your Health.


Lois M. Bennett, 79, of Fombell passed away on Saturday, June 2, 2018, at Cranberry Place in Cranberry Twp. Visitation will be held on Monday from 4 to 7 p.m. and on Tuesday from 10 to 11 a.m. at the SAM TEOLIS FUNERAL HOME, INC. & CREMATION SERVICES, 309 Spring Ave., Ellwood City. Services for Lois will be held on Tuesday at 11 a.m. at the funeral home with the Rev. Bob Neigel officiating. Interment will follow at the St. Marks Cemetery.


The last two outright Tour Cards have been decided at 2019 PDC UK Q-School with Nathan Derry and Kirk Shepherd coming through the field.
Derry is known mainly for competing in the Grand Slam but will make his return to the full PDC Tour for the first time in three years.
This was after he smashed Joe Murnan who was already assured an immediate return to the tour anyway.
Then Kirk Shepherd saw off Kevin Painter in what will be a disappointing defeat for 'The Artist'.
Painter went in front early but Shepherd came back to win and assure Barrie Bates a Tour Card after the former World Championship finalist like Murnan already confirmed his.
If Painter would have won, Cameron Menzies would have also claimed one so it's disappointment also for the Scotsman.


It's important to consider how a divorce may affect your children. Divorce is generally a stressful experience, but certain factors can make divorce harder or easier for children to deal with. As you answer these questions, keep in mind the personalities and characteristics of your children. Whether you divorce or not, answering these questions can help you better understand your children's needs at this time.
It is important to consider how your children experience your marriage. How do you think your children view your marriage? For each of these questions, circle the answer that best describes your situation.
How do you think your children view your marriage?
Higher scores indicate that your children are more likely to be aware of a lot of conflict between you and your spouse, while lower scores indicate that your children are less likely to be aware of conflict between you and your spouse. If your score is greater than 25, then your children, if they are old enough, are probably aware of your marital conflict.
Overall, how do you think your children view your marriage? How aware do you think they are of your marital problems?


The story began as you would in a screenplay to write: In the summer of 1966, learned of the regional law of successful Swedish singer Björn Ulvaeus as a pianist, also well-booked Benny Andersson. The two hit it off immediately, at their second Meeting they wrote after a Party at home with björn's parents their first joint piece. Then the women came into play: Björn fell in love with Agnetha and Benny in Anni-Frid, who had also music in their blood. It was able to embark on this journey together.
And so the four stood on the 29. March 1972 at Stockholm's Metronome Studio and sang suitable to your personal Situation, "People Need Love". It is the first joint TV performance followed in the Swedish TV, the four were sitting around at the time, still good to have a piano. In June 1972, when the people were looking forward to the European football championship, Germany, with their Stars Beckenbauer, Netzer and Muller later won, the first Single of the freshly formed Swedish pop band in the record stores. Nobody had had the idea for the catchy band name "ABBA", therefore Björn & Benny, Agnetha & Anni-Frid wore a somewhat bulky "" on the Cover. The music was still, in the autumn of the year, the first Album followed.
from then on, the success could not be stopped. In 1974, Germany won the world Cup and ABBA at the Eurovision Song Contest with "Waterloo". The winning song was a worldwide success and marked the international breakthrough of Swedish pop group. But not only the music of the Hit, the fancy trendy costumes that Agnetha, Anni-Frid, Björn and Benny in their music videos was wearing, enthusiastic Fans.
ABBA was a gigantic success story. With over 400 million records sold, the Band is among the world's absolute Top-Sellers. As a Musical, the Songs broke a lot of records. 20 years ago Mamma Mia "in London, had its Premiere". Meanwhile, the Show has torn the world more than 60 million people from their Seats. The same movie was also a Hit.
to Me the incomparable ABBA Sound, in 1975 in Ratzeburg met, because there went on a class trip. In the evening there was in the basement of the hostel, always Disco. Flickering light, Cola and loud music. A song was felt played throughout the evening in an endless loop: "SOS".
I fidgeted with bell-bottoms and an oversized collar on the shirt as a vibrant emergency call pillar. I gave up everything, to impress an adored classmate final. So bad that I was not, apparently, because she went after the return, in the otter dorfer Café Brüning eat me an ice cream. ABBA, I thank you!
I caught the man of my girlfriend in flagrante delicto, what should I do now?


International Federation of EEG society has suggested 10 – 20 electrode placement system for EEG recording. Silver / silver chloride electrodes are used as surface electrodes in this setup. On the scalp, distances between two electrodes are given as 10% and 20% of the distance between specified points.
Nasion and Inion are the two reference points near the ear lobes of the human. Over the head, the distance between nasion and inion are divided into 5 points. The nasion – inion distance via the vertex is measured and three electrodes are placed as 1 in frontal, 1 in central and 1 in parietal. They are placed at a distance of 10%, 20%, 20%, 20%, 20% and 10% of this length. Now, similarly nasion – inion distance is measured along the temporal lobes and five electrode are placed as two in frontal, 2 in temporal and 1 in occipital lobes respectively. They are also placed at a distance of 10%, 20%, 20%, 20%, 20% and 10% of this length on either side. Lastly, on the peripheries of the circle remaining six electrodes are fixed as 2 in frontal, 2 in central and 2 in parietal. So, in the setup totally 19 electrode are placed on the brain scalp and one electrode which acts as reference is placed at the ear lobe. This is popularly known as 10 – 20 EEG system.
Here 21-electrode system is used. Electrodes are connected to 8-channel selector. Output from 8-channel connector goes to the differential amplifier bank. Differential amplifier is made of preamplifiers that are used to reduce noise. 50 Hz noise is created due to A.C interference that can be reduced using differential amplifier. The output obtained from differential amplifier is connected with signal processing unit. After further processing, the display unit displays the data.
This system helps to record the potentials generated from the sensory parts of the brain. To achieve this, output unit is connected with audio stimulus, visual stimulus and touch stimulus. It can also measure the time delay between stimulus and response from brain. In addition, we have a filter bank consisting of low pass, high pass and band pass filters. They help to remove noise from the brain waves. For the output recording, we can use either pen recorder or CRO. Three modes namely Unipolar, Average mode and bipolar recording are used to measure EEG.


A connection is made to the source and target database servers.
Select the source RDBMS that is migrating to MySQL. Choose the Database System that is being migrated and the other connection parameters will change accordingly (see the figure that follows).
This connection definition may be saved using the Store connection for future use as option, and there is also the Test Connection option.
The target is the MySQL database that will contain the migrated data. Choose an existing MySQL Workbench connection or select Manage Stored Connections from drop-down list to create a new MySQL connection. An example stored connection appears in the following figure.


With a positive and progressive attitude to customer's interest, our company continuously improves our product quality to meet the needs of customers and further focuses on safety, reliability, environmental requirements, and innovation of Amazon Stretch Film , amazon stretch film , Hand Stretch Film , please feel free to contact me. We are looking forward to forming successful business relationship with new clients around the world.
"We have now a skilled, performance group to offer excellent support for our consumer. We usually follow the tenet of customer-oriented, details-focused for Amazon Stretch Film , amazon stretch film , Hand Stretch Film , With excellent products high quality service and sincere attitude of service we ensure customer satisfaction and help customers create value for mutual benefit and create a win-win situation. Welcome customers all over the world to contact us or visit our company. We will satisfy you with our professional service!


text:
Tag: RIP
The soccer/football legend King Pele passed away today after losing an ongoing battle with cancer since 2021. King Pele was consider one of if not the best of all time football player. He was the soccer GOAT (greatest of all time) to many. King had won three FIFA world cups, and scored 1,279 goals in 1,363 games. King Pele was 82 at his time of death.
Author Meme LordPosted on December 29, 2022 December 29, 2022 Categories Articles, Social, SportsTags celebrity deaths, football, legend, RIP, soccer
Olivia Newton-John Passes (RIP Tribute)
Olivia Newton-John, best known for her starring role in Grease and her hit song "Physical", passed away today on August 8, 2022. She was born September 26th, 1948, and died at the age of 73. She was a kind entertainer known for her activism in animal rights and the environment.
Author Meme LordPosted on August 8, 2022 August 8, 2022 Categories Cool StuffTags celebrity deaths, RIP, social
Betty White Dies (RIP Tribute with Memes)
The world is in shock today to hear the news that Betty White (age 99) has died today on New Year's Eve 2021. Only days before her Birthday on January 17th, which would made her 100! This news comes days later after another legend and huge pop culture icon John Madden had passed. What a way to end the year.
Betty White made a career as an actress spanning over nine decades! Starting off as a radio actress and personality, then being known as the First Lady of Gameshows, and mostly known for her own show The Betty White Show and her hilarious and loving role as Rose on Golden Girls in later years. Betty White even served as a member of the American Women's Voluntary Services during World War II.
Author Meme LordPosted on December 31, 2021 August 8, 2022 Categories Articles, Movies, SocialTags Betty White, celebrity deaths, RIP, social
RIP John Madden Tribute (With Memes)
2021 is ending with a boom with the sad news of football legend John Madden's passing. John Madden was a legend in the field and a household name for the sport, and one if not the most famous NFL commentators. His life spanned from April 10, 1936 – December 28, 2021, living for 85 years until his death.
Author Meme LordPosted on December 29, 2021 December 31, 2021 Categories ArticlesTags celebrity deaths, football, John Madden, nfl, RIP
Goodbye Stan Lee
The internet exploded, with social media love and appreciation for Stan Lee, who passed recently. I didn't make a post on this the day of. Everyone knew, and I choose to celebrate his life instead of working on a post. But there is a couple of things I will quietly say.
ComicsandMemes would not of existed without him. Stan Lee inspired me to take such an interest in comics. His passion and love for comics accompanied by his comforting/charismatic personality accompanied with a fatherly unique voice made him the grandfather of many comic families.
Rest in peace Stan Lee, the world will never be the same without you. Yet he sure did change it why he was here.
Author Meme LordPosted on November 20, 2018 November 20, 2018 Categories ArticlesTags comics. Marvel, RIP, Stan LeeLeave a comment on Goodbye Stan Lee


To celebrate its brand new look, Marshall's Londis Plus in Mullingar, Co Westmeath has launched a €10,000 summer holiday giveaway!
The store, owned by the Marshall family for 60 years until its purchase in 2009 by Owen Doyle officially opened its doors as a Londis PLUS store on Friday 31st May and will now trade as Marshall's Londis PLUS, Mullingar.
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />Speaking of the launch, Owen Doyle, owner of Marshall's Londis Plus, Mullingar said "We have made significant enhancements to our offering as part of this process and are delighted to bring the Londis PLUS brand to our customers in Mullingar. With Londis we will bring a vastly enhanced value offering, a vibrant product range and a very enjoyable shopping experience to our customers".
The store, which employs 38 staff in total includes a recently upgraded hot and cold deli, including the Londis Fresh range of freshly prepared sandwiches, salads and ready meals. Consumers will continue to enjoy the traditional butchery famed for its high quality meats, whilst a premium coffee offering "Plantation Coffee Company" will serve the perfect cup alongside the store's premium range of freshly baked goods. A wide selection of well-priced beers and wines completes the store's broad offering and brings the best of range and value for money to the local Mullingar community. The store has also launched a loyalty scheme as an additional reward for shoppers and has invested €10,000 in an exciting Summer Holiday Giveaway. Customers who sign up to the loyalty scheme and earn 200 points before July 12th will be in with the chance of winning one of five holiday vouchers to the value of €2000!
Speaking of the new partnership, Stephen O'Riordan, Londis Chief Executive said: "The launch of Marshall's Londis Plus represents an exciting time for Owen, his excellent team and the customers who have supported the store over the years. The Marshall family name is well recognised in Mullingar and Owen and his team are hugely committed to serving it well. Customers will enjoy a breadth of product range together with a value oriented grocery offering whilst retaining the warmth, familiarity and commitment to service that the store has been so long recognised for locally. I would like to extend a sincere welcome to Owen and his entire team in Mullingar to the Londis Group." The store held a launch event on Friday 31st May with local radio station Midlands 103FM broadcasting live from the store. There was lots of family friendly fun including face painting, a bouncing castle, food sampling and prize giveaways including €1,000 of shopping vouchers won by lucky shoppers on the day!


text:
Nahleh's artistic saga, a tale of vivid colors
Ava Anderson| The Daily Star
A version of this article appeared in the print edition of The Daily Star on May 25, 2019, on page 12.
Olafur Eliasson retrospective is sensory feast
Cave art to crashing computers: Dealing with the human form
A pocket-friendly Arab Art Fair
Mona Nahleh
Maissa Fatte
As the Latin name suggests "Revertetur," the exhibition now up at Carre d'artistes, marks a return home for the works of famed artist Mona Nahleh.
Nahleh's Beirut-based fans became interested in the work when she posted glimpses of the series on social media, which prompted the decision to exhibit these works back in Lebanon as "a kind of retrospective," said Nahleh, who started her artistic career in 1994 .
Nahleh prefers not to put her work within any particular school, but chooses expressionism if pressed.
Though Nahleh claims not to think too much herself while working, her figures often appear deeply lost in thought.
Nahleh makes a point of not trying to say much through her paintings.
The gallery currently shows 20-25 international artists, including six or seven Lebanese artists.
To ensure that art is accessible to a wide audience, each artwork is priced according to its size, and the entry point for a small format artwork is $165, regardless of the artist or the technique used.
More from Ava Anderson
Bringing yoga to underprivileged communities
Dreams of plunging into the void


text:
package io.lettuce.core.cluster.topology;

import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.anyLong;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.TimeUnit;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;

import io.lettuce.core.ConnectionFuture;
import io.lettuce.core.RedisException;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.async.RedisAsyncCommands;
import io.lettuce.core.cluster.RedisClusterClient;
import io.lettuce.core.cluster.models.partitions.Partitions;
import io.lettuce.core.cluster.models.partitions.RedisClusterNode;
import io.lettuce.core.codec.RedisCodec;
import io.lettuce.core.protocol.CommandType;
import io.lettuce.core.protocol.RedisCommand;
import io.lettuce.core.resource.ClientResources;
import io.lettuce.core.resource.DnsResolver;
import io.lettuce.core.resource.SocketAddressResolver;
import io.lettuce.test.settings.TestSettings;
import io.netty.util.Timeout;
import io.netty.util.concurrent.EventExecutorGroup;

/**
 * Unit tests for {@link ClusterTopologyRefresh}.
 *
 * @author Mark Paluch
 * @author Christian Weitendorf
 */
@SuppressWarnings("unchecked")
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
class ClusterTopologyRefreshUnitTests {

    private static final String NODE_1_VIEW = "1 127.0.0.1:7380 master,myself - 0 1401258245007 2 disconnected 8000-11999\n"
            + "2 127.0.0.1:7381 master - 111 1401258245007 222 connected 7000 12000 12002-16383\n";

    private static final String NODE_2_VIEW = "1 127.0.0.1:7380 master - 0 1401258245007 2 disconnected 8000-11999\n"
            + "2 127.0.0.1:7381 master,myself - 111 1401258245007 222 connected 7000 12000 12002-16383\n";

    private DefaultClusterTopologyRefresh sut;

    @Mock
    private RedisClusterClient client;

    @Mock
    private StatefulRedisConnection<String, String> connection;

    @Mock
    private ClientResources clientResources;

    @Mock
    private NodeConnectionFactory nodeConnectionFactory;

    @Mock
    private StatefulRedisConnection<String, String> connection1;

    @Mock
    private RedisAsyncCommands<String, String> asyncCommands1;

    @Mock
    private StatefulRedisConnection<String, String> connection2;

    @Mock
    private RedisAsyncCommands<String, String> asyncCommands2;

    @Mock
    private EventExecutorGroup eventExecutors;

    @BeforeEach
    void before() {

        io.netty.util.Timer timer = mock(io.netty.util.Timer.class);
        when(timer.newTimeout(any(), anyLong(), any())).thenReturn(mock(Timeout.class));
        when(clientResources.timer()).thenReturn(timer);
        when(clientResources.socketAddressResolver()).thenReturn(SocketAddressResolver.create(DnsResolver.unresolved()));
        when(clientResources.eventExecutorGroup()).thenReturn(eventExecutors);
        doAnswer(invocation -> {
            ((Runnable) invocation.getArgument(0)).run();
            return null;
        }).when(eventExecutors).execute(any(Runnable.class));

        when(connection1.async()).thenReturn(asyncCommands1);
        when(connection2.async()).thenReturn(asyncCommands2);
        when(connection1.closeAsync()).thenReturn(CompletableFuture.completedFuture(null));
        when(connection2.closeAsync()).thenReturn(CompletableFuture.completedFuture(null));

        when(connection1.dispatch(any(RedisCommand.class))).thenAnswer(invocation -> {

            TimedAsyncCommand command = (TimedAsyncCommand) invocation.getArguments()[0];
            if (command.getType() == CommandType.CLUSTER) {
                command.getOutput().set(ByteBuffer.wrap(NODE_1_VIEW.getBytes()));
                command.complete();
            }

            if (command.getType() == CommandType.CLIENT) {
                command.getOutput().set(ByteBuffer.wrap("c1\nc2\n".getBytes()));
                command.complete();
            }

            if (command.getType() == CommandType.INFO) {
                command.getOutput().set(ByteBuffer.wrap(
                        "# Clients\nconnected_clients:2\nclient_longest_output_list:0\nclient_biggest_input_buf:0\nblocked_clients:0"
                                .getBytes()));
                command.complete();
            }

            command.encodedAtNs = 10;
            command.completedAtNs = 50;

            return command;
        });

        when(connection2.dispatch(any(RedisCommand.class))).thenAnswer(invocation -> {

            TimedAsyncCommand command = (TimedAsyncCommand) invocation.getArguments()[0];
            if (command.getType() == CommandType.CLUSTER) {
                command.getOutput().set(ByteBuffer.wrap(NODE_2_VIEW.getBytes()));
                command.complete();
            }

            if (command.getType() == CommandType.CLIENT) {
                command.getOutput().set(ByteBuffer.wrap("".getBytes()));
                command.complete();
            }

            if (command.getType() == CommandType.INFO) {
                command.getOutput().set(ByteBuffer.wrap(
                        "# Clients\nconnected_clients:2\nclient_longest_output_list:0\nclient_biggest_input_buf:0\nblocked_clients:0"
                                .getBytes()));
                command.complete();
            }

            command.encodedAtNs = 10;
            command.completedAtNs = 20;

            return command;
        });

        sut = new DefaultClusterTopologyRefresh(nodeConnectionFactory, clientResources);
    }

    @Test
    void getNodeTopologyView() throws Exception {
        Requests requestedTopology = createClusterNodesRequests(1, NODE_1_VIEW);
        Requests requestedClients = createClientListRequests(1,
                "# Clients\r\nconnected_clients:2438\r\nclient_longest_output_list:0\r\nclient_biggest_input_buf:0\r\nblocked_clients:0");
        RedisURI redisURI = RedisURI.create("redis://localhost:1");
        NodeTopologyView nodeTopologyView = NodeTopologyView.from(redisURI, requestedTopology, requestedClients);
        assertThat(nodeTopologyView.getConnectedClients()).isEqualTo(2438);
    }

    @Test
    void getNodeSpecificViewsNode1IsFasterThanNode2() throws Exception {

        Requests requests = createClusterNodesRequests(1, NODE_1_VIEW);
        requests = createClusterNodesRequests(2, NODE_2_VIEW).mergeWith(requests);

        Requests clientRequests = createClientListRequests(1, "c1\nc2\n").mergeWith(createClientListRequests(2, "c1\nc2\n"));

        NodeTopologyViews nodeSpecificViews = sut.getNodeSpecificViews(requests, clientRequests);

        Collection<Partitions> values = nodeSpecificViews.toMap().values();

        assertThat(values).hasSize(2);

        for (Partitions value : values) {
            assertThat(value).extracting("nodeId").containsSequence("1", "2");
        }
    }

    @Test
    void shouldNotRequestTopologyIfExecutorShutsDown() {

        when(eventExecutors.isShuttingDown()).thenReturn(true);

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verifyNoInteractions(nodeConnectionFactory);
    }

    @Test
    void partitionsReturnedAsReported() throws Exception {

        System.setProperty("io.lettuce.core.topology.sort", "none");

        String NODE_1_VIEW = "2 127.0.0.1:7381 master - 111 1401258245007 222 connected 7000 12000 12002-16383\n"
                + "1 127.0.0.1:7380 master,myself - 0 1401258245007 2 disconnected 8000-11999\n";
        String NODE_2_VIEW = "2 127.0.0.1:7381 master,myself - 111 1401258245007 222 connected 7000 12000 12002-16383\n"
                + "1 127.0.0.1:7380 master - 0 1401258245007 2 disconnected 8000-11999\n";

        Requests requests = createClusterNodesRequests(1, NODE_1_VIEW);
        requests = createClusterNodesRequests(2, NODE_2_VIEW).mergeWith(requests);

        Requests clientRequests = createClientListRequests(1, "c1\nc2\n").mergeWith(createClientListRequests(2, "c1\nc2\n"));

        NodeTopologyViews nodeSpecificViews = sut.getNodeSpecificViews(requests, clientRequests);

        Collection<Partitions> values = nodeSpecificViews.toMap().values();

        assertThat(values).hasSize(2);

        for (Partitions value : values) {
            assertThat(value).extracting("nodeId").containsSequence("2", "1");
        }

        System.getProperties().remove("io.lettuce.core.topology.sort");
    }

    @Test
    void getNodeSpecificViewTestingNoAddrFilter() throws Exception {

        String nodes1 = "n1 10.37.110.63:7000 slave n3 0 1452553664848 43 connected\n"
                + "n2 10.37.110.68:7000 slave n6 0 1452553664346 45 connected\n"
                + "badSlave :0 slave,fail,noaddr n5 1449160058028 1449160053146 46 disconnected\n"
                + "n3 10.37.110.69:7000 master - 0 1452553662842 43 connected 3829-6787 7997-9999\n"
                + "n4 10.37.110.62:7000 slave n3 0 1452553663844 43 connected\n"
                + "n5 10.37.110.70:7000 myself,master - 0 0 46 connected 10039-14999\n"
                + "n6 10.37.110.65:7000 master - 0 1452553663844 45 connected 0-3828 6788-7996 10000-10038 15000-16383";

        Requests clusterNodesRequests = createClusterNodesRequests(1, nodes1);
        Requests clientRequests = createClientListRequests(1,
                "# Clients\r\nconnected_clients:2\r\nclient_longest_output_list:0\r\nclient_biggest_input_buf:0\r\nblocked_clients:0");

        NodeTopologyViews nodeSpecificViews = sut.getNodeSpecificViews(clusterNodesRequests, clientRequests);

        List<Partitions> values = new ArrayList<>(nodeSpecificViews.toMap().values());

        assertThat(values).hasSize(1);

        for (Partitions value : values) {
            assertThat(value).extracting("nodeId").containsOnly("n1", "n2", "n3", "n4", "n5", "n6");
        }

        RedisClusterNodeSnapshot firstPartition = (RedisClusterNodeSnapshot) values.get(0).getPartition(0);
        RedisClusterNodeSnapshot selfPartition = (RedisClusterNodeSnapshot) values.get(0).getPartition(4);
        assertThat(firstPartition.getConnectedClients()).isEqualTo(2);
        assertThat(selfPartition.getConnectedClients()).isNull();
    }

    @Test
    void getNodeSpecificViewsNode2IsFasterThanNode1() {

        Requests clusterNodesRequests = createClusterNodesRequests(5, NODE_1_VIEW);
        clusterNodesRequests = createClusterNodesRequests(1, NODE_2_VIEW).mergeWith(clusterNodesRequests);

        Requests clientRequests = createClientListRequests(5, "c1\nc2\n").mergeWith(createClientListRequests(1, "c1\nc2\n"));

        NodeTopologyViews nodeSpecificViews = sut.getNodeSpecificViews(clusterNodesRequests, clientRequests);
        List<Partitions> values = new ArrayList<>(nodeSpecificViews.toMap().values());

        assertThat(values).hasSize(2);

        for (Partitions value : values) {
            assertThat(value).extracting("nodeId").containsExactly("2", "1");
        }
    }

    @Test
    void shouldAttemptToConnectOnlyOnce() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedWithException(new RedisException("connection failed")));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381)));
    }

    @Test
    void shouldNotConnectToSeedNodeTwice() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("foobar", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("foobar", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("foobar", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381)));
    }

    @Test
    void shouldFailIfNoNodeConnects() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedWithException(new RedisException("connection failed")));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedWithException(new RedisException("connection failed")));

        try {
            sut.loadViews(seed, Duration.ofSeconds(1), true).toCompletableFuture().join();
            fail("Missing RedisConnectionException");
        } catch (Exception e) {

            assertThat(e.getCause()).hasMessageStartingWith("Cannot retrieve cluster partitions from ");
            assertThat(e.getCause().getSuppressed()).hasSize(2);
        }

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381)));
    }

    @Test
    void shouldShouldDiscoverNodes() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381)));
    }

    @Test
    void shouldShouldNotDiscoverNodes() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        sut.loadViews(seed, Duration.ofSeconds(1), false);

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verifyNoMoreInteractions(nodeConnectionFactory);
    }

    @Test
    void shouldNotFailOnDuplicateSeedNodes() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381),
                RedisURI.create("127.0.0.1", 7381));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380)));
        verify(nodeConnectionFactory).connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381)));
    }

    @Test
    void shouldCloseConnections() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        sut.loadViews(seed, Duration.ofSeconds(1), true);

        verify(connection1).closeAsync();
        verify(connection2).closeAsync();
    }

    @Test
    void undiscoveredAdditionalNodesShouldBeLastUsingClientCount() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        Map<RedisURI, Partitions> partitionsMap = sut.loadViews(seed, Duration.ofSeconds(1), false).toCompletableFuture()
                .join();

        Partitions partitions = partitionsMap.values().iterator().next();

        List<RedisClusterNode> nodes = TopologyComparators.sortByClientCount(partitions);

        assertThat(nodes).hasSize(2).extracting(RedisClusterNode::getUri).containsSequence(seed.get(0),
                RedisURI.create("127.0.0.1", 7381));
    }

    @Test
    void discoveredAdditionalNodesShouldBeOrderedUsingClientCount() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        Map<RedisURI, Partitions> partitionsMap = sut.loadViews(seed, Duration.ofSeconds(1), true).toCompletableFuture().join();

        Partitions partitions = partitionsMap.values().iterator().next();

        List<RedisClusterNode> nodes = TopologyComparators.sortByClientCount(partitions);

        assertThat(nodes).hasSize(2).extracting(RedisClusterNode::getUri).contains(RedisURI.create("127.0.0.1", 7381),
                seed.get(0));
    }

    @Test
    void undiscoveredAdditionalNodesShouldBeLastUsingLatency() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));

        Map<RedisURI, Partitions> partitionsMap = sut.loadViews(seed, Duration.ofSeconds(1), false).toCompletableFuture()
                .join();

        Partitions partitions = partitionsMap.values().iterator().next();

        List<RedisClusterNode> nodes = TopologyComparators.sortByLatency(partitions);

        assertThat(nodes).hasSize(2).extracting(RedisClusterNode::getUri).containsSequence(seed.get(0),
                RedisURI.create("127.0.0.1", 7381));
    }

    @Test
    void discoveredAdditionalNodesShouldBeOrderedUsingLatency() {

        List<RedisURI> seed = Collections.singletonList(RedisURI.create("127.0.0.1", 7380));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        Map<RedisURI, Partitions> partitionsMap = sut.loadViews(seed, Duration.ofSeconds(1), true).toCompletableFuture().join();

        Partitions partitions = partitionsMap.values().iterator().next();

        List<RedisClusterNode> nodes = TopologyComparators.sortByLatency(partitions);

        assertThat(nodes).hasSize(2).extracting(RedisClusterNode::getUri).contains(RedisURI.create("127.0.0.1", 7381),
                seed.get(0));
    }

    @Test
    void shouldPropagateCommandFailures() {

        List<RedisURI> seed = Arrays.asList(RedisURI.create("127.0.0.1", 7380), RedisURI.create("127.0.0.1", 7381));

        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7380))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection1));
        when(nodeConnectionFactory.connectToNodeAsync(any(RedisCodec.class),
                eq(InetSocketAddress.createUnresolved("127.0.0.1", 7381))))
                        .thenReturn(completedFuture((StatefulRedisConnection) connection2));

        reset(connection1, connection2);

        when(connection1.async()).thenReturn(asyncCommands1);
        when(connection2.async()).thenReturn(asyncCommands2);
        when(connection1.closeAsync()).thenReturn(CompletableFuture.completedFuture(null));
        when(connection2.closeAsync()).thenReturn(CompletableFuture.completedFuture(null));

        when(connection1.dispatch(any(RedisCommand.class))).thenAnswer(invocation -> {

            TimedAsyncCommand command = invocation.getArgument(0);
            command.completeExceptionally(new RedisException("AUTH"));
            return command;
        });

        RedisException nestedException = new RedisException("NESTED");

        when(connection2.dispatch(any(RedisCommand.class))).thenAnswer(invocation -> {

            TimedAsyncCommand command = invocation.getArgument(0);
            command.completeExceptionally(nestedException);
            return command;
        });

        CompletionStage<Map<RedisURI, Partitions>> actual = sut.loadViews(seed, Duration.ofSeconds(1), true);
        assertThat(actual).isCompletedExceptionally();

        try {
            actual.toCompletableFuture().join();
            fail("Missing CompletionException");
        } catch (CompletionException e) {

            assertThat(e.getCause()).hasSuppressedException(nestedException);
        }
    }

    Requests createClusterNodesRequests(int duration, String nodes) {

        RedisURI redisURI = RedisURI.create("redis://localhost:" + duration);
        Connections connections = new Connections(clientResources, new HashMap<>());
        connections.addConnection(redisURI, connection);

        Requests requests = connections.requestTopology(100, TimeUnit.SECONDS);
        TimedAsyncCommand<String, String, String> command = requests.getRequest(redisURI);

        command.getOutput().set(ByteBuffer.wrap(nodes.getBytes()));
        command.complete();
        command.encodedAtNs = 0;
        command.completedAtNs = duration;

        return requests;
    }

    Requests createClientListRequests(int duration, String response) {

        RedisURI redisURI = RedisURI.create("redis://localhost:" + duration);
        Connections connections = new Connections(clientResources, new HashMap<>());
        connections.addConnection(redisURI, connection);

        Requests requests = connections.requestTopology(100, TimeUnit.SECONDS);
        TimedAsyncCommand<String, String, String> command = requests.getRequest(redisURI);

        command.getOutput().set(ByteBuffer.wrap(response.getBytes()));
        command.complete();

        return requests;
    }

    private static <T> ConnectionFuture<T> completedFuture(T value) {

        return ConnectionFuture.from(InetSocketAddress.createUnresolved(TestSettings.host(), TestSettings.port()),
                CompletableFuture.completedFuture(value));
    }

    private static <T> ConnectionFuture<T> completedWithException(Exception e) {

        CompletableFuture<T> future = new CompletableFuture<>();
        future.completeExceptionally(e);

        return ConnectionFuture.from(InetSocketAddress.createUnresolved(TestSettings.host(), TestSettings.port()), future);
    }

}

redpajama_set_name: RedPajamaGithub


text:
Behemoth release live video version of "A Forest"
May 28, 2020 May 28, 2020 NextMosh StaffLive Video, News
Share the post "Behemoth release live video version of "A Forest""
Polish extremists Behemoth have shared a new live video for their latest single "A Forest" (a cover of the The Cure classic, featuring Shining's Niklas Kvarforth) which appears on the band's recently announced EP of the same name (due out tomorrow, May 29th, through New Aeon Musick – pre-order).
The clip was shot live in Helsinki on the last day of Behemoth's 2020 trek with Slipknot. Stream it below.
Concert shot by Lina Glasir
Upon Wings release new version of "Amazing Grace"
The Agonist release "In Vertigo" video
Jarhead Fertilizer release new song "Silence The Narc"
Chevelle post behind-the-scenes look at the making of "Self Destructor" video
Kardashev sign worldwide deal with Metal Blade Records


text:
Site of Mousehold Heath Aerodrome and World War Two heavy anti-aircraft battery
In October 1914 the Royal Flying Corps took over the old cavalry drill ground as an airfield, now the Heartsease Estate, and erected the HQ buildings on the other side of Salhouse Road. Hangars and other buildings survive on Roundtree industrial estate. In the 1920s the field was given to the Norfolk and Norwich Aero Club. It has been suggested that the site was used as a decoy airfield in the early years of World War Two, but no physical evidence has been found to support this. Aerial photography shows the presence of an Anti-Aircraft battery and radio beacon on this site during World War Two, as well as anti-aircraft ditches (NHER 51903) and possible training trenches (NHER 51902). The hangars went on to be used as part of Barnard's Wire-netting factory, the remainder of which was destroyed 1994.
TG 251 106
TG21SE
NORWICH, NORWICH, NORFOLK
SPROWSTON, BROADLAND, NORFOLK
In October 1914 the Royal Flying Corps took over the old cavalry drill ground as an airfield (now the Heartease Estate) and erected the HQ buildings on the other side of Salhouse Road. Hangars and other buildings survive on Roundtree industrial estate. In the 1920s the field was given to the Norfolk and Norwich Aero Club. A railway across the heath from Thorpe Station served the drome. In the early years of World War Two it was reconstructed as a dummy airfield with mock Hudsons. Ceased operation around 1950 when used as a heliport for mail deliveries. Opened as Norwich Municipal Airport 21 June 1933 by the Prince of Wales.
Information from Norfolk and Suffolk Aviation Museum. [1].
Drawing in Norfolk Industrial Archaeology Society files shows remarkable interior structure of hangar roof.
Newspaper cuttings and further details in file.
4 June 1980. NAU air photography.
Cropmarks of rectilinear ditches, and of pits, in parched grass of school playing field.
D. Edwards (NLA) 11 March 1981 and 7 June 1982 (S2).
On southern part of area formerly airfield - see above.
Perhaps pre-Cavalry Ground field boundaries?
E. Rose (NLA) 9 June 1982.
The hangars were destroyed before 1991.
Information from Norfolk Industrial Archaeology Society.
E. Rose (NLA) 2 August 1991.
Hangars had been used as part of Barnard's Wire-netting factory, the remainder of which was destroyed 1994. The first wire netting loom is in the Bridewell Museum. Press cutting in file and others filed under NHER 13161
E. Rose (NLA), 4 January 1995.
World War Two anti-aircraft artillery.
D. Gurney (NLA), 28 January 1997.
RAF air photograph shows AA battery and radio beacon at TG 2544 1049. AA battery consists of four rectangular structures in arc from northwest to southwest with smaller structures nearby. Radio beacon with circular grassed area (see for comparison NHER 32529) to east of AA site.
B. Cushion (NLA), 16 February 1999.
Reference (S3) questions the use as a decoy early in World War Two as he says there is no official doumentation.
E. Rose (NLA), 8 May 1998.
Further newspaper cuttings in file.
See (S4), (S5), (S6), (S7), (S8), (S9), (S10) and (S11).
T. Sunley (NLA) 23 October 2007.
November 2008. Norfolk NMP.
Aerial photography (S2), (S12)-(S22) shows the presence of the aerodrome before World War Two, a Heavy Anti-Aircraft battery on this site during World War Two, as well as anti-aircraft ditches (NHER 51903) and possible training trenches (NHER 51902).
Cropmarks of rectilinear ditches and pits, noted below, visible in the school playing field (S2), have been recorded separately as NHER 51909.
Earliest available aerial photographs (S12) for the area show a circular concrete area possibly related to the aerodrome at TG 2507 1041. Those from during World War Two (S13) demonstrate that the heavy anti-aircraft battery on the site was originally located at TG 2541 1045 approximately 50m to the east of its final position at TG 2536 1044 (S14), with the command centre possibly located to the west side, mirroring its final position in 1944. This would confirm that four mobile 3.7 inch guns were emplaced at the top of Mousehold heath at the corner of Salhouse Road in September1940, later converted to static pieces (and presumably moved) and supplemented with 2 inch anti-aircraft rockets (S24, p.193). The earliest site has a clearly visible barbed wire perimeter fence, which is supplemented and extended by 1945 (S15), but it is clear that the circular grassed area of the radar platform centred at TG 2549 1047 (the 'radio beacon' described above) and the circular concrete area also related to radar at TG 2507 1041 is in place by 1942 (S13). This would confirm that it housed GL Mark IIA radar in 1942, when it was manned by 327 Battery of the 106th Royal Artillery Regiment (S25).
The main operations base for the site, centred at TG 2537 1059 is also visible on earliest photographs, and while its character may change slightly over time, its position remains the same. It is clear that the extent of Nissen huts to the north of Salhouse Road alters from 1944 (S14), to 1945 (S15), by which time there are two more rows of Nissen huts added to the east, centred at TG 2534 1082, perhaps as the site required increased accommodation. A number of huts are also visible situated in the wooded area to the north of the factory, at TG 2520 1093 (S15) and (S20). Many hangers and Nissen huts were still extant in 1951 (S23).
The site may also have performed some military training function, as several zig-zag practice trenches are visible within the barbed wire boundary fence, centred around TG 2555 1062 (S22). Two further trenches, visible as large open earthwork features (S23) to the south of the enclosed area at TG 2533 1002 may also relate to World War Two training on the site, but their exact nature is unclear, and they have been recorded separately (NHER 51902), as they may relate to the area of intense slit trench digging around the prisoner of war camp to the west (NHER 51904). The area to the south of the anti-aircraft battery is also notable for the network of anti-glider ditches (NHER 51903), which appear to respect the 1942 perimeter of the site (S13), some of which are filled in by 1944 (S14).
It is clear that the Barnards factory continues in use throughout World War Two and beyond, and it is worth noting the camouflage on top of the factory roofs is visible during World War Two (S16).
The cropmarks of rectilinear ditches and pits, noted above, visible in the school playing field (S2), have been recorded separately as NHER 51909.
E. Bales (NMP), 12 November 2008.
AIRCRAFT HANGAR (Modern - 1901 AD? to 1994 AD?)
AIRFIELD (World War One to Cold War - 1914 AD to 1950 AD?)
MILITARY AIRFIELD (World War One - 1914 AD to 1918 AD)
RAILWAY (World War One to Cold War - 1914 AD? to 1950 AD?)
ANTI AIRCRAFT BATTERY (World War Two - 1939 AD to 1945 AD)
BARBED WIRE OBSTRUCTION (World War Two - 1939 AD to 1945 AD)
BATTERY (World War Two - 1939 AD to 1945 AD)
BOMBING DECOY? (World War Two - 1939 AD to 1945 AD)
COMMAND POST (World War Two - 1939 AD to 1945 AD)
GUN LAYING RADAR PLATFORM (World War Two - 1939 AD to 1945 AD)
HEAVY ANTI AIRCRAFT BATTERY (World War Two - 1939 AD to 1945 AD)
MILITARY BUILDING (World War Two - 1939 AD to 1945 AD)
MILITARY TRAINING SITE (World War Two - 1939 AD to 1945 AD)
MUNITIONS FACTORY (World War Two - 1939 AD to 1945 AD)
NISSEN HUT (World War Two - 1939 AD to 1945 AD)
PRACTICE TRENCH (World War Two - 1939 AD to 1945 AD)
Associated Finds - none
--- Serial: Norfolk and Suffolk Aviation Museum. April 1981. Airfields of Norfolk and Suffolk.. Vol III.
<S1> Secondary File: Secondary file.
<S2> Aerial Photograph: Edwards, D.A. (NLA). TG 2510A-C,G.
<S3> Monograph: Dobinson, C.. 1996. Bombing decoys of World War II.. p 84.
<S4> Newspaper Article: Eastern Daily Press. 30 Dec 1994.
<S5> Newspaper Article: Eastern Daily Press. 16 Mar 1991.
<S6> Newspaper Article: Eastern Daily Press. 6 Mar 1998.
<S7> Newspaper Article: Eastern Daily Press. 28 Feb 1997.
<S9> Newspaper Article: Eastern Daily Press. 25 Jun 1999.
<S10> Newspaper Article: Eastern Daily Press. 21 Feb 1977.
<S11> Newspaper Article: Eastern Daily Press. 18 Oct 1976.
<S12> Vertical Aerial Photograph: Aerofilms. Aerofilms 27416 XX-XXX-202? (NHER TG 2511C).
<S13> Vertical Aerial Photograph: RAF. 1942. RAF HLA/447 (FP) 22-23 30-APR-1942 (NMR).
<S14> Vertical Aerial Photograph: USAF. 1944. US/7GR/LOC 348 2195 27-MAY-1944 (NMR).
<S15> Vertical Aerial Photograph: RAF. 1945. RAF 106G/UK/776 6184-6 07-SEP-1945 (NMR).
<S17> Vertical Aerial Photograph: RAF. 1946. RAF 106G/UK/1606 4058-9 27-JUN-1946 (NMR).
<S18> Vertical Aerial Photograph: RAF. 1947. RAF CPE/UK/2019 5108-9 18-APR-1947 (NMR).
<S20> Vertical Aerial Photograph: RAF. 1947. RAF CPE/UK/2050 5205-7 06-MAY-1947 (NMR).
<S21> Vertical Aerial Photograph: RAF. 1947. RAF CPE/UK/2050 5220-21 06-MAY-1947 (NMR).
<S22> Vertical Aerial Photograph: RAF. 1951. RAF 58/767 (Vp1) 5064-5 29-JUL-1951 (NMR).
<S23> Vertical Aerial Photograph: RAF. 1951. RAF 58/775 (Vp1) 5048-9 21-AUG-1951 (NMR).
<S24> Publication: Kent, P. 1988. Fortifications of East Anglia.
<S25> Serial: Dobinson, C.S.. 1996. Twentieth Century Fortifications in England.. Vol I (3), p 426.
51903 Related to: Anti-landing trenches to the south of Mousehold heavy anti-aircraft battery (Monument)
51904 Related to: Area of World War One and Two practice trench digging and possible prisoner of war camp on Mousehold heath (Monument)
51902 Related to: Possible World War Two practice trenches associated with Mousehold heavy anti aircraft battery (Monument)
Military Airfields in Norfolk (Article)
Parish Summary: Norwich (Modern Period) (Parish Summary)
Parish Summary: Sprowston (Parish Summary)
Sprowston, Mousehold Heath Aerodrome - Sprowston Heritage Embroideries Group (Archaeology and Art)