text:
Veteran - Vintage - Classic - Modern
Understanding the Automobile
Motor car History
Motor Car
Mercedes engines
Mercedes OM 300 series engines (1945-1995)
Mercedes-Benz OM 300 series Diesel engines
The Mercedes-Benz OM 300 (small) series comprises several generations of four- and six-cylinder inline engines, which were mainly produced for driving light to heavy trucks. The origins go back to the time around the Second World War.
Even before the war, Mercedes-Benz was represented in all market segments for trucks, but its own 3-tonne L 3000 was clearly too expensive and too heavy. Reason for the high weight was considerably the built-up diesel engine OM 65/4 75 bhp at 2250 min -1 . In the class of light trucks with three tons of payload, the Opel Blitz was by far the market leader, this had a six-cylinder gasoline engine with 3.6-liter displacement, was light and cheap to manufacture, and also reliable and robust. For a competitive light truck Mercedes-Benz needed a small and light diesel engine. The engine should therefore with 3000 min -1 an unusually high rated speed This was a risk in many ways at the time.
The development began around 1938 and was completed around 1941. Due to the war, the production facilities could no longer be procured, also Mercedes-Benz was obliged in 1942 to produce the Opel Blitz under license. At the end of the war, the production facilities for the engine of the Opel Blitz were completed and largely undestroyed. The problem was the same as before the war: needed a light truck and a matching engine. Under the deficiency conditions of the early post-war period, the engine and existing production equipment had to be adapted to one another.
Immediately after the Second World War , the medium-duty truck L4500 was initially continued unchanged, d. H. with the pre-war engine OM67 / 4. 1954 received the engine with unchanged displacement (and otherwise unknown changes) the designation OM325; previously, the pre-war engine was already used to derive the larger capacity and more powerful OM315. In 1956, the OM326 was followed by an even stronger engine with four valves per cylinder.
Until about 1963, the engines had prechamber, then direct injection. For normal truck use, the maximum power was 240 hp = 177 kW . From about 1970, the engines were replaced by newly developed OM 400 engines . In Brazil, however, at least the OM355 was further developed and even further developed.
The Blitz engine had only four crankshaft main bearings, two cylinders each because of the lack of main bearing closer together than the cylinder with intermediate bearing. The pre-war R6 engine OM 302 was further developed: The seven crankshaft main bearings remained, the cylinder spacings were adapted to the manufacturing equipment and therefore uneven. The OM 312 was finished. A reasonably thorough test was only possible because the L 3250 vehicle did not finish until one year later than planned.
In 1954, a turbo-charged version of the OM 312 for special vehicles was added. Due to the then poor reliability of turbochargers and the low level of acceptance among customers, the more powerful OM 321 based on the OM 312 was introduced at the same time for normal freight traffic, followed by two turbocharged versions two years later.
The OM 322 was later the last version of these engines with prechamber injection , a variant of the OM 321 with modified bore and modified stroke. The tight space associated with the pre-chamber caused significant thermal problems in the engine, so that at the end of its production period, the loss ratio was still more than ten times higher than the direct injection in the first year of production.
With the OM 352, the era of direct injection was heralded in 1964 for this engine series. There have already been tests for over ten years. He replaced all his predecessors, and it therefore also reduced his performance. After a quarter of a century before the development work on this series had begun with a four-cylinder, followed in 1965 with the OM 314, the first four-cylinder diesel engine in the sales program. This was identical except for the number of cylinders with the OM 352 and for the new light trucks with Cubic cabin easily . The four-cylinder were very uncultivated, but the engines were very reliable and for the first time this was also true for the following turbo engines.
In 1983, OM 314 / OM 352 was thoroughly reworked and launched as OM 364 / OM 366. This was made necessary by the tightened environmental legislation, which promoted the transition to smaller numbers of cylinders with turbocharging and intercooling . Further tightened emissions limits then made in the 1990s finally a new development necessary, the 900 series.
Technical Description OM 312
The OM 312 is a standing rows - six cylinder - four cycle - Two valve - diesel engine with indirect injection and water cooling . The cylinder block of the engine is potted with the split crankcase and made of nickel alloyed cast iron . The cylinder liners are cast in the block. With a cylinder bore of 90 mm and a piston stroke of 120 mm, the engine has a total displacement of 4580 cm³. Forged in the cylinders are forged pistons made of light metal from Mahle with four compression rings and two oil scraper rings, The power is transmitted via slanted connecting rods with bearings made of lead bronze with steel support shells on a forged and hardened at all bearings crankshaft, which is stored seven times in lead-bronze plain bearings, also with steel support shells in the crankcase. It is equipped with six counterweights and a vibration damper.
In the crankcase runs a four-fold mounted in plain bearings down camshaft , which is driven by helical spur gears. It operates via plunger , bumpers and rocker arm, the vertically suspended valves. Each cylinder has an inlet and an outlet valve. The valves are suspended in a removable cast-iron cylinder head covering all cylinders. Towards the cylinder block, an asbestos-containing cylinder head gasket is installed.
For lubrication, a pressure circulation lubrication is used, which is maintained by a gear oil pump. The oil filter is installed in the main stream. The oil is cooled by an oil cooler with a temperature controller. The fuel is pumped out of the tank with a fuel pump and cleaned with a felt tube filter. The fuel is then pumped to the Bosch PES 6 A70 B 410 RS 64/7 injection pump, which is supplied via Bosch DNO SD 211 injection nozzlesinjected into the antechamber. A centrifugal speed governor limits the maximum speed. The air is sucked in front of the radiator and cleaned with an oil bath air filter, which also dampens the intake noise of the engine. The motor is cooled with a tube cooler whose warm air is blown away by a fan.
The power output of the engine was initially 66 kW, but was increased from 1956 by an increase in compression, speed and other control times to 74 kW.
The OM 352 is a series - six cylinder - four cycle - Diesel engine having two valves , and water cooling , substantial difference from the OM 322 and 321 is the direct injection into the piston recess. The cylinder block of the engine is cast from molybdenum-chromium-alloyed special cast iron, the crankcase is made of alloyed special gray cast iron. With a cylinder bore of 97 mm and a piston stroke of 128 mm, the engine has a total displacement of 5675 cc. The pistons are forged pistons made of light metal from Mahle , each with three compression rings and two oil scraper rings, The power is transmitted via diagonally split con rods of tempered steel with double T-section on a forged and hardened at the bearings, seven-bearing crankshaft. Connecting rod and crankshaft have three-part bearings with steel support shells. The crankshaft is equipped with counterweights and vibration dampers.
The crankcase is fitted with a hardened tempered steel camshaft mounted four times in slide bearings, which is driven by helical gears via helical gears. It actuates the hanging valves via bumpers and rocker arms . Each cylinder has an inlet and an outlet valve. The cylinder head made of molybdenum-chromium-alloyed special cast iron covering all cylinders is sealed with an asbestos-containing cylinder head gasket to the cylinder block.
The pressure circulation lubrication works with a gear oil pump and an oil filter in the main flow and an oil filter in the bypass flow. The fuel is filtered through a felt tube filter and injected into the piston recesses with injection pumps of type Bosch DLLA 150 S 187 using a Bosch PES 6 A70 C 410 RS 2085 injection pump . The injection pump has a centrifugal speed controller. The air is cleaned with an oil bath air filter. The engine is cooled with a tube cooler, whose warm exhaust air blows off a fan.
This engine provides 126 hp / 93 kW at 2800 min -1 , and provides a torque of 36 kpm / 353 Nm at 1600 min -1 . From 1966, the engine could also be supplied with turbocharger as OM 352 A, its performance increased by charging to 150 hp / 110 kW at 2800 min -1 , a further revised variant OM 352 X makes 168 hp / 124 kW at 2800 min - 1
built off
Bore × stroke
combustion process
OM 301 - R4 90 mm × 120 mm 3,052 cm³ antechamber Prototype around 1940
OM 302 - R6 90 mm × 120 mm 4.578 cc antechamber 80 hp / 3000 min -1 , prototype around 1941
lightning - R6 90 mm × 95 mm 3,626 cc carburettor 75 hp, L701
OM 312 1949 R6 90 mm × 120 mm 4.578 cc antechamber 90 hp / 2800 min -1 later 100 hp / 3000 min -1
OM 312A 1954 R6 90 mm × 120 mm 4.578 cc antechamber 115 hp
M 312 1954 R6 90 mm × 120 mm 4.578 cc carburettor 110 hp / 3000 min -1
OM 321 1954 R6 95 mm × 120 mm 5,101 cm³ antechamber 110 hp
OM 321AM 1956 R6 95 mm × 120 mm 5,101 cm³ antechamber 126 hp
OM 321A 1956 R6 95 mm × 120 mm 5,101 cm³ antechamber 132 hp
OM 322 1959 R6 97 mm × 128 mm 5,672 cm³ antechamber 126 hp / 2800 min -1
M 324 1960 R4 95 mm × 120 mm 3,401 cc carburettor 75 hp, OEM engine for Toyota SUV
OM 314 1965 R4 97 mm × 128 mm 3,758 cc Directly 80 hp, later 85 hp
OM 314A 1981 R4 97 mm × 128 mm 3,758 cc Directly 85PS, only installed in the MB-Trac 900 & MB-Trac 900 Turbo (until 1987), therefore very small quantities
OM 352 1964 R6 97 mm × 128 mm 5,638 cc Directly 126 hp, later 130 hp, reduced with 100 hp or 110 hp, in the Unimog with 65, 70, 84 or 90 hp
OM 352A > 1965 R6 97 mm × 128 mm 5,638 cc Directly 150 hp, later 156 hp, 168 hp, 172 hp
OM 362LA 1983 R6 97 mm × 128 mm 5,672 cm³ Directly 192 hp, development of the OM352A as a precursor to the OM366 (L (A))
M 352 1966 R6 97 mm × 128 mm 5,672 cm³ carburettor 130 hp
OM 353 ? R6 97 mm × 128 mm 5,672 cm³ Directly Technically identical to the OM352, the renumbering was due to the large variety of variants, otherwise model numbers would have been awarded twice
OM 360 - - - - - OM 360 (new) The collective name for OM 364/366, OM 360 (old) is an 8.4 l engine
OM 364 1984 R4 97.5 mm × 133 mm 3,970 cc Directly 90 hp / 2800 min -1
OM 364A 1986 R4 97.5 mm × 133 mm 3,970 cc Directly 115 hp / 2800 min -1
OM 364LA 1994 R4 97.5 mm × 133 mm 3,970 cc Directly 136 hp / 2600 min -1
OM 362 - - - - - shortened for OM 362LA
OM 366 1984 R6 97.5 mm × 133 mm 5,955 cc Directly 136 hp / 2800 min -1
OM 366A 1987 R6 97.5 mm × 133 mm 5,955 cc Directly 136 hp / 2400 min -1 model 366,955, used in the Unimog U 1300 L / truck 2t tmil gl, flatbed version (also with winch / transport of dangerous goods) and patient transport
OM 366LA 1991 R6 97.5 mm × 133 mm 5,955 cc Directly 192-200 hp / 2600 min -1 , later 240 hp / 2600 min -1
OM67 / 4 1945 R6 105 x 140 7.270 l antechamber 82 kW (112 hp) 2250 / min, approx. 1952: 88 kW (120 hp)
OM315 Type 1950 R6 112 x 140 8,272 l antechamber 107 kW (145 hp) 2100 / min
OM325 1954 R6 105 x 140 7.295 l antechamber 92 kW (125 hp)
OM326 1956 R6 128 × 140 10.80 l antechamber 127-147 kW (172-200 hp), 4 valves / cylinder
OM326h R6 128 × 140 10.80 l antechamber Underfloor engine for buses
OM327 ~ 1969 R6 112 x 140 8.27 l Directly 125 kW (170 hp) 2400 / min
OM346 R6 128 × 140 10.80 l Directly 132 kW (180 hp), 149 kW (202 hp) (154 kW with switchable fan), 2200 / min, 608/706 Nm
OM346h R6 128 × 140 10.80 l Directly
OM355 1967 R6 128 × 150 11.575 l Directly 169 kW (230 hp), from 1969: 177 kw (240 hp)
OM355A R6 128 × 150 11.575 l Directly 206 kW (280 hp), only in Brazil
OM355LA 1988 R6 128 × 150 11.575 l Directly 250 kW (340 hp), only in Brazil
OM360 ~ 1969 R6 115 × 140 8.72 l 125-141 kW (170-192 hp)
OM360h R6 8.72 l
OM = oil engine = diesel engine
h = horizontal / horizontal for buses
A = (turbo-) charged
LA = (turbo-) charged with intercooling
~ = year is the year of publication of operating instructions, spare parts list o. Ä. This may differ considerably from the construction period of the engine.
Mercedes OM 138 engine (1935-1940) 45 / 70 Mercedes OM 352 engine (1963-)
Mercedes OM 300 series engine (1945-1995)
Mercedes S6 engines | Mercedes S4 Engines | Mercedes diesel engines | Straight-4 Engines | Straight 6 Engines
Engines types
Petrol Engines
Straight 6 Engines
Straight-4 Engines
Mercedes Models
Mercedes V12 engines
AMG Mercedes
Mercedes M ML-Class
Read more in this section
Mercedes OM 138 engine (1935-1940)
Mercedes M 116 M117 engine (1969-1991)
Mercedes M 110 engine (1972-1989)
© 2021 Motor Car History


