First of all, I feel so honored that I was able to attend this conference; it was truly a blessing. I have returned so pumped and ready to fight for people's rights!
Below I have summarized my key highlights from each day along with a couple pictures. To see the full album from my experience at CSMG, check our Flickr account.
In this conference, there was 500+ attendees of which 109 are college students and 86 are Diversity Outreach Initiative scholarship recipients (like me).
My first day at the Catholic Social Ministry Gathering was fun and insightful.
My main takeaway was that we are not here to speak on what we as individuals want but rather as a UNIFIED voice for the Church. As a Church, representing human beings with inalienable rights, we are to protect those rights of our brothers at all times.
As Pope Francis wisely said: "Indifference is the greatest sin today"!
Learned about the environmental impacts and policy issues affecting farm workers and tribal communities. This was incredibly eye-opening for me. I had never thought about their circumstances and didn't realize they are struggling.
Got prayed over by a group of college students after sharing my DACA story with them ♥ I was very surprised, but it surely warmed my heart.
The final day of the conference ended with a bang!
Vargas even prayed the rosary with us during the prayer service for Dreamers!
Advocated for Dreamers by sharing my story to the CA lawmakers. I spoke with one particular staff member whose representative still needs to be convinced of the Dreamer story, so I hope I was able to touch their heart and help them understand my community so that they can create and vote for a legislation to protect Dreamers and maintain family unification.
Got interviewed throughout the day by several organizations including USCCB!
This day itself is the highlight of my trip. So many blessings, so much goodness and love, so much advocacy. My passion for the Church and its teachings has been reinforced by this conference!


MILK is a multimedia poetry collection exploring the personal and universal impact of breastfeeding in the Digital Age.
I had a profound personal experience breastfeeding my now 3-year-old, son. This work is relevant to me in terms of my artistic development, but also on a more universal level, as a means of raising awareness about the value of breastfeeding, as an act that should be supported in a wider social context.
This project is supported in part by a GAP individual Artist Grant from Artist Trust.
In 2012, Dancing Girl Press released Fando & Lis, a small collection of my poetry inspired by the 1968 film by Alejandro Jodorowsky.
Cover Image by Khadijah Queen.


text:
Q: Generate Ear file which includes WAR file using maven pom.xml I have EAR with an application and I need to extend this app with my own code that is packaged as a WAR. Is there a maven plugin that can help me with putting the WAR inside the EAR?
Need Automate solution for generate ear file which includes a war file

4.0.0
com.spring.example
example
1
ear
example
<!-- Add Spring Web and MVC dependencies -->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.3.9.RELEASE</version>
    </dependency>
    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>

    <groupId>com.spring.example</groupId>
    <artifactId>example</artifactId>
   <version>1</version>
   <type>war</type>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.3.2</version>
<configuration>
    <finalName>spring-mvc-example</finalName>

    <modules>
        <webModule>
           <groupId>com.spring.example</groupId>
    <artifactId>example</artifactId>
            <uri>example.war</uri>
            <bundleFileName>sexample.war</bundleFileName>
        </webModule>
    </modules>
</configuration>

                maven-war-plugin
                3.0.0

                    WebContent

        ${project.artifactId}

and getting error at line where dependency to generate war file . so where am missing please help me.

redpajama_set_name: RedPajamaStackExchange


text:
Dian Magie Pottery
If you have the chance to visit potter Dian Magie in the summer, it's easy to become enchanted. Begonias in varying shades of pink fill the flower beds and line the garden pathway to her studio. Her home, shared with her sister, fiber artist Lorraine Cathey, is embraced by two streams, and the setting is abundant with cardinals, blue birds, trillium and hostas.
But regardless of the time of year you visit, you'll find much of her artwork resplendent with nature's bounty. Dian crafts pottery using a sgrafitto method to create decorative images of the many native plants on her property. It is a process that demands detail and predictable results so the ceramic is bisque-fired, glazed, and fired again in an electric kiln.
For her other pottery, Dian employs one of the greatest forces of nature – wood fire. Unique to the site is a wood-fire kiln that can hold over 300 pots. It is fired four times a year with an enthusiastic crew. You may even be invited to return to watch a firing where flames rise over 10 feet out of the chimney after each stoke in the later hours.
Dian's studio is open by appointment only.
Craft TrailsPottery
108 Turner LaneHendersonville, NC 28791Get DirectionsPhone: 828-606-6119Email: Dian.magie@gmail.com
Located Nearby
Historic Johnson Farm
Go back in time to a rural retreat for summer visitors Historic Johnson Farm, a...
Hendersonville / Henderson County, NC Until the 1785 Treaty of Hopewell, present-day Henderson County was...
Carl Sandburg Home National Historic Site
The Carl Sandburg Home National Historic Site in Flat Rock preserves the home and working...
Historic Flat Rock
The Village of Flat Rock, considered "the Little Charleston of the Mountains," originated in the...
Explore Crafts of the Blue Ridge
Follow the Blue Ridge Craft Trails to find makers of authentic handmade crafts that rely on the native materials of our mountains.
Find Craft Destinations
A Living Heritage of Craft
Discover the traditions of handmade craft passed down by generations in the Blue Ridge Mountains of North Carolina.

redpajama_set_name: RedPajamaCommonCrawl


text:
Home/News/World/UK/Boris Johnson hints at compulsory Covid jabs in future
Boris Johnson hints at compulsory Covid jabs in future
Julie Mcmahon Send an email December 8, 2021
Boris Johnson today hinted coronavirus jabs could eventually be made compulsory or Covid passes could be rolled out in wider society if a 'substantial proportion of the population' remains unvaccinated.
The Prime Minister announced the Government is now triggering its Plan B to reimpose work from home guidance, make masks compulsory in more indoor settings and require people to show a Covid pass to go to nightclubs.
The measures are being rolled out across England in a bid to slow the spread of the new Omicron variant of the disease.
But Mr Johnson said a 'national conversation' is likely to be needed in the future on how the nation will live with the virus.
He said he does not believe the Government can 'keep going indefinitely with non-pharmaceutical interventions' in a hint that jabs could be made compulsory or restrictions could be targeted at the unvaccinated.
New measures could include greater outreach attempts in communities where uptake is low, or an extension of Covid passes to more venues.
Boris Johnson today hinted coronavirus jabs could eventually be made compulsory or Covid passes could be rolled out in wider society if a 'substantial proportion of the population' remains unvaccinated
Mr Johnson said a 'national conversation' is likely to be needed in the future on how the nation will live with the virus
Hosting a Downing Street press conference, Mr Johnson was asked by a member of the public if the Government could follow the lead of some European nations by making vaccinations compulsory.
When asked a question about introducing compulsory jabs at last night's Downing Street Press conference, Mr Johnson said: 'I think we are going to need to have a national conversation about the way forward and the other things that we can do to protect those who… haven't got vaccinated for one reason or another.
'I don't believe we can keep going indefinitely with non-pharmaceutical interventions – I mean restrictions on people's way of life – just because a substantial proportion of the population still sadly has not got vaccinated.'
He added: 'I said… as soon as we were really talking about vaccinations seriously that I didn't want us to have a society and a culture where we force people to get vaccinated.
'I don't think that has ever been the way we do things in this country.'
But he said a 'national conversation' on the way forward will be needed if the vaccines are proven to be effective at tackling Omicron.
Related News UK weather: 'Immediate action' flood warnings, winds topping 100mph... and now snow is on the way
He said: 'I think that there is going to come a point if we can show that the vaccines are capable of holding Omicron… I do think that we are going to have to have a conversation about ways in which we deal with this pandemic because, I want to be absolutely clear with you, I don't believe we can keep going indefinitely with non-pharmaceutical interventions, I mean restrictions on people's way of life, just because a substantial proportion of the population still sadly has not got vaccinated.
'I think we are going to need to have a national conversation about the way forward and the other things that we can do to protect those who are hard to reach, who haven't got vaccinated for one reason or another, medical reasons why they can't get vaccinated, other ways of protecting them.'
Mr Johnson said he believes 'that is a stage that I think we will come to if and when we establish… that the booster is effective against Omicron'.
He added: 'It is at that moment that I think we will have to talk seriously about moving on from the way we, from thinking about further NPIs and thinking about other ways in which we protect people.'
Although Britain has one of the highest uptakes of Covid vaccines, more than five million people – which equates to 12 per cent of the population – has not yet had their first jab.
The Government imposed new laws in November which forced all workers in the care sector to get vaccinated if they wanted to continue in their jobs.
Up to 51,000 care home staff were set to be barred from their workplace on November 11 as England's new rule kicked in, according to data which covered the period up to November 4.
The sector was already short of 100,000 workers before the pandemic struck and the new rule meant tens of thousands of employees were barred from their workplaces.
However, care industry bosses later said the move had little effect on boosting uptake.
Mike Padgham, chair of the Independent Care Group — which represents providers in Yorkshire, said making jabs compulsory only had 'a little bit of an effect' on the 1.5million-strong sector.
Related News Brent Council to assess Willesden Police Station scheme
Health Secretary Sajid Javid also announced that all frontline NHS workers need to have have had jabs by April next year.
Whilst Downing Street acknowledged the policy would trigger a mass exodus from health and social care, the Government said it was needed to protect vulnerable patients.
The Government's own impact assessment suggests 126,000 healthcare staff — across the NHS and social care sector — are likely to be sacked when the rule is enforced.
Mr Johnson's hint that mandatory vaccinations could be imposed came just over a week after EU Commission President Ursula von der Leyen said that it was time for the bloc to 'think about' making jabs compulsory.
She said that whilst it would ultimately be up to member states to decide their own rules, it was her 'personal opinion' that the time was right discuss forcing people to get jabs.
'We have one third of the population which is not vaccinated. This is 150million people – that is a lot. Not each and every one could be vaccinated… but the vast majority could,' she said.
A coordinated EU-wide move would follow measures imposed by Austria to make vaccines compulsory for all eligible citizens in February.
Asked by a journalist whether she supported making vaccines mandatory for everyone, she replied: ' First of all, this is pure member state competence – it is therefore not up to me to give any kind of recommendation.
'[But] if you're asking me what my personal position is, two or three years ago I would never have thought to witness what we see right now.
'That we have this horrible pandemic, we have the lifesaving vaccines, but they are not being used adequately everywhere, and thus this is an enormous health cost
'If you look at the numbers we have 66 per cent of whole EU population vaccinated, which means we have one third of the population which is not vaccinated.
'This is 150million people – that is a lot. Not each and every one could be vaccinated, these are very young children and people with medical conditions, but the vast majority could
'Therefore I think it is understandable and appropriate to lead this discussion now, how we can encourage and potentially think about how we can have mandatory vaccination within the European Union.
'This needs discussion, this needs a common approach, but it is a discussion that I think needs to be had.'
Related News Red Arrows grounded after Hawk T1 jet crash - pilots are stable after first Navy ejection in 18 years
Elsewhere in his announcement yesterday, Mr Johnson said that working from home guidance would return, vaccine passports will become compulsory in large venues and the wearing of face coverings would be extended to theatres and cinemas.
At the same time as the announcement, Health Secretary Sajid Javid unveiled the plans in the House of Commons.
He said the measures were necessary because cases of the new Omicron variant were doubling 'every two or three days' and that they could hit more than a million by the end of the month.
But Mr Javid was heckled and even urged to resign by Tory MPs who were angry at the return of restrictions which strangle the economy – and also because the move came on the same day that Downing Street faced fury over the 'illegal' Christmas party held in Downing Street last year.
Mandatory mask wearing will be extended to cinemas and theatres from today but will not be needed in pubs and restaurants. The guidance will also include exemptions for when eating, drinking, exercising or singing.
The Covid health certificate will apply to unseated indoor venues with more than 500 attendees, and outside where there are more than 4,000 people.
The Prime Minister added that the pass can be obtained with a negative lateral flow test or by having had two doses of a vaccine but hinted this could change, saying 'we will keep this under review as the boosters roll out'.
The premier said it was necessary to move to Plan B to 'buy time' for the NHS and to learn more about the new strain.
'It has become increasingly clear that Omicron is growing much faster than the previous Delta variant and is spreading rapidly all around the world,' he said.
While 568 cases had been confirmed in the UK 'the true number is certain to be much higher' – potentially as many as 10,000.
'Most worryingly, there is evidence that the doubling time of Omicron could currently be between two and three days.'
Education News || Politics News || Journal News || Daily Local News || Lifetime Fitness || Sports News || Automotive News
Boris Johnson coronavirus dailymail news omicron variant UK Breaking News UK Headlines UK News UK Politics
When the SAT Feels Like a Lock, Not a Key
Lamar Odom Says He's Sworn Off Drugs & Porn After Bad Breakup W/ Fiancée
Man offers girl money after beginning 'uncomfortable conversation' in Greenwich
Covid-19 UK: Common blood thinner can spare virus patients from severe lung damage, study claims
Beatles producer George Martin recounts how he came to sign band in heartwarming video with granddaughter
Ottawa woman, 49, identified as victim of crash on Highway 417 in North Glengarry
U.S. to discuss missiles in Ukraine and military exercises with Russians, officials say
Enormous python found inside bathroom of Shailer Park home in Queensland
2021 International Booker Prize Longlist Announced
Dark Ages of the Web
Brittany Murphy Docuseries Is Coming to HBO Max


