text:
Visa FAQ
Working Holiday Maker visas
3 Australian travel experiences that will challenge your perceptions
Wilpena Pound Resort, Flinders Ranges National Park, South Australia © South Australian Tourism Commission
Think you've got Australia all figured out? These travel experiences will change the way you see the country – for the better.
By Lee Atkinson
We all know Australia is a big, beautiful place, but there are also a lot of myths about adventuring Down Under that deserve to be busted. The best trips are the ones that challenge your perceptions and broaden your understanding of the world. So here are three incredible Australian travel experiences that do exactly that.
Camp in style in South Australia
Where: Wilpena Pound in the Flinders Ranges, around a five-hour drive north of Adelaide.
If you imagine camping in Australia to be more like a survival skills course than a relaxing getaway, you might be surprised by what you find at Wilpena Pound. Glamping in an Ikara Safari Tent will change the way you think about camping forever. Forget about blow-up mattresses that deflate in the middle of the night, because you'll be comfortably stretched out in your king-size bed. And you won't have to worry about making a midnight dash in the dark to the amenities block, because you'll have your very own ensuite. There's also air-conditioning, lights, a fridge to keep the wine chilled and a big deck where you can sit back and admire the breathtaking views of the Flinders Ranges while you sip your vino. Happy camping.
How to experience it: Glamp it up in style at Wilpena Pound Resort, an ideal base for exploring the Flinders Ranges.
Visit the Top End during the shoulder season
Florence Falls, Litchfield National Park, Northern Territory © Tourism NT/Lucy Ewing
Where: Kakadu National Park, a three-hour drive south-east of Darwin.
A lot of people believe that the best time to visit Kakadu is in the dry season, between June and September, when it hardly ever rains. Sure, the weather at the Top End of the Northern Territory is nice at that time of year – when it's not so humid – but there are lots of great reasons to go during the shoulder seasons. During April and May, you might still get a little bit of rain now and again, but you'll get to see the wetlands when everything is still green and lush. You can also admire spectacular waterfalls on a scenic flight before they run dry. Go just before the wet season kicks off in October or November, when the billabongs have shrunk, and you'll see great masses of birdlife that fill the sky at sunset. And an added shoulder-season bonus is you'll also be escaping the crowds – what's not to love about that?
How to experience it: Get off the beaten track in Kakadu on a safari-style 4WD tour.
10 of Australia's most iconic road trips
Road trip southern Australia's Nullarbor
Nullarbor Links Golf, Nullarbor, South Australia © Carly Kruger
Where: The Nullarbor Plain; a five-day drive along the Eyre Highway between Adelaide and Perth.
If you've always thought that the five-day drive across the Nullarbor – a vast, semi-arid plain – was a big long stretch of not much, think again. It might be one of the longest, straightest, and flattest roads in the world, but there's much more to see along the way than most people realise.
Play a round on the world's longest golf course, the Nullarbor Links – spread across two states and two time zones, the 18-hole, par-72 course spans a mind-boggling 1,365 kilometres (848 miles). See where US Skylab Space Station crashed in 1979 at Balladonia, explore the ruins of a town being slowly buried by sand at Eucla, gaze out at the longest line of sea cliffs in the world and watch whales frolic at the Head of Bight. Visit Gold Rush towns where horses unearthed giant nuggets, Australia's oldest bird observatory, the biggest windmill in the country, and the lack of city light pollution means that the night-time stargazing is out of this world.
But the biggest myth of all is that the Nullarbor meaning "no trees" in Latin) is treeless, when in fact the desert is covered in plants as far as the eye can see – and you can see a very long way on the Nullarbor. Driving across it really is one of Australia's greatest road trips.
How to experience it: Set off at your own pace on a DIY road trip, or leave the driving to a guide on a Nullarbor tour.
Top 20 things to do in Australia
No Wi-Fi, no worries: where to go off-grid in Australia
Come and say g'day!
Unique experiences at Australia's icons
Exclusive experiences in Australia's skies
{ "validationUrl": "/bin/ta/postauth", "validationFavouritesUrl": "/bin/australia/favourites/sanitycheck", "campaignIntegrationUrl": "/bin/create/recipient", "homePagePath": "/content/australia/en_sg.html", "FYASignUpDtmConfig": { "event": "taCustEvent", "custEvent": "FYASignUp", "custAction": "event2" }, "taIdRetryLimit": 3 }
{"PageInfo":{"template":"","component":"PageInfo","jcrCreated":"Tue Dec 20 13:11:40 AEDT 2022","jcrCreatedBy":"","lastModifiedBy":"","lastModified":"Tue Dec 20 13:09:50 AEDT 2022","contentType":""},"Hero":{"component":"Hero","subTitle":"","title":"<p>3 Australian travel experiences that will challenge your perceptions<\\/p>\\r\\n","playerId":"default"}}


The debate over pardons for pot offences is another example of politicians and activists making much ado about nothing.
They should ask themselves if a pardon in these cases is the right thing to do. Is it fair? Is it worth the limited time and energy our government has to get things done? In other words, should people who knowingly broke the law receive an automatic pardon, simply because we finally realized weed is no big deal?
If there was no legal channel for removing criminal records, the issue might hold weight. But a pardon for a pot conviction is not a difficult thing to obtain, even under the more punitive approach introduced by the Conservative government back in 2012.
A person convicted of an offence under the Controlled Drugs and Substances Act can get a pardon, now called a record suspension, by submitting the application to the Parole Board of Canada. They do not even need a representative. They can simply download the application forms and follow the steps through to the end. If they meet the criteria – meaning the sentence is complete and they've stayed out of trouble for a certain amount of time – they are almost guaranteed to receive a pardon and have the criminal record sealed.
I don't think that's terribly unfair.
Of course the activist will howl: "They should never have been charged in the first place!" Politicians will score points: "The prime minister is failing the people!" And the police will go on arresting marijuana users until the law is changed because, in reality, Justin Trudeau has no authority to tell the police which laws to uphold and which ones not to.
So what is the right thing to do here? In my opinion the law is the law, and although I agree that policing marijuana is a big waste of time, no one in a democratic society gets to pick and choose which laws apply to them. If they did, we'd have an actual problem on our hands.
Now consider this. A pardon will cost about $800 in government fees if you apply on your own. If you want someone to represent you it will cost a little bit more, or maybe a lot. Now add up all the money the average smoker spends on his or her habit and decide for yourself if people who knowingly break the law – while spending thousands of dollars on drugs – deserve to have $800 in government fees automatically waved.
Do they deserve it more than, say, a single parent convicted of shoplifting formula?
I agree that we should stop arresting people for possession of marijuana, although it seems unlikely to happen. But automatic pardons are a waste of time the government should quietly ignore.
Besides, I've never met anyone who wasn't aware that smoking a joint came with some risk. We all knew it, and we all did it anyway. If we got caught we were just unlucky, or stupid, or both. But none of us deserved a get out of jail free card back then. And we certainly don't deserve a free pardon right now.
It's time to change the law and get on with other issues already.


The library of Lewis Evans (1853-1930), the founder of the Museum, was presented to the University of Oxford in 1924, along with his magnificent collection of sundials, astrolabes, and other early mathematical instruments. It is one of the world's finest collections of early printed books and manuscripts on such instruments and the techniques of making and using them. It contains an unrivalled sequence of works on sundials and 'dialling'.
Some of the earliest technical and mathematical works printed in Europe are represented. The oldest book is the Kalendarium of Regiomontanus, an astronomical calendar, published at Venice in 1476. There are also various editions, from 1513 onwards, of the classic textbook on the astrolabe, Johannes Stöffler's Elucidatio fabricae ususque astrolabii; and of the first full-length book devoted to sundials, Sebastian Münster's Compositio horologiorum of 1531. Evans's collection is exceptionally rich in rare books on these specialised subjects from the 16th, 17th, and 18th centuries, and in at least nine languages. There are about 1,000 printed works altogether, and over 100 volumes in manuscript.
For more on Lewis Evans and his collecting, see the biographical account by Tony Simcock.
Johannes Stöffler, Elucidatio fabricae ususque astrolabii (Oppenheim, first edition 1513, second edition 1524), folio 76v (detail).


As I've possibly mentioned a few times, Freya Woof comes home tomorrow. YAY! I think she's adorable, gentle and friendly. The Kennel Clubs and pedigree Saluki breeders say she's "unacceptable". She can't be a real Saluki as her colour is Brindle. Ohh whoa is me, my woofers is a non-permitted colour, banned by kennel clubs across the globe. *sarcastic face* Dog Worlds post on this. The UK Kennel club. Northern Saluki Club, see third paragraph. The examiner have a good story on the Saluki controversy. On other dog sites I've read things about Saluki's being culled murdered as puppies.