text:
module.exports = function(app){
  var util = require('util');
  var User = app.models.user,
      Role = require('../models/roles')(User.db);

  var abe = new User({email: 'abe@abelardos.com.fd', password: 'Paswurd123'}),
      ed  = new User({email: 'eduardo@freemail.com.fd', password: 'Qwerty124'});

  var basic = new Role({level: 0, name: 'basic'}),
      premium = new Role({level: 1, name: 'premium'}),
      admin = new Role({level: 999, name: 'admin'});

  var loadUsers = function(callback) {
    abe.save(function(err) {
      ed.save(callback);
    });
  };

  var destroyUsers = function(callback) {
    User.destroy(abe.email, function(err) {
      User.destroy(ed.email, callback);
    });
  };

  var loadRoles = function(callback) {
    console.log('deleting users')
    basic.save(function(err) {
      premium.save(function(err) {
        admin.save(callback);
      })
    })
  };

  var destroyRoles = function(callback) {
    console.log('deleting roles')
    Role.destroy('basic', function(err) {
      Role.destroy('premium', function(err) {
        Role.destroy('admin', callback);
      })
    })
  };

  return {
    loadFixtures: function(callback) {
      util.log('loading fixtures\n')
      loadUsers(function(err) { loadRoles(callback); })
    },

    tearDown: function(callback) {
      destroyUsers(function(err) { destroyRoles(callback);})
    }
  }
}

redpajama_set_name: RedPajamaGithub