text:
Team USA Scholarship
Team USA News
Driver Blogs
Scott Huffaker
Braden Eves
Colin Mullan
Jake Craig
Aaron Jeansonne
Jonathan Kotyk
Oliver Askew
Kyle Kirkwood
Neil Verhagen
Dakota Dickerson
Michai Stephens
Aaron Telitz
Joey Bickers
Jake Eidson
Mathew Brabham
Tristan Nunez
Neil Alberico
Trent Hindman
Spencer Pigot
Felix Serralles
Connor De Phillippi
Brett Smrz
Josef Newgarden
Joel Miller
Patrick Barrett
J.R. Hildebrand
Team USA / Feature / Huffaker Wins Semi-Final, Earns Podium in Walter Hayes Trophy Final
Huffaker Wins Semi-Final, Earns Podium in Walter Hayes Trophy Final
Written by Team USA. Posted in Feature, Team USA News
Published on November 03, 2019 with No Comments
Scott Huffaker on the podium
(all images by Jakob Ebrey Photography)
SILVERSTONE, England – A thrilling weekend of action at the Walter Hayes Trophy at Silverstone ended with Team USA Scholarship driver Scott Huffaker finishing a fighting third in the Grand Final from an original entry of over 100 Formula Ford cars.
Huffaker, 19, from Menlo Park, Calif., also backed up his Heat race win from yesterday with another victory in this morning's Semi-Final round. Teammate Josh Green, 16, from Mount Kisco, N.Y., wasn't quite so fortunate. After posting the fastest lap time of all in qualifying on Saturday, Green worked his way from seventh on the grid to third in the same Semi-Final before tangling with veteran Oliver White (Medina) at Copse Corner with five laps remaining.
A late change of regulations meant that today began with both Team USA Scholarship drivers drawn together in the first of two 12-lap Semi Final races, with Huffaker lining up second and Green on the inside of row four.
White, who started on pole position by virtue of posting the fastest lap during yesterday's four Heat races, maintained his lead at the start, albeit with a huge pack of snarling Formula Ford cars in his wake. A bold overtaking maneuver at Brooklands on the opening lap saw Huffaker slip through into the lead, which he narrowly maintained throughout.
Green moved up quickly in his Semi Final.
Green moved up two positions on the opening lap (right), then found a way past Ivor McCullough (Van Diemen) for fourth on lap four, at which point seven cars had formed a small breakaway group. Unfortunately, a coming-together with White at Copse Corner while disputing third place on lap eight forced Green to the sidelines.
Huffaker, meanwhile, kept his cool at the front. He briefly lost the lead to Matt Cowley (Van Diemen) on the run to Copse on the final lap but regained the advantage at Becketts and then held off a a brave around-the-outside move by Luke Cooper (Swift) at Luffield to take the checkered flag just 0.164-second ahead of the Englishman.
Huffaker leads the Semi Final, under intense pressure.
"On the first lap, I was right on Ollie and he went to the outside," related Huffaker. "I initially wasn't going to go to the inside but he broke really early and I thought, well if you are going to give me it, I just kind of forced him out wide and then I controlled the pace. I saw that Matt was really quick and he was putting a lot of pressure on me. On the last lap, he got ahead of me going into Turn One (Copse) and we were side by side. I got a little bit loose on the inside (at Becketts) and we had some contact. Unfortunately, he got the worse end of the stick but that's just how it went. I just defended on the last lap and was able to bring home the win. It was good."
The second Semi Final was interrupted by a pair of Safety Car periods before Irishman Jordan Dempsey (Spectrum) drove past Englishman Rory Smith (Medina) at the final corner, Woodcote, to snatch the victory by just 0.014-second over Cooper.
Dempsey leads the start of the Final from Smith and Huffaker.
The morning gloom and cold had been replaced by bright sunshine prior to the start of the Grand Final, with Huffaker once again lining up on the outside of the front row. He immediately slotted into second behind Dempsey, and was chased by Smith and Cooper before the red flags flew after four laps following a couple of separate on-track incidents.
The race was restarted for a 10-lap duration. Dempsey once again took off into the lead and was never seriously threatened en route to a dominant victory for Kevin Mills Racing.
Huffaker steadfastly clung onto second place, under intense pressure from Smith, who eventually faded back to 10th, Cooper, who slipped to ninth by the finish, Jack Wolfenden, who showed impressive pace in his Firman, and the Spectrum of two-time and defending champion Michael Moyers, who had gradually worked his way back into contention following an incident in his Heat race on Saturday.
Moyers slipped ahead of Huffaker on lap six, only for the American to repay the favor with a breathtaking pass under braking for Brooklands next time around. Huffaker's Cliff Dempsey Racing teammate, Ireland's Jonathan Browne (Ray GR18), also moved into a challenging position despite starting the Final from 11th.
Close-quarter racing in the Grand Final.
A thrilling battle for second saw Huffaker briefly fall to fourth with a couple of laps remaining, but he repassed Browne on the final lap at Becketts to finish with a well-deserved podium result, less than 0.2-second behind Moyers.
"The race was good and the experience has just been amazing," said Huffaker. "To come here and get the podium is huge for me. I wanted the win but we won the Heat and the Semi. I had to start on the bad side (of the grid) where it was damp. Luckily, I ended up holding my position but it took me a while to get into my rhythm and the race was so short with the red flag and everything. I think that is where I kind of lost out today. We had the pace and I really wanted the win but I got to battle with Moyers and Jonathan which was a great battle. I made a good pass on Moyers and then Jonathan there at the end. We snagged a podium so that's great. I need to say a big thank-you to my mechanic Matt (McComish), the entire Cliff Dempsey Racing team and everyone who makes the Team USA Scholarship possible."
Green was disappointed not to make the Final but will still travel home to the United States with memories to last a lifetime.
Josh Green will return home with memories to last a lifetime.
"It was a really good weekend and we had tons of pace," said Green. "I qualified on the overall pole of the 105 cars that were here, which was awesome. The Heat race was really good racing. The Semi was going well. I started eighth and was passing for third and just ended up having contact with another driver and I won't blame anyone. The Final was great to watch. Scott and Jonathan [Browne] both did amazing jobs in the Final. It was really, really impressive. I can't thank enough the Team USA Scholarship, Jeremy Shaw and Cliff Dempsey Racing as well. It has been a truly amazing experience and it wouldn't have been possible without all of them."
Dakota Dickerson: Off and Running
Josh Green: An Amazing Experience
Braden Eves: The Unforgettable Season
US RaceTronics Lamborghini Provides an Eye-Opener for Green, Huffaker
Team USA Drivers to Gain a Fresh Perspective in US RaceTronics Lamborghini
Select Month January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 May 2018 April 2018 March 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 May 2017 April 2017 March 2017 February 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 June 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 May 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 January 2012 November 2011 October 2011 September 2011 August 2011 June 2011 May 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 January 2009 December 2008 November 2008 October 2008 September 2008 May 2008 April 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 January 2007 November 2006 October 2006 January 2006 November 2005 October 2005 January 2005 December 2004 August 2004 January 2004 December 2003 February 2002 January 2002 December 2001 November 2001 November 2000 October 2000 November 1999 October 1999 November 1998 October 1998 August 1998 November 1997 October 1997 September 1997 August 1997 November 1996 October 1996 September 1996 August 1996 November 1995 October 1995 September 1995 August 1995 July 1995 October 1994 September 1994 October 1993 November 1992 October 1992 September 1992 August 1992 November 1991 October 1991 January 1991 October 1990
Copyright © 2020 Team USA.
Site design by Manifest Group.