text:
Iraqi MPs pass delayed election law
Disagreements over Kirkuk are resolved, clearing the way for elections in January.
"Unfortunately we have lost time for January 16. We have sent a letter to parliament telling them we have lost that date," he told Al Jazeera.
"Still there is an opportunity to have the election in time, according to the constitution ... by the 31st of January.
"We need at least seven days more to have the election and this will be under the authority of the presidency council ... which will issue the order to announce the day of the election."
Kirkuk compromise
The election law provides for an open candidate list, allowing voters to cast their ballot for an individual rather than a party. It also sets aside five seats in parliament for minorities.
The dispute over Kirkuk revolved around voter registration lists.
Inside Iraq: The future of Nouri al-Maliki
Inside Iraq: The Iraqi national movement
Inside Iraq: The Iraqi diaspora
Faultlines: Christopher Hill, Us ambassador to Iraq
Riz Khan: Iraq's rocky road to elections
Video: Iraq security walls stand firm
MPs voted into law the Kurdish proposal that current lists be used in next year's polls and that Kirkuk be kept as one electoral constituency.
A number of Arab and Turkmen politicians, who wanted the 2004 or 2005 records to be used and Kirkuk to be split into two constituencies, boycotted Sunday's vote.
Mosab Jasim, Al Jazeera's Iraq producer, said: "The compromise in the case of Kirkuk is that elections in Kirkuk will be held alongside those in the rest of Iraq's provinces.
"There is no special date for Kirkuk, there is no special treatment for Kirkuk except that if there is any claim of fraud, there is a special committee to investigate," he said.
"If the fraud if proved, then the elections in Kirkuk can be cancelled and rerun in one year."
Ethnic Kurds claim that Kirkuk, which sits on vast oil resources, is part of their ancestral homeland and want it included in their semi-autonomous northern region.
But the province is also home to a large number of Arabs and Turkmen who fiercely oppose Kurdish efforts to take it out of the control of the federal government.
Alaa Makki, a Sunni member of parliament from the Iraqi Islamic Party in Baghdad, said: "I think this law is the most important law in Iraq passed by the parliament since its establishment in 2006 because it could maintain the political process from being disturbed.
"Every partner - the Kurd, the Arab, the Turkman - accepted to pass this law by simple voting and we regard this is as a success for the coming challenges for Iraqis, he said.
Makki said: "The law maintains all the rights of all of Iraq's political partners".
Mahmoud Othman, a Kurdish member of the Iraqi parliament, told Al Jazeera that the passing of the election law would be welcomed in Kirkuk.
"It was a good occasion. We are happy. We agreed and voted on the law and it's passed now. The election will be on time," he said.
"People will be happy about it in Kirkuk."
US influence
During the day-long session, Christopher Hill, the US ambassador to Iraq, could be seen shuttling between various political factions.
"We congratulate members of the Council of Representatives for coming to agreement on the various difficult issues of considerable importance to Iraqis," Hill and General Ray Odierno, the highest-ranking US military official in Iraq, said in a statement.
"With the passage of this law, the Iraqi people, through their representatives, have shown their desire to uphold democratic and consultative government."
Barack Obama, the US president, said that the approval of the law paved the way for the withdrawal of US forces from the country.
"This agreement advances the political progress that can bring lasting peace and unity to Iraq and allow for the orderly and responsible transition of American combat troops out of Iraq by next September," he said at the White House.
The parliamentary election is seen as a crucial test for the country as it attempts to emerge from the sectarian carnage and civil strife that has followed the US-led invasion in 2003.

redpajama_set_name: RedPajamaCommonCrawl


text:
Das Gebäude Brückenstraße 4 in Mühlheim am Main ist eine unter Denkmalschutz stehende historische Mühle und wird allgemein als Ehemalige Brückenmühle (oder kurz: Brückenmühle) bezeichnet. Sie ist neben dem Wasserturm am Bahnhof eines der städtischen Wahrzeichen.

Geschichte
Die unmittelbar südlich der Rodaubrücke gelegene Mühle wurde um 1545 erbaut und 1576 erstmals urkundlich erwähnt. Der erste nachgewiesene Müller war Thomas Paul (1613–1687). Von 1687 bis 1855 befand sich die Mühle in Besitz der Familie Faller. Nach zwischenzeitlich wechselnden Inhabern wurde sie 1871 von der Familie Krebs erworben, die sie technisch modernisierte. So wurde eine eigene Anlage zum Trennen von Kleie vom Mehl und kurze Zeit später eine Vorrichtung, die das Getreide zwischen Metall-Walzengängen zerkleinerte und so einen wesentlichen höheren Feinheitsgrad des Mehls ermöglichte, eingebaut. Durch Elevatoren, die Vorläufer der heutigen Fließbänder, wurde das geschrotete Getreide transportiert. Die Kapazität dieser Anlage war um ein Mehrfaches höher als die der alten Steinmahlgänge, so dass auch das nächtliche Aufstehen entfiel, um Getreide in den Trichter nachzuschütten.

Nach dem Tod von Antonie Krebs, der letzten Müllerin, erwarb die Stadt Mühlheim 2014 die Mühle.

Gebäude und Einrichtung

Das Fachwerk-Mühlengebäude ist mit einem unterschlächtigen Zuppinger-Wasserrad mit 5,60 Meter Durchmesser versehen. Durch den Rückbau der Wasserführung 1926 und den Abriss der landwirtschaftlichen Nebengebäude 2015 befindet sich die Mühle heute innerhalb dichter Wohnbebauung in einer sich weiter verdichtender Innenstadtlage.

Die Mahleinrichtung ist noch in betriebsfähigem Zustand erhalten. Außerdem gibt es noch einen Quetschstuhl für Hafer und einen Schrotgang für Futtergetreide, die auch heute noch genutzt werden. Damit ist die Brückenmühle die letzte funktionsfähige Mühle im Landkreis Offenbach.

Eine museale Nutzung wird für die Zukunft angestrebt. Die Brückenmühle steht unter Denkmalschutz und ist Teil der Route der Industriekultur Rhein-Main Hessischer Oberer Main.

Literatur

Weblinks

 Ehemalige Brückenmühle im Internetauftritt des Mühlheimer Geschichtsvereins

Einzelnachweise

Wassermühle in Hessen
Mühle in Europa
Ersterwähnung 1576
Kulturdenkmal in Mühlheim am Main
Bauwerk in Mühlheim am Main

redpajama_set_name: RedPajamaWikipedia


The #1 pick of the draft, Andrew Wiggins, and his teammate but opponent for the night, Zach LaVine, shined in the Rising Stars USA vs the World challenge on Friday night. Both of the Timberwolves scored 22 and threw down a few nice dunks but it would be Wiggins who would win MVP after his world team won 121-112.
The two international freaks, Giannis and Rudy, also shined and provided some of the most exciting moments of the game – especially Gobert who rejected 3 shots including one on a dunk attempt by Nerlens Noel.


Genre: bollywood, old songs, classic.
Listen to Radio Hits Of Bollywood online in quality 32 kbps. Broadcasting was opened in (India). At this station, for you, plays the best old songs, bollywood, classic content in free live streaming.


Say goodbye to back pain.
Engage your core and sit comfortably, anywhere.
Get access to exclusive discounts and helpful health tips!
When your back feels good, you can take on the world.
Research has shown that good posture has a host of health benefits, some of which include better balance, higher energy levels and a decrease in stress. Good posture has also been shown to relieve and prevent the majority of the back pain that eight out of ten Americans will experience at some point during their lives.
Experience the soothing, pain-relieving power of hemp extract and premium essential oils with our line of all-natural wellness products.
If you sit for long periods of time, posture support is key. SitSmart works in any chair to restore your spine's natural curvature so you can sit comfortably all day.
Looking for a soft foam seat cushion? The SitzRight Seat Cushion relieves pressure on your sitz bones and tailbone by distributing your weight more evenly.
A healthy back means a healthy life.


I highly recommend Marius for private tours, especially if you are interested in a family history tour. My parents and grandparents all were born in Lithuania but I had never met them and was looking for family in Lithuania.... I contacted Marius to see if he could help me find family in Tytuvenai, within a hours of being in Tytuvenai, thanks to Marius we found my cousin. Marius also helped me get my father's birth certificate, he made the process easy and stress free. Marius is very knowledgeable about Lithuanian history and family research. My trips with Marius were very enjoyable, he is also very kind and caring and makes sure you get the tour/experience you are wanting.
The information contained on www.mgvoyages.eu website (the "Service") is for general information purposes only.
MG Voyages assumes no responsibility for errors or omissions in the contents on the Service.
In no event shall MG Voyages be liable for any special, direct, indirect, consequential, or incidental damages or any damages whatsoever, whether in an action of contract, negligence or other tort, arising out of or in connection with the use of the Service or the contents of the Service. MG Voyages reserves the right to make additions, deletions, or modification to the contents on the Service at any time without prior notice.
MG Voyages does not warrant that the website is free of viruses or other harmful components.
© 2012-2018. MG VOYAGES. Private guide and transfer services in Lithuania, Vilnius.


text:
package com.dremio.exec.store.easy.arrow;

import static com.dremio.exec.record.RecordBatchHolder.newRecordBatchHolder;
import static com.dremio.exec.store.easy.arrow.ArrowFormatPlugin.FOOTER_OFFSET_SIZE;
import static com.dremio.exec.store.easy.arrow.ArrowFormatPlugin.MAGIC_STRING;
import static com.dremio.exec.store.easy.arrow.ArrowFormatPlugin.MAGIC_STRING_LENGTH;
import static com.google.common.base.Preconditions.checkArgument;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.vector.types.pojo.Field;
import org.apache.commons.io.IOUtils;