Another couple of weeks of academic nightmare coming up, followed by the Easter Break (during which I'll be working, ho hum). I've got to do my second "poster session" presentation for my dissertation a week on Wednesday; next week I have all my pracs *and* I'm helping out backstage with the Student Skills competition. Oh; and I managed to get myself persuaded to go into the office at the weekend, forgetting that my mum's visiting. D'oh.
Oh yeh; my mum's visiting this weekend. She's bringing Andy (the BF1) and Puddles (the KCS2) along for Troma Night. Which is nice.
And, in other shiny happy news, I sold my old copy of The Sims: Party Pack for about the same value as it can be bought in shops. Yay, and, indeed, hey.
This auction on eBay Germany (you can use Babel Fish to translate it if you like) seems to be trying to sell a Wireless Network Cable.


text:
Virginia Madsen Biography
Born and raised in Chicago, Virginia Madsen's first screen acting job was a small role in the feature film Class (1983), starring Rob Lowe and filmed in her hometown. She was just 19 at the time and soon after, moved to Hollywood with her boyfriend, actor Bill Campbell. She worked steadily, landing jobs in films such as Electric Dreams (1984), Dune (1984) and Creator (1985).
Despite being the sister of acclaimed actor Michael Madsen and the daughter of Emmy-winning writer and producer Elaine Madsen, and despite the fact that Virginia spent years acting in motion pictures, she didn't become well known to mainstream audiences until 2002 after landing the regular role of Rebecca Sandstrom in the NBC-TV series American Dreams.
Her performance as Maya in the independent film Sideways (2004) also garnered her much acclaim, winning Best Supporting Actress awards from numerous Film Critics Associations, including Chicago, Dallas-Forth Worth, Los Angeles, New York, San Francisco, Seattle and Toronto, not to mention nominations from the Golden Globes and Academy Awards.
Madsen, who in 1994 gave birth to a son named Jack from a relationship with actor Antonio Sabato Jr., was married for three years to actor/director Danny Huston before divorcing.
FILMOGRAPHY:
Burning Bodhi (2015)
Lost Boy (2015)
Grace Stirs Up Success (2015)
Dead Rising: Watchtower (2015)
Walter (2015)
All the Wilderness (2014)
Jake Squared (2013)
Crazy Kind of Love (2013)
The Last Keepers (2013)
Amelia (2009)
In the Shadow of Wings (2008)
Cutlass (2007)
Being (2007)
Ripple Effect (2007)
Nobody Knows Anything! (2003)
Artworks (2003)
American Gun (2002)
Almost Salinas (2001)
Lying In Wait (2000)
The Haunting (1999)
The Florentine (1999)
Ballad of the Nightingale (1998)
Ambushed (1998)
The Rainmaker (1997)
Ghosts of Mississippi (1996)
Caroline at Midnight (1994)
Blue Tiger (1994)
Becoming Colette (1991)
Highlander II: The Quickening (1991)
The Hot Spot (1990)
Heart of Dixie (1989)
Third Degree Burn (1989)
Hot to Trot (1988)
Mr. North (1988)
Zombie High (1987)
Slam Dance (1987)
Fire with Fire (1986)
Modern Girls (1986)
Creator (1985)
Electric Dreams (1984)

redpajama_set_name: RedPajamaCommonCrawl


We list all 18 of brand promoter jobs hiring now in aurora for you to browse. Find one job opening that suits you the best!
RATE: 537phpFor all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd besides Manila Bulletin Bldg. and Yamaha Motors.
For provincial applicants, you may email your updated resume (with picture) to hrreanne.psa@gmail.com Just put the position youre applying for on the subject field.
400++ POSITIONS WAITING FOR YOU!!!!
For all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City.
We are located along Aurora Blvd. besides Manila Bulletin Bldg. and Yamaha Motors.
For provincial applicants you may email your updated resume (with picture) to 'johnanisco.hrpsa@yahoo.com', Just put the position youre applying for on the subject field.
We are excited working with you!!!
400++ POSITIONS WAITING FOR YOU!!!!PSA Enterprises is in need of qualified applicants for the following positions nationwide: BEAUTY ARTIST PROMODISER MERCHANDISER BRAND PROMOTER SALES ASSOCIATES OFFICE STAFF CASHIER  SERVICE CREW DRIVER PRODUCTION WORKER… More WAREHOUSE MANFor all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd besides Manila Bulletin Bldg. and Yamaha Motors.For provincial applicants you may email your updated resume (with picture) to Jerromestrada.hrpsa@gmail.com. Just put the position youre applying for on the subject field.We are excited working with you!!!
Up to 400 open positions up for grabs. For all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd besides Manila Bulletin Bldg. and Yamaha Motors.
For provincial applicants you may email your updated resume (with picture) to hrdept.psa@gmail.com. Just put the position youre applying for on the subject field.We are excited working with you!!!
For provincial applicants, you may email your updated resume (with picture) to hrdept.psa@gmail.com Just put the position youre applying for on the subject field.
- MALE ONLY- At least 18 y/o- At least high school graduate/college level- With or without sales experience- Willing to train and CAN START ASAP!!!
FOR MANILA AREA applicants kindly walk in to our office located at PSA Enterprises No. 34 M.S Bernardo Bldg. Harvard St. Corner Aurora Blvd. Brgy. Socorro Cubao Quezon City (YAMAHA MOTORCYCLE CITY and MANILA BULLETIN BLDG) are the nearest landmarks.
How to apply? Walk-in at our office located at " #34 M.S Bernardo Bldg., Harvard St., Corner Aurora Blvd., Brgy. Soccoro, Cubao Quezon City. The nearest landmark is the Manila Bulletin.
- MALE/FEMALE- At least 18 years old… More- With/without experience - With pleasing personality- CAN START TOMORROW !!!
For all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd beside Manila Bulletin Bldg. and Yamaha Motors or you may email your updated resume (with picture) to hrrosalyndiaz.psa@gmail.com.
We are excited about working with you!!!
GUYS PUNTA NA KAYO TOMORROW!!!
Age and Education- At least 18 years old - Must be high school graduate or college undergraduate.
For all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd beside Manila Bulletin Bldg. and Yamaha Motors or you may email your updated resume (with picture) to hrdept.psa@gmail.com.
Age and Education- At least 18 years old to 32 years old.- Must be high school graduate or college undergraduate.
For all interested applicants please visit us at #34 Harvard St. M.S. Bernardo Bldg., Brgy. Socorro, Cubao, Quezon City. We are located along Aurora Blvd besides Manila Bulletin Bldg. and Yamaha Motors or you may email your updated resume (with picture) to hrdept.psa@gmail.com.
We are a leading company in listing channels for job search. Everyday, we get more than 348 new jobs hiring now in Philippines. 18 brand promoter job vacancies in Aurora. Care to see more job openings?


News Americas, NEW YORK, NY, Fri. Sept. 14, 2018: This week we bring you a recipe that is especially popular in the Indo-Caribbean communities in the region and the Diaspora. It is dhal, which is usually served with rice and meat or vegetable curries or with roti or drank as a soup. Here's the recipe.
Place a pressure cooker on the stove and add 1 teaspoon oil.
Add the washed split peas along with the other ingredients.
Allow ingredients to fry in for a minute.
Add water and turn pressure on for about 15 minutes.
Remove from stove into sink and place unopened pressure under running water.
Once steam has evaporated, open pressure cooker and check doneness of peas. It should be melted and turned to a golden, yellow liquid that is not too thin.
If its too thick, add a little water to turn into a thick soup like consistency.
Return to fire and let it boil further.
Taste and add salt if needed along with a little more ground cumin.
You may also cut up an additional clove of garlic, add a little oil along with a few specks of whole-grain cumin and heat until garlic begins to brown.
Add into dhal and cover down. Leave for a few more minutes before serving.
The post Caribbean Recipe – Dhal appeared first on Caribbean and Latin America Daily News.


Jobs for Nevada's Graduates (JAG Nevada) will expand its program to serve an additional 600 students in four critical high schools in North Las Vegas as part of the "Go Deep" initiative, announced Frank R. Woodbeck, chairman of the JAG Nevada board. The four high schools include Canyon Springs, Cheyenne, Mojave and Legacy, which are rated as two-star schools in the Nevada Performance Framework.
Jobs for America's Graduates (JAG) is an innovative non-profit program that has been credited with changing the lives of a million young people across the country by helping them stay in school, move on to pursue higher education and/or gainful employment. The results of the program were so inspiring that Governor Brian Sandoval helped bring the program to Nevada in 2013. The original JAG Model was launched in 1979 in Delaware and has since been adopted by 32 states, including Nevada.
The JAG Model consists of a comprehensive set of services that applies a holistic approach to assisting students. The components include: classroom instruction, competency-based curriculums, adult mentoring, advisement and support, summer employment training, student-led leadership development, job and postsecondary education placement services, 12-month follow-up services, and an accountability system.
Nevada was selected from among the 32 states affiliated with JAG to implement the "Go Deep" program which targets high schools with a high percentage of economically disadvantaged students, Woodbeck said.
The JAG Board will provide $450,000 over three years, which is 20 percent of the program cost for the three-year period, Woodbeck said. AT&T, a JAG Nevada partner, will provide the first $150,000 of the commitment. The Clark County School District (CCSD) and Clark County government will each provide $150,000 each year for three years. The state of Nevada, through the Department of Employment, Training and Rehabilitation, will provide $90,000 each year for three years, while the JAG National Board will provide $150,000 each year for three years. The total program cost for the three-year period will be $2.3 million.
The national board is comprised of public and private sector leaders, including 10 state governors and corporate leaders from Microsoft, Western Union, Archer Daniels Midland, AT&T, Entergy, Ally Financial, The Business Roundtable, JP Morgan Chase, IBM, GE Transportation, Shell Oil, Educational Testing Service, HRG Search, General Dynamics, Brownstein Hyatt Farber Schreck, and Hospital Corporation of America.
ABOUT JAG Jobs for Nevada's Graduates Inc.(aka JAG Nevada) is a private Nevada nonprofit formed at the request of the Nevada Governor's office to serve as the home base for the Jobs for America's Graduates (JAG) program in Nevada. The JAG Multi-Year Program is a highly effective, data-driven model that raises graduation rates and prepares participants by honing their work-readiness skills. JAG students graduate at higher rates than their peers and are exceptionally prepared with a tool box of workplace skills that lead to success at work, in post-secondary education and/or the military.
For more information, contact: rcantu@jagnv.org, (702) 810-3068, or visit the website at www.jagnv.org.


text:
Stephen R Ullrich
Contract Diver
During the mid 1980s Stephen Ullrich trained as a Marine Collector in Tahiti (having arrived as crew on a square rigged sailing ship) supplying the Tropical Marine Aquarium industry in the US and Europe. On returning home Stephen joined Kelly Tarlton's Underwater World towards the end of the build project and undertook the stocking of the fish and shark tanks. Following on from this work Stephen carried out work for international marine aquarium developers Marinescape Ltd, both as a designer on proposals worldwide and marine collector on projects in Sydney, Perth and Singapore. Stephen then spent time working in the theatre industry and, later, the completion of an Architecture Degree saw him establish a career as a sole practitioner architectural designer and builder.
What do you hope to achieve on this expedition to the Kermadecs?
The Kermadecs have had an allure since reading John Wray's South Sea Vagabonds, the tales of the Bell family and the oranges of Sunday Island. It is a privilege to be part of this expedition to establish a reference fish collection for the Auckland Museum and increase the knowledge base about this island chain.
What skills are you bringing to the team on this expedition?
As an experienced sailor, marine collector/diver and designer I bring a broad range of skills to this expedition and hope to contribute across the different teams.
When you're not on an expedition what does a "day at work" look like for you?
Being self employed means my days are varied and allow me to be focused on my sons Gus and Charlie.


Ideally located in the prime touristic area of Krabi Town, Baansamrarn promises a relaxing and wonderful visit. The hotel offers a high standard of service and amenities to suit the individual needs of all travelers. Free Wi-Fi in all rooms, 24-hour security, daily housekeeping, laundromat, taxi service are just some of the facilities on offer. Comfortable guestrooms ensure a good night's sleep with some rooms featuring facilities such as closet, towels, clothes rack, television LCD/plasma screen, mirror. The hotel offers various recreational opportunities. Convenience and comfort makes Baansamrarn the perfect choice for your stay in Krabi.


text:
Q: How to force content to flow horizontally with scrollbar instead of the usual vertical way I'm displaying content horizontally only, so as more content is loaded into the view I need the width to dynamically change to accomodate letting the scrollbar handle the scrolling. So right now this code below will only take content up to 4500px, anything after that it tries to break to a new line instead of continuing horizontally. Any ideas on how I can do this?
.container-scroll {
    width: 4500px;
    min-width: 3000px;
    overflow-x:scroll;
    position: relative;
    min-height: 100%;
}

A: Don't specify a width on your container. Make sure the elements inside are display: inline.

A: You need this CSS:
.container-scroll {
    width: auto;
    min-width: 100px;
    overflow-x:scroll;
    position: relative;
    min-height: 100%;
}

Just specify required min-width and scrolling will handle rest.

redpajama_set_name: RedPajamaStackExchange


OBJECTIVE: The purpose of this study was to evaluate whether a new criterion—maximum depth of the intraluminal appendiceal fluid—is useful to differentiate between a normal appendix with diameter greater than 6 mm and appendicitis without periappendiceal inflammation.
MATERIALS AND METHODS: The study included 59 patients showing a normal appendix with diameter greater than 6 mm and having no adjacent lesions (noncomplicated-normal-appendix group), 30 patients showing a normal appendix with diameter greater than 6 mm and having adjacent lesions (complicated-normal-appendix group), and 38 patients showing appendicitis without periappendiceal inflammation (appendicitis group). The following specific CT findings were retrospectively evaluated: maximum appendiceal diameter greater than 6 mm, maximum appendiceal wall thickness greater than 3 mm, appendiceal wall enhancement, focal cecal wall thickening, adjacent adenopathy, appendicolith, and maximum depth of the intraluminal appendiceal fluid.
RESULTS: The mean maximum depth of the intraluminal appendiceal fluid in the appendicitis group was significantly higher than in the two groups with a normal appendix (Mann-Whitney U test: p < 0.001). When using maximum depth of the intraluminal appendiceal fluid greater than 2.6 mm for a criterion of appendicitis, sensitivity and specificity for differentiation between the appendicitis group and the other two groups with a normal appendix were both greater than 80%. In contrast, when using another CT a criterion, either sensitivity or specificity was 50% or less.
CONCLUSION: The new CT criterion based on the maximum depth of the intraluminal appendiceal fluid greater than 2.6 mm is particularly useful for differentiating appendicitis without periappendiceal inflammation from a normal appendix with a diameter greater than 6 mm.


text:
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#include"BlueprintGraphPrivatePCH.h"

#include "BlueprintActionDatabaseRegistrar.h"
#include "BlueprintGraphPrivatePCH.h"
#include "BlueprintNodeSpawner.h"
#include "EditorCategoryUtils.h"
#include "Editor/GraphEditor/Public/DiffResults.h"
#include "K2Node_EaseFunction.h"
#include "Kismet2NameValidators.h"
#include "KismetCompiler.h"
#include "ScopedTransaction.h"
#include "EdGraph/EdGraphNodeUtils.h" // for FNodeTextCache
#include "Kismet/KismetMathLibrary.h"

#define LOCTEXT_NAMESPACE "K2Node_EaseFunction"

struct FEaseFunctionNodeHelper
{
	static const FString& GetEaseFuncPinName()
	{
		static const FString EaseFuncPinName(TEXT("Function"));
		return EaseFuncPinName;
	}

	static const FString& GetAlphaPinName()
	{
		static const FString AlphaPinName(TEXT("Alpha"));
		return AlphaPinName;
	}

	static const FString& GetAPinName()
	{
		static const FString APinFloatName(TEXT("A"));
		return APinFloatName;
	}

	static const FString& GetBPinName()
	{
		static const FString BPinFloatName(TEXT("B"));
		return BPinFloatName;
	}

	static const FString& GetResultPinName()
	{
		static const FString ResultPinName(TEXT("Result"));
		return ResultPinName;
	}

	static const FString& GetBlendExpPinName()
	{
		static const FString BlendExpPinName(TEXT("BlendExp"));
		return BlendExpPinName;
	}

	static const FString& GetStepsPinName()
	{
		static const FString StepsPinName(TEXT("Steps"));
		return StepsPinName;
	}

	static const FString& GetShortestPathPinName()
	{
		static const FString ShortestPathPinName(TEXT("ShortestPath"));
		return ShortestPathPinName;
	}

};

UK2Node_EaseFunction::UK2Node_EaseFunction(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
	, CachedEaseFuncPin(NULL)
{
	NodeTooltip = LOCTEXT("NodeTooltip", "Interpolates from value A to value B using a user specified easing function");
	EaseFunctionName = TEXT("");
}

void UK2Node_EaseFunction::AllocateDefaultPins()
{
	Super::AllocateDefaultPins();

	const UEdGraphSchema_K2* K2Schema = GetDefault<UEdGraphSchema_K2>();

	// Add the first pin representing all available easing functions. If EEasingFunc changes its name this will fail a runtime check!
	UEnum * EaseFuncEnum = FindObject<UEnum>(ANY_PACKAGE, TEXT("EEasingFunc"), true);
	check(EaseFuncEnum != NULL);
	CachedEaseFuncPin = CreatePin(EGPD_Input, K2Schema->PC_Byte, TEXT(""), EaseFuncEnum, false, false, FEaseFunctionNodeHelper::GetEaseFuncPinName());
	SetPinToolTip(*CachedEaseFuncPin, LOCTEXT("EaseFunsPinDescription", "Specifies the desired ease function to be applied. If connected no customization is possible."));

	// Make sure that the default value is set correctly if none has been set
	K2Schema->SetPinDefaultValue(CachedEaseFuncPin);

	UEdGraphPin* AlphaPin = CreatePin(EGPD_Input, K2Schema->PC_Float, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetAlphaPinName());
	SetPinToolTip(*AlphaPin, LOCTEXT("AlphaPinTooltip", "Alpha value used to specify the easing in time."));

	// Add wildcard pins for A, B and the return Pin
	UEdGraphPin* APin = CreatePin(EGPD_Input, K2Schema->PC_Wildcard, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetAPinName());
	SetPinToolTip(*APin, LOCTEXT("APinDescription", "Easing start value"));

	UEdGraphPin* BPin = CreatePin(EGPD_Input, K2Schema->PC_Wildcard, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetBPinName());
	SetPinToolTip(*BPin, LOCTEXT("BPinDescription", "Easing end value"));

	UEdGraphPin* ResultPin = CreatePin(EGPD_Output, K2Schema->PC_Wildcard, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetResultPinName());
	SetPinToolTip(*ResultPin, LOCTEXT("ResultPinDescription", "Easing result value"));

	UEdGraphPin* ShortestPathPin = CreatePin(EGPD_Input, K2Schema->PC_Boolean, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetShortestPathPinName());
	SetPinToolTip(*ShortestPathPin, LOCTEXT("ShortestPathPinTooltip", "When interpolating the shortest path should be taken."));
	ShortestPathPin->DefaultValue = ShortestPathPin->AutogeneratedDefaultValue = TEXT("true");

	UEdGraphPin* BlendExpPin = CreatePin(EGPD_Input, K2Schema->PC_Float, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetBlendExpPinName());
	SetPinToolTip(*BlendExpPin, LOCTEXT("BlendExpPinDescription", "Blend Exponent for basic ease functions"));
	BlendExpPin->DefaultValue = BlendExpPin->AutogeneratedDefaultValue = TEXT("2.0");

	UEdGraphPin* StepsPin = CreatePin(EGPD_Input, K2Schema->PC_Int, TEXT(""), NULL, false, false, FEaseFunctionNodeHelper::GetStepsPinName());
	SetPinToolTip(*StepsPin, LOCTEXT("StepsPinDescription", "Number of steps required to go from A to B"));
	StepsPin->DefaultValue = StepsPin->AutogeneratedDefaultValue = TEXT("2");

	RefreshPinVisibility();
}

FText UK2Node_EaseFunction::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
	return LOCTEXT("EaseFunction_Title", "Ease");
}

FText UK2Node_EaseFunction::GetTooltipText() const
{
	return NodeTooltip;
}

FName UK2Node_EaseFunction::GetPaletteIcon(FLinearColor& OutColor) const
{
	// The function icon seams the best choice!
	OutColor = GetNodeTitleColor();
	return TEXT("Kismet.AllClasses.FunctionIcon");
}

void UK2Node_EaseFunction::SetPinToolTip(UEdGraphPin& MutatablePin, const FText& PinDescription) const
{
	MutatablePin.PinToolTip = UEdGraphSchema_K2::TypeToText(MutatablePin.PinType).ToString();

	UEdGraphSchema_K2 const* const K2Schema = Cast<const UEdGraphSchema_K2>(GetSchema());
	if (K2Schema != nullptr)
	{
		MutatablePin.PinToolTip += TEXT(" ");
		MutatablePin.PinToolTip += K2Schema->GetPinDisplayName(&MutatablePin).ToString();
	}

	MutatablePin.PinToolTip += FString(TEXT("\n")) + PinDescription.ToString();
}

void UK2Node_EaseFunction::NotifyPinConnectionListChanged(UEdGraphPin* Pin)
{
	Super::NotifyPinConnectionListChanged(Pin);

	const auto EaseFuncPin = GetEaseFuncPin();
	if (Pin == EaseFuncPin)
	{
		RefreshPinVisibility();
		GetGraph()->NotifyGraphChanged();
	}
	else
	{
		PinTypeChanged(Pin);
	}
}

void UK2Node_EaseFunction::PinDefaultValueChanged(UEdGraphPin* Pin)
{
	const auto EaseFuncPin = GetEaseFuncPin();
	if (Pin == EaseFuncPin )
	{
		RefreshPinVisibility();
		GetGraph()->NotifyGraphChanged();
	}
}

void UK2Node_EaseFunction::PostReconstructNode()
{
	Super::PostReconstructNode();

	// Check in which state we are at the moment
	RefreshPinVisibility();

	// Find a pin that has connections to use to jumpstart the wildcard process
	for (int32 PinIndex = 0; PinIndex < Pins.Num(); ++PinIndex)
	{
		if (Pins[PinIndex]->PinName == FEaseFunctionNodeHelper::GetAPinName() ||
			Pins[PinIndex]->PinName == FEaseFunctionNodeHelper::GetBPinName() ||
			Pins[PinIndex]->PinName == FEaseFunctionNodeHelper::GetResultPinName())
		{
			// Take default pin values into account in case we can securly convert the string default value into a PinType
			// this is currently not the case but could be considered in the future.
			if (Pins[PinIndex]->LinkedTo.Num() > 0)
			{
				PinTypeChanged(Pins[PinIndex]);
				break;
			}
		}
	}

	GenerateExtraPins();
}

bool UK2Node_EaseFunction::IsConnectionDisallowed(const UEdGraphPin* MyPin, const UEdGraphPin* OtherPin, FString& OutReason) const
{
	const UEdGraphSchema_K2* K2Schema = GetDefault<UEdGraphSchema_K2>();

	// Check the pin name and see if it matches on of our three base pins
	if (MyPin->PinName == FEaseFunctionNodeHelper::GetAPinName() ||
		MyPin->PinName == FEaseFunctionNodeHelper::GetBPinName() ||
		MyPin->PinName == FEaseFunctionNodeHelper::GetResultPinName())
	{
		const bool bConnectionOk = (OtherPin->PinType.PinCategory == K2Schema->PC_Float ||
			(OtherPin->PinType.PinCategory == K2Schema->PC_Struct &&
			OtherPin->PinType.PinSubCategoryObject.IsValid() &&
			(OtherPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Vector") ||
			OtherPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Rotator") ||
			OtherPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Transform"))));
		if (!bConnectionOk)
		{
			OutReason = LOCTEXT("PinConnectionDisallowed", "Pin type is not supported by function.").ToString();
			return true;
		}
	}

	return Super::IsConnectionDisallowed(MyPin, OtherPin, OutReason);
}

void UK2Node_EaseFunction::GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const
{
	// actions get registered under specific object-keys; the idea is that
	// actions might have to be updated (or deleted) if their object-key is
	// mutated (or removed)... here we use the node's class (so if the node
	// type disappears, then the action should go with it)
	UClass* ActionKey = GetClass();
	// to keep from needlessly instantiating a UBlueprintNodeSpawner, first
	// check to make sure that the registrar is looking for actions of this type
	// (could be regenerating actions for a specific asset, and therefore the
	// registrar would only accept actions corresponding to that asset)
	if (ActionRegistrar.IsOpenForRegistration(ActionKey))
	{
		UBlueprintNodeSpawner* NodeSpawner = UBlueprintNodeSpawner::Create(GetClass());
		check(NodeSpawner != nullptr);

		ActionRegistrar.AddBlueprintAction(ActionKey, NodeSpawner);
	}
}

FText UK2Node_EaseFunction::GetMenuCategory() const
{
	static FNodeTextCache CachedCategory;
	if (CachedCategory.IsOutOfDate(this))
	{
		// FText::Format() is slow, so we cache this to save on performance
		CachedCategory.SetCachedText(FEditorCategoryUtils::BuildCategoryString(FCommonEditorCategory::Math, LOCTEXT("InterpCategory", "Interpolation")), this);
	}
	return CachedCategory;
}

void UK2Node_EaseFunction::ChangePinType(UEdGraphPin* Pin)
{
	PinTypeChanged(Pin);
}

void UK2Node_EaseFunction::PinTypeChanged(UEdGraphPin* Pin)
{
	const UEdGraphSchema_K2* Schema = GetDefault<UEdGraphSchema_K2>();
	bool bChanged = false;

	if (Pin->PinName == FEaseFunctionNodeHelper::GetAPinName() ||
		Pin->PinName == FEaseFunctionNodeHelper::GetBPinName() ||
		Pin->PinName == FEaseFunctionNodeHelper::GetResultPinName())
	{
		// Get pin refs
		UEdGraphPin* APin = FindPin(FEaseFunctionNodeHelper::GetAPinName());
		UEdGraphPin* BPin = FindPin(FEaseFunctionNodeHelper::GetBPinName());
		UEdGraphPin* ResultPin = FindPin(FEaseFunctionNodeHelper::GetResultPinName());

		// Propagate the type change or reset to wildcard PinType
		if (Pin->LinkedTo.Num() > 0)
		{
			UEdGraphPin* InstigatorPin = Pin->LinkedTo[0];

			bChanged |= UpdatePin(APin, InstigatorPin);
			bChanged |= UpdatePin(BPin, InstigatorPin);
			bChanged |= UpdatePin(ResultPin, InstigatorPin);

			if (bChanged)
			{
				// Just in case we switch to an invalid function clean it first
				EaseFunctionName = TEXT("");

				// Generate the right function name
				if (InstigatorPin->PinType.PinCategory == Schema->PC_Float)
				{
					EaseFunctionName = TEXT("Ease");
				}
				else if (InstigatorPin->PinType.PinCategory == Schema->PC_Struct)
				{
					if (InstigatorPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Vector"))
					{
						EaseFunctionName = TEXT("VEase");
					}
					else if (InstigatorPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Rotator"))
					{
						EaseFunctionName = TEXT("REase");
					}
					else if (InstigatorPin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Transform"))
					{
						EaseFunctionName = TEXT("TEase");
					}
				}
			}
		}
		else
		{
			if (APin->GetDefaultAsString().IsEmpty() && APin->LinkedTo.Num() == 0 &&
				BPin->GetDefaultAsString().IsEmpty() && BPin->LinkedTo.Num() == 0 &&
				ResultPin->LinkedTo.Num() == 0)
			{
				// Restore wild card pin
				APin->PinType.PinCategory = Schema->PC_Wildcard;
				APin->PinType.PinSubCategory = TEXT("");
				APin->PinType.PinSubCategoryObject = NULL;

				// Propagate change
				UpdatePin(BPin, APin);
				UpdatePin(ResultPin, APin);

				// Make sure the function name is nulled out
				EaseFunctionName = TEXT("");
				bChanged = true;
			}
		}

		// Pin connections and data changed in some way
		if (bChanged)
		{
			SetPinToolTip(*APin, LOCTEXT("APinDescription", "Easing start value"));
			SetPinToolTip(*BPin, LOCTEXT("BPinDescription", "Easing end value"));
			SetPinToolTip(*ResultPin, LOCTEXT("ResultPinDescription", "Easing result value"));

			// Let our subclasses generate some pins if required, this way we can add any aditional pins required by some types for examples
			GenerateExtraPins();

			// Let the graph know to refresh
			GetGraph()->NotifyGraphChanged();

			UBlueprint* Blueprint = GetBlueprint();
			if (!Blueprint->bBeingCompiled)
			{
				FBlueprintEditorUtils::MarkBlueprintAsModified(Blueprint);
				Blueprint->BroadcastChanged();
			}
		}
	}

	Super::PinTypeChanged(Pin);
}

bool UK2Node_EaseFunction::UpdatePin(UEdGraphPin* MyPin, UEdGraphPin* OtherPin)
{
	// If the data type changed break links first
	if (MyPin->PinType != OtherPin->PinType)
	{
		MyPin->PinType = OtherPin->PinType;
		return true;
	}
	return false;
}

void UK2Node_EaseFunction::ExpandNode(class FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph)
{
	Super::ExpandNode(CompilerContext, SourceGraph);

	/**
		At the end of this, the UK2Node_EaseFunction will not be a part of the Blueprint, it merely handles connecting
		the other nodes into the Blueprint.
	*/

	UFunction* Function = UKismetMathLibrary::StaticClass()->FindFunctionByName(*EaseFunctionName);
	if (Function == NULL)
	{
		CompilerContext.MessageLog.Error(*LOCTEXT("InvalidFunctionName", "BaseAsyncTask: Type not supported or not initialized. @@").ToString(), this);
		return;
	}

	const UEdGraphSchema_K2* Schema = CompilerContext.GetSchema();

	// The call function does all the real work, each child class implementing easing for  a given type provides
	// the name of the desired function
	UK2Node_CallFunction* CallFunction = CompilerContext.SpawnIntermediateNode<UK2Node_CallFunction>(this, SourceGraph);

	CallFunction->SetFromFunction(Function);
	CallFunction->AllocateDefaultPins();
	CompilerContext.MessageLog.NotifyIntermediateObjectCreation(CallFunction, this);

	// Move the ease function and the alpha connections from us to the call function
	CompilerContext.MovePinLinksToIntermediate(*FindPin(FEaseFunctionNodeHelper::GetEaseFuncPinName()), *CallFunction->FindPin(TEXT("EasingFunc")));
	CompilerContext.MovePinLinksToIntermediate(*FindPin(FEaseFunctionNodeHelper::GetAlphaPinName()), *CallFunction->FindPin(TEXT("Alpha")));

	// Move base connections to the call function's connections
	CompilerContext.MovePinLinksToIntermediate(*FindPin(FEaseFunctionNodeHelper::GetAPinName()), *CallFunction->FindPin(TEXT("A")));
	CompilerContext.MovePinLinksToIntermediate(*FindPin(FEaseFunctionNodeHelper::GetBPinName()), *CallFunction->FindPin(TEXT("B")));
	CompilerContext.MovePinLinksToIntermediate(*FindPin(FEaseFunctionNodeHelper::GetResultPinName()), *CallFunction->GetReturnValuePin());

	// Now move the custom pins to their new locations
	UEdGraphPin* ShortestPathPin = FindPinChecked(FEaseFunctionNodeHelper::GetShortestPathPinName());
	if (!ShortestPathPin->bHidden)
	{
		CompilerContext.MovePinLinksToIntermediate(*ShortestPathPin, *CallFunction->FindPinChecked(TEXT("bShortestPath")));
	}

	UEdGraphPin* BlendExpPin = FindPinChecked(FEaseFunctionNodeHelper::GetBlendExpPinName());
	if (!BlendExpPin->bHidden)
	{
		CompilerContext.MovePinLinksToIntermediate(*BlendExpPin, *CallFunction->FindPinChecked(FEaseFunctionNodeHelper::GetBlendExpPinName()));
	}

	UEdGraphPin* StepsPin = FindPinChecked(FEaseFunctionNodeHelper::GetStepsPinName());
	if (!StepsPin->bHidden)
	{
		CompilerContext.MovePinLinksToIntermediate(*StepsPin, *CallFunction->FindPinChecked(FEaseFunctionNodeHelper::GetStepsPinName()));
	}

	// Cleanup links to ourselfs and we are done!
	BreakAllNodeLinks();
}

UEdGraphPin* UK2Node_EaseFunction::GetEaseFuncPin() const
{
	if (!CachedEaseFuncPin)
	{
		const_cast<UK2Node_EaseFunction*>(this)->CachedEaseFuncPin = FindPinChecked(FEaseFunctionNodeHelper::GetEaseFuncPinName());
	}
	return CachedEaseFuncPin;
}

void UK2Node_EaseFunction::RefreshPinVisibility()
{
	const auto EaseFuncPin = GetEaseFuncPin();
	UEnum * Enum = FindObject<UEnum>(ANY_PACKAGE, TEXT("EEasingFunc"), true);
	check(Enum != NULL);
	const int32 NewEasingFunc = CanCustomizeCurve() ? Enum->GetValueByName(*EaseFuncPin->DefaultValue) : -1;

	// Early exit in case no changes are required
	const UEdGraphSchema_K2* K2Schema = Cast<const UEdGraphSchema_K2>(GetSchema());

	UEdGraphPin* BlendExpPin = FindPinChecked(FEaseFunctionNodeHelper::GetBlendExpPinName());

	if (NewEasingFunc == EEasingFunc::EaseIn ||
		NewEasingFunc == EEasingFunc::EaseOut ||
		NewEasingFunc == EEasingFunc::EaseInOut)
	{
		// Show the BlendExpPin
		BlendExpPin->bHidden = false;
	}
	else
	{
		// Hide the BlendExpPin:
		BlendExpPin->BreakAllPinLinks();
		BlendExpPin->bHidden = true;
	}

	UEdGraphPin* StepsPin = FindPinChecked(FEaseFunctionNodeHelper::GetStepsPinName());
	if (NewEasingFunc == EEasingFunc::Step)
	{
		// Show the Steps pin:
		StepsPin->bHidden = false;
	}
	else
	{
		// Hide the Steps pin:
		StepsPin->BreakAllPinLinks();
		StepsPin->bHidden = true;
	}
}

void UK2Node_EaseFunction::GenerateExtraPins()
{
	const UEdGraphSchema_K2* K2Schema = Cast<const UEdGraphSchema_K2>(GetSchema());

	// Add pins based on the pin type
	const UEdGraphPin* APin = FindPinChecked(FEaseFunctionNodeHelper::GetAPinName());
	const bool bIsRotator = APin->PinType.PinCategory == K2Schema->PC_Struct && APin->PinType.PinSubCategoryObject.Get()->GetName() == TEXT("Rotator");
	UEdGraphPin* ShortestPathPin = FindPinChecked(FEaseFunctionNodeHelper::GetShortestPathPinName());
	if (bIsRotator)
	{
		ShortestPathPin->bHidden = false;
	}
	else
	{
		ShortestPathPin->BreakAllPinLinks();
		ShortestPathPin->bHidden = true;
	}
}

void UK2Node_EaseFunction::ResetToWildcards()
{
	FScopedTransaction Transaction(LOCTEXT("ResetToDefaultsTx", "ResetToDefaults"));
	Modify();

	// Get pin refs
	UEdGraphPin* APin = FindPin(FEaseFunctionNodeHelper::GetAPinName());
	UEdGraphPin* BPin = FindPin(FEaseFunctionNodeHelper::GetBPinName());
	UEdGraphPin* ResultPin = FindPin(FEaseFunctionNodeHelper::GetResultPinName());

	// Set all to defaults and break links
	APin->DefaultValue = TEXT("");
	BPin->DefaultValue = TEXT("");
	APin->BreakAllPinLinks();
	BPin->BreakAllPinLinks();
	ResultPin->BreakAllPinLinks();

	// Do the rest of the work, we will not recompile because the wildcard pins will prevent it
	PinTypeChanged(APin);
}

void UK2Node_EaseFunction::GetContextMenuActions(const FGraphNodeContextMenuBuilder& Context) const
{
	Super::GetContextMenuActions(Context);

	if (!Context.bIsDebugging)
	{
		if (Context.Pin == NULL)
		{
			Context.MenuBuilder->BeginSection("UK2Node_EaseFunction", LOCTEXT("ContextMenuHeader", "Ease"));
			{
				Context.MenuBuilder->AddMenuEntry(
					LOCTEXT("AddPin", "Reset to Wildcards"),
					LOCTEXT("AddPinTooltip", "Resets A, B and Results pins to its default wildcard state"),
					FSlateIcon(),
					FUIAction(
					FExecuteAction::CreateUObject(this, &UK2Node_EaseFunction::ResetToWildcards)
					)
				);
			}
			Context.MenuBuilder->EndSection();
		}
	}
}

#undef LOCTEXT_NAMESPACE


Quickly and easily design a reliable, affordable on-line store with a built-in ecommerce shopping cart that includes free ecommerce web hosting. An advanced website solution providing the tools you need to build, edit, and manage a powerful e-commerce business. Power Shop Cart is a complete turnkey website with a built-in ecommerce shopping cart application for all your on-line sales. Get setup with an ecommerce web hosting account today. Click below for more details and a full working demo.
Quickly and easily design a reliable, affordable on-line store with a built-in ecommerce shopping cart designed for a product and/or service based business with free ecommerce web hosting. A dynamic database-driven advanced website solution with built-in applications for all your service business needs. Power Service Cart provides the tools you need to build, edit, and manage a powerful ecommerce shopping cart service based business with efficiency. Click below for more details and a full working demo. Remember the Power Service Cart comes with free ecommerce web hosting.
Quickly and easily design a reliable, affordable on-line business solution for posting your listings on the Internet. Power Realtor is an advanced website solution providing the tools you need to build, edit, and manage a powerful on line real estate business. A complete turnkey website with a built-in administration console interface especially designed for busy real estate professionals demanding needs. Click below for more details and a full working demo.
Quickly and easily design a reliable, affordable on-line business solution for displaying your products on the Internet this is ideal if you want to display your products but you do not want to sell them in an ecommerce web hosting environment. Power Catalog is a dynamic database-driven advanced website solution with a built-in catalog application for your entire on-line product catalog needs. A powerful website solution providing the tools you need to build, edit, and manage a powerful on-line product catalog. Click below for more details and a full working demo.
Quickly and easily design a reliable, affordable on-line presence. Power Website provides a simple, yet powerful solution with the advanced tools you need to build, edit, and manage an on-line website. A complete turnkey advanced website solution with a built-in administration console interface especially designed for busy professionals, entrepreneurs and any size organization. Click below for more details and a full working demo.


This fund was named in honor of "Sr. Liz" in recognition of, and gratitude for, her dedicated service to this parish for over thirty years! Few people know that, as a young religious serving in Inner-city Boston, Sr. Liz taught a group of children to sing the parts of the Mass every day! This is a ministry she often recalled with great fondness. Therefore, for all of these reasons and for her particular love for beautiful, sacred music we have established this fund in her honor.
In the Fall of 2015, a wonderful opportunity presented itself to Immaculate Heart of Mary Parish in Auburn, ME to purchase a 1954 Casavant Opus 2277 Pipe Organ located in the Chapel of the Sisters of Notre Dame in Toledo, Ohio. Required to vacate their facility due to the sale of the property, the Sisters were hopeful that a suitable home would be found for this beloved instrument that had provided their community with beautiful sacred music for over sixty years. Upon learning about Sacred Heart Church's need to replace an aging electronic organ in need of repairs, the Sisters kindly accepted an offer that would fit within Sacred Heart's budget. Hence, this very fine pipe organ was procured and transported from Ohio to Maine in November.
While the parishioners of Sacred Heart Church are excited and eager to begin enjoying sacred music for Holy Mass and other Liturgies, the next step is to have the organ professionally installed. Before it can be installed, the organ will have need some improvements (e.g., the wiring does not meet today's codes.) The interior of the church will also need some modifications to accommodate the organ. For this purpose, The Sister Elizabeth Platt Organ Fund for Sacred Heart Church, Auburn was recently established. The Fund is named in honor of Sr. Elizabeth in recognition for her many years of devoted service to Sacred Heart.
We invite you, dear brothers and sisters, to join us in our efforts to bring this very special pipe organ to our parish. While our parishioners will be planning various fundraising events, we are hopeful that contributions may be made by individuals in the name of their family or friends, or in memory of loved ones. The donors will be recognized by listing their names in a permanent memorial near the newly-installed organ. When the work is complete, the organ committee will be planning celebrations at which time the donors will also be recognized.


The U.S. Food and Drug Administration (FDA) has announced the results of an investigation by state and Centers for Disease Control and Prevention (CDC) investigators, which found consuming tomatoes in restaurants as the cause of illnesses in the Salmonella Typhimurium outbreak. To date, 21 states have reported 183 cases of illnesses to the CDC.
When selecting fresh cut produce - such as a half a watermelon or bagged mixed salad greens - choose only those items that are refrigerated or surrounded by ice.
Certain perishable fresh fruits and vegetables (like strawberries, lettuce, herbs, and mushrooms) can be best maintained by storing in a clean refrigerator at a temperature of 40° F or below. If you're not sure whether an item should be refrigerated to maintain quality, ask your grocer.
All produce that is purchased pre-cut or peeled should be refrigerated within two hours to maintain both quality and safety.
Keep your refrigerator set at 40° F or below. Use a refrigerator thermometer to check!
Many pre-cut, bagged produce items like lettuce are pre-washed. If so, it will be stated on the packaging. This pre-washed, bagged produce can be used without further washing.
As an extra measure of caution, you can wash the produce again just before you use it. Precut or prewashed produce in open bags should be washed before using.
All unpackaged fruits and vegetables, as well as those packaged and not marked pre-washed, should be thoroughly washed before eating. This includes produce grown conventionally or organically at home, or produce that is purchased from a grocery store or farmer's market. Wash fruits and vegetables under running water just before eating, cutting or cooking.
Keep fruits and vegetables that will be eaten raw separate from other foods, such as raw meat, poultry or seafood - and from kitchen utensils used for those products.
Wash cutting boards, dishes, utensils and counter tops with hot water and soap between the preparation of raw meat, poultry and seafood products and the preparation of produce that will not be cooked.
For added protection, kitchen sanitizers can be used on cutting boards and counter tops periodically. Try a solution of one teaspoon of chlorine bleach to one quart of water.


The MamaMagic brand brings South Africans the biggest and best baby and parenting expo, MamaMagic™, The Baby Expo. The exhibitions happen 4 times a year in Johannesburg, Durban, Cape Town and again in Johannesburg. With an existing team of 'traditional' marketers on board, we partnered with the team to provide our unique digital solutions to increase brand awareness and ultimately increase online ticket sales.
MamaMagic is not only an expo but also a pregnancy and parenting portal. Providing parents (and parents to be) with the Milestones Magazine in both print and digital formats, the insightful 'Heart to Heart' blog, the New Product Awards and many competitions. We put our digital expertise to work to help with ticket sales and then continued to help from there.
Various video and animated HTML 5 ad sets were created and carefully targeted to advertise each one of the 4 events around the country, promoting ticket sales via landing pages. Engagement was tracked, tweaked accordingly and the client had real time access to in-depth reporting via our customised online reporting tool.


text:
Alan Tudyk Discusses Returning to Play K-2SO in the Cassian Andor Disney+ Series [TCA 2020]
After the success of The Mandalorian, the Cassian Andor streaming series might be the next Star Wars series we see on Disney+. Alan Tudyk said his dro..
After the success of The Mandalorian, the Cassian Andor streaming series might be the next Star Wars series we see on Disney+. Alan Tudyk said his droid character K-2SO might appear in the series back in February 2019.
This weekend, Tudyk was on a Television Critics Association panel for his upcoming Syfy series Resident Alien. After the panel, Tudyk spoke with reporters further and answered a few questions about his potential return as K-2SO.
Playing K-2SO again will be like riding a bike
K-2SO was a performance capture role for Tudyk. Now that he's gotten the physicality of K-2SO down, he won't have to relearn anything…including performing the entire role while wearing stilts:
"By the time I was done, I never took 'em off. I used to put them on, take them off, put them on, take them off throughout the day," Tudyk said. "By the end, I was like don't even take them off. I like being tall and there isn't anything I can't do in them."
Now we're picturing Alan Tudyk going to the bathroom on stilts.
What brought Alan Tudyk back
In November 2018, Disney announced a Cassian Andor streaming series for Disney+ with Diego Luna reprising his role from Rogue One: A Star Wars Story. A year later, they confirmed Tony Gilroy to write and direct. Gilroy co-wrote Rogue One and directed its reshoots.
Tudyk couldn't say when he expects to go back to filming, but he did say why it was an easy decision.
"Playing with Cassian, playing with Diego Luna and being in the world of Star Wars again," Tudyk said. "Especially after seeing The Mandalorian and seeing what they can do with a series, how much fun it is to just go into smaller stories and tell stories that way."
The Manadlorian got a lot of people excited about Disney+ Star Wars series. Could Cassian Andor and K-2SO find something as meme-worthy as Baby Yoda? That's up to Gilroy to figure out.
Nobody but Alan Tudyk plays K-2SO
Tudyk insists on doing the performance capture for K-2SO. He said the producers already offered to have a double do the performance capture so he only has to do the voice, but Tudyk is all-in.
"I don't want anybody else doing that," Tudyk said. "It means a lot to me. They offered it but it's not a voice over job for me. Because his face doesn't move, that's what you have is your body to show emotion. And because of Sonny [his character in I, Robot] and just because of theater, I'm trained. I studied that and it's something I enjoy."
The post Alan Tudyk Discusses Returning to Play K-2SO in the Cassian Andor Disney+ Series [TCA 2020] appeared first on /Film.
Next post 'Penny Dreadful: City of Angels' Trailer: Nazis, Murder, and Shape-Shifting Natalie Dormer Plague 1930s Los Angeles
Previous post 2020 Oscars By the Numbers: Netflix Leads Studio Nominations, 'Parasite' is the Sixth Movie to Get Both Best Picture and International Nods, and More


text:
package linkedList;

public class TreeLinkNode {
    int val;
    TreeLinkNode left, right, next;

    TreeLinkNode(int x) {
        val = x;
    }
}


text:
\section{Introduction}

The purpose of this note is to give an integral refinement of a
relatively old theorem of Charney and Lee \cite{Charney-Lee} giving a
model for the rational homology of the Deligne--Mumford
compactification of the moduli space of curves in terms of a category
made of mapping class groups.

Let $\mathcal{M}_{g,n}$ denote the moduli stack of proper smooth algebraic curves of
genus $g$ with $n$ ordered marked points, and let $\overline{\mathcal{M}}_{g,n}$ denote the
moduli stack of stable curves (the Deligne--Mumford compactification of
$\mathcal{M}_{g,n}$). They are both smooth Deligne--Mumford algebraic stacks defined
over $\mathrm{spec} \: \mathbb{Z}$.  These algebraic stacks have associated
complex analytic stacks (orbifolds), $\mathcal{M}_{g,n}^{an}$ and $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  It is
well known that the coarse moduli space of $\mathcal{M}_{g,n}^{an}$ has the same
rational homology as the classifying space of the mapping class group
$\mathcal{MCG}_{g,n}$ of a surface of genus $g$ with $n$ marked points.

Charney and Lee defined a category $\mathcal{CL}_{g,n}$ in which:
\begin{itemize}
\item objects are stable nodal surfaces of genus $g$ with $n$ ordered
  distinct marked points in the smooth part,
\item morphisms are isotopy classes of orientation-preserving
  diffeomorphisms and degenerations (a degeneration is a map which
  collapses some circles to nodes and is a diffeomorphism on the
  complement of these circles) that respect the marked points.
\end{itemize}
The mapping class group $\mathcal{MCG}_{g,n}$ sits inside $\mathcal{CL}_{g,n}$ as the
automorphism group of a smooth surface; automorphism groups of other
objects are mapping class groups of singular surfaces appearing in the
boundary of the Deligne--Mumford compactification.  Note that the
moduli stack $\overline{\mathcal{M}}_{g,n}$ and the category $\mathcal{CL}_{g,n}$ both have
stratifications by `dual graphs'.

Charney and Lee proved \cite[Theorem 6.1.1]{Charney-Lee} that (for
$n=0$) the classifying space of $\mathcal{CL}_g$ has the same rational homology
as the coarse moduli space of $\mathcal{M}_{g}^{an}$.  The moduli
stack and the coarse moduli space have the same rational homology, but
integrally they differ!  The mod $p$ homology of the open moduli
\emph{stack} has been computed in the Harer-Ivanov stable range by
Galatius \cite{Galatius} (using the theorem of Madsen and Weiss
\cite{Madsen-Weiss}); it contains much more than just reductions of
non-torsion classes.  The mod $p$ homology of the Deligne--Mumford
compactified stack has been studied by Galatius--Eliashberg
\cite{Galatius-Eliashberg} and the authors
\cite{Ebert-Giansiracusa-PT}, but it remains largely unknown.

An analytic stack (or more generally a topological stack)
$\mathfrak{X}$ has a homotopy type which can be defined by choosing a
covering $X \to \mathfrak{X}$ by a space $X$ and then taking the
geometric realization of the simplicial space which in degree $n$ is
the $(n+1)$-fold fiber-product $X \times_{\mathfrak{X}} \cdots
\times_{\mathfrak{X}} X$.  I.e. take the classifying space of a
topological groupoid presenting the orbifold; see Moerdijk
\cite{Moerdijk}, Noohi \cite{Noohi}, Ebert--Giansiracusa
\cite{Ebert-Giansiracusa-PT} and Ebert \cite{Ebert} for more details.
The integral singular homology and fundamental group of the
analytic stack agree with those of the homotopy type.  As an example
of homotopy types, it is well know that the homotopy type of the stack
$\mathcal{M}_{g,n}^{an}$ is $B\mathcal{MCG}_{g,n}$

We prove the following integral refinement of Charney and Lee's theorem.

\begin{theorem}\label{main-theorem}
  The classifying space of $\mathcal{CL}_{g,n}$ is homotopy equivalent to the
  homotopy type of the stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$, so in particular, $H^*(\overline{\mathcal{M}}\hbox{}_{g,n}^{an};\mathbb{Z})
  \cong H^*(B\mathcal{CL}_{g,n};\mathbb{Z})$.  Furthermore, this homotopy equivalence
  is compatible with the stratifications of $\mathcal{CL}_{g,n}$ and $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$
\end{theorem}

By Artin--Mazur \cite{Artin-Mazur}, Oda \cite{Oda} and
Frediani--Neumann \cite{Neumann} a Deligne--Mumford algebraic stack
has an \'etale homotopy type (living in the category of pro-objects in
the homotopy category of simplicial sets).  By the Comparison Theorem
of \'etale homotopy theory \cite[Theorem 8.4]{Friedlander}, the
\'etale homotopy type of a stack over $\overline{\mathbb{Q}}$ is weakly
equivalent to the Artin--Mazur profinite completion of
the homotopy type of the associated analytic stack.  Let $\mathcal{M}_{g,n} \otimes
\overline{\mathbb{Q}}$ denote the extension of scalars of $\mathcal{M}_{g,n}$ to
$\overline{\mathbb{Q}}$ (i.e. the restriction of the moduli functor to schemes
over $\overline{\mathbb{Q}}$).  As explained in \cite{Oda}, the \'etale
homotopy type of $\mathcal{M}_{g,n} \otimes \overline{\mathbb{Q}}$ is the Artin--Mazur
profinite completion $(B\mathcal{MCG}_{g,n})^{\wedge}$.  Similarly, Frediani--Neumann
\cite{Neumann} describes the \'etale homotopy type of the moduli stack
of curves with an action of a finite group $G \subset \mathcal{MCG}_{g,n}$.  In this
vein, the Comparison Theorem plus Theorem \ref{main-theorem} yields:
\begin{corollary}
  The \'etale homotopy type of $\overline{\mathcal{M}}_{g,n}\otimes \overline{\mathbb{Q}}$ is weakly
  equivalent to the Artin--Mazur profinite completion
  $(B\mathcal{CL}_{g,n})^{\wedge}$, and this equivalence respects the respective
  stratifications.
\end{corollary}
(Recall that a weak equivalence of pro-objects is a morphism of
pro-objects which induces an isomorphism on their homotopy pro-groups.)

The original Charney-Lee proof could probably easily be adapted to
handle surfaces with marked points and to show that the rational
homology equivalence is compatible with the stratifications.  However,
our proof is significantly more direct than theirs, while also giving
the integral refinement.  Our proof is based on existence of a
particularly nice atlas, first constructed by Bers \cite{Bers1, Bers2,
  Bers3, Bers4}, which is well-adapted to the combinatorial structure
of the stratification of $\overline{\mathcal{M}}_{g,n}$.  Roughly speaking, the Bers atlas
generalizes the Teichm\"uller space in the same way that the
Charney-Lee category generalizes the mapping class group.

\subsection*{Acknowledgements}

The first author was supported by a postdoctoral grant of the German
Academic Exchange Service (DAAD). He enjoyed the hospitality of the
Mathematical Institute of the University of Oxford.  The second author
thanks C.-F. B\"odigheimer for an invitation to visit Universit\"at
Bonn in April 2006, where this project was begun.  The project was
completed during the second author's stay at the IHES during
2006/2007, and he thanks both institutions for their hospitality.

\section{The Charney-Lee category}

Before proceeding with the principal content of this note, we collect
here some remarks about the Charney-Lee category.  We will not need
either of these remarks, so we only sketch them briefly, but the
reader might nevertheless find these comments illuminating.

Firstly, there is a topological version $\mathcal{CL}_{g,n}^{top}$; is has the
same objects as $\mathcal{CL}_{g,n}$, while the space of morphisms
$\mathcal{CL}_{g,n}^{top}(S,T)$ is the space of degeneration maps $S\to T$
(i.e. maps which collapse circles to nodes and which are
orientation-preserving diffeomorphisms outside these collapsed
circles).  The topology of the morphism spaces is the Whitney
$C^{\infty}$-topology.  We can clearly identify
$\pi_0(\mathcal{CL}_{g,n}^{top})$ with $ \mathcal{CL}_{g,n}$.  Moreover, the obvious
functor $\mathcal{CL}_{g,n}^{top} \to \mathcal{CL}_{g,n}$ is a homotopy equivalence of
categories; in other words, the components of the morphism spaces in
$\mathcal{CL}_{g,n}^{top}$ are all contractible.  This is a generalization of
the well-known theorem \cite{EaEe, EaSch, Gram} that the
diffeomorphism groups of oriented smooth surfaces with boundary (with
negative Euler number) have contractible components.  The space of
degenerations $\mathcal{CL}^{top}_{g,n}(S,T)$ fibers over the space of
unparametrized 1-dimensional submanifolds in $S$ by
taking the union of all curves which are collapsed.  This map is a
Serre fibration and the fibers are homeomorphic to diffeomorphism
groups of surfaces with negative Euler characteristic, hence the
components of the fibers are contractible.  It follows from
\cite{Epst,Gram} that the components of the base are also
contractible.

A second remark is that $\mathcal{CL}_{g,n}$ can be described as an orbit
category.  The \emph{orbit category} of $\mathcal{MCG}_{g,n}$ is the category whose
objects are orbits $\mathcal{MCG}_{g,n} / H$ and whose morphisms are the
$\mathcal{MCG}_{g,n}$-equivariant maps.  The category $\mathcal{CL}_{g,n}$ is equivalent to
the full subcategory of the orbit category containing precisely
those orbits for which the isotropy subgroup $H$ is a free abelian
group generated by a collection of disjoint Dehn twists.  To see this,
fix a smooth surface $S$ of genus $g$ with $n$ marked points, and for
each object $T \in \mathcal{CL}_{g,n}$ choose a degeneration $p(T): S \to T$.
The Dehn twists on $S$ around the inverse images of the nodes of $T$
determine a free abelian subgroup of $\mathcal{MCG}_{g,n}$ and hence an orbit $O(T)$.
Given a degeneration $\alpha: T \to T'$, there exists
$\widetilde{\alpha} \in \mathcal{MCG}_{g,n}$ such that $\alpha \circ p(T) = p(T')
\circ \widetilde{\alpha}$ --- this $\widetilde{\alpha}$ is only unique
up to certain Dehn twists, but it induces a well-defined morphism
$O(T) \to O(T')$ in the orbit category.

\section{The Bers atlas for $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$}\label{bers-groupoid}

Bers \cite{Bers1, Bers2, Bers3, Bers4} has constructed an atlas $\mathfrak{D}$,
which we shall call the \emph{Bers atlas}, for the differentiable
stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  (To avoid notational clutter we leave $g$ and $n$
implicit).  This atlas is an extension of the atlas for the
uncompactified moduli stack $\mathcal{M}_{g,n}^{an}$ given by Teichm\"uller space.

The Bers atlas is defined as follows.  Let $S$ be a fixed stable nodal
topological surface of genus $g$ with $n$ marked points.  An
\emph{$S$-marked Riemann surface} is a stable nodal Riemann surface
$F$ with $n$ marked points lying in the smooth part, together with a
degeneration $F \to S$ which respects the marked points.  Two
$S$-marked Riemann surfaces $f: F\to S$ and $f': F' \to S$ are defined
to be equivalent if there exists a biholomorphic map $g: F
\stackrel{\cong}{\to} F'$ (respecting the marked points) such that the
diagram
\[
\begin{diagram}
\node{F} \arrow{se,b}{f} \arrow[2]{e,t}{g} \node[2]{F'} \arrow{sw,r}{f'} \\
\node[2]{S}
\end{diagram}
\]
commutes up to a homotopy that is constant on the marked points.

Let $\mathfrak{D}(S)$ denote the set of all equivalence classes of $S$-marked
Riemann surfaces.  In \cite{Bers2, Bers4} Bers defined a topology on
$\mathfrak{D}(S)$ making it into a \emph{contractible} manifold, and such that
when $S$ is smooth then $\mathfrak{D}(S)$ is the usual Teichm\"uller space of
$S$.

In fact, the Fenchel-Nielsen coordinates give a homeomorphism between
$\mathfrak{D}(S)$ and an open ball as follows.  Let $N$ denote the set of nodes
of $S$ and choose a complete cutsystem $C$ on $S$ (i.e. a collection
of disjoint simple closed curves in the smooth part of $S$ such that
the complement of $C \sqcup N$ is a disjoint union of pairs of pants.
Given a point $[f: F\to S] \in \mathfrak{D}(S)$, there is a unique compatible
hyperbolic metric on $F$.  The free homotopy class of each curve of
$f^{-1}(C)$ has a minimal geodesic length and a twist; these numbers determine
a point in $(\mathbb{R}_+ \times \mathbb{R})^C \cong \mathbb{H}^C$.  For a node $n\in N$,
if $f^{-1}(n)$ is a simple closed curve then this free homotopy class
has a length and a twist in $\mathbb{R}_+\times \mathbb{R}/\mathbb{Z} \cong \mathbb{C}^\times$,
and the coordinates converge to the origin as the inverse image of $n$
in $F$ collapses to a node.  Hence the Fenchel-Nielsen coordinates
give a map
\[
\mathfrak{D}(S) \to \mathbb{H}^C \times \mathbb{C}^N,
\]
which one can show is a homeomorphism.  A particularly nice exposition
for smooth surfaces can be found in Hubbard's book \cite[p. 320 ff]{Hubb}.

Bers also endowed $\mathfrak{D}(S)$ with the structure of a complex manifold
which embeds as a bounded domain in $\mathbb{C}^{3g - 3 + n}$, generalizing
the Maskit coordinates, but we shall not need this fact.

The Bers atlas is given by
\[
\coprod_S\mathfrak{D}(S) \to \overline{\mathcal{M}}\hbox{}_{g,n}^{an},
\]
where the disjoint union runs over each diffeomorphism class of stable
nodal surfaces $S$ having genus $g$ and $n$ marked points; the map to
the moduli space is given informally by forgetting the markings,
sending a marked Riemann surface $[F \to S]$ to $F$.  More precisely,
there is a tautological family over $\mathfrak{D}(S)$ whose fiber over $[F\to
S]$ is $F$, and the map to $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ is given by classifying this
tautological family.

\begin{theorem}
  The morphism $\coprod_S\mathfrak{D}(S) \to \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ defines a proper \'etale atlas for $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$
  as a differentiable (or even complex analytic) stack.
\end{theorem}
\begin{proof}
This is essentially contained in the work of Bers; it follows from
Theorems 6 and 7 announced in \cite{Bers2}.
\end{proof}

Put differently, the representable submersion $\coprod_S \mathfrak{D}(S) \to
\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ determines a Lie groupoid which is proper and \'etale (i.e. an
orbifold groupoid, though not always effective),
\[
\mathfrak{D} := \left[ \left( \coprod_S\mathfrak{D}(S) \right)\times_{\overline{\mathcal{M}}\hbox{}_{g,n}^{an}}
\left(\coprod_S\mathfrak{D}(S) \right) \rightrightarrows
\left(\coprod_S \mathfrak{D}(S) \right) \right];
\]
we call this the \emph{Bers Groupoid}.  An object of this groupoid is
the equivalence class of an $S$-marked Riemann surface $F$ for some
$S$; a morphism $[F\to S] \to [F'\to T]$ is a biholomorphic map
$g: F \stackrel{\cong}{\to} F'$ respecting the marked points but
completely ignoring the maps to $S$ and $T$.  We call this the Bers
groupoid and denote it $\mathfrak{D}$.  Since it is a presentation of the stack
$\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$, its classifying space is a model for the homotopy type of
$\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  In particular, $B\mathfrak{D}$ has the same integral (co)homology as
the stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.

We now recall some facts about the Bers atlas from \cite{Bers2,Bers4}.
A degeneration $\alpha: S \to T$ induces a map $\alpha_*: \mathfrak{D}(S) \to
\mathfrak{D}(T)$ by change-of-marking, i.e.
\[
[F\stackrel{f}{\to} S] \mapsto [F \stackrel{\alpha\circ f}{\to} T].
\]
The induced map $\alpha_*$ is a local homeomorpism.  Its image is
precisely the subspace consisting of those points $[F\to T]$ for which
the marking can be lifted along $\alpha$ to $S$; with appropriate
Fenchel-Nielsen coordinates one easily sees that this is the
complement of a collection of complex coordinate hyperplanes.  The map
$\alpha_*$ only depends on the isotopy class of $\alpha$ because of
the equivalence relation on degenerations $F\to S$ used in defining
the space $\mathfrak{D}(S)$. In particular, there is a properly discontinuous
action of the mapping class group $\mathcal{MCG}(S)$ of $S$ on
$\mathfrak{D}(S)$ and the quotient stack $[\mathfrak{D}(S)/\mathcal{MCG}(S)]$ is
isomorphic to the image of $\mathfrak{D}(S)$ in $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.

\section{The Bers groupoid and the Charney-Lee category}

We shall now describe a subcategory of the Bers groupoid which is more
visibly related to the Charney-Lee category.  We then give a
completely explicit description of the Bers groupoid in terms of this
subcategory.

The spaces $\mathfrak{D}(-)$ together with the change-of-marking maps described
above determine a functor $\widehat{\mathfrak{D}}: \mathcal{CL}_{g,n} \to
\mathrm{Spaces}$, and we may form the transport category (or
Grothendieck construction) $\mathcal{CL}_{g,n} \int \widehat{\mathfrak{D}}$.
Concretely, an object of the transport category is a point $[f: F\to
S]$ in $\mathfrak{D}(S)$ for some $S$.  A morphism from $[f: F\to S]$ to $[f':
F'\to T]$ is represented \emph{a priori} by a biholomorphic map $g: F
\to F'$ together with the isotopy class of a degeneration $\alpha: S
\to T$ such that the diagram
\[
\begin{diagram}
\node{F} \arrow{e,t}{g} \arrow{s,l}{f} \node{F'} \arrow{s,r}{f'} \\
\node{S} \arrow{e,t}{\alpha} \node{T}
\end{diagram}
\]
commutes up to homotopy. However, since the Charney-Lee category
possesses the right cancelation property,
\[
[\alpha] \circ [\gamma] = [\beta] \circ [\gamma] \mbox{\: implies \:}
[\alpha] = [\beta],
\]
the isomorphism $g$ uniquely determines the degeneration isotopy class
$[\alpha]$.  Note that not every isomorphism covers (up to homotopy) a
degeneration.  Thus a morphism $[F\to S] \to [F' \to T]$ can be
specified simply by a biholomorphic map $g: F \to F'$ for which
there exists degeneration isotopy class that it covers.

By comparing the definitions the following is now apparent.
\begin{proposition}\label{inclusion-prop}
  The topological category $\mathcal{CL}_{g,n} \int \widehat{\mathfrak{D}}$ is
  isomorphic to a subcategory of the Bers groupoid $\mathfrak{D}$; namely, it is the
  subcategory with all objects of $\mathfrak{D}$ and only those biholomorphic
  maps which cover (up to isotopy) a degeneration of the markings.
\end{proposition}

\begin{lemma}\label{inclusion-htpy-equiv-lemma}
The inclusion $\mathcal{CL}_{g,n} \int \widehat{\mathfrak{D}} \hookrightarrow \mathfrak{D}$ induces a
homotopy equivalence of classifying spaces.
\end{lemma}

We will give the proof of Lemma \ref{inclusion-htpy-equiv-lemma} in
section \ref{proof-of-main-lemma} after some preparation in section
\ref{technicalities}.  Assuming this lemma for the moment, the proof
of Theorem \ref{main-theorem} is straightforward.

\begin{proof}[Proof of Theorem \ref{main-theorem}]
The Bers atlas is an atlas for $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$, and so by definition of the
homotopy type of a stack, the classifying space $B\mathfrak{D}$ of the Bers
groupoid $\mathfrak{D}$ is the homotopy type of $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$. Because
$\widehat{\mathfrak{D}}$ takes any $S \in \mathcal{CL}_{g,n}$ to a contractible space,
the forgetful functor $\mathcal{CL}_{g,n} \int \widehat{\mathfrak{D}} \to \mathcal{CL}_{g,n}$
induces a homotopy equivalence on classifying spaces. Therefore, by
Lemma \ref{inclusion-htpy-equiv-lemma}:
\[
 \mathrm{Ho}(\overline{\mathcal{M}}\hbox{}_{g,n}^{an}) \simeq  B\mathfrak{D}  \stackrel{\simeq}{\leftarrow}
 B\left({\mathcal{CL}_{g,n}\int \widehat{\mathfrak{D}}}\right) \stackrel{\simeq}{\to} B \mathcal{CL}_{g,n}.
\]
We postpone the discussion of compatibility with the stratifications
until section \ref{Stratifications}.
\end{proof}

\begin{remark}
  It is possible to show that, as abstract categories, when one
  formally adjoins inverses to all arrows of $\mathcal{CL}_{g,n}\int
  \widehat{\mathfrak{D}}$ then one obtains precisely the Bers groupoid $\mathfrak{D}$.  In
  particular, an arrow $[f: F \to S] \to [f': F' \to T]$ can be
  represented by $\alpha^{-1} \circ \beta$ for a pair of degenerations
  $S\stackrel{\alpha}{\leftarrow} F' \stackrel{\beta}{\to} T$, and
  this representation is unique up to precomposition with an element
  of the mapping class group of $F'$.
\end{remark}

\section{A lifting property of the Bers atlas}\label{technicalities}

Let $X$ be a space and $\sigma: X \to \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ be a map. We say that a
lift $\widetilde{\sigma}: X\to \mathfrak{D}(S)$ of $\sigma$ is \emph{maximal}
if $\widetilde{\sigma}$ does not admit a lift to $\mathfrak{D}(S')$ for any
$S'$ with a strict degeneration $S' \to S$.  Clearly, if $\sigma$
admits a lift to some $\mathfrak{D}(T)$ then it lifts further to a maximal
lift.

The goal of the present section is to prove the following result.

\begin{lemma}\label{initial-lifting-lemma}
Suppose $X$ is simply connected and $X \to \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ admits maximal
lifts $\sigma_1: X \to \mathfrak{D}(S)$ and $\sigma_2: X \to \mathfrak{D}(T)$.  Then
there exists a diffeomorphism (unique up to isotopy) $\alpha: S \cong
T$ with $\alpha_* \sigma_1 = \sigma_2$.
\end{lemma}

An equivalent formulation of the above lemma is that for any pair of
stable surfaces $S$ and $T$, there exists a stable surface $R$
degenerating onto $S$ and $T$ such that the map from $\mathfrak{D}(R)$ to any
component of the universal cover of $\mathfrak{D}(S) \times_{\overline{\mathcal{M}}\hbox{}_{g,n}^{an}} \mathfrak{D}(T)$ is
a homeomorphism.  However, we do not know a more direct proof of
this fact.

The main tool for the proof of Lemma \ref{initial-lifting-lemma} is a sheaf
of sets $\mathcal{Z}$ on the the differentiable stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  This
sheaf encodes the continuity property of markings on the fibers in a
marked family of stable Riemann surfaces.  The idea of the sheaf is as
follows.  Given a family $E \to X$ of stable Riemann surfaces, an
element of $\mathcal{Z}(X)$ should be thought of as the isotopy class
of a continuous subfamily $C \subset E$ that restricts in each fiber
to either a node or a simple closed curve that does not not meet the
nodes and marked points and does not retract to a node.  If $X\to
\mathfrak{D}(S)$ is a maximal lift then one can reconstruct the homeomorphism
type of $S$ from the sections of $\mathcal{Z}$ over $X$ that restrict
to a node in some fiber: each node in each fiber determines a node of
$S$ and maximality of the lift ensures that $S$ has no superfluous
nodes.  This will show that maximal lifts are essentially unique.

We construct the sheaf precisely by defining its stalks over the Bers
groupoid, topologizing its \'etale space, and then showing it descends
to a sheaf on the stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  The stalk $\mathcal{Z}_{[S]}$ at a
point $[S] \in \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ is defined to be the union of the set of nodes
of $S$ with the set of isotopy classes of unoriented simple closed
curves in $S\smallsetminus \{\mbox{nodes and marked points}\}$ which
bound neither a disc nor a once-punctured disc.  A degeneration
$\alpha: T\to S$ induces an injective map $\alpha^*: \mathcal{Z}_{[S]}
\hookrightarrow \mathcal{Z}_{[T]}$ by taking preimages of curves and
nodes.  Thus over $\mathfrak{D}(S)$ the markings canonically identify
$\mathcal{Z}_{[S]}$ with a subset of each stalk.

As a set, the \'etale space $\mathcal{Z}_{et}$ of $\mathcal{Z}$ is
the disjoint union of the stalks; we topologize it as follows. Given
a point $[\alpha: F \to S] \in \mathfrak{D}(S)$, there exists a neighborhood
$U$ of this point which lifts along the local homeomorphism
$\alpha_*: \mathfrak{D}(F) \to \mathfrak{D}(S)$, and so the markings identify
$\mathcal{Z}_{[S]}$ with a subset of each stalk over $U$. The
topology is determined by the condition that a section over $U$ is
continuous at $[F\to S]$ if and only if it is locally constant with
respect to these identifications.

Next we claim that $\mathcal{Z}$ is a sheaf on the stack $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$. To
justify this, we need to argue that $\mathcal{Z}$ satisfies the
appropriate descent conditions. More precisely, let $d_0, d_1: \mathrm{Mor}
(\mathfrak{D}) \to \mathrm{Obj}(\mathfrak{D})$ be source and target maps and let $d_0, d_1,
d_2: \mathrm{Mor}(\mathfrak{D}) \times_{\mathrm{Obj}(\mathfrak{D})} \mathrm{Mor}(\mathfrak{D}) \to \mathrm{Mor} (\mathfrak{D})$ be the
three simplicial structure maps in the nerve of $\mathfrak{D}$ (they are left
projection, composition, and right projection respectively).  A
descent datum for $\mathcal{Z}$ is an isomorphism $f: d_{0}^{*}
\mathcal{Z} \to d_{1}^{*} \mathcal{Z}$ which makes the hexagon of
sheafs and isomorphisms on $\mathrm{Mor}(\mathfrak{D}) \times_{\mathrm{Obj}(\mathfrak{D})} \mathrm{Mor}(\mathfrak{D})$
commutative (the equalities are induced from simplicial identities):
\[
\xymatrix{
&  d_{0}^{*} d_{0}^{*} \mathcal{Z} \ar[r]^{d_{0}^{*} f}
& d_{0}^{*} d_{1}^{*} \mathcal{Z}   \ar@{=}[dr] &    \\
d_{1}^{*} d_{0}^{*} \mathcal{Z} \ar@{=}[ur] \ar[dr]^{d_{1}^{*} f} &
& & d_{2}^{*}
d_{0}^{*} \mathcal{Z} \ar[dl]^{d_{2}^{*} f} \\
&  d_{1}^{*} d_{1}^{*} \mathcal{Z} \ar@{=}[r]  & d_{2}^{*} d_{1}^{*}
\mathcal{Z} &
}
\]
There is an obvious bijection of \'etale spaces
$d_{0}^{*}\mathcal{Z}_{et} \cong d_{1}^{*} \mathcal{Z}_{et}$ and the
topology is designed so that this is a homeomorphism. The
commutativity of the above diagram is also clear. Thus $\mathcal{Z}$
is a sheaf of sets on $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.

The following property follows immediately from the definition of the
topology on the \'etale space of $\mathcal{Z}$.
\begin{lemma}\label{central-stalk-lemma}
  Let $U\subset \mathfrak{D}(S)$ be a neighborhood of the origin $[S \to S]$.
  There is a canonical bijection $\mathcal{Z}(U) \cong
  \mathcal{Z}_{[S]}$ induced in one direction by restriction to the
  stalk over $[S\to S]$ and in the other direction by using the
  markings to identify $\mathcal{Z}_{[S]}$ with a subset of each
  stalk.
\end{lemma}
A section of $\mathcal{Z}$ over a base $X$ is said to be \emph{nodal}
if it restricts to a node in some stalk.  Lemma
\ref{central-stalk-lemma} implies that the nodal sections over
$\mathfrak{D}(S)$ are precisely those which restrict to nodes at the origin
$[S\to S]$.

\begin{lemma}\label{marking-and-collapse-lemma}
Given a point $[F \stackrel{\alpha}{\to} S] \in \mathfrak{D}(S)$, the marking
$\alpha$ collapses to nodes precisely those curves in $F$ which are
the restrictions of nodal sections over $\mathfrak{D}(S)$
\end{lemma}
\begin{proof}
  By Lemma \ref{central-stalk-lemma}, a curve in $F$ is the preimage
  of a node in $S$ if and only if it is the restriction of a nodal
  section over $\mathfrak{D}(S)$.
\end{proof}

Let $T$ be a stable nodal surface and let $\alpha_*: T\to S$ be a
degeneration which collapses a single curve in $T$ to a node $n \in
S$.  The node $n$ determines a nodal section over $\mathfrak{D}(S)$, and the
maximal subset over which this section is \emph{not} nodal is
precisely the image of the change-of-marking $\alpha_*: \mathfrak{D}(T) \to
\mathfrak{D}(S)$.

\begin{lemma}\label{sections-identification}
  Suppose $X$ is simply connected and $\widetilde{\sigma}: X \to
  \mathfrak{D}(S)$ is a maximal lift.  Then the map $\widetilde{\sigma}^*:
  \mathcal{Z}(\mathfrak{D}(S)) \hookrightarrow \mathcal{Z}(X)$ restricts to a
  bijection between nodal sections.
\end{lemma}
\begin{proof}
  Clearly every nodal section over $X$ is the pullback of a nodal
  section over $\mathfrak{D}(S)$.  Conversely, if there exists a nodal section
  over $\mathfrak{D}(S)$ which pulls backs to a non-nodal section over $X$ then
  $X$ lies in the image of a change-of-marking $\alpha_*: \mathfrak{D}(T) \to
  \mathfrak{D}(S)$ for some $T$ with strictly fewer nodes than $S$.  Since $X$
  is simply connected and the change-of-marking maps are local
  homeomorphisms, $X$ lifts further, which contradicts the maximality
  hypothesis.
\end{proof}

\begin{proof}[Proof of Lemma \ref{initial-lifting-lemma}]
  Choose a point $x\in X$ and let $F_x$ denote the fiber over $x$.
  Consider the commutative diagram
  \begin{equation*}
    \begin{diagram}
      \node[2]{\mathcal{Z}(X)} \arrow{s,J} \\
      \node{\mathcal{Z}(\mathfrak{D}(S))} \arrow{ne,t,J}{\sigma_1^*}
      \arrow{e,J} \node{\mathcal{Z}_{[F_x]}}
    \end{diagram}
  \end{equation*}
  where the vertical and horizontal arrows are induced by restriction
  to the stalk at $x$ (which is identified with the stalk at
  $\sigma_1(x)$.  By Lemma \ref{sections-identification}, a curve in
  $F_x$ is the restriction of a nodal section over $X$ if and only if
  it is the restriction of a nodal section over $\mathfrak{D}(S)$.  By Lemma
  \ref{marking-and-collapse-lemma}, $S$ is topologically obtained from
  $F_x$ by collapsing those curves which are the restrictions of nodal
  sections over $\mathfrak{D}(S)$ (equivalently, nodal sections over $X$).  By
  the same reasoning, $T$ is topologically obtained from $F_x$ by
  collapsing the same set of curves.  Hence $S$ and $T$ are abstractly
  homeomorphic.  Finally, since the image of $\mathfrak{D}(S)$ in $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ is
  isomorphic to the quotient stack $[\mathfrak{D}(S) / \mathcal{MCG}_{g,n}(S)]$, it follows
  that any two lifts to $\mathfrak{D}(S)$ are related by a unique change of
  marking.
\end{proof}

\section{Proof of Lemma \ref{inclusion-htpy-equiv-lemma}}\label{proof-of-main-lemma}

We shall now prove Lemma \ref{inclusion-htpy-equiv-lemma}.  It will
follow from Lemma \ref{initial-lifting-lemma} together with
Waldhausen's Theorem $A'$ \cite[p. 165]{Waldhausen-manifolds}, which
is a simplicial version of Quillen's Theorem A.  We first recall
Waldhausen's Theorem $A'$. Suppose $F: A_\bullet \to B_\bullet$ is a
functor of simplicial categories.  Given an object $\sigma \in \mathrm{Obj}
B_n$ of simplicial degree $n$, the simplicial fiber category
$(F/\sigma)_\bullet$ is given in degree $k$ by
\[
(F/\sigma)_k := \coprod_{u: \underline{k} \to \underline{n}} F_k/u^* \sigma,
\]
where the disjoint union is taken over all monotone maps from $\{0,
\ldots k\}$ to $\{0 \ldots n\}$.  The theorem states that if each of
these simplicial fiber categories has contractible classifying space
then $F$ is a homotopy equivalence of classifying spaces.

\begin{proof}[Proof of Lemma \ref{inclusion-htpy-equiv-lemma}]
By taking the total singular simplicial set one has an inclusion of
simplicial categories
\[
j: S_\bullet\left( \mathcal{CL}_{g,n} \int \widehat{\mathfrak{D}} \right) \rightarrow
S_\bullet \mathfrak{D}.
\]
We will apply Waldhausen's Theorem $A'$ to the simplicial functor $j$.
Fix an object $\phi: \Delta^n \to \mathrm{Obj} \: \mathfrak{D}$ of $S_n \mathfrak{D}$.  The
image of $\phi$ lands in $\mathfrak{D}(S)$ for some stable nodal surface $S$.
In simplicial degree $k$ the simplicial fiber category
$(j/\phi)_\bullet$ is a disjoint union of ordinary fiber categories of
the form $j_k/\sigma$ for various objects $\sigma$ of simplicial
degree $k$.  Suppose that each of these categories is contractible.
Then collapsing them to points maps the simplicial fiber category
$(j/\phi)_\bullet$ by a levelwise homotopy equivalence to the standard
simplicial model for the $n$-simplex given in degree $k$ by
$\coprod_{u: \underline{k} \to \underline{n}} *$.  The geometric
realization of this map is thus a homotopy equivalence
$|B(j/\phi)_\bullet| \to
\Delta^n \simeq *,$ and so Waldhausen's Theorem A' yields the result.

It thus suffices to show that each category $j_n/\sigma$ has an
initial object, where $\sigma: \Delta^n \to \mathfrak{D}(S) \subset \mathrm{Obj} \: \mathfrak{D}$.
Let $\overline{\sigma}: \Delta^n \to \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ denote the composition of
$\sigma$ with the projection of $\mathfrak{D}(S)$ down to $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$.  Explicitly,
an object of the category $j_n/\sigma$ is a lift (up to a
specified 2-morphism) of $\overline{\sigma}$ to some chart $\mathfrak{D}(T)$;
i.e. a 2-commutative diagram
\[
\xymatrix{
 & \mathfrak{D}(T) \ar[d] \\
\Delta^n \ar[r]_{\overline{\sigma}} \ar[ur]^{\tau}_{\Downarrow \theta} & \overline{\mathcal{M}}\hbox{}_{g,n}^{an}.
}
\]
A morphism $(\tau_1,\theta_1) \to (\tau_2,\theta_2)$ is an isotopy
class of degenerations $\alpha: T_1 \to T_2$ such that the induced
2-morphism $\Phi(\alpha)$
\[
\begin{diagram}
\node[2]{\mathfrak{D}(T_1)} \arrow{se} \\
\node{\Delta^n} \arrow{ne} \arrow{se} \node{\Downarrow \Phi(\alpha)} \node{\overline{\mathcal{M}}\hbox{}_{g,n}^{an}} \\
\node[2]{\mathfrak{D}(T_2)} \arrow{ne}
\end{diagram}
\]
satisfies $\theta_2 \circ \Phi(\alpha) = \theta_1$.  This is
equivalent to saying that $\alpha_* \circ \tau_1 = \tau_2$.  Since
$j_n$ is the inclusion of a subcategory into a groupoid, there is at
most one arrow between any two objects of $j_n / \sigma$.  We are thus
reduced to showing that there is an object $(\sigma_0, \theta_0)$
which maps to all other objects of $j_n / \sigma$.  Every lift of
$\overline{\sigma}$ to some $\mathfrak{D}(T)$ lifts further to a maximal lift,
and Lemma \ref{initial-lifting-lemma} says that a maximal lift of
$\overline{\sigma}$ is unique up to isomorphism.  A maximal lift
therefore provides the desired initial object.
\end{proof}

\section{Stratifications}\label{Stratifications}

The strata of $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ are indexed by \emph{stable graphs} with $n$
external legs; equivalently the strata are indexed by diffeomorphism
types of stable nodal surfaces of genus $g$ with $n$ labeled points.
A stable nodal surface $T$ corresponds to an open stratum $R_T\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$
which is the locus of all stable nodal Riemann surfaces $F$ which are
topologically diffeomorphic to $T$.  The closure $\overline{R}_T\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ is
the locus of all Riemann surfaces $F$ for which $T$ admits a
degeneration onto $F$.  This stratification gives a corresponding
stratification of the spaces $\mathfrak{D}(S)$, and so there are atlases:
\begin{align*}
\coprod_S R_T \mathfrak{D}(S) &\to R_T \overline{\mathcal{M}}\hbox{}_{g,n}^{an}, \\
\coprod_S \overline{R}_T \mathfrak{D}(S) &\to \overline{R}_T \overline{\mathcal{M}}\hbox{}_{g,n}^{an}
\end{align*}
which give rise to subgroupoids of the Bers groupoid $\mathfrak{D}$.  The
Fenchel-Nielsen coordinates show that $\overline{R}_T \mathfrak{D}(S)$ is
homeomorphic to a proper ball in $\mathfrak{D}(S)$ of codimension equal to the
number of nodes of $S$ minus the number of nodes of $T$.  In
particular, $\overline{R}_T \mathfrak{D}(S)$ is contractible.

The stratification of $\mathcal{CL}_{g,n}$ is as follows:
\begin{align*}
R_T \mathcal{CL}_{g,n} & = \mbox{full subcategory on the object $T$} = \mathcal{MCG}_{g,n}(T)\\
\overline{R}_T \mathcal{CL}_{g,n} & = \{\mbox{full subcategory on $S$
such that $T$ admits a degeneration onto $S$}\}
\end{align*}

The proof of Theorem \ref{main-theorem} (along with the proofs of all
propositions and lemmas it employs) remains valid upon inserting
$\overline{R}_T$ in front of all occurences of the symbols
$\mathcal{CL}_{g,n}$, $\overline{\mathcal{M}}\hbox{}_{g,n}^{an}$, and $\mathfrak{D}$.  Thus the homotopy equivalence $\overline{\mathcal{M}}\hbox{}_{g,n}^{an} \simeq
B\mathcal{CL}_{g,n}$ restricts to an equivalence of each closed stratum.

To see that it restricts to a homotopy equivalence on each open
stratum, one uses the fact that each open stratum $R_T \overline{\mathcal{M}}\hbox{}_{g,n}^{an}$ is the
stack quotient of a finite group acting on a product of uncompactified
moduli spaces, and $R_T \mathcal{CL}_{g,n}$ is the homotopy quotient of the
same finite group acting on the corresponding product of classifying
spaces of mapping class groups.  Thus $R_T \overline{\mathcal{M}}\hbox{}_{g,n}^{an} \simeq B(R_T
\mathcal{CL}_{g,n})$ follows from the equivalence $\mathcal{M}_{g,n}^{an} \simeq
B\mathcal{MCG}_{g,n}$ discussed in the introduction, since the homotopy type
of the stack quotient is the homotopy quotient.

\bibliographystyle{amsalpha}

redpajama_set_name: RedPajamaArXiv


HPS-HT82 Programming Software for the Hensenate HT-UV82 radio.
or The software for this product is available for electronic delivery only. A physical CD is not available.
RT Systems HPS-HT82 Programming software makes it easy to manage memory channel information and other menu settings of the Hensenate HT-UV82 radio. Click here for more Information.


text:
Q: HtmlTextWriter create  tag How can I add target used HtmlTextWriter . I need the  target='_blank'. Would some one help me.
there is the code:
Dim sw As StringWriter = New StringWriter()
Using ht As HtmlTextWriter = New HtmlTextWriter(sw)
                    ht.RenderBeginTag(HtmlTextWriterTag.A)
                    ht.AddAttribute(HtmlTextWriterAttribute.Href, "Order" & "/" & "FileName")
                    ht.Write("Order1")
                    ht.RenderEndTag()
 End Using

A: I need this code, ht.AddAttribute(HtmlTextWriterAttribute.Target, "_blank")