After breakfast 08:30 you drive to the start of the Rongai route It takes about four hours due to the rough road. • On arrive at the gate a short rest whilst formality are completed.• After about 3 hours hiking you reach the first cave where you have lunch and rest.
Overnight stay near the cave.
Breakfast is served around 07:00.
The hiking begins through the high alpine desert, between Mawenzi and Kibo peaks. lunch is served between School Hut and Kibo Hut Ultimately you arrive at Kibo Hut and camp over night near Kibo Hut.
Short walks to places of interest or time to gather ones strength for the final attempt on the peak at around midnight, one should reach Uhuru for the most wonderful of sights, dawn on the Roof of Africa!
After time for photos and to enjoy the view return to Kibo Hut for refreshments and after a much deserved rest on to Horombo encampment.
You leave Horombo at 07:30 and descend to Marangu gate via Mandara Hut. • The walk takes circa 5-6 hours. •On arrival at the gate you will receive your Certificate of Accomplishment and be taken by our vehicle back to your lodge for a much needed hot shower and rest.


If time is money, you can save on both by maintaining an up-to-date navigation system.
Your map includes the latest roads, points of interest, and other data points, all of which are essential.
Update your map and enjoy an experience free from the distractions of smartphones.
A navigation system is only as useful as its map.


text:
<?php

namespace Directv\OnDemand;

use Zend\Http\Client;
use Zend\Http\Request;
use Zend\Http\Client\Adapter\Curl;
use Directv\Ooyala\OoyalaAPI;
use \DateTime;

class OnDemandAdapter implements OnDemandAdapterInterface
{
    protected $param           = null;
    protected static $http     = null;
    protected static $cache    = null;
    protected $xdrDateFormat   = null;
    protected $curlOptionParam = null;

    public function __construct($param, $curlOptionParam) {
        $this->param           = $param;
        $this->curlOptionParam = $curlOptionParam;
        static::$http          = $this->getHttpClient();
        $this->dateFormat      = "y-m-d h:i:s A T";
        $this->dateFormat2     = "H:i:s";
        $this->dateFormat3     = "y-m-d h:i:s";
        $this->dateFormat4     = "Y-m-d";
        $this->dateFormat5     = "y-m-d H:i:s";
        $this->dateFormat6     = "F j, Y, H:i";
        $this->dateFormat7     = "F j, Y";
        $this->dateFormat8     = "Y-m-d h:i:s";
    }

//////TV
 public function getEpisodeList($show_id,$show_type){
        if( isset($show_id) ){
            $url = OAL.$this->param['episode_list'].'?series_id="'.$show_id.'"&include='.$show_type;
            return json_decode( $this->sendRequest($url, array(), NULL),true );
        }
        return array();
    }
/////////

    /////GENRE
    public function getGenreList($genre,$page,$pagecount,$format,$region,$types=null){
        if( isset($genre) ){
         if($format=="")
             $format=array();
         if($region=="")
             $region=array();
         $url='';
         if($types==null){
            $url = OAL.$this->param['genre'].'?q={"genres":["'.$genre.'"],"format":'.
                    json_encode($format).',"region":'.json_encode($region).
                    ',"page_size":'.$pagecount.',"page_number":'.$page.
                    ' }';
         } else {
             $typesjsonArr=json_decode($types,true);
             $typesArrStr='"types":["'.  implode('","',$typesjsonArr['types']).'"]';
            $url = OAL.$this->param['genre'].'?q={"genres":["'.$genre.'"],"format":'.
                    json_encode($format).',"region":'.json_encode($region).
                    ',"page_size":'.$pagecount.',"page_number":'.$page.','.
                     $typesArrStr.' }';
         }
         //print_r($url);
            return json_decode( $this->sendRequest($url, array(), NULL) );
        }
        return array();
    }
     public function getAllGenreList($page,$pagecount,$format,$region,$types=null){
        //if( isset($genre) ){
         if($format=="")
             $format=array();
         if($region=="")
             $region=array();
         $url ='';

         if($types==null){
            $url = OAL.$this->param['genre'].'?q={"genres":[],"format":'.json_encode($format).
                    ',"region":'.json_encode($region).
                    ',"page_size":'.$pagecount.
                    ',"page_number":'.$page.
                    ' }';
         }else{
             $typesjsonArr=json_decode($types,true);
             $typesArrStr='"types":["'.  implode('","',$typesjsonArr['types']).'"]';

            $url = OAL.$this->param['genre'].'?q={"genres":[],"format":'.json_encode($format).
                    ',"region":'.json_encode($region).
                    ',"page_size":'.$pagecount.
                    ',"page_number":'.$page.','.
                    $typesArrStr.
                    ' }';
         }
         //print_r($url);
            return json_decode( $this->sendRequest($url, array(), NULL) );
        //}
        return array();
    }

    /////////GENRE/////////////////////////

    public function getAllDataBySearchValue($searchKey){
        if( isset($searchKey) ){
            $url = OAL.$this->param['searchpoint'].'?term= {"query":"'.$searchKey.'"}';
            return json_decode( $this->sendRequest($url, array(), NULL) );
        }
        return array();
    }

     public function getLiveDataBySearchValue($searchKey){
        if( isset($searchKey) ){
            $url = OAL.$this->param['searchpointlive'].'?term='.$searchKey.'';
            return json_decode( $this->sendRequest($url, array(), NULL),true );
        }
        return array();
    }
       public function getPeopleDataBySearchValue($searchKey){
        if( isset($searchKey) ){
            $url = OAL.$this->param['searchpointpeople'].'?term='.$searchKey.'';
            return json_decode( $this->sendRequest($url, array(), NULL),true );
        }
        return array();
    }

     public function getPeopleDetail($peopleList){
        if( isset($peopleList) ){
            $url = OAL.$this->param['searchpoint'].'?term={"people":[{"name":'.$peopleList.'}]}';
            return json_decode( $this->sendRequest($url, array(), NULL),true );
        }
        return array();
    }

    //get people details------------------------------
    public function getPeopleDetailByName($name){
        if( isset($name) ){
            $url = OAL.$this->param['searchpoint'].'?q={"people":[{"name":"'.$name.'"}],'
                    . '"types":["tv_series","tv_episode","tv_show","feature_film","short_film"]}';
            return json_decode( $this->sendRequest($url, array(), NULL) );
        }
        return array();
    }

       public function getTVDataBySearchValue($searchKey){
        if( isset($searchKey) ){
            $url = OAL.$this->param['searchpointvod'].'?term= '.$searchKey.'';
            return json_decode( $this->sendRequest($url, array(), NULL) ,true);
        }
        return array();
    }

     public function getDataByID($searchID){
        if( isset($searchID) ){
            $url = OAL.$this->param['searchpoint'].'?q= {"id":"'.$searchID.'"}';
            return json_decode( $this->sendRequest($url, array(), NULL, 'GET') );
        }
        return array();
    }

    public function getDataFromEmbeddedCode($embedCode,$format,$region){
        if( isset($embedCode) ){
            if($format=="")
                $format=array();
            if($region=="")
                $region=array();
            $url = OAL.$this->param['searchpoint'].'?q= {"embed_code":['.$embedCode.'],"format":'.json_encode($format).',"region":'.json_encode($region).'}';
            //print_r($url);
            return json_decode( $this->sendRequest($url, array(), NULL, 'GET') );
        }
        return array();
    }

     public function getAssetDataByID($searchID){

        if( isset($searchID) ){
            $url = OAL.$this->param['searchpoint_asset'].$searchID;
            //return json_decode( $this->sendRequest($url, array(), NULL, 'GET') );
            $resp=$this->sendRailsRequest($url, array(), NULL);
            if(!empty($resp['ApiResponseStatus']))
               return $resp['response'];
        }
        return array();
    }

//Watchlist----------start

    public function getWatchlist($accountToken){
        $parameter    = array("account_token" => $accountToken);
        $url          = OAL.$this->param['watchlistlist'];

        $responseData = $this->genericSendRequest($url, $parameter);
        return $responseData ? $responseData : array();
    }

    public function checkItemExistInWatchlist($accountToken, $titleId){
        $url = OAL.$this->param['watchlisthasItem']."?account_token=".$accountToken."&embed_code=".$titleId;
      // echo $url;
        $responseData = json_decode( $this->sendRequest($url, array(), NULL), true);
        return $responseData ? $responseData : array();
    }