import com.dremio.common.AutoCloseables.RollbackCloseable;
import com.dremio.common.exceptions.UserException;
import com.dremio.common.types.DataMode;
import com.dremio.common.types.MajorType;
import com.dremio.common.types.MinorType;
import com.dremio.common.types.TypeProtos;
import com.dremio.exec.cache.VectorAccessibleSerializable;
import com.dremio.exec.enginemanagement.proto.EngineId;
import com.dremio.exec.enginemanagement.proto.EngineManagementProtos;
import com.dremio.exec.enginemanagement.proto.SubEngineId;
import com.dremio.exec.expr.TypeHelper;
import com.dremio.exec.proto.CoordinationProtos;
import com.dremio.exec.proto.UserBitShared;
import com.dremio.exec.proto.beans.NamePart;
import com.dremio.exec.proto.beans.NodeEndpoint;
import com.dremio.exec.proto.beans.Roles;
import com.dremio.exec.proto.beans.SerializedField;
import com.dremio.exec.record.BatchSchema;
import com.dremio.exec.record.RecordBatchData;
import com.dremio.exec.record.RecordBatchHolder;
import com.dremio.exec.record.VectorContainer;
import com.dremio.io.FSInputStream;
import com.dremio.io.file.FileAttributes;
import com.dremio.io.file.FileSystem;
import com.dremio.io.file.Path;
import com.google.common.collect.Lists;
import com.google.common.primitives.Longs;

/**
 * Reader which takes a file and reads the record batches.
 */