    public function addWatchlist($watchlistData){
        $resp = array();
        if(isset($watchlistData['account_token'])) {
            $itemExistInWatchlist = $this->checkItemExistInWatchlist($watchlistData['account_token'], $watchlistData['title_id']);
            if(isset($itemExistInWatchlist['response'])){
                if($itemExistInWatchlist['response']) {
                    $resp['response']['success']=true;
                    $resp['response']['isExist']=true;
                    return json_decode(json_encode( $resp ));
                } else {
                    $url = OAL.$this->param['watchlistlist']."?account_token=".urlencode($watchlistData['account_token'])."&embed_code=".urlencode($watchlistData['title_id']);
                    $responseData = $this->sendRailsRequest($url,array(), null,"POST");
                    if(!empty($responseData['response'])){
                      $resp['response']['success']=true;
                      $resp['response']['isExist']=false;
                    }
                    return json_decode(json_encode($resp ));
                }

            } else {
                return json_decode(json_encode($itemExistInWatchlist));
            }
        }
        return $resp;
    }

    public function deleteItemFromWatchlist($accountToken, $titleId) {
        $url = OAL.$this->param['watchlistlist']."?account_token=".$accountToken."&embed_code=".$titleId;
        return json_decode( $this->sendRequest($url, null, null, 'DELETE') );
    }

    public function deleteAllItemsFromWatchlist($accountToken) {
        $url = OAL.$this->param['watchlistdeleteAllItem']."?account_token=".$accountToken;
        return json_decode( $this->sendRequest($url, null, null, 'DELETE') );
    }

//Watchlist----------stop

//XDR----------start

    public function getXDRlist($accountToken){
        $url = OAL.$this->param['xdrpoint']."?account_token=".$accountToken;
        return $this->genericSendRequest($url, array(), NULL);
    }

     public function getXDRitem($accountToken,$itemId){
        $url = OAL.$this->param['xdrpoint']."?account_token=".$accountToken."&id=".$itemId;
        return $this->genericSendRequest($url, array(), NULL);
    }

    public function deleteItemFromXDR($accountToken, $embedCode) {
        $url = OAL.$this->param['xdrpoint']."?account_token=".$accountToken."&embed_code=".$embedCode;
        return $this->genericSendRequest($url, null, null, 'DELETE');
    }

    public function deleteAllItemsFromXDR($accountToken) {
        $url = OAL.$this->param['xdrpointDeleteAllItem']."?account_token=".$accountToken;
        return $this->genericSendRequest($url, null, null, 'DELETE');
    }

//-----XRD end

    public function getAllLiveContent(){
        $url = $this->param['livepoint'];
        return json_decode( $this->sendRequest($url, array(), NULL) );
    }

////////////////////////group
  public function getGroupItemList($url){
        return json_decode( $this->sendRequest($url, array(), NULL) );
    }

    ////////////////////////group end

    ///recently added

    public function getRecentlyAddedList($queryoptions)
    {
         $url ='';
        if($queryoptions=='NA'){
          $url = OAL.$this->param['recently_added']."?amount=10";
          return json_decode( $this->sendRequest($url, array(), NULL), true );
        }else{
            if(empty($queryoptions['amount']))
                $url = OAL.$this->param['recently_added']."?amount=10";
            else
                $url = OAL.$this->param['recently_added']."?";
          return json_decode( $this->sendRequest($url, $queryoptions, NULL), true );
        }

    }
    ////////////

     public function getEmbeddedTokenUrl($contentID,$access_token){
        $currentAcc=$access_token;
        $contentID="all";
        $requestParamsArr=  array('embed_codes'=>$contentID,'account_token'=>$currentAcc);
        $url = OAL."/commerce/tokens?";
        $responseObj=$this->sendRequest($url,$requestParamsArr,NULL);
        if(!empty($responseObj)){

        }

     //   $optRes=json_decode($responseObj,TRUE);
      //  $embbdedUrl=$optRes['tokens']['all']['embed_token'];
       // print_r($embbdedUrl);
       // die();
       // $responseObj2=$this->sendRequest($embbdedUrl,array(),NULL);

        return json_decode($responseObj,TRUE);
    }

     public function getEmbeddedTokenUrlAll($contentID,$access_token){
        $currentAcc=$access_token;
        $requestParamsArr=  array('embed_codes'=>$contentID,'account_token'=>$currentAcc);
        $url = OAL."/commerce/tokens/all?";
        $responseObj=$this->sendRequest($url,$requestParamsArr,NULL);
        if(!empty($responseObj)){

        }
        return json_decode($responseObj,TRUE);
    }

    /**
     * A utility function to generate signature
     *
     */
    public function generateUrlWithValidSignature($method, $apiKey, $secretKey, $requestPath, $parameter=array(), $baseUrl) {
        $ooyalaApiObject = new OoyalaAPI();
        $generatedUrl    = $ooyalaApiObject->generateURL($method, $apiKey, $secretKey, $this->getDataTimeTwoDaysAfter(), $requestPath, "", $parameter, $baseUrl);
        return $generatedUrl;
    }

    protected function getDataTimeTwoDaysAfter()
    {
        //$date                = mktime(0, 0, 0, date("m"), date("d")+2, date("Y"));
        //$dateTimeInStrtotime = date('Y-m-d h:m:s', $date);
        $dateTimeInStrtotime = strtotime(date('Y-m-d h:m:s') . ' +2 day');
        return $dateTimeInStrtotime;
    }

    /**
     * A utility function that return a HttpClient for API calls.
     * @return \Zend\Http\Client
     */
    protected function getHttpClient(){
        $config = array(
                'adapter'     => 'Zend\Http\Client\Adapter\Curl',
                'curloptions' => $this->curlOptionParam
        );
        return new Client('', $config);
    }

    protected function sendRailsRequest($url, $param, $opts=null,$method="GET"){
        $response = '';

        foreach($param as $key => $val){
            $url .= "&$key=$val";
        }

        $request = new Request();
        $request->setUri($url);
        $request->setMethod($method);

        $clientConfig = array(
            'adapter'     => 'Zend\Http\Client\Adapter\Curl',
            'curloptions' => $this->curlOptionParam
        );
        $client = new Client();
        $client->setOptions($clientConfig);
        $responseTemp = $client->dispatch($request);
        $respTemp = json_decode($responseTemp->getContent(), true);
       if ($responseTemp->isSuccess()) {
                return array('ApiResponseStatus'=>$responseTemp->getStatusCode(),
                    'response'=>$respTemp);

       } else {
        //request unsuccessfull
        return array('ApiResponseStatus'=>$responseTemp->getStatusCode(),
                    'response'=>$respTemp);
       }
    }
    /**
     * Send the request to the specific URL. May modify the url based on the given parameters and options.
     * @param string $url
     * @param array $param
     * @param array $opts
     */
    public function sendRequest($url, $param = null, $opts = null, $method = 'GET'){
        $response = '';
        if($param != null) {
            foreach($param as $key => $val){
                $url .= "&".$key."=".urlencode($val);
            }
        }
        $request = new Request();
        $request->setUri($url);
        $request->setMethod($method);
        $responseTemp = static::$http->dispatch($request);
        if ($responseTemp->isSuccess()) {
            return $responseTemp->getContent();
        } else {
            return null;
        }
    }

    /**
     * Send the request to the specific URL. May modify the url based on the given parameters and options.
     * @param string $url
     * @param array $param
     * @param array $opts
     * @param string $method
     * @param json $rawJsonData
     */
    public function genericSendRequest($url, $param = array(), $opts = array(), $method = 'GET', $rawJsonData=null){
        $response = '';
        if(!empty($param)) {
            $i=0;
            foreach($param as $key => $val){
                if($i == 0) {
                    $url .= "?".$key."=".urlencode($val);
                } else {
                    $url .= "&".$key."=".urlencode($val);
                }
                $i++;
            }
        }
        $client = static::$http;
        $client->setUri($url);
        $client->setMethod($method);
        if($rawJsonData != null) {
            $client->setRawBody($rawJsonData);
        }
        if(!empty($opts)) {
            foreach($opts['headers'] as $key => $val){
                $headers[$key] = $val;
            }
            $client->setHeaders($headers);
        }

        try{
            $response = $client->send();
            $content   = $response->getContent();
        } catch (\Exception $e){
            $d = $e->getMessage();
            return array(
              'responseStatus'  => 500,
              'responseContent' => $d
            );
        }
        $responseContent = json_decode($content, true);
        return array(
            'responseStatus'  => $response->getStatusCode(),
            'responseContent' => empty($responseContent) ? $content : $responseContent
        );
    }

    /**
    * A utility function that divides time slots by 30mins
    */
    public function timeSlotCalculation($startTime, $endTime)
    {
        $timeslots = array();
        $t1 = strtotime($startTime);
        $t2 = strtotime($endTime);
        while ($t1 < $t2) {
            $timeslots[] = $t1;
            $t1 = strtotime('+30 mins', $t1);
        }
        return $timeslots;
    }

    /**
    * A utility function that converts 24-hour time to 12-hour time
    */
    public function timeFormat($time)
    {
        $timeInTwelveHourFormat  = date("h:i a", strtotime($time));
        return $timeInTwelveHourFormat;
    }

    public function rowCalculation($startTime, $endTime) {
        $startTime = $this->roundTime($startTime);
        $endTime   = $this->roundTime($endTime);
        $timeDiff  = $endTime - $startTime;
        $totalMins = $timeDiff/60;
        $timeSlice = $this->param['timeSlice'];
        $rowCountToNearestInteger = $totalMins/$timeSlice;
        return $rowCountToNearestInteger;
    }

    public function roundTime($time) {
        $round  = 30*60;
        $result = round($time / $round) * $round;
        return $result;
    }

    public function roundDurationUp($duration_string='') {
     $parts = explode(':', $duration_string);
     // only deal with valid duration strings
     if (count($parts) != 3)
       return 0;

     // round the seconds up to minutes
     if ($parts[2] > 30)
       $parts[1]++;

     // round the minutes up to hours
     if ($parts[1] > 30)
       $parts[0]++;

     return $parts[0];
    }

    public function getMaximumTimeSlots($timeSlotGroupArr) {
        $timeSlotGroupArr = array_map("array_values", $timeSlotGroupArr);
        $timeSlotGroupArr = array_unique(array_reduce($timeSlotGroupArr, "array_merge", array()), SORT_REGULAR);
        sort($timeSlotGroupArr);
        $t1 = reset($timeSlotGroupArr);
        $t2 = end($timeSlotGroupArr);
        while ($t1 <= $t2) {
           $timeslots[] = $t1;
           $t1 = strtotime('+30 mins', $t1);
        }
        return $timeslots;
    }

    public function checkGivenTimestampIsExpired($time) {
        $date = date($this->dateFormat, strtotime($time));
        if($date > date($this->dateFormat)) {
            return false;
        } else {
            return true;
        }
    }

    public function convertDateTimeWithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat2);
        return $formattedDate;
    }

    public function convertDateTime2WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat3);
        return $formattedDate;
    }
    public function convertDateTime8WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat8);
        return $formattedDate;
    }

    public function convertDateTime6WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat6);
        return $formattedDate;
    }

    public function convertDateTime7WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat7);
        return $formattedDate;
    }

    public function compareDate($givenDate) {
        $givenDate = strtotime($givenDate);
        $currentDate = strtotime(date($this->dateFormat6));
        if($givenDate >= $currentDate) {
            return true;
        } else {
            return false;
        }
    }

    public function convertDateTime5WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDateTime['date'] = strtotime($dto->format($this->dateFormat4));
        $formattedDateTime['time'] = strtotime($dto->format($this->dateFormat2));
        return $formattedDateTime;
    }

    public function convertStrtotimeToSpecifiedTimeFormat($timeArray) {
        if(!empty($timeArray)) {
            foreach ($timeArray as $key => $value) {
                $timeArray[$key] = date('h:i a', $value);
            }
            return $timeArray;
        }
    }

    public function convertDateTime3WithAtomFormat($datetime) {
        $dto           = new \DateTime($datetime);
        $formattedDate = $dto->format($this->dateFormat4);
        return $formattedDate;
    }

    public function searchMultidimensionalArray($array, $key, $value) {
      $results = array();

      if (is_array($array)) {
          if (isset($array[$key]) && $array[$key] == $value) {
              $results[] = $array;
          }

          foreach ($array as $subarray) {
              $results = array_merge($results, $this->searchMultidimensionalArray($subarray, $key, $value));
          }
      }

      return $results;
    }
    public function getUserEntitlements($packages) {
      $results = array();
      if (is_array($packages)) {
          for($i=0;$i<count($packages);$i++){
              $entitlements=$packages[$i]['product']['entitlements'];
              $results=array_merge($results, $entitlements);
          }
      }
      return $results;
    }
    public function getUserProducts($packages) {
      $results = array();
      $productObj=array();
      $respo=array();
      if (is_array($packages)) {
          for($i=0;$i<count($packages);$i++){
              $packageid=$packages[$i]['product']['id'];
              $product['id']=$packages[$i]['product']['id'];
              $product['ExpireDate']=  $this->convertDateTime8WithAtomFormat($packages[$i]['expiration_date']);
              $product['ActualExpireDate']=  $packages[$i]['expiration_date'];
              array_push($productObj, $product);
              array_push($results, $packageid);
          }
      }
      $respo['productlist']=$results;
      $respo['productObj']=$productObj;
      return $respo;
    }

}

redpajama_set_name: RedPajamaGithub


text:
package net.morematerials.materials;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;

import net.morematerials.MoreMaterials;

import org.bukkit.configuration.file.YamlConfiguration;
import org.getspout.spoutapi.block.design.GenericBlockDesign;
import org.getspout.spoutapi.inventory.SpoutItemStack;
import org.getspout.spoutapi.material.Material;
import org.getspout.spoutapi.material.MaterialData;
import org.getspout.spoutapi.material.block.GenericCustomBlock;

public class MMCustomBlock extends GenericCustomBlock implements CustomFuel, CustomMaterial {

	private String materialName;
	private String smpName;
	private YamlConfiguration config;
	private MoreMaterials plugin;
	private Integer burnTime, speedMultiplier, jumpMultiplier;
	private List<?> requiredTools;

	@SuppressWarnings("unchecked")
	public static MMCustomBlock create(MoreMaterials plugin, YamlConfiguration yaml, String smpName, String matName) {
		String texture = yaml.getString("Texture", "");

		// Allow to reference textures from other .smp files.
		String[] fileNameParts = texture.split("/");
		if (fileNameParts.length == 2) {
			texture = fileNameParts[0] + "_" + fileNameParts[1];
		} else {
			texture = smpName + "_" + texture;
		}

		// Getting the correct model for this block.
		String shapeFile = yaml.getString("Shape");
		CustomShapeTemplate designTemplate;
		if (shapeFile == null) {
			designTemplate = new CustomShapeTemplate(plugin);
		} else {
			shapeFile = shapeFile.substring(0, shapeFile.lastIndexOf("."));
			if (plugin.getSmpManager().getShape(smpName, shapeFile) != null) {
				designTemplate = plugin.getSmpManager().getShape(smpName, shapeFile);
			} else {
				designTemplate = new CustomShapeTemplate(plugin);
			}
		}
		GenericBlockDesign design = designTemplate.createInstance(texture, (List<String>) yaml.getList("Coords", new ArrayList<String>()));

		// Build the block.
		return new MMCustomBlock(plugin, texture, smpName, matName, design, yaml);
	}

	public MMCustomBlock(MoreMaterials plugin, String texture, String smpName, String matName, GenericBlockDesign design, YamlConfiguration config) {
		super(plugin, smpName + "." + matName, config.getInt("BaseId", 1), design, config.getBoolean("Rotation", false), config.getBoolean("MirroredRotation", false), config.getBoolean("FullRotation", false));
		this.plugin = plugin;
		this.smpName = smpName;
		this.materialName = matName;
		this.config = config;
		this.setName(this.config.getString("Title", matName));

		// Fuel support
		this.burnTime = this.config.getInt("BurnTime", 0);

		// Set the blocks base hardness
		this.setHardness((float) this.config.getDouble("Hardness", this.getHardness()));

		// Set the blocks friction
		this.setFriction((float) this.config.getDouble("Friction", this.getFriction()));

		// Set the blocks lightlevel
		this.setLightLevel(this.config.getInt("LightLevel", 0));

		// Walk Speed Multiplier
		this.speedMultiplier = this.config.getInt("Walkspeed", 1);

		// Jump Height Multiplier
		this.jumpMultiplier = this.config.getInt("JumpHeight", 1);

		// Register handlers.
		if (this.config.contains("Handlers")) {
			this.registerHandlers();
		}

		// Required Tools
		this.requiredTools = this.config.getList("RequiredTools");

	}

	private void registerHandlers() {
		for (String eventType : this.config.getConfigurationSection("Handlers").getKeys(false)) {
			for (Object handlerEntry : this.config.getList("Handlers." + eventType)) {
				@SuppressWarnings("unchecked")
				Map<String, Object> handlerConfig = (Map<String, Object>) handlerEntry;
				if (this.plugin.getHandlerManager().getHandler((String) handlerConfig.get("Name")) != null) {
					this.plugin.getHandlerManager().registerHandler(eventType, this.getCustomId(), handlerConfig);
				}
			}
		}
	}

	public void configureDrops() {
		// Configure itemdrop
		String drop = this.config.getString("ItemDrop", this.materialName);
		Integer dropCount = this.config.getInt("ItemDropAmount", 1);
		Material material;
		if (drop.matches("^[0-9@]+$")) {
			String[] matInfo = drop.split("@");
			if (matInfo.length == 1) {
				material = MaterialData.getMaterial(Integer.parseInt(matInfo[0]));
			} else {
				material = MaterialData.getMaterial(Integer.parseInt(matInfo[0]), (short) Integer.parseInt(matInfo[1]));
			}
		} else {
			material = this.plugin.getSmpManager().getMaterial(this.smpName, drop);
		}

		if (material == null) {
			material = this.plugin.getSmpManager().getMaterial(null, drop);
			if (material != null) {
				this.plugin.getUtilsManager().log("Multi-SMP based ItemDrop within [" + smpName + "] for item [" + drop + "] created.", Level.INFO);
			}
		}

		if (material != null) {
			this.setItemDrop(new SpoutItemStack(material, dropCount));
		}
	}

	public String getSmpName() {
		return this.smpName;
	}

	public String getMaterialName() {
		return this.materialName;
	}

	public Integer getBurnTime() {
		return this.burnTime;
	}

	public void setBurnTime(int newBurnTime) {
		this.burnTime = newBurnTime;
	}

	public Integer getSpeedMultiplier() {
		return this.speedMultiplier;
	}

	public void setSpeedMultiplier(int newSpeedMultiplier) {
		this.jumpMultiplier = newSpeedMultiplier;
	}

	public String getDisplayName() {
		return this.getDisplayName();
	}

	public YamlConfiguration getConfig() {
		return this.config;
	}

	public Integer getJumpMultiplier() {
		return this.jumpMultiplier;
	}

	public void setJumpMultiplier(int newJumpHeight) {
		this.jumpMultiplier = newJumpHeight;
	}

	@SuppressWarnings("unchecked")
	public List<String> getRequiredTools() {
		return (List<String>) requiredTools;
	}
}