public class ArrowFileReader implements AutoCloseable {
  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ArrowFileReader.class);

  private final FileSystem dfs;
  private final ArrowFileMetadata metadata;
  private final BufferAllocator allocator;
  private final Path path;

  private FSInputStream inputStream;

  public ArrowFileReader(final FileSystem dfs, Path basePath, final ArrowFileMetadata metadata,
                   final BufferAllocator allocator) {
    this.dfs = dfs;
    this.metadata = metadata;
    this.allocator = allocator;
    this.path = basePath.resolve(metadata.getPath());
  }

  private void openFile() throws IOException {
    inputStream = dfs.open(path);

    if (false /* disable this until a PDFS getFileStatus() issue is fixed VM.areAssertsEnabled() */) {
      final FileAttributes fileAttributes = dfs.getFileAttributes(path);
      final long size = fileAttributes.size();

      // Make sure the file size is at least the 2 * (Magic word size) + Footer offset size
      // We write magic word both at the beginning and at the end of the file.
      if (size < 2 * MAGIC_STRING_LENGTH + FOOTER_OFFSET_SIZE) {
        throw UserException.dataReadError()
            .message("File is too small to be an Arrow format file")
            .addContext("path", path.toString())
            .build(logger);
      }

      inputStream.setPosition(size - (MAGIC_STRING_LENGTH + FOOTER_OFFSET_SIZE));

      final long footerOffset = readLong(inputStream);

      final byte[] magic = new byte[MAGIC_STRING_LENGTH];
      IOUtils.readFully(inputStream, magic);
      // Make sure magic word matches
      if (!Arrays.equals(magic, MAGIC_STRING.getBytes())) {
        throw UserException.dataReadError()
            .message("Invalid magic word. File is not an Arrow format file")
            .addContext("path", path.toString())
            .build(logger);
      }

      // Make sure the footer offset is valid
      if (footerOffset < MAGIC_STRING_LENGTH || footerOffset >= (size - (MAGIC_STRING_LENGTH + FOOTER_OFFSET_SIZE))) {
        throw UserException.dataReadError()
            .message("Invalid footer offset")
            .addContext("filePath", path.toString())
            .addContext("invalid footer offset", String.valueOf(footerOffset))
            .build(logger);
      }
    }
  }

  /**
   * Read the record batches containing the rows in given range.
   * @param start Starting record number in file (0 based index)
   * @param limit number of records to read
   * @return
   */
  public List<RecordBatchHolder> read(final long start, final long limit) throws IOException {
    // Make sure the range is valid according to the metadata in footer
    checkArgument(start == 0 && metadata.getRecordCount() == 0|| start >= 0 && start < metadata.getRecordCount(),
        "Invalid start index (%s). Record count in file (%s)", start, metadata.getRecordCount());
    checkArgument(start + limit <= metadata.getRecordCount(),
        "Invalid start index (%s) and limit (%s) combination. Record count in file (%s)",
        start, limit, metadata.getRecordCount());

    openFile();

    final VectorAccessibleSerializable vectorAccessibleSerializable = new VectorAccessibleSerializable(allocator);
    final List<RecordBatchHolder> batches = Lists.newArrayList();
    final ArrowFileFooter footer = metadata.getFooter();

    long runningCount = 0;
    long remaining = limit;
    final int numBatches = footer.getBatchList() == null ? 0 : footer.getBatchList().size();
    for(int batchIndex = 0; batchIndex < numBatches; batchIndex++) {
      ArrowRecordBatchSummary batchSummary = footer.getBatchList().get(batchIndex);
      // Skip past empty batches
      if (batchSummary.getRecordCount() == 0) {
        continue;
      }

      runningCount += batchSummary.getRecordCount();

      // Skip batches until we reach a batch that contains the start index
      if (start >= runningCount) {
        // valid indices in up until the current batch are in range [0, runningCount - 1]
        continue;
      }

      final long currentBatchCount = batchSummary.getRecordCount();

      // Seek to the place where the batch starts and read
      inputStream.setPosition(batchSummary.getOffset());
      vectorAccessibleSerializable.readFromStream(inputStream);
      final VectorContainer vectorContainer = vectorAccessibleSerializable.get();

      // Find the start and end indices within the batch.
      final int batchStart = Math.max(0, (int) (start - (runningCount - currentBatchCount)));
      final int batchEnd = (int) Math.min(currentBatchCount, batchStart + remaining);

      final RecordBatchHolder batchHolder = newRecordBatchHolder(
          new RecordBatchData(vectorContainer, allocator),
          batchStart,
          batchEnd
      );

      batches.add(batchHolder);

      remaining -= batchHolder.size();

      if (remaining == 0) {
        break;
      }
    }

    if (batches.isEmpty()) {
      batches.add(getEmptyBatch());
    }

    return batches;
  }

  @Override
  public void close() throws IOException {
    if (inputStream != null) {
      inputStream.close();
      inputStream = null;
    }
  }

  /**
   * Helper method that creates an empty batch from schema in Arrow footer.
   * @return
   * @throws IOException
   */
  private RecordBatchHolder getEmptyBatch() throws IOException {
    final FileAttributes fileAttributes = dfs.getFileAttributes(path);
    final long size = fileAttributes.size();
    inputStream.setPosition(size - (MAGIC_STRING_LENGTH + FOOTER_OFFSET_SIZE));

    final long footerOffset = readLong(inputStream);

    // Read the footer
    inputStream.setPosition(footerOffset);
    ArrowFileFormat.ArrowFileFooter footer = ArrowFileFormat.ArrowFileFooter.parseDelimitedFrom(inputStream);
    return getEmptyBatch(footer,
                         allocator);
  }

  public static RecordBatchHolder getEmptyBatch(ArrowFileFooter footer,
                                                BufferAllocator allocator) throws IOException {
    return getEmptyBatch(fromBean(footer), allocator);
  }

  public static RecordBatchHolder getEmptyBatch(ArrowFileFormat.ArrowFileFooter footer,
                                                BufferAllocator allocator) throws IOException {
    BatchSchema footerSchema = BatchSchema.newBuilder().addSerializedFields(footer.getFieldList()).build();

    final VectorContainer vectorContainer = new VectorContainer();
    try (RollbackCloseable rollback = new RollbackCloseable()) {
      rollback.add(vectorContainer);
      for(Field field : footerSchema) {
        vectorContainer.add(TypeHelper.getNewVector(field,
                                                    allocator));
      }
      rollback.commit();
    } catch (Exception e) {
      throw new IOException(e);
    }

    vectorContainer.setRecordCount(0);
    vectorContainer.buildSchema();

    return newRecordBatchHolder(new RecordBatchData(vectorContainer,
                                                    allocator), 0, 0);
  }

  private static Roles toBean(CoordinationProtos.Roles roles) {
    Roles beanRoles = new Roles();
    beanRoles.setDistributedCache(roles.getDistributedCache());
    beanRoles.setJavaExecutor(roles.getJavaExecutor());
    beanRoles.setLogicalPlan(roles.getLogicalPlan());
    beanRoles.setMaster(roles.getMaster());
    beanRoles.setSqlQuery(roles.getSqlQuery());
    beanRoles.setPhysicalPlan(roles.getPhysicalPlan());
    return beanRoles;
  }

  private static EngineId toBean(EngineManagementProtos.EngineId engineId) {
    EngineId beanEngineId = new EngineId();
    beanEngineId.setId(engineId.getId());
    return beanEngineId;
  }

  private static SubEngineId toBean(EngineManagementProtos.SubEngineId subEngineId) {
    SubEngineId beanSubEngineId = new SubEngineId();
    beanSubEngineId.setId(subEngineId.getId());
    return beanSubEngineId;
  }

  static NodeEndpoint toBean(CoordinationProtos.NodeEndpoint nodeEndpoint) {
    NodeEndpoint beanNodeEndpoint = new NodeEndpoint();

    beanNodeEndpoint.setAddress(nodeEndpoint.getAddress());
    beanNodeEndpoint.setEngineId(toBean(nodeEndpoint.getEngineId()));
    beanNodeEndpoint.setSubEngineId(toBean(nodeEndpoint.getSubEngineId()));
    beanNodeEndpoint.setRoles(toBean(nodeEndpoint.getRoles()));
    beanNodeEndpoint.setAvailableCores((nodeEndpoint.getAvailableCores()));
    beanNodeEndpoint.setFabricPort(nodeEndpoint.getFabricPort());
    beanNodeEndpoint.setMaxDirectMemory(nodeEndpoint.getMaxDirectMemory());
    beanNodeEndpoint.setNodeTag(nodeEndpoint.getNodeTag());
    beanNodeEndpoint.setProvisionId(nodeEndpoint.getProvisionId());
    beanNodeEndpoint.setStartTime(nodeEndpoint.getStartTime());
    beanNodeEndpoint.setUserPort(nodeEndpoint.getUserPort());

    return beanNodeEndpoint;
  }

  /**
   * Helper method to convert the protobuf message into a bean class. Currently it ignores converting the row type.
   * Add the support for row type conversion in future if needed.
   *
   * TODO: We need check if there is a way to auto convert protobuf messages to protostuff bean classes.
   *
   * @param metadata
   * @return
   */
  public static ArrowFileMetadata toBean(ArrowFileFormat.ArrowFileMetadata metadata) {
    final ArrowFileMetadata beanMetadata = new ArrowFileMetadata();

    beanMetadata.setPath(metadata.getPath());
    beanMetadata.setRecordCount(metadata.getRecordCount());
    beanMetadata.setScreenNodeEndpoint(toBean(metadata.getScreenNodeEndpoint()));
    beanMetadata.setFooter(toBean(metadata.getFooter()));
    if (metadata.hasArrowMetadataVersion()) {
      beanMetadata.setArrowMetadataVersion(metadata.getArrowMetadataVersion());
    }

    return beanMetadata;
  }

  public static ArrowFileFooter toBean(ArrowFileFormat.ArrowFileFooter footer) {
    ArrowFileFooter beanFooter = new ArrowFileFooter();
    beanFooter.setBatchList(new ArrayList<>());
    for(ArrowFileFormat.ArrowRecordBatchSummary summary :footer.getBatchList()) {
      ArrowRecordBatchSummary beanSummary = new ArrowRecordBatchSummary();
      beanSummary.setOffset(summary.getOffset());
      beanSummary.setRecordCount(summary.getRecordCount());

      beanFooter.getBatchList().add(beanSummary);
    }

    beanFooter.setFieldList(new ArrayList<>());
    if(footer.getFieldList() != null) {
      for (UserBitShared.SerializedField field : footer.getFieldList()) {
        beanFooter.getFieldList()
                  .add(toBean(field));
      }
    }

    return beanFooter;
  }

  private static SerializedField toBean(UserBitShared.SerializedField field) {
    if(field == null) { return null; }

    SerializedField serializedField = new SerializedField();
    serializedField.setBufferLength(field.getBufferLength());
    serializedField.setValueCount(field.getValueCount());
    serializedField.setVarByteLength(field.getVarByteLength());
    serializedField.setMajorType(toBean(field.getMajorType()));
    serializedField.setNamePart(toBean(field.getNamePart()));

    serializedField.setChildList(new ArrayList<>());
    if(field.getChildList() != null) {
      for (UserBitShared.SerializedField cField : field.getChildList()) {
        serializedField.getChildList()
                       .add(toBean(cField));
      }
    }
    return serializedField;
  }

  private static UserBitShared.SerializedField fromBean(SerializedField field) {
    if(field == null) { return null; }
    UserBitShared.SerializedField.Builder serializedFieldBuilder =
      UserBitShared.SerializedField
                   .newBuilder()
                   .setBufferLength(field.getBufferLength())
                   .setValueCount(field.getValueCount())
                   .setVarByteLength(field.getVarByteLength())
                   .setMajorType(fromBean(field.getMajorType()))
                   .setNamePart(fromBean(field.getNamePart()));

    if(field.getChildList() != null) {
      for (int i = 0; i < field.getChildList().size(); i++) {
        serializedFieldBuilder.addChild(fromBean(field.getChildList().get(i)));
      }
    }

    return serializedFieldBuilder.build();
  }

  private static NamePart toBean(UserBitShared.NamePart namePart) {
    if(namePart == null) { return null; }

    NamePart namePartBean = new NamePart();
    namePartBean.setName(namePart.getName());
    namePartBean.setType(NamePart.Type.valueOf(namePart.getType().getNumber()));
    if(namePart.hasChild()) {
      namePartBean.setChild(toBean(namePart.getChild()));
    }
    return namePartBean;
  }

  private static UserBitShared.NamePart fromBean(NamePart namePartBean) {
    if(namePartBean == null) { return null; }
    UserBitShared.NamePart.Builder namePartBuillder = UserBitShared.NamePart.newBuilder()
                                                            .setName(namePartBean.getName())
                                                            .setType(UserBitShared.NamePart.Type.forNumber(namePartBean.getType().getNumber()));

    if(namePartBean.getChild() != null) {
      namePartBuillder = namePartBuillder.setChild(fromBean(namePartBean.getChild()));
    }
    return namePartBuillder.build();
  }

  static MajorType toBean(TypeProtos.MajorType majorType) {
    MajorType majorTypeBean = new MajorType();
    majorTypeBean.setPrecision(majorType.getPrecision());
    majorTypeBean.setWidth(majorType.getWidth());
    majorTypeBean.setScale(majorType.getScale());
    majorTypeBean.setTimeZone(majorType.getTimeZone());
    majorTypeBean.setMode(DataMode.valueOf(majorType.getMode().getNumber()));

    majorTypeBean.setMinorType(toBean(majorType.getMinorType()));
    majorTypeBean.setSubTypeList(new ArrayList<>());
    for(TypeProtos.MinorType cMinorType: majorType.getSubTypeList()) {
      majorTypeBean.getSubTypeList().add(toBean(cMinorType));
    }

    return majorTypeBean;
  }

  private static TypeProtos.MajorType fromBean(MajorType majorTypeBean) {
    TypeProtos.MajorType.Builder majorTypeBuilder = TypeProtos.MajorType.newBuilder()
               .setPrecision(majorTypeBean.getPrecision())
               .setWidth(majorTypeBean.getWidth())
               .setScale(majorTypeBean.getScale())
               .setTimeZone(majorTypeBean.getTimeZone())
               .setMode(TypeProtos.DataMode.forNumber(majorTypeBean.getMode().getNumber()))
               .setMinorType(fromBean(majorTypeBean.getMinorType()));

    if(majorTypeBean.getSubTypeList() != null) {
      for (int i = 0; i < majorTypeBean.getSubTypeList().size(); i++) {
        majorTypeBuilder.setSubType(i, fromBean(majorTypeBean.getSubTypeList().get(i)));
      }
    }

    return majorTypeBuilder.build();
  }

  private static MinorType toBean(TypeProtos.MinorType minorType) {
    return MinorType.valueOf(minorType.getNumber());
  }

  private static TypeProtos.MinorType fromBean(MinorType minorType) {
    return TypeProtos.MinorType.forNumber(minorType.getNumber());
  }

  public static ArrowFileFormat.ArrowFileMetadata fromBean(ArrowFileMetadata beanMetadata) {
    ArrowFileFormat.ArrowFileFooter footer = fromBean(beanMetadata.getFooter());

    ArrowFileFormat.ArrowFileMetadata.Builder metadataBuilder =
      ArrowFileFormat.ArrowFileMetadata
        .newBuilder()
        .setPath(beanMetadata.getPath())
        .setRecordCount(beanMetadata.getRecordCount())
        .setFooter(footer)
        .setScreenNodeEndpoint(fromBean(beanMetadata.getScreenNodeEndpoint()));

    if (beanMetadata.getArrowMetadataVersion() != 0) {
      metadataBuilder.setArrowMetadataVersion(beanMetadata.getArrowMetadataVersion());
    }

    return metadataBuilder.build();
  }

  public static ArrowFileFormat.ArrowFileFooter fromBean(ArrowFileFooter footer) {
    List<ArrowFileFormat.ArrowRecordBatchSummary> arrowRecordBatchSummaryList = Lists.newArrayList();

    if(footer.getBatchList() != null) {
      for (ArrowRecordBatchSummary beanSummary : footer.getBatchList()) {
        ArrowFileFormat.ArrowRecordBatchSummary summary =
          ArrowFileFormat.ArrowRecordBatchSummary.newBuilder()
                                                 .setOffset(beanSummary.getOffset())
                                                 .setRecordCount(beanSummary.getRecordCount())
                                                 .build();
        arrowRecordBatchSummaryList.add(summary);
      }
    }

    List<UserBitShared.SerializedField> fieldList = Lists.newArrayList();
    if(footer.getFieldList() != null) {
      for (SerializedField field : footer.getFieldList()) {
        fieldList.add(fromBean(field));
      }
    }
    return ArrowFileFormat.ArrowFileFooter.newBuilder()
                                          .addAllBatch(arrowRecordBatchSummaryList)
                                          .addAllField(fieldList)
                                          .build();
  }

  public static CoordinationProtos.NodeEndpoint fromBean(com.dremio.exec.proto.beans.NodeEndpoint nodeEndpoint) {
    if (nodeEndpoint == null) { return null; }

    EngineManagementProtos.EngineId.Builder engineIdBuilder = EngineManagementProtos.EngineId.newBuilder();
    if (nodeEndpoint.getEngineId() != null && nodeEndpoint.getEngineId().getId() != null) {
      engineIdBuilder.setId(nodeEndpoint.getEngineId().getId());
    }

    EngineManagementProtos.SubEngineId.Builder subEngineIdBuilder = EngineManagementProtos.SubEngineId.newBuilder();
    if (nodeEndpoint.getSubEngineId() != null && nodeEndpoint.getSubEngineId().getId() != null) {
      subEngineIdBuilder.setId(nodeEndpoint.getSubEngineId().getId());
    }

    CoordinationProtos.NodeEndpoint ret = CoordinationProtos.NodeEndpoint.newBuilder()
                                                                         .setAddress(nodeEndpoint.getAddress())
                                                                         .setEngineId(engineIdBuilder.build())
                                                                         .setSubEngineId(subEngineIdBuilder.build())
                                                                         .build();
    return ret;
  }

  private static final ThreadLocal<byte[]> READ_BUFFER = ThreadLocal.withInitial(() -> new byte[Long.BYTES]);

  private static long readLong(InputStream is) throws IOException {
    byte[] buffer = READ_BUFFER.get();
    IOUtils.readFully(is, buffer);

    return Longs.fromByteArray(buffer);
  }
}