text:
WEBSITE: clcf.com
›CLCF
Number of students: Approx. 450
Areas of teaching: Film industry professions including screenwriting, directing, production and editing.
Locations: Headquarters/main campus in Paris
Career assistance services: Internship program and alumni network with strong industry contacts ensures up to 80% placement rate for school's graduates.
Founded in 1963, Conservatoire Libre du Cinéma Français (CLCF) is the oldest independent film school in France catering to students who want to work in the film industry. The school's pedagogical model alternates theory and practice through writing workshops, various filmed exercises and the production of short films and documentaries.
The school has an educational staff completely made up of professionals who teach courses preparing students for roles including: assistant director, director, screenwriter, script supervisor, production manager/coordinator, unit production manager, film editor and special effects editor and supervisor. Once each year, the Conservatoire's students participate in collaborative initiatives with partner schools, including – for example – a film project in collaboration with students from Cours Florent, one of France's most famous drama schools.
CLCF boasts an exceptional job placement rate: up to 80% of graduates find placement in their field of studies after completing the program. Most students take less than three months to find their first post-graduate job; within six months all graduates find employment. The vast majority of graduates – excepting those foreign students who choose to return to their home countries – find work in the Paris region.


Ten years. Ten long years. That's how long it's taken for the NSW Government to recognise that a brake needs to be put on the downward spiral of education standards in the real estate industry. And not just a brake – an emergency brake!
In years gone by agents had to complete a part-time course over two or three years to gain their qualification. It was long. It was rigorous. And it took a lot of work. Oh, how times have changed. Rather than years, it's now days. Today, after completing a two or three day course, someone who has no previous real estate experience can apply to NSW Fair Trading for their Certificate of Registration and start working in our industry.
Everyone in NSW has some association, direct or indirect, with property. Our industry, through property taxation, is the NSW Government's single biggest revenue generator. It's the engine room of our economy. Yet the education levels of those serving the industry have been left to languish.
Over the last decade, REINSW has been relentless in its lobbying efforts to improve education standards for the real estate industry.
"Higher education standards are one of the elements at the core of our industry's evolution into a profession," REINSW President John Cunningham said. "And we know that raising the bar on education will result in far better outcomes for consumers, the industry and the market.
"But as we've been calling for higher standards, the government has instead progressively removed all barriers to entry into our industry in their pursuit of exclusively serving the interests of competition.
"We support competition as an essential market force and as a mechanism for quality service. But equally, we strongly believe that competition must be competent.
Despite repeated calls from REINSW, agents and other industry stakeholders over many years, the NSW Government failed to take action.
That all changed when the former Minister for Innovation & Better Regulation Victor Dominello acknowledged it was time for meaningful reform. "The industry needs to raise standards. There's no doubt about it," he said when he addressed delegates at the REINSW Industry Summit on 27 November 2015.
From his very first meeting with REINSW CEO Tim McKibbin and then REINSW President Malcolm Gunning in mid-2015, the Minister has been comprehensively apprised of the need for wholesale education reform in the real estate industry. Taking REINSW's representations onboard, as well as those from other key industry stakeholders, the Minister set about putting together a once-in-a-generation reform package to lift education standards in the real estate industry.
Promising to work in partnership with REINSW, in early 2016 Minister Dominello directed NSW Fair Trading to establish an independent four-person panel to review existing training standards within the property industry. Members of the panel were nominated by industry stakeholders, including REINSW.
"We spent a lot of time discussing our proposed training framework with both Fair Trading and Minister Dominello," Mr Cunningham said. "The Minister recognised the clear need for raising education standards and, on 5 November 2016, he announced a training reform package incorporating many of our recommended changes.
"These reforms will establish a path for the future of the industry by raising standards of education and improving skills and professionalism, while maintaining appropriate consumer protections.
"Importantly, the reforms were developed by the government in close partnership with REINSW and will ensure NSW produces the highest quality agents in the country.
"We're looking forward to working hand in hand with the government as we navigate the path forward," he said.
It's not a pink slip!
"The education standards at present for our industry are average at best. If our goal is to be recognised as a profession – if we want to be mentioned in the same breath as lawyers, accountants and other professionals – we need to take our education standards more seriously.
"Whereas once it was about 'what can I learn', these days it's about 'how quickly can I do it'. It's just not good enough. We need to get serious.
"A Certificate of Registration is not a pink slip. Becoming an agent is not akin to rocking up to your local garage, sipping on an awful cup of coffee and waiting a half hour while they give your car a quick once over. Becoming an agent needs to involve much more than that. It's a significant step. It's a commitment.
"I'm not for a minute suggesting that we aim for a standard that only the academically gifted can achieve. Not at all. To do that would mean our industry would miss out on some of its most suited participants.
"But we have to stop looking at ourselves in the mirror. As an industry, we spend a lot of time looking in the mirror – pumping ourselves up and telling ourselves how good we are. And we do training that feeds that mentality.
"It's time to convert those mirrors into windows. We need to start looking beyond ourselves. We need to look outwards. What does the market expect from us and how can we add value to the client relationship and the transaction?
"What it ultimately comes down to is that we need to invest in ourselves. We need to invest time and effort in our own education on an ongoing basis. Only by doing that can we elevate ourselves and truly add value.
Mr Cunningham said raising the level of qualifications required to become and remain a real estate agent will have a number of positive flow-on effects.
"Once we raise education standards, we'll start to see a higher calibre of agent enter and remain in the industry," he said. "Right now, the divide between the best agents and 'the rest' is too great. We need to close the gap and have consistent, high standards of education and practice across the industry.
According to Mr Cunningham, we have the opportunity to rapidly change this negative consumer sentiment.
"There's certainly no shortage of experts who are willing and able to provide us with the tools and knowledge we need to succeed. So why have things gone so incredibly wrong? How have we managed to go so far off track?" he asked.
"There needs to be a marriage between theoretical learning and the knowledge and experience a person gains on the job," Mr Cunningham said. "Learning isn't the product of teaching alone. It's also the product of on-the-job experience.
"If someone doesn't have the benefit of theory, then they'll do what they've been shown but won't understand why they're doing it. Equally, if there's an absence of practical experience, they'll understand what needs to be done but won't know how to do it.
Taking it a step further, Mr Cunningham explained that an important part of what agents do is sharing knowledge with clients.
"These days, consumers have access to so much information. It's freely available. Part of an agent's value comes from being able to turn that information into a consumable product. To do this, we need additional knowledge and that knowledge comes from education.
"Consumers are sophisticated and we need to respond to this by demonstrating our expertise and sharing our knowledge to help guide them through the transaction. This means we have to not only improve our traditional entry-level and ongoing education standards, but also extend our range of knowledge to those other areas that impact the property.
"All of this together will help position us at a professional level," he said.
The Professional Standards Councils, with its agency the Professional Standards Authority, is the independent statutory body responsible for promoting professional standards. They use the 5 Es to define the elements that are necessary to qualify as a profession.
Education is the second E and to be recognised as a profession we must demonstrate that our education standards equip agents with both the technical and professional expertise necessary to effectively discharge our responsibilities.
"The reform package is a giant step forward," Mr Cunningham said. "We'll continue to work closely with the government to ensure the package is not diluted.
"The overwhelming majority of issues that attract the attention of the regulator and aggravate consumers can be resolved by substantially improving education standards.
"Education is at the core of everything we do as agents. We have to be skilled professionals who deliver an invaluable service, one for which we're paid according to the value we add.
CEO of the Professional Standards Authority, Dr Deen Sanders, explains how education standards differ when it comes to a profession.
"When we think about education in the context of professionalism, we need to cast our minds further than our traditional idea of entry-level qualifications," Dr Deen Sanders, CEO of the Professional Standards Authority, said.
"Every profession requires entry-level qualifications. These are the formal, qualifying components someone needs to complete to practise in their field. Lawyers need to complete a law degree. Doctors need to complete a medical degree. In the case of real estate agents, you need to complete a certificate of registration course or a licensing course.
"By completing the qualifying course of study – the first layer of education – you're able to practise. But to be a recognised professional, your education must go beyond this," Dr Sanders said.
The word 'profession' describes a community of people who position themselves as possessing special knowledge and skills in a recognised body of learning derived from education at a high level. They have a specialist 'body of knowledge' that differentiates them from both the 'unqualified' and also those who are 'just qualified'.
"This body of knowledge comes from undertaking an additional professional education component, distinct from the underpinning qualification required to practise," Dr Sanders explained.
Dr Sanders points to the accounting profession as an example.
"A person may have completed an accounting degree, which allows them to leave university and start work as an accountant but they still need to complete a further practical course – a professional education program – in order to gain entry into the professional community and be recognised as a Certified Practising Accounting or Chartered Accountant," he said.
But it doesn't stop there. There's a third layer. To maintain professional status, education must be ongoing.
Capability: The technical, legal, product and industry knowledge that it takes to advise clients and run a business.
Attributes and performance: Skills in building professional relationships and improving professional performance.
Professional conduct: All the skills and knowledge that go into making good, informed and client-centred decisions.
Ethics: The ability to deal with moral and conflict of interest issues.
Critical thinking: The skills to process complex information and create new solutions.
Reflective practice: The skills to develop yourself and others, and to think about the professional and personal needs of others as well as your own.
Inter-dependence: Engagement with the profession, the industry and peers in ways that instil consumer confidence.
Dr Sanders explains that the government and the profession each have different roles when it comes to education.


Ever wondered what it takes to be a good business student? A good student needs to be aware of all the ergonomics of the business world. He needs to manage his classes and be on top of the process of gaining knowledge during his study term by simultaneously being up to date with what's happening in the market. Being a prospective business analyst or a consultant, one cannot ignore the fact that the cut-throat competition in the market has forced the companies to hire the best strategy makers.
Student Assignment Help is focussed on offering the Strategy Management Assignment help to the students who aspire to rule the future business world. Our specialists are experts in all the possible and probable subjects one can think of and have an in-depth knowledge of the industry. We offer the best academic writing support and help you stand out from the crowd.
We are a team of variety and expertise. We have the MBA professionals as well as the Ph.D. graduates, we have people who have worked in the real-time business situations and the ones who have done years of research on a subject. The blend of all kinds of professionals gives our team an edge to devise the best strategy management assignment help to the students seeking it.You can sway your assignment submission worries away and simply bring us any topic from around the world and we would give the best strategy management assignment help. What makes our team special is their continuing learning attitude and the regular group discussions and forums they conduct to enhance their knowledge and expertise to better help students.
2.	The Unchanged Future: After the status of the company is noted down, the next step is to keep an eye on where is the company heading. In this stage, it is analyzed that if the things remain unchanged, what will happen to the company in future years. The analysis varies upon several factors significantly including the time frame management is looking at. If the future looks bleak or unpromising, we move on to the action stage.
3.	The Action Stage:If the future does not show the growth of the company as analyzed in stage 2, management devises the strategy for the future.
1.	Send us the assignment or the case study details – The students send over the details of the assignment or the case study and we do a preliminary analysis of the matter. We analyze each bit before getting back to you, including the price, time frame, format requirements etc.
2.	Quoting a Price and Deal Signing – After analyzing your assignment, we quote a price keeping in mind all the parameters of the assignment. If mutually agreed by both the parties, the deal is final.
3.	Payment – This is a mandatory step before moving on to the actual action stage. Students need to make online payments as per the terms of the deal before we begin working on the assignment.
4.	Completion of Assignment – Afterfull receipt of the payment, our team works together with you to complete the assignment. We will get in touch with you at each step to avoid rework.
5.	The Final Timely Deliver -Once the assignment is complete, we deliver the assignment to you within the time frame decided earlier at the time of the signing of the deal.
1.	Confidentiality Ensured: Just because we ask for your personal details at the onset of the contract, doesn't mean we will reveal them to anybody. The details are safe and will be accessible exclusively by you. So, there are no threats to your privacy while working with the strategy management assignment help team.
2.	Punctuality and Timeliness: We value your careers as much as you do. We are considerate of the fact that students need to meet strict timelines at their places of study, and hence, we focus on timely delivery of the contents and assignments.
3.	Uniqueness and Originality: Why would any student want to invest any amount of time and money in obtaining a copied content or assignment? Our strategy management assignment help team gives you 100% original content based on exclusive facts and matter, relevant to your assignment.
4.	Samples and Benchmarks: Do not trust us enough to handover your vital assignments and projects? We offer many strategy management assignments help sample tasks to refer to. They are the perfect benchmarks to go through and build the trust with us.
So, Why Choose Strategy Management Assignment Help?
Students tend to understand better when the professors go through and explain the complex real-world case studies. Similarly, the strategy management assignment help gives the students a unique opportunity to explore the business world via their assignments. Throughout this process, the students learn the inside-out of their subject. One major advantage of the hiring us, or rather working with us is that with the tight deadlines and busy semester, it gets difficult for students to manage their curriculum as well as their assignments. We offer a unique opportunity to shift 100% of the focus to the learning at your colleges.


A PORTLAOISE man who was in the care of the State since he was five years old was last week convicted of theft.
John McDonagh, with an address at 7 Old Mill, Portlaoise, committed the offence at Portlaoise Train Station on June 15 last year. Inspector Martin Harrington gave evidence that McDonagh approached a 16-year-old male on the platform and asked him for money. The victim felt intimidated and finally handed over €20.
McDonagh has 12 previous convictions.
Defence for McDonagh said his client has been in care since he was five, but he's now "getting on well" and hasn't come to any adverse garda attention.
The matter was put back to November 15 for a probation report, and for McDonagh to pay €50 compensation and write a letter of apology to the injured party.


Sermon Theme: Jesus Is The Good Shepherd!
Sermon Theme: Believe The Spirit's Testimony!
Sermon Theme: We Have Seen the Lord!
Sermon Theme: Our King Has Come!
Sermon Theme: We Have The New Covenant!
Sermon Theme: Look and Live!
Sermon Theme: God Wants You!
Sermon Theme: The Lord Will Provide!
Sermon Theme: We Have Seen the Prophet's Glory!
Sermon Theme: Remember Me, O God!
Sermon Theme: Spread the News!
Sermon Theme: Let's Go Fishing!
Sermon Theme: Believe in the Lord Jesus!
1. You will be saved!
2. You will know joy!
Sermon Theme: The Lord Has Built You A House!
Sermon Theme: Jesus Is The Light!
Sermon Theme: Hasten The Day!
Sermon Theme: The Bridegroom Is Coming!
Sermon Theme: Heavenly Father, Help Me!
Sermon Theme: "God: That's Not Fair!"


Det er snarere reglen end undtagelsen, at Craig Sullivans præsentationer lægger salen ned til stående applaus – og vi forventer intet mindre, når kongen af A/B testing gæster København til WAW den 17. juni. Et oplæg ingen må gå glip af!
Vi har spurgt Craig om hans forhold til Danmark og lokket ham til at give os et par gode råd om A/B testing. Få resten på WAW den 17. juni, hvor Craig indtager scenen som aftenens største indslag.
So what brings you to Copenhagen?
Well I met Steen from IIH a few years ago on the speaking circuit and we've met a lot since then. He kindly invited me to an event you guys ran before, and it was packed. I was surprised at the depth and breadth of highly technical and passionate people in the analytics and optimisation space in Denmark. It reminded me of home.
I live in London but my real home is Scotland. Just like Denmark – a small nation, that punches above it's weight, the people get everywhere around the world and they have prior experience over the centuries of dressing up in authentic costumes to scare English people (laughs).
Have you been to Denmark a lot?
A very great friend, Michael Aagaard, lives here and I've had the pleasure to hang out with him, do work together and learn, play and figure hard stuff out. It's been a pleasure to be here and to walk around the city and spend time not presenting – so I've grown to love the place. This will be my 6th visit to Copenhagen, so I'm looking forward to it.
Well, my presentation is going to be about what 'Really Grinds My Gears' – the stuff that really annoys me about testing, how it's being done and what's going wrong with most efforts. I see some big companies making elementary mistakes and they're being out-manoeuvred by smaller companies, doing it right. Optimisation is a great leveller – money doesn't rid you of stupidity.
What sort of stupid things?
Common problems like not figuring out the 'problem domain' before you start 'applying fixes' – not figuring out the best places to start testing, continue testing or expand testing. Running the numbers and doing the preparation and groundwork are essential if you're not going to largely waste all your testing efforts.
Many companies also test in ways that lead to false positives or negatives. They'll then bet their business strategy on what the A/B test 'told' them and if it was illusory, they've now changed strategy based on a mistaken assumption. Wow – this is bad and it happens a lot.
I could go on (and I will) about these kind of problems but it boils down to not testing enough, not testing in the right places, not testing the right stuff and not checking the test itself isn't broken horribly. I've made all these mistakes so I'm not poking holes in the work of others – I learned brutally and unforgivingly how rubbish my work was and spent a long time continually improving it. Hopefully those that come to my session (or the workshop on the 18th) will learn from my mistakes and what I did to get out of bad testing habits.
What's your best advice for optimisers in Denmark?
Read, consume, absorb, understand, extend, augment and build your knowledge. If you're not challenging your comfort zone about what you are doing (and feeling it needs to improve) then you're not working yourself hard enough. To keep even current requires an effort to be always improving your work and understanding how the work of others can be integrated with your efforts and insights. If you're open to improving, this will sound natural to you.
Get involved in the community of analytics and optimisation folks in Denmark. Meeting people at events has created this mesh of people, contacts and great friends I've built over the years. When I exceed the boundary of my knowledge, it's good to know who is better than me or who knows more than I do. That's where your network comes in: "I don't know but I know someone who's the best at this". Building that social glue for yourself will pay you back as well as you treat and deal with the people you meet. Karmic.
Give away what you learn. Everything. All of it. For Free. The more you give away to people who need the knowledge more than you do, the more you get back in terms of relationships, contacts and business yourself. Don't hoard knowledge or assume that you know better – be open, share, give freely and you will receive the greatest gift of all.
One final note – always assume that people don't care where you are located. This is very true of optimisation and analytics specialists – companies don't care as much about physical presence. This means you should be competing freely for business across Europe and given the high standard of English in Denmark, those English speaking markets especially. If you have a good service to provide, get out there and sell it. If you're good, I can guarantee you that people will NOT find that out if you DON'T do work for them. Assume any piece of business can be brought home to Denmark!
We look forward to seeing you in June then!
Yes – I'm really looking forward to WAW on the 17th. Steen has put a great line-up together, and I'll do my best as keynote speaker to wrap it all up in style.
I'm also giving a master class on the 18th – a full day for a few select people. If you want to know pretty much everything I know about A/B testing and website optimisation, join the master class here.
Du kan godt glæde dig til WAW. En aften med med passionerede talere, godt til ganen, hygge og networking med hele online-branchen. Det er den 17. juni fra kl. 15:30.
Du kan tilmelde dig lige her – og det er gratis.


text:
Gov't to crack down on spy cams during beach season
People enjoy Haeundae Beach in Busan, May 26. / Korea Times photo by Jeon Hye-won
By Kim Jae-heun
With summer vacationers ready to flock to beaches across the country, the government said it will carry out crackdowns on spy cams in the areas.
The Ministry of Gender Equality and Family said Wednesday it will cooperate with police to prevent and crack down on such crimes at Haeundae Beach in Busan, Daecheon Beach in South Chungcheong Province and Gyeongpodae Beach in Gangwon Province through the end of August.
The crackdown will focus on the secret photographing or filming of other holidaymakers' bodies. The ministry will also work together with local governments to check public toilets and dressing rooms for hidden cameras.
It asks people to report to nearby police stations or call 112 if they see someone secretly taking a picture of another person on the beach.
People secretly taking photos or filming the bodies of others are subject to up to five years in prison or 30 million won in fines. The criminal's personal information can also be made public if the crime is serious and the person is registered as a sex offender.
The government also plans to crack down on such illegal filming in subway stations as women are often targeted while walking up the stairs or taking the escalator in summer when they are wearing shorts or short skirts.
According to the Korean National Police Agency, 17,575 cases of sex crimes using hidden cameras were found nationwide between 2016 and 2018, and 31 percent of them occurred during the summer season from June to August.
jhkim@koreatimes.co.kr More articles by this reporter