redpajama_set_name: RedPajamaGithub


text:
Gross Negligence?
A sudden change of direction in the prosecution of a cyclist's death
by Heidi Walters
The citation. Photo by Heidi Walters
A high-profile case involving the death of a beloved community member and bicyclist took a puzzling turn last week in Humboldt County Superior Court, causing some to question the attentiveness of the D.A.'s office and law enforcement.
The preliminary hearing in the case of The People vs. Alan Bear was about to begin last Wednesday in Judge Joyce Hinrichs' court, when District Attorney Paul Gallegos announced that the most serious of the charges he'd filed against the defendant had just been refuted by the investigating officer.
The case involves the Aug. 25 incident in which a pickup truck allegedly driven by Bear, 27, of Hoopa, swerved 10 feet into the shoulder off Highway 299, according to the police report, and struck bicyclist and Bureau of Land Management botanist Greg Jennings, 42, of Blue Lake, with the left front bumper as Jennings rode his bike home from work. Jennings, who was wearing a helmet and bright clothing and observing traffic laws, died at the scene.
Gallegos charged Bear with vehicular manslaughter with gross negligence, giving false information to a peace officer and making an unsafe lane change. Bear plead not guilty to the charges.
But immediately before Wednesday's court hearing, Gallegos was in the hallway outside the courtroom going over the case with the investigating officer, S.W. Hartman of the California Highway Patrol. According to Gallegos, Hartman said he didn't think the collision involved "gross negligence." (Gross negligence, under California law, is defined as behavior so extremely careless that it indicates a lack of concern for the consequences.)
That prompted Gallegos to ask for a continuance to June 18, so that he could have the officer interviewed and get a report containing the new "evidence" -- the officer's opinion about the charges -- to the defense attorney, Manny Daskal. Judge Hinrichs granted the request.
The doubt over the key charge against Bear sparked concern among the dozen-plus cycling activists who'd come to court with Jennings' widow, Lisa Hoover. They said they feared the charges would be reduced and that, consequently, Bear might not face jail time. Even after Gallegos had pulled them into a private, extended huddle to explain the situation, they still seemed confused at how things could get this far and then so suddenly change.
Rick Knapp, vice president of the Humboldt Bay Bicycle Commuters Association, said he was disappointed at what he thought looked like "a lack of preparation."
"I think you could say we're dismayed," added Hoover.
It's unclear exactly how Gallegos didn't know until the last minute that the officer didn't agree with the main charge against Bear. It's also unclear when Hartman changed his mind.
But it wasn't the first time there'd been wavering on how to charge Bear. On the citation signed by Officer Hartman, dated Sept. 5, 2008 -- which the Journal viewed on file at the courthouse in March -- Hartman had originally written up the violation as "192 (c) (2) P.C. vehicular manslaughter (without gross negligence)," but at some point parts of the citation were crossed out and rewritten to read "192 (c) (1) P. C. vehicular manslaughter (with gross negligence).
On Thursday, CHP Sgt. Doug Tupen talked to Officer Hartman, who was out in the field, and later relayed what Hartman told him:
"He said that originally they wrote what they did, but then they got to thinking there might have been some marijuana influence -- maybe something more serious -- and so they changed it [to 'with gross negligence']," said Tupen. He explained that it is easier to reduce charges than to increase them.
Hartman, reached later, wouldn't elaborate, and another supervisor deferred further questions to the D.A.'s office.
Gallegos, last week, said cases can be dynamic, with changes occurring at any time, and he didn't want the officer to be made to feel like a scapegoat for what had happened.
"Yes, it was a different opinion than we had before -- but that's not a problem," Gallegos said. "We want candor under all circumstances. ... I want all officers and all witnesses to tell the truth. That's due process, that's fundamental fairness." He added that he's grateful the officer told him before he put him on the stand.
The officer's opinion didn't necessarily mean that the original charges would be dismissed or reduced, Gallegos said. But, he noted, it was only fair to give the defense a chance to explore the new evidence, as it potentially could exonerate his client.
Daskal, Bear's attorney, said Friday evening that he "really did not ever see 'gross negligence' in this case."
"The only thing we were looking at was if he was impaired by marijuana," said Daskal. "But he wasn't."
Daskal said the initial police report said that a "presumptive test" right after the incident indicated Bear had marijuana in his system. But a confirmatory laboratory test later indicated that the amount was negligible. Further, the CHP report says Bear told officers he'd been putting a soft drink into a cup holder just before he hit the cyclist -- which Daskal said indicated inattention as the cause of the accident. "And the jury instructions say that inattention is not enough for 'gross negligence.'"
Gallegos confirmed that a toxicology report had been completed on Bear, but he could not divulge its contents.
"I can tell you that we do not have sufficient evidence that the defendant was operating a vehicle while under the influence," he wrote in an e-mail Thursday.
As for the altered citation, Gallegos said that while law enforcement officers make recommendations on how to charge a suspect, based on probable cause, the D.A. decides what the actual charges will be. And in this case, said Gallegos, he didn't even use Officer Hartman's citation to determine how to charge Bear (and he hadn't noticed the alterations on it, he said), because a citation contains only the briefest of information.
"I looked at the reports," Gallegos said.
The cycling community has ramped up public interest in the case, using it to raise bicycle safety consciousness in the community and to put pressure on planners, politicians and law enforcement to improve traffic conditions for cyclists. The Humboldt Bay Bicycle Commuters Association even circulated a petition regarding the case involving Jennings' death -- and posted it on KHUM radio's Web site -- which demands that the D.A. "do everything in his power to assure that justice is served for the senseless fatal collision."
"Anything less than a felony manslaughter conviction is unacceptable in this case," reads the petition. On KHUM's Web site, Knapp wrote a note: "I can't think of a single case where the D.A. has prosecuted a motorist for running down a cyclist. Let's be sure this losing streak is broken."
Jennings' widow, Hoover, delivered the petition, with 300 signatures, to Gallegos' office the Friday before the hearing.
But Gallegos said last week that, while he sympathizes with the family and friends for their loss, he couldn't let public pressure affect his legal decisions.
"Petitions don't work in the justice system," he said. "We can't make judgments based on popular opinion. ... And justice can't be vengeance."
Humboldt Nears 2.5K COVID Cases Amid 'Enormous Setback' of Vaccine Pause
Slide Shuts Down 96 Near Happy Camp
COVID Variant Spreading Across State Found in Humboldt
Eureka Council to Consider HACHR Needle Exchange Plan
North Coast Night Lights: 2020 A New Light Review


text:
Q: if alerted yes marker won't set I am wanting to make an if statement that has an alert function.
However if I don't use the localstorage function the alert box will keep popping up but changes the marker.
If if do use the localstorage function the marker won't set the color.
Any ideas on what to do?
All help is appreciated.
var alerted = localStorage.getItem('alerted') || '';
if (alerted != 'yes') {
    if (value.squawk == "7500" || value.squawk == "7600" ||value.squawk == "7700") {
        console.log(value.hex + " is squawking " + value.squawk);
        alert(value.hex + " is squawking " + value.squawk + ". This is usually an error in transponder transmission please DO NOT alert the local authorities");
        markers[value.hex].setIcon(squawkerror(value));
    }
} else

A: Just check for alerted around the alert and if not set, alert and set it. Next time, no alert will be set and no stored value will be changed.

var alerted = localStorage.getItem('alerted') || false;

if( value.squawk == 7500 || value.squawk == 7600 ||value.squawk == 7700 ){

    console.log(value.hex + " is squawking " + value.squawk);

    if( !alerted ){
        alert(value.hex + " is squawking " + value.squawk + ". This is usually an error in transponder transmission please DO NOT alert the local authorities");
        localStorage.setItem('alerted', true);
    }

    markers[value.hex].setIcon(squawkerror(value));

}

redpajama_set_name: RedPajamaStackExchange


Under the 1994 Gun-Free Schools Act, schools are required to report to state and federal authorities whenever a student is caught with a gun. Often, it doesn't happen.
Student survivors from Marjory Stoneman Douglas High School are greeted as they arrive at a rally for gun control reform on the steps of the state Capitol, in Tallahassee, Florida. No one really knows how often students are caught with guns at school because there is no good national data.
Seventeen student survivors from Marjory Stoneman Douglas High School lie down on the floor in silence and pray at the approximate time of the attack last month, inside the state Capitol, in Tallahassee, Florida.


Dr. Michael Chu, DO is a vascular surgery specialist in West Islip, NY and has been practicing for 8 years. He graduated from Western U Hlt Sci Col Osteo Med Of The Pacific in 2003 and specializes in vascular surgery.
I am so grateful to Dr. Chur for taking care of me in the emergency room. His expertise gave me such reassurance and comfort during my procedure. His office staff is also very helpful and caring. I never thought I could be so pleased with my results.
×Post a ResponseAre you Dr. Michael Chu, DO?
Nice office staff and very comfortable with Dr. Chu. He answered all questions and made me feel at ease. I was early for appointment and he was still in surgery so I had to wait but the staff offered me coffee and kept apologizing for the wait. I would recommend going to him. Pleasant visit.
How was your experience with Dr. Chu?
Check the quality of care at hospitals where Dr. Chu treats patients.


text:
Specification of Jaw Subdivisions by Dlx Genes
Michael J. Depew1,
Thomas Lufkin2,
John L. R. Rubenstein1,*
1 Nina Ireland Laboratory of Developmental Neurobiology, Departments of Oral Biology and Psychiatry, Center for Neurobiology and Psychiatry, 401 Parnassus Avenue, University of California, San Francisco, San Francisco, CA 94143–0984, USA.
2 Brookdale Center for Developmental and Molecular Biology, Mount Sinai School of Medicine, Box 1020, One Gustave L. Levy Place, New York, NY 10029–6574, USA.
Science 11 Oct 2002:
Michael J. Depew
Thomas Lufkin
John L. R. Rubenstein
The success of vertebrates was due in part to the acquisition and modification of jaws. Jaws are principally derived from the branchial arches, embryonic structures that exhibit proximodistal polarity. To investigate the mechanisms that specify the identity of skeletal elements within the arches, we examined mice lacking expression ofDlx5 and Dlx6, linked homeobox genes expressed distally but not proximally within the arches.Dlx5/6–/– mutants exhibit a homeotic transformation of lower jaws to upper jaws. We suggest that nestedDlx expression in the arches patterns their proximodistal axes. Evolutionary acquisition and subsequent refinement of jaws may have been dependent on modification of Dlx expression.
The diversification and radiation of vertebrates was impelled by developmental innovations. Those particularly affecting the head include the elaboration of the brain, neural crest cells (NCCs), ectodermal placodes, an endoskeleton, and jaws (1–4). Large-scale gene duplications, including that of the Dlx gene family, have been tied to these innovations (5, 6), the nexus of which is manifest in the gnathostome (jawed vertebrate) skull. The six known murine Dlx genes are variously expressed in, and regulate the development of, the branchial arches (BAs), brain, placodes, and skeleton including the BA-derived jaws (7–12). Here, we show that deletion ofDlx5 and Dlx6 results in a repatterning of the skull, including a homeotic transformation of the lower jaw into an upper jaw. This transformation supports a model of patterning within the BAs that relies on a nested pattern of expression of Dlxgenes. Expansion and expression of the Dlx gene family correlates with elaboration of the gnathostome jaw.
The BAs are segmentally repeated structures in the embryonic vertebrate head arising from the ventrolateral surfaces. The most rostral arch (BA1) gives rise to most, though not all, of the jaw apparatus and associated soft tissues. BA1 has two principal proximodistal subdivisions, the maxillary (mxBA1, proximal) and mandibular (mdBA1, distal) arches, which contribute to the upper and lower jaws, respectively. It has been thought that a prototypical gnathostome BA likely contained a proximodistal series of five chondrocranial elements (2, 13) (Fig. 1A). Subsequent evolution has modified this pattern. The mammalian BA1 chondrocranium has only two major components, the derivatives of the palatoquadrate (PQ, mxBA1 derivative) and Meckel's cartilage (MC, mdBA1derivative) (14, 15). These elements are further associated with an ordered series of dermatocranial bones.
Download high-res image
Hypothesized role of Dlx genes in BA patterning. (A) Diagram of a proto-gnathostome neurocranium (Nc) and associated BA (1 to 7) skeletal derivatives. Gnathostome BA are metameric structures within which develop a proximodistal series of skeletal elements. Inter-BA identity is regulated by Hox,Pbx, and Otx genes. It is hypothesized that the nested expression of Dlx genes regulates intra-BA identity. (B) In situ hybridization of Dlx2 andDlx5 (E10.5) and diagram highlighting the nestedDlx expression within BA mesenchyme. AP, anteroposterior; BA, branchial arch; BA1, first branchial arch; BA2, second branchial arch; Bb, basibranchial; Cb, ceratobranchial; Eb, epibranchial; Hb, hypobranchial; hy, hyoid arch; md, mdBA1; mx, mxBA1; ; Pb, pharyngeobranchial; PD, proximodistal.
Patterning of the BA requires the establishment of both inter-BA and intra-BA identities (Fig. 1A) (16). Evidence implicates Hox, Pbx, and Otx homeobox gene regulation in the former task (17–20); less attention has been paid to the latter task. Intra-BA identity may be controlled by the Dlx genes (7,9–11, 16). The six mammalianDlx genes are genomically linked, convergently transcribed gene pairs (Dlx2/1, Dlx5/6, andDlx3/7) that share regulatory elements and similar expression patterns (5, 6, 21) (Fig. 1and fig. S1). In the BA mesenchyme, the Dlx gene pairs are expressed in nested patterns: Dlx1/2 throughout most of the proximodistal axis, with Dlx5/6 and Dlx3/7progressively restricted distally (9, 11) (Fig. 1, fig. S1).
The correlation of this nested expression pattern with a proximodistal BA skeletal series suggests the hypothesis that a Dlx code establishes identity within this series (Fig. 1A, fig. S1). This has been addressed in Dlx1–/– ,Dlx2–/– , Dlx1/2–/– , and Dlx5–/– mice (7,9–11). Dlx1–/– ,Dlx2–/– , andDlx1/2–/– mice evince progressively more severe alterations of the elements derived from proximal BAs. AlthoughDlx1 and Dlx2 are expressed in distal BAs (Fig. 1), derivative structures appeared normal inDlx1/2–/– mutants (9). Thus, perhaps Dlx3, 5, 6, and 7 compensate forDlx1/2 function distally, an idea tested with theDlx5–/– mice. Reflective of Dlx5expression (Fig. 1B), distal defects, particularly in the proximal mdBA1, were seen (10, 11). Generation ofDlx5/6–/– mutants (22) allowed us to examine the prediction that the loss of these distally expressed genes would result in distal BAs having proximal properties (fig. S1).
Because the deleted Dlx5/6 allele has LacZinserted under the control of the Dlx6 promoter and BA enhancer (Dlx6LacZ ) (22), we examined wild-type and mutant embryos at embryonic day 10.5 (E10.5) forDlx6LacZ expression. Mutant mdBA1 and BA2 form and contain NCCs expressing Dlx6LacZ (Fig. 2A and fig. S2) (23). Moreover, the mutant mdBA1 and BA2 maintain their mesenchymal expression of Dlx1 and Dlx2 at E10.5 (Fig. 2B, fig. S2) (23). The loss of Dlx5/6 and maintenance of Dlx1/2 suggested the possibility that the distal BAs may be respecified to proximal BA fates.
Characterization of distal BA molecular identity at E10.5. (A) β-Galactosidase expression demonstrating the maintenance of theDlx6LacZ+ cell population inDlx5/6+/– (phenotypically wild-type) andDlx5/6–/– embryos. (B toJ) In situ hybridization of wild-type andDlx5/6–/– embryos. (B) Maintenance ofDlx2 expression. [(C) to (G)] Loss of distal identity. Mesenchymal expression of dHAND, Dlx3,Alx4, and Pitx1 is lost inDlx5/6–/– mutants, as is mandibular midline ectodermal expression of Bmp7 (arrowheads) [(H) to (J)] Acquisition of proximal, maxillary-like identity. Expression of Wnt5a, Meis2, and Prx2is increased and expanded in mdBA1 ofDlx5/6–/– mutants. Mutant structures noted in red. hrt, heart; olf, olfactory pit and frontonasal primordia; and otc, otic vesicle.
We examined whether Dlx5/6–/– mutants evinced changes at E10.5 in the expression of genes that have been implicated in mdBA1 development (16, 24–32). Mutant BA expression of dHAND [a downstream target ofDlx6 (33)], Dlx3, and Alx4was lost (Fig. 2, C to E). Alhough proximal mdBA1 Bmp7expression was maintained, expression at the distal midline of mdBA1 was lacking (Fig. 2F). Mesenchymal Pitx1 expression was lost, although ectodermal expression slightly extended further ventrocaudad (Fig. 2G, fig. S2). Expression of Msx1 andMsx2 in mdBA1 was reduced, although Prx1 was expanded (fig. S2). Barx1 was expanded distad in mdBA1 (fig. S2); BA2 and BA3 expression, however, was lost. Therefore,Dlx5/6–/– mutants lack expression domains of several genes implicated in mdBA1 development (Alx4,dHAND, Dlx3, Dlx5/6, Bmp7, and Pitx1), while maintaining expression of genes also known to participate in mxBA1 development (Dlx1, Dlx2,Msx1, Msx2, and Prx1) (9,16, 26–28). Of note,Dlx5/6 regulation of Alx4, Barx1, andDlx3 provides evidence for conservation of invertebrate genetic circuitry, because Drosophila Distal-less regulates homologs of these genes (aristaless, BarH1, andDistal-less itself, respectively) (34–36).
Although few, if any, genes solely expressed within proximal BA have been characterized, we assayed the possible acquisition of mxBA1 molecular identity in Dlx5/6–/– mutants by examining the expression of genes (Wnt5a,Meis2, and Prx2) that are normally expressed in a graded manner within BA1 (higher in proximal BA1 than in distal BA1) (37–39). In theDlx5/6–/– mutants, the expression ofWnt5a, Meis2, and Prx2 was more intense and expanded laterad and caudad within mdBA1 at E10.5 (Fig. 2, H to J). Thus, the levels of these three genes in mutant mdBA1 more closely resemble normal mxBA1 than mdBA1.
We examined the morphologic consequences of the loss of mdBA1 and gain of mxBA1 molecular properties in Dlx5/6–/– mutant BA1. We operationally defined as "proximal" both chondrocranial (e.g., ala temporalis of the alisphenoid and incus) and dermatocranial (maxilla, palatine, pterygoid, lamina obturans of the alisphenoid, jugal, and squamosal) mxBA1 skeletal elements affected by the loss of Dlx1/2, and as "distal" the remainder of the BA1-derived elements (from mdBA1: the malleus, body and rostral process of MC, dentary, ectotympanic, and gonial) (9,16).
Dlx5/6–/– mutants die at postnatal day 0 (P0), and often, although not exclusively, exhibit exencephaly (Figs. 3 and 4; and fig. S3). Sensory capsular defects seen inDlx5–/– single mutants (10,11) are exacerbated with the loss of Dlx5/6; the nasal capsules are nearly absent, and the trabecular basal plate is severely truncated, as are the pars canalicularis and tegmen tympani of the otic capsule (Fig. 3, C and D; Fig. 4, A and F; fig. S3). Exencephalic and nonexencephalic mutants showed the same BA phenotypes (fig. S3). The distomedial tissues of BA1 often failed to become fully opposed and were cleft (Fig. 3B; Fig. 4, E and F).
Morphologic transformation of the mandibular arch at E16. (A and B) Mandibular morphology of wild-type (A) and Dlx5/6–/– mutants (B). In both fused (arrowhead, left) and cleft (center, right) states, the mutant lower jaw (UJ*) is transformed, appearing as a mirror image (arrows) of the upper jaw (UJ). (C and D) Skeletal staining of E16 wild-type andDlx5/6–/– mutant (exencephalic) littermates, with expanded views, demonstrates the transformation of the body of MC into a second ala temporalis (at*), attached, with the maxillary-derived ala temporalis (at), to the neurocranial basal plate (bp). Note the truncated styloid (black arrowhead), the ectopic projection from the hyoid toward the styloid (purple arrowhead), and an adjacent stapes. These data appear in an expanded form in fig. S3.
Morphologic transformation of the mandibular arch at P0. (A to G) Mandibular to maxillary homeotic transformation revealed by bone (red) and cartilage (blue) staining at P0. (A) Staining highlights the loss of nasal structures (arrowhead), severely hypoplastic upper incisors (UI) lacking premaxillary bone, the transformation of the dentary (dnt) into a maxilla (mx*), and rudimentary lower incisors (LI) without alveolar bone of attachment. [(B) and (C)] Wild-type (B) endogenous andDlx5/6–/– mutant (C) endogenous and ectopic ala temporali [in (B) ectopic outlined in yellow, endogenous in black] in situ and dissected (C). [(D) and (E)] Staining reveals the transformation of the dentary in cleft (upper left) and not cleft (lower left) mandibular states. In the noncleft state, the ectopic maxillary (mxp*) and palatine (pl*) palatal shelves reach the midline. (F) Basal and lateral schemas (incorporating the range of defects seen in several cases) of wild-type andDlx5/6–/– mutant elements demonstrating the nature of the homeotic transformation. A mandibular-cleft P0Dlx5/6–/– neonate is included for reference. mxBA1 elements are in yellow, mnBA1 in lavender, BA2 in turquoise, neurocranium in steel blue, premaxillary-derived UI in orange, and all other ossified elements in black. Transformed elements are labeled in red with an asterisk. (G) Wild-type and Dlx5/6–/– mutant neonates, minus superficial ectoderm (upper) or sectioned (lower), reveal concomitant soft tissue [vibrissae (compare arrowheads) and rugae] transformations. at, ala temporalis; fp, frontal process; gn, gonial; iof, infraorbital foramen; in, incus; jg, jugal; Lmo, lower molar; lo, lamina obturans; ma, malleus; mmx, maxillary molar alveolus; nsc, nasal capsule; pl, palatine; pm, premaxillary; pt, pterygoid; rp, rostral process; rtp, retrotympanic process; rug, rugae; sq, squamosal; tbp, trabecular basal plate; ty, ectotympanic; V2, maxillary branch, trigeminal; vbf, vibrissae follicle; Vg, trigeminal ganglion; wt, wild type.
Assays of E14.5 to P0 skeletal preparations revealed the presence of proximal BA1 skeletal elements, whereas distal BA elements were missing, having been replaced by a second set of "proximal" elements (Figs. 3 and 4, fig. S3). Although affected by aberrant olfactory placodal development (below), the mxBA1-derived maxilla and palatine bones were apparent, as were pterygoid, squamosal and, usually, a diminutive jugal. A clearly identifiable ala temporalis and associated lamina obturans were present (Figs. 3 and 4, fig. S3). The body of MC was transformed into a second ala temporalis, attached to the neurocranial base adjacent to the mxBA1-derived ala temporalis (Fig. 3, C and D; Fig. 4, B and C; fig. S3). mdBA1 contained dematocranial derivatives nearly identical in shape and size to the mxBA1-derived maxillae (Fig. 3D; Fig. 4, A and D to F; fig. S3). These ectopic maxillae (mx*) had frontal processes with infraorbital foramina, molar alveolae, and palatal shelves, which in mutant mandibles that were not cleft extensively abutted at the midline (Fig. 4, E and F). Ectopic laminar intramembranous bones developed, juxtaposed to the ectopic lamina obturans, which appear to be duplicated squamosals (Fig. 3F). Ectotympanic and gonial bones failed to form; instead, a second set of palatine and pterygoid bones developed in conjunction with the ectopic maxillae (Fig. 4, E and F). The malleus, which normally constitutes the proximal end of MC, appeared to have been transformed into a cartilaginous structure often fused to the incus; we have taken this as an ectopic incal structure. In some cases, the duplicated maxillae were associated with incisors, which usually lacked their associated alveolar bone (Fig. 4, A and F). These incisors were not in close association with each other, although occasionally they were accompanied by a cartilaginous nodule, the remnant of the midline rostral process of MC. Thus, within BA1 two sets of proximal skeletal elements developed.
Although the nature of their transformation was more ambiguous, skeletal derivatives of BA2 were also affected (Figs. 3D and 4F, fig. S3). The styloid process was truncated, and the hyoid extended an ectopic process toward it. The lesser horns projected to the cranial base. Stapes were present (often lacking foramena), as were associated ectopic cartilages.
The proximalization of the skeletal structures in BA1 is mirrored by a duplicated set of soft tissue structures normally restricted to the maxillary arch. A second set of mystacial vibrissae (40), induced by signals from the underlying mesenchyme (41), developed in the soft tissue of mdBA1 (Fig. 4G). Moreover, a second set of rugae developed in conjunction with the ectopic palatal shelves in the mutant mdBA1 (42) (Fig. 4G).
The fact that the mdBA1-to-mxBA1 transformation produces a mirror-image duplication (Fig. 3B, red arrows) suggests the presence of a source of positional information centered midway along the maxillary-mandibular axis (Fig. 5). Fgf8, whose expression in the BA1 ectoderm of the Dlx5/6–/– mutants is maintained (fig. S2), is a candidate for such a patterning signal (16, 29, 43, 44). Interpretation of this patterning signal would then depend on the combination of Dlx genes expressed in the mesenchyme (Fig. 5, A and B).
Schemae of BA1 patterning. (A andB) Lateral and frontal views of E10.5 BA1 and FNPs depicting the relationship of the nested, mesenchymal BA1 expression ofDlx1/2/5/6 (Dlx1/2 + in yellow; Dlx1/2/5/6 + in lavender) and hypothesized ectodermal sources of patterning information (e.g.,Fgf8 expression) from the BA1 ectoderm centered at the junction of mxBA1 and mdBA1 (dark blue zone and arrows). This is interpreted by the subjacent Dlx +mesenchyme: Where solely Dlx1/2 +, proximal structures develop; where Dlx1/2/5/6 +, distal structures develop. Additional information is hypothesized to be supplied by factors (e.g., BMPs) expressed in the distal mdBA1 ectodermal midline and the olfactory ectoderm at the junction of the FNPs and mxBA1 (red patches and arrows). The jaws are kept in register by juxtaposing a common central domain (blue) with two caps (red) of positional information. (C) Schema of BA1 patterning and molecular identity in the absence ofDlx5/6. (D) Schema of regulatory control exerted by Dlx5/6 on distal BA1 (green arrowheads indicating positive control and red line indicating inhibition). dml, distal midline; lFNP, lateral FNP; mFNP, medial FNP.
For proper functioning, jaw articulation and dentition must be appropriately aligned. Functional registration within the upper jaw requires the correct integration of the frontonasal prominences (FNPs; sources of the premaxillae and upper incisors) with mxBA1. This integration was lost in Dlx5/6 –/– mutants, in which nasal capsular and premaxillary structures were minimal, upper incisors rudimentary, and the adjacent parts of the maxillae subsequently misshapen (Figs. 3 and 4, fig. S3). Thus, without theDlx5/6+ olfactory placodal induction of the underlying FNP mesenchyme (Figs. 1B and 2A) (11,16), the mutant upper jaw lacked integration of the molar-bearing maxillae with incisor-bearing premaxillae. In some respects, the endogenous Dlx5/6 –/– mutant maxillae resemble their ectopic counterparts more than wild-type maxillae, which suggests that they are sensitive to patterning information from the olfactory placodes or tissue at the junction of the FNPs and mxBA1 (Fig. 5, A and B).
These tissues are the sources of secreted signaling molecules, including bone morphogenetic proteins (BMPs), and numerous transcription factors are expressed in the NCCs of both the mxBA1 and the adjacent FNPs (e.g., Msx1and Msx2). These same signaling molecules and transcription factors are expressed at, and adjacent to, the distal midline of mdBA1, where they regulate lower incisor development (16, 26, 29). Lack of mesenchymal Dlx5/6 in mdBA1 results in a loss of proper distal mdBA1 midline development, as suggested by the loss of ectodermal Bmp7 expression, mandibular clefting, and a deficiency in integrating the distal midline (lower incisor) with more proximal parts of mdBA1. Therefore, formation of the jaw apparatus appears to involve juxtaposing three ectodermal patterning centers: the olfactory placode/FNPs, the core of mxBA1 and mdBA1, and distal midline mdBA1 (Fig. 5) (16, 29,43–45).
We conclude that loss of Dlx5 and Dlx6 results in a homeotic transformation of the lower jaw into an upper jaw and that cellular identity within an arch relies on a nested pattern ofDlx expression. Although lampreys (a type of agnathan, or jawless vertebrate) express Dlx genes in their BAs, theirDlx expression is not nested, and their BA cartilage is uniform and unsegmented (6, 44, 46). Thus, perhaps the advent of nested Dlx BA expression, by providing specification of intra-BA identity, contributed to the transition from jawless to jawed vertebrates. This transition may have occurred in conjunction with a change in Hox gene expression (47). Delineating the underlying mechanism(s) responsible for the nesting of Dlx genes expression will likely yield greater insight into gnathostome evolution.
Supporting Online Material
www.sciencemag.org/cgi/content/full/1075703/DC1
Figs. S1 to S3
↵* To whom correspondence should be addressed. E-mail: jlrr{at}cgl.ucsf.edu
C. Gans,
R. G. Northcutt
, Science 220, 268 (1983).
R. M. Langille,
B. K. Hall
, Biol. Rev. Cambridge Philos. Soc. 64, 73 (1989).
J. Mallatt
, Zoology 100, 128 (1997).
OpenUrlWeb of Science
S. M. Shimeld,
P. W. H. Holland
, Proc. Natl. Acad. Sci. U.S.A. 97, 4449 (2000).
D. W. Stock
, Proc. Natl. Acad. Sci. U.S.A. 93, 10858 (1996).
A. H. Neidert,
V. Virupannavar,
G. W. Hooker,
J. A. Langeland
M. Qiu
, Genes Dev. 9, 2523 (1995).
S. A. Anderson,
D. D. Eisenstat,
L. Shi,
J. L. R. Rubenstein
, Dev. Biol. 185, 165 (1997).
D. Acampora
, Development 126, 3795 (1999).
M. J. Depew
K. Sumiyama
, Proc. Natl. Acad. Sci. U.S.A. 99, 780 (2002).
H. R. Barghusen, A. Hopson, in Hyman's Comparative Anatomy, M. Wake, Ed. (Univ. of Chicago Press, Chicago, 1979), pp. 265–326.
W. J. Moore, The Mammalian Skull (Cambridge Univ. Press, Cambridge, 1981).
G. de Beer, The Development of the Vertebrate Skull (Univ. of Chicago Press, Chicago, 1985)
M. J. Depew, A. S. Tucker, P. T. Sharpe, in Mouse Development: Patterning, Morphogenesis and Organogenesis, J. Rossant, P. P. L. Tam, Eds. (Academic Press, San Diego, CA, 2002), pp. 421–498.
M. Gendron-Maguire,
M. Mallo,
M. Zhang,
T. Gridley
, Cell 75, 1317 (1993).
F. M. Rijli
I. Matsuo,
S. Kuratani,
C. Kimura,
N. Takeda,
S. Aizawa
L. Selleri
T. Zerucha
, J. Neurosci. 20, 709 (2000).
R. F. Robledo,
L. Rajan,
X. Li,
T. Lufkin
, Genes Dev. 16, 1089 (2002).
Detection of β-galactosidase as in (21) and anatomical analyses and in situ hybridizations, as in (11).
D. Srivastava
, Nature Genet. 16, 154 (1997).
G. W. Robinson,
K. A. Mahon
, Mech. Dev. 48, 199 (1994).
I. Satokata,
R. Maas
, Nature Genet. 6, 348 (1994).
I. Satokata
J. F. Martin,
A. Bradley,
E. N. Olson
A. S. Tucker,
K. L. Matthews,
P. T. Sharpe
, Science 282, 1136 (1998).
S. Qu,
S. C. Tucker,
Q. Zhao,
B. deCrombrugghe,
R. Wisdom
, Development 126, 359 (1999).
C. Lanctot,
A. Moreau,
M. Chamberland,
M. L. Tremblay,
J. Drouin
P. D. Szeto
, Genes Dev. 13, 484 (1999).
J. Charite
G. Campbell,
A. Tomlinson
T. Kojima,
M. Sato,
K. Saigo
G. Panganiban
, Dev. Dyn. 218, 554 (2000).
T. P. Yamaguchi,
A. P. McMahon,
F. Cecconi,
G. Proetzel,
G. Alvarez-Bolado,
D. Jay,
P. Gruss
M.-F. Lu
M. H. Hardy
, J. Embryol. Exp. Morphol. 19, 157 (1968).
, Trends Genet. 8, 55 (1992).
M. K. Sakamoto,
K. Nakamura,
J. Handa,
T. Kihara,
T. Tanimura
, Anat. Rec. 223, 299 (1989).
A. Trumpp,
M. J. Depew,
J. L. R. Rubenstein,
J. M. Bishop,
G. R. Martin
Y. Shigetani
S.-H. Lee,
K. K. Fu,
J. N. Hui,
J. M. Richman
, Nature 414, 909 (2001).
C. B. Kimmel,
C. T. Miller,
R. J. Keynes
, J. Anat. 199, 105 (2001).
M. Cohn
This work was supported by research grants to J. R. from Nina Ireland, the March of Dimes, and National Institute of Mental Health (K02MH01046-01), and to M. D. from ARCS (Achievement Rewards for College Scientists) Foundation and National Institute of Dental Research (T32DE07204). Ours thanks to J. Brunet, J. Drouin, G. Karsenty, K. Mahon, A. McMahon, F. Meijlink, T. Nakamura, E. Olson, and P. Sharpe for probes, and the Rubenstein lab, E. Depew, and J. Depew for commentary.
You are going to email the following Specification of Jaw Subdivisions by Dlx Genes
By Michael J. Depew, Thomas Lufkin, John L. R. Rubenstein
Science 11 Oct 2002 : 381-385


The book is comprised of three components. The first component analyses the creative contribution to the theory of imperatives and norms provided by 20th-century Polish researchers. The second component summarizes their reflections and considerations. The third component is an anthology of the classic writings of Polish authors of the time; it constitutes an illustration of the first part and indicates that their research covered practically the whole scope of this theory.
Jacek Jadacki (born 1946) is professor at Warsaw University. His scholarly production includes approximately hundred works spanning almost every domain in philosophy: from logic, through ontology, epistemology, aesthetics and ethics, to the history of these disciplines. Among his more than twenty books are Possible Ontologies (with Zdzisław Augustynek; 1993), From the Viewpoint of the Lvov-Warsaw School (2003), and Polish Analytical Philosophy (2009). His pupils include such well-known figures of modern Polish thought as Anna Brożek, Mariusz Grygianiec, Joanna Odrowąż-Sypniewska, and Mieszko Tałasiewicz.


text:
#ifndef KOKKOS_CUDA_WORKGRAPHPOLICY_HPP
#define KOKKOS_CUDA_WORKGRAPHPOLICY_HPP

namespace Kokkos {
namespace Impl {

template< class FunctorType , class ... Traits >
class ParallelFor< FunctorType ,
                   Kokkos::Experimental::WorkGraphPolicy< Traits ... > ,
                   Kokkos::Cuda
                 >
  : public Kokkos::Impl::Experimental::
           WorkGraphExec< FunctorType,
                          Kokkos::Cuda,
                          Traits ...
                        >
{
public:

  typedef Kokkos::Experimental::WorkGraphPolicy< Traits ... >   Policy ;
  typedef Kokkos::Impl::Experimental::
          WorkGraphExec<FunctorType, Kokkos::Cuda, Traits ... > Base ;
  typedef ParallelFor<FunctorType, Policy, Kokkos::Cuda>        Self ;

private:

  template< class TagType >
  __device__
  typename std::enable_if< std::is_same< TagType , void >::value >::type
  exec_one(const typename Policy::member_type& i) const {
    Base::m_functor( i );
  }

  template< class TagType >
  __device__
  typename std::enable_if< ! std::is_same< TagType , void >::value >::type
  exec_one(const typename Policy::member_type& i) const {
    const TagType t{} ;
    Base::m_functor( t , i );
  }

public:

  __device__
  inline
  void operator()() const {
    for (std::int32_t i; (-1 != (i = Base::before_work())); ) {
      exec_one< typename Policy::work_tag >( i );
      Base::after_work(i);
    }
  }

  inline
  void execute()
  {
    const int warps_per_block = 4 ;
    const dim3 grid( Kokkos::Impl::cuda_internal_multiprocessor_count() , 1 , 1 );
    const dim3 block( 1 , Kokkos::Impl::CudaTraits::WarpSize , warps_per_block );
    const int shared = 0 ;
    const cudaStream_t stream = 0 ;

    Kokkos::Impl::CudaParallelLaunch<Self>(*this, grid, block, shared, stream);
  }

  inline
  ParallelFor( const FunctorType & arg_functor
             , const Policy      & arg_policy )
    : Base( arg_functor, arg_policy )
  {
  }
};

} // namespace Impl
} // namespace Kokkos

#endif /* #define KOKKOS_CUDA_WORKGRAPHPOLICY_HPP */