text:
Q: How do I fix 'A source stream node in the topology does not have a source' error in Microsoft Media Foundation? I'm attempting to setup a topology object in my C# wrapper for MMF to start capturing from a capture device as a source. I have an existing and activated IMFMediaSource object, so I create the topology node, add the node to the topology, then I attempt to set the topology. During the IMFMediaSession::SetTopologycall it throws the following exception:

System.Runtime.InteropServices.COMException: A source stream node in the topology does not have a source. (Exception from HRESULT: 0xC00D521A)

Previously, I was using a SourceReader to pull samples off of the media source, so I know that the media source works. I've read in a few different places that if I actually want to display something on screen from the a video device, I can't use SourceReader and SinkWriter, which is why I'm trying to create a topology to use. I can also create a presentation descriptor and pull stream descriptors from the presentation descriptor created from the media source. During that process, I also validate that the subtype is something that I actually can use.
I've also got a media sink output node as part of the topology. That doesn't seem to have any issues or cause exceptions. I've removed the source stream node and left the media sink and it didn't crash.
I've tried searching for further information on this exception, but the only search results that I find are for what the HResult is, which I already have that information.
Here's how I create the topology node (the source, presentation descriptor, and stream discriptor aren't null):
if (sourcePresentationDescriptor == null || videoStreamDescriptor == null || !isSelectedStream)
{
    return false;
}

status = NativeMethods.MFCreateTopologyNode(MFTopologyType.TopologySourcestreamNode, out videoSourceNode);
if (status < 0) { throw new Exception("Not able to create topology node for source."); }

// Finish instantiating source node
videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodeSource, mediaSource);
videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodePresentationDescriptor, sourcePresentationDescriptor);
videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodeStreamDescriptor, videoStreamDescriptor);
topology.AddNode(videoSourceNode);

MediaSession.SetTopology(0, topology); // <-- Exception thrown here

Running MFTrace, I get the following:
CTopologyHelpers::Trace @05114468 >>>>>>>>>>>>> input topology
CTopologyHelpers::TraceNode @ Node 0 @050EDFD8 ID:7FC400000001, 0 inputs, 0 outputs, type 1, MF_TOPONODE_SOURCE=@050E3E68;MF_TOPONODE_STREAM_DESCRIPTOR=@050FE9B0
CMFTopologyNodeDetours::GetGUID @050EDFD8 attribute not found guidKey = MF_TOPONODE_TRANSFORM_OBJECTID
CTopologyHelpers::TraceObject @ UnknownType @00000000 {00000000-0000-0000-0000-000000000000} ((null)), (null)
CMFTopologyDetours::GetUINT32 @05114468 attribute not found guidKey = MF_TOPOLOGY_RESOLUTION_STATUS
CTopologyHelpers::Trace @05114468 MF_TOPOLOGY_RESOLUTION_STATUS = NOT FOUND!!!
CTopologyHelpers::Trace @05114468 <<<<<<<<<<<<< input topology

My thought is that this should create the proper topology node, but I'm very new to this. If this is a problem with my COM wrapper, I wouldn't expect such a specific exception, though I'm not opposed to ruling that out as the problem. Instead of setting the topology it just throws this exception.
UPDATE
Here's the full code that I'm using for creating the topology:
        private bool CreateMediaSessionAndTopology(IMFMediaSource mediaSource, IntPtr videoHWnd, string uniqueDeviceName)
        {
            IMFTopology topology;
            IMFTopologyNode videoSourceNode;
            IMFTopologyNode outputVideoSinkNode;
            //IMFTopologyNode transformNode;
            IMFPresentationDescriptor sourcePresentationDescriptor = null;
            IMFStreamDescriptor videoStreamDescriptor = null;
            IMFMediaTypeHandler mediaTypeHandler;
            IMFMediaType captureMediaType;
            IMFActivate rendererActivator;

            uint sourceStreamCount;
            bool isSelectedStream = false;
            Guid majorMediaType;
            Guid[] subTypes =
            {
                MFMediaTypeGuids.NV12,
                MFMediaTypeGuids.YUY2,
                MFMediaTypeGuids.UYVY,
                MFMediaTypeGuids.RGB32,
                MFMediaTypeGuids.RGB24,
                MFMediaTypeGuids.IYUV
            };

            try
            {
                // Create the topology
                uint status = NativeMethods.MFCreateTopology(out topology);
                if (status < 0) { throw new Exception("Couldn't create topology"); }

                sourcePresentationDescriptor = mediaSource.CreatePresentationDescriptor();
                sourceStreamCount = sourcePresentationDescriptor.GetStreamDescriptorCount();

                for (uint i = 0; i < sourceStreamCount; i++)
                {
                    videoStreamDescriptor = sourcePresentationDescriptor.GetStreamDescriptorByIndex(i, out isSelectedStream);
                    if (videoStreamDescriptor != null)
                    {
                        mediaTypeHandler = videoStreamDescriptor.GetMediaTypeHandler();

                        majorMediaType = mediaTypeHandler.GetMajorType();

                        if (majorMediaType != MFMediaTypeGuids.Video) { continue; }

                        if (!isSelectedStream) { continue; }

                        uint MaxSubTypes = 250; //magic number for now;

                        for (uint j = 0; j < MaxSubTypes; j++)
                        {
                            captureMediaType = mediaTypeHandler.GetMediaTypeByIndex(j);
                            if (captureMediaType == null) { continue; }

                            Guid subtype = captureMediaType.GetGuid(CLSIDsMFMediaTypeAttributes.SubType);
                            for (int k = 0; k < subTypes.Length; k++)
                            {
                                if (subtype == subTypes[k])
                                {
                                    mediaTypeHandler.SetCurrentMediaType(captureMediaType);
                                    break;
                                }
                            }
                            break;
                        }

                        break;
                    }
                }

                if (sourcePresentationDescriptor == null || videoStreamDescriptor == null || !isSelectedStream)
                {
                    return false;
                }

                status = NativeMethods.MFCreateTopologyNode(MFTopologyType.TopologySourcestreamNode, out videoSourceNode);
                if (status < 0) { throw new Exception("Not able to create topology node for source."); }

                // Finish instantiating source node
                videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodeSource, mediaSource);
                videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodePresentationDescriptor, sourcePresentationDescriptor);
                videoSourceNode.SetUnknown(CLSIDsMFMediaTypeAttributes.TopoNodeStreamDescriptor, videoStreamDescriptor);
                topology.AddNode(videoSourceNode);

                // Create Video Sink node
                status = NativeMethods.MFCreateTopologyNode(MFTopologyType.TopologyOutputNode, out outputVideoSinkNode);
                if (status < 0) { throw new Exception("Couldn't create output node."); }

                status = NativeMethods.MFCreateVideoRendererActivate(videoHWnd, out rendererActivator);
                if (status < 0) { throw new Exception("Couldn't create renderer activator"); }

                outputVideoSinkNode.SetObject(rendererActivator);

                topology.AddNode(outputVideoSinkNode);

                videoSourceNode.ConnectOutput(0, outputVideoSinkNode, 0);

                // Create the session
                status = NativeMethods.MFCreateMediaSession(null, out _mediaSession);
                if (status < 0) { throw new Exception("Not able to create media session."); }

                _mediaSessionCallbackHandler = new DeviceCaptureCallbackHandler();
                _mediaSessionCallbackHandler.MediaSession = _mediaSession;
                _mediaSessionCallbackHandler.MediaSessionAsyncCallbackEvent = HandleMediaSessionCallbackEvent;
                _mediaSessionCallbackHandler.MediaSessionAsyncCallbackError = HandleMediaSessionCallbackErrors;

                _mediaSession.BeginGetEvent(_mediaSessionCallbackHandler, null);

                _mediaSession.SetTopology(0, topology);
            }
            catch (Exception ex)
            {
                throw new Exception("Failed to create topology", ex);
            }
            return true;
        }

Here's how the device is activated:
        public Device(IMFActivate activator)
        {
            string friendlyName;
            string symbolicLinkName;

            _activator = activator;

            activator.GetAllocatedString(MfAttributeSourceTypeGuids.MfDevsourceAttributeFriendlyName, out friendlyName);
            FriendlyName = friendlyName;

            activator.GetAllocatedString(MfAttributeSourceTypeGuids.MfDevsourceAttributeSourceTypeVidcapSymbolicLink, out symbolicLinkName);
            SymbolicLinkName = symbolicLinkName;
        }

Actually using the activator:
        public bool ActivateDevice()
        {
            object source;

            try
            {
                source = _activator.ActivateObject(typeof(IMFMediaSource).GUID);
                MediaSource = source as IMFMediaSource;
            }
            catch (System.Exception ex)
            {
                throw new System.Exception("Couldn't activate object", ex);
            }
            return true;

I'm thinking there's a simple mistake that I'm making in here that is messing this up.

A: Roman's response above appears to have been the solution to my problem.

I suppose your real source code is a bit different, making sense in general but maybe there is a typo somewhere.

In short, when I was importing in the different GUIDs for the different nodes, I had incorrectly copied and pasted one of the GUIDs for one of the nodes. This meant that when the Windows SDK was trying to do something with it, it would get confused because there was a bad GUID in my .NET wrapper. Specifically, the Presentation Descriptor Node was set to the same GUID as Source Node.