text:
Q: DataGridComboBoxColumn initial value not displaying I have a DataGridComboBoxColumn that's bound to an enum. The dropdown displays the values of enum correctly, but the combobox does not display any value initially. I am trying to bind the selected value to a Gender property of a DataTable that's the source of my DataGrid. I have tried the methods in similar questions like SelectedItemBinding="{Binding Gender}" or SelectedValueBinding="{Binding Gender}" but they don't work for me.
I have also tried to put a combobox inside a DataGridTemplateColumn but it does not display the Gender value initially I have tried SelectedValue="{Binding Gender}" and SelectedValuePath="{Binding Gender}" but to no avail. SelectedIndex = "0" works, but it's of no use to me since I want the initial value to come from a property.
The binding works when I bind the property to a DataGridTextColumn as it displays the correct value i.e male/female.
XAML:
<ObjectDataProvider x:Key="genderEnum" xmlns:sys="clr-namespace:System;assembly=mscorlib" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="enumLoc:Gender"/>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<Grid DataContext="ViewMembers.xaml.cs">
    <DataGrid x:Name="memberDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Path=memberTable, Mode=TwoWay}" RowDetailsVisibilityMode="VisibleWhenSelected" Width="1200" Height="600" GridLinesVisibility="None" >
        <DataGrid.Columns>
            <DataGridComboBoxColumn x:Name="memberGenderColumn" SelectedItemBinding="{Binding Gender}" ItemsSource="{Binding Source={StaticResource genderEnum}}"  Header="Gender" Width="60">
            <DataGridTemplateColumn Header="Gender">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding Source={StaticResource genderEnum}}" SelectedValue="{Binding Gender}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

XAML.cs:
    DataTable memberTable = new DataTable();
    MemberDatabase members = MemberDatabase.GetApplicationDatabase();

    public ViewMembers()
    {
        InitializeComponent();
        memberTable = members.GetAllMembers();
        memberTable.AsEnumerable().ToList().ForEach(row =>
        {
            var cellList = row.ItemArray.ToList();
            row.ItemArray = cellList.Select(x => x.ToString().Trim()).ToArray();
        });
        this.DataContext = memberTable;
        memberDataGrid.ItemsSource = memberTable.DefaultView;
    }

A: You can make this work by creating a very simple converter class that casts from int to your enum:
public class EnumConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (Gender)value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}

XAML:
<DataGrid x:Name="memberDataGrid" ...>
    <DataGrid.Resources>
        <local:EnumConverter x:Key="EnumConverter" />
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridComboBoxColumn x:Name="memberGenderColumn"
                                SelectedItemBinding="{Binding Gender, Converter={StaticResource EnumConverter}}"
                                ItemsSource="{Binding Source={StaticResource genderEnum}}" Header="Gender" Width="60">
        </DataGridComboBoxColumn>
    </DataGrid.Columns>
</DataGrid>


text:
RRPS board wrestles with how to obey medical-pot rules
Story by Gary Herron | Sports Editor | Jul 26, 2019
Rio Rancho Public Schools Chief Operating Officer Mike Baker, sitting in for Superintendent Sue Cleveland at Monday's board meeting, termed medical cannabis in schools a "Catch 22."
It's not exactly a no-win situation.
New Mexico Senate Bill 204, which became law on June 14, basically brings the Lynn and Erin Compassionate Use Act into the state's schools, allowing the possession, storage and administration of medical cannabis "in certain school settings." (Senate Bill 406 has similar provisions.)
Students deemed "qualified patients" are those who have been diagnosed by a certifying practitioner, received written certification from a certifying practitioner and enrolled in the New Mexico Department of Health's medical cannabis program and have a valid registry identification card.
With marijuana classified federally as being of no medical use, research on the effectiveness of cannabis treatments has yet to prove definitive, according to Student Services Executive Director Tonna. Despite that, according to Web MD, 33 states, among them New Mexico, have legalized the use of medical marijuana, which can contain the psycho-active THC compound — and thus the conundrum for Rio Rancho Public Schools.
Attorney Karla Sanchez explained how the new bill is supposed to work, but also pointed out a major roadblock: Because physicians typically don't prescribe medical cannabis, school nurses want no part in the storage and administering of the medical marijuana to students, so alternative ways of administering it must be found — as well as a safe place to store it.
A student treatment plan must be worked out, too, and students won't be allowed to possess the cannabis, just as they are currently prohibited from possessing even simple medicine like Tylenol and Advil. Students are also forbidden from self-administering the cannabis, including smoking or "vaping" it, thus the need for a responsible adult to do it.
Although only allowing parents or guardians to do so is one possible alternative, many of them work full-time or away from the city. If administering cannabis was the way to stop a seizure and the parent was in Santa Fe, what would happen?
Sanchez said she hoped to learn soon how the school board wanted to implement a new policy, which, once written by Burgos, still needs a first and second reading by the board before it officially becomes a policy.
Burgos said she wasn't sure how many students would need medical cannabis at school, or how many campuses would need a plan in place. Board members figured the district would have to pay for locked storage units to keep the cannabis in until needed; training will also be necessary for to administering and storing it.
Sanchez said the state Public Education Department was taking public comment on the matter July 26 in Santa Fe, so more may be known by today.
"It sounds like we have to do it," board president Catherine Cullen said.
Actually, the board could defer implementing medical cannabis on campuses, but only if it could prove the district was losing federal funds. The PED is expected to have a ruling out by Aug. 1, with school districts in line to start implementing their programs by the start of 2019-20 school year, which is right around the corner.
"This is a very tough issue," board member Ramon Montaño said, concerned about the quality of life for those students dependent on medical cannabis in their lives. "What do we do for the child? For me, it's about the child."
Tags: marijuana, Rio Rancho Public Schools
PreviousEnchanted Hills, Hilltop Plaza tagged to get new Defined Fitness gyms
NextCity honors pool lifesavers
Businesses say city program helped them keep operating
Vet uses tragedy to let kids, educator see color
Union: RR schools are safe
The Stables at Tamaya recovering, but still feeling impact of COVID-19

redpajama_set_name: RedPajamaCommonCrawl


text:
L'équipe cycliste Dr. Mann est une équipe cycliste belge professionnelle. Créée en 1960, elle existe jusqu'en 1970.

Au cours de ses 11 années d'existence, elle a notamment remporté le Tour de Lombardie 1968 et deux étapes sur le Tour de France 1969, grâce à Herman Van Springel.

Histoire de l'équipe
Dr. Mann est une marque belge, originaire d'Anvers, qui commercialisait des analgésiques.

En 1958, Dr. Mann est sponsor secondaire de l'équipe Libertas. L'année suivante, la marque devient co-sponsor de la célèbre équipe Flandria. Fin 1959, l'équipe Flandria se scinde en deux : une partie de l'effectif reste au sein de la formation qui devient Wiel's-Flandria et l'autre rejoint l'équipe Dr. Mann-Dossche Sport nouvellement créée. L'équipe Dr. Mann adopte les couleurs jaune et noir de la Flandre comme emblème.

Pour sa première saison en tant que sponsor principal, Marcel Janssens remporte Bordeaux-Paris.

En 1966, Grundig AG, un fabricant de radios et télévisions d'Allemagne de l'Ouest devient co-sponsor de la formation.

En 1966 et 1968, l'équipe remporte la Coupe du monde intermarques.

L'équipe disparaît à la fin de la saison 1970. Les principaux coureurs membre de l'équipe sont les Belges Herman Van Springel, Briek Schotte, Eddy Pauwels, Jos Huysmans, Roger Rosiers, Georges Pintens, Marcel Janssens, Leo Proost, Leon Van Daele ainsi que les néerladnais Wim Van Est et Peter Post.

Principales victoires

Classiques
Bordeaux-Paris : Marcel Janssens (1960) et Herman Van Springel (1970)
Gand-Wevelgem  : Herman Van Springel (1966)
À travers les Flandres : Daniel Van Ryckeghem (1967 et 1970)
Flèche brabançonne : Roger Rosiers (1967), Willy In 't Ven (1969) et Herman Van Springel (1970)
Tour de Lombardie : Herman Van Springel (1968)
Flèche wallonne : Jos Huysmans (1969)
Paris-Tours : Herman Van Springel (1969)
Grand Prix des Nations : Herman Van Springel (1969 et 1970)
Amstel Gold Race : Georges Pintens (1970)
Grand Prix E3 : Daniel Van Ryckeghem (1970)

Courses par étapes
Tour de Belgique : Peter Post (1963)
Tour du Nord : Jos Huysmans (1964)
Quatre Jours de Dunkerque : Willy Van Neste (1970)

Championnats nationaux
 Championnats de Belgique sur route : 1
 Course en ligne : 1967 (Jos Boons)
 Championnats de Belgique sur piste : 2
 Demi-fond : 1961 (Paul Depaepe)
 Poursuite : 1961 (Piet Oellibrandt)

Résultats sur les grands tours

Tour de France
 3 participations (1966, 1969, 1970)
 2 victoires d'étapes
 2 en 1969 : Herman Van Springel (2)
 0 classement annexe

Tour d'Italie
 1 participation (1966)
 0 victoire d'étape
 0 classement annexe

Tour d'Espagne
 1 participation (1970)
 1 victoire d'étape
 1 en 1970 : Willy In 't Ven
 0 classement annexe

Liens externes
Histoire de l'équipe
Effectifs et résultats sur firstcycling.com
Effectifs sur memoire-du-cyclisme.eu

Dr. Mann
Dr. Mann

redpajama_set_name: RedPajamaWikipedia


text:
package fragments;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.denhihuynh.connectfour.MainActivity;
import com.denhihuynh.connectfour.R;

import java.util.ArrayList;

import constants.SharedPreferenceConstants;
import interfaces.OnFragmentInteractionListener;

/**
 * This fragment contains the buttons shown in Mainactivity.
 */
public class StartScreenButtonFragment extends Fragment implements View.OnClickListener {
    private OnFragmentInteractionListener mListener;
    private SharedPreferences prefs;

    public static StartScreenButtonFragment newInstance() {
        StartScreenButtonFragment fragment = new StartScreenButtonFragment();
        return fragment;
    }

    public StartScreenButtonFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_start_screen_button, container, false);
        prefs = getActivity().getSharedPreferences(
                "com.denhihuynh.connectfour", Context.MODE_PRIVATE);
        Button setupButton = (Button) root.findViewById(R.id.setupButton);
        Button resumeButton = (Button) root.findViewById(R.id.resumeButton);
        setupButton.setOnClickListener(this);
        boolean onGoingGameExists = prefs.getBoolean(SharedPreferenceConstants.ONGOINGGAMEEXISTS, false);
        if (onGoingGameExists) {
            resumeButton.setOnClickListener(this);
        } else {
            resumeButton.setAlpha(0.3f);
        }
        return root;
    }

    /**
     * Switches fragment when button is pressed.
     *
     * @param v view pressed.
     */
    @Override
    public void onClick(View v) {
        String command = null;
        ArrayList<String> extras = null;
        switch (v.getId()) {
            case R.id.setupButton:
                command = MainActivity.SETUPGAME;
                break;
            case R.id.resumeButton:
                command = MainActivity.RESUME;
                break;
        }
        if (mListener != null) {
            //Calling Mainactivity in order to switch fragment.
            mListener.onFragmentInteraction(command, extras);
        }
    }

    /**
     * Connecting Mainactivity's onFragmentInteraction method with fragment in onAttach.
     *
     * @param context
     */
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Activity activity = getActivity();
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    /**
     * Detaches Mainactivity's onFragmentInteraction method with fragment in onDetach.
     */
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

}

redpajama_set_name: RedPajamaGithub


text:
The Swell Kids
"You can kind of become your own identity by being true to who you are. That's kind of what being a Swell Kid is. It's about the stuff we enjoy and not about winning over anybody when it comes to what we do."
By now a lot of people have heard about The Swell Kids. Two years after having had started this fun music project, the guys are now set to play at Neon Desert Music Festival in May. With excitement flowing, preparations, projects, and new music on the way, it is no wonder why this duo also caught Khalid's attention. In between a packed schedule, I recently caught up with Alex and Eddie of The Swell Kids to talk about some of the things they have going on as well right now as well as in the future.
The Swell Kids have always had a unique approach to what they do whether it is their clothes, music, and so much more! That's one of the first things I noticed when I saw them for the first time and I know I am not the only one. Meanwhile the guys were sitting on the coach and Frank Ocean playing in the background, I asked Alex and Eddie what it meant to be a Swell Kid and after a pause they said, "It's individuality for sure. It's being okay with who you are and not feeling like you have to be somebody else. It also means not having to follow any trends and being yourself. Instead, it's highlighting who you are in your everyday tasks and highlighting that in general as opposed to feeling like you need to fit in. You can kind of become your own identity by being true to who you are. That's kind of what being a Swell Kid is. It's about the stuff we enjoy and not about winning over anybody when it comes to what we do." What Alex mentioned, definitely reflects on how the two of them present themselves as The Swell Kids. Regardless of their clothing, their personalities still shine through their music. As one can see in the pictures, Alex is wearing all white and Eddie is wearing all black giving it that Yin-Yang effect, however, in a subliminal manner it points to their dynamic and why this duo completes one another musically and in their way of thinking.
If anyone has followed along with The Swell Kids from when they started to now, it's easy to see there has been an evolution in their sound, look, and work dynamic. All for the better of course. In October of 2017, the Swell Kids released an album titled Good Problems: A Collection of Feelings and are now getting ready to release new material. I asked them how their sound has changed and immediately Eddie chuckled, "I laugh because it's a complete 180 with what we are doing right now. We are now doing uplifting "lit" music. It's upbeat!" Alex added, "the last project we put out was something you can study to and drive around the city and listen to. I feel like the stuff we are doing now is upbeat and up-tempo and it will be stuff that people are used to hearing at our DJ sets. The projects we are doing now compliment that as opposed to our past projects which have a lot of feeling. It's a new direction with everything that's coming out." When I commented on why they decided to make this change, Eddie was quick to say "I just didn't want to be a sad boy no more."
It makes sense, as they mentioned, their newer projects are aligned to their DJ sets and as a music duo, that makes it fun for them and the people that go out and see them. It's also exciting to see where this new approach is heading, especially since the Neon Desert Music Festival is in two months. "I think something that we want to express as artists is that you are not limited to one genre. I feel like where we are right now, we can do whatever we want," Alex is referring to the fact that no one should feel limited because of a genre label or pressure of any sorts. It's a way to "push the envelope", but it's definitely working for artist like The Swell Kids.
Going further into how their music process works, the guys said it is random. "Eddie will come up with a beat and show me whatever he is working on and from there we go through all the beats and ideas Eddie has and we will pick whichever ones we like. There is no exact process to creating a track, but there is a process to when we start working on something." They further explained that they will have about twenty beats and they will go down the list picking out the coolest ones and working on them and much as they can. Process of elimination. It's evident that Eddie and Alex have a good communication and that they create what is better suited for them. As artists that take their craft seriously, it shows. They really put their touch on whatever is they are doing.
Additionally, the El Paso music scene has been growing rapidly within the last two years and I couldn't help but ask The Swell kids their opinions on it since they are part of the scene. "Recently, I have noticed that the El Paso music scene has been dedicated and very driven in being better music makers." Alex added to Eddie's comment and said that, "two years ago the music scene was there, but people weren't pushing themselves to make something big. I think that being from El Paso, people like Khalid, is kind of the poster child of saying, " Hey I am from El Paso and if I can do it, you can do it too." I think that's what lit the fire under everyone's butt here in El Paso. They saw that and said, "If this guy can make it, then why can't we?"" Both Alex and Eddie agree that the music scene has been really pushing themselves lately and really trying to make things happen. They talked some more about the local scene and talented people they have met along the way. Their love for it shows in how they expressed themselves about it. They guys are also grateful for those people, including Khalid, whom they recently had a chance to talk to and get great feedback and musical advice from. It's so motivating to see El Paso musicians supporting each other in different ways. It makes it more thrilling to see what the future holds.
If you are reading this keep an eye out for The Swell Kids. This is only the beginning. Lots of new projects are coming and as part of their latest "campaign", the guys have been sporting a shirt reading "Fuck the Swell Kids" and I asked them what the meaning behind it was. Alex answered, "Fuck the Swell Kids is something that I thought about. It's something Eddie and I will tell each other about different artists we look up to that do something that we would never have thought of. Even a simple idea like that of Tyler. The Creator's make us say, "Man, fuck Tyler. The Creator we wish we would have thought of that first" or "fuck Kendrick, dammit this guy is so good." This is more of an appreciation. These artists are so ahead of their time that I have nothing to say but "fuck you."" This further shows how much The Swell Kids are striving for more and thinking outside the box. It's mentality like that that brings the well deserved attention they have.
A big thank you to the Swell Kids! Remember to follow them on Instagram as @theswellkids for more information on their latest endeavors and shows! Catch them at Neon Desert Music Festival this May!


What a day. My brain is completely fried after an exhausting + frustrating 9 hours in the office. I'm so glad that the hubb and I got up and ran this morning, there is no way I would have felt up to it tonight! We ran a lovely 2 miles, with 1/4 mile warm-up and cool-down, for a total of 2-1/2 miles. We're finally sticking with the weekly mileage in the training program so there will be a bigger difference between our long Saturday runs and our mid-week training runs. We are bumping to 4 days of running per week too, up from 3, which I'm excited about! I did pop my favorite power yoga dvd in the player for 45 minutes of strength training after work, followed by 15 minutes of crunches.
Breakfast: An Ezekiel cinnamon raisin muffin with 1 tbsp almond butter and a banana.
Lunch: A whole wheat pita stuffed with 2 tbsp TJ's edamame hummus (YUM!), broccoli slaw, yellow bell pepper and cucumber, along with an Oikos blueberry yogurt. This was my first blueberry Oikos experience...I literally got THE LAST OIKOS on the shelf at Harris Teeter. Below the empty shelf was a sign that explained that they wouldn't be stocking Oikos for a short period due to a manufacturing problem. I guess I owe my Whole Foods a blog apology for ranting about them last week... :P Anyway, the blueberry was pretty tasty but I really miss my honey flavor!!!
Dinner: Baked chicken, roasted veggies (brussels, potatoes + golden beets) and Near East Whole Grain Blends (chicken + garlic).
I'm off to do more Christmas prep...we'll be in Florida in 1 week!!! Yay!!!
quick eats and cranberry ketchup!


text:
Brigádní generál Ladislav Kotík (13. listopadu 1896 Lipník nad Bečvou – 19. srpna 1942 Věznice Plötzensee) byl československý legionář, důstojník a odbojář z období druhé světové války popravený nacisty.

Život

Mládí
Ladislav Kotík se narodil 13. listopadu 1896 v Lipníku nad Bečvou v rodině železničního zřízence Jana Kotíka a Cecilie rozené Halouzkové. Mezi lety 1906 a 1910 navštěvoval německou reálku ve svém rodišti, poté absolvoval dvouletý obchodní exportní kurz v Paříži.

První světová válka
Ve Francii jej zastihlo i vypuknutí první světové války, vstoupil jako dobrovolník do francouzské armády a působil v cizinecké legii, protože o vznikající československé jednotce nevěděl. Bojoval v severovýchodní Francii a jako člen expedičního sboru u Gallipoli. Následovaly boje na Balkáně, kde utrpěl zranění hlavy, a opět ve Francii. Do Československých legií oficiálně vstoupil v červnu 1918. Válku ukončil v hodnosti podporučíka.

Po vzniku ČSR
Po vzniku Československa následně vstoupil do Československé armády, vystudoval Vysokou školu válečnou, kde poté působil i jako pedagog. V letech 1925 a 1926 působil v Bělehradu, následovaly velitelské pozice v Šahách, Praze a Liberci, od roku 1934 do rozpadu Československa v Michalovcích. V období Mnichovské dohody byl jmenován a post náčelníka štábu velitelství "M" pro zvláštní úkoly ve Vizovicích. Po vzniku Slovenského státu se přesunul do Brna, kde byl přidělen k velitelství III. sboru v likvidaci. V září 1939 odešel do výslužby, poté byl přidělen k zemskému úřadu v Brně, kam už ale nenastoupil.

Protinacistický odboj
Ladislav Kotík vstoupil do protinacistického odboje v dubnu 1939 konkrétně do Obrany národa, kde zastával post náčelníka štábu zemského velitelství Morava. Za svou činnost byl 23. listopadu zatčen gestapem, vězněn byl na Špilberku, Sušilových kolejích, Breslau a od července 1940 v berlínské věznici Alt-Moabit. Ve dnech 26. a 27. listopadu 1941 proběhl v Berlíně soud s moravským zemským vedením Obrany národa a Ladislav Kotík byl spolu s dalšími spolupracovníky odsouzen k trestu smrti. Dne 19. srpna 1942 byl popraven gilotinou v další berlínské věznici Plötzensee.

Posmrtná ocenění
 V roce 1945 obdržel Ladislav Kotík in memoriam Československý válečný kříž 1939
 V roce 1946 byl Ladislav Kotík in memoriam povýšen do hodnosti brigádního generála
 V roce 1946 byla po Čestmíru Jelínkovi pojmenována ulice v brněnských Žabovřeskách

Rodina
Ladislav Kotík byl dvakrát ženatý. Podruhé se oženil v roce 1938 s Miladou Hurtovou, sestrou historika Rudolfa Hurta. Manželům se ještě téhož roku narodil syn Ladislav.

Odkazy

Literatura
 Eduard Stehlík, Ivan Lach - Vlast a čest - byli jim dražší nežli život (FORTprint, 2000, 80-86011-12-7)

Externí odkazy

 Karta legionáře Ladislava Kotíka na stránkách Legie 100
 Ladislav Kotík na stránkách Válka.cz
 Naši hrdinové očima Eduarda Stehlíka: Ladislav Kotík - článek v Konzervativních novinách, 2021

Příslušníci francouzské cizinecké legie
Českoslovenští legionáři ve Francii
Českoslovenští vojáci
Osobnosti Obrany národa
Češi odsouzení k trestu smrti
Lidé popravení gilotinou
Nositelé Československého válečného kříže 1939
Narození v roce 1896
Narození 13. listopadu
Narození v Lipníku nad Bečvou
Úmrtí v roce 1942
Úmrtí 19. srpna
Úmrtí ve Věznici Plötzensee
Muži


text:
#pragma once
#include <aws/customer-profiles/CustomerProfiles_EXPORTS.h>
#include <aws/customer-profiles/CustomerProfilesRequest.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>

namespace Aws
{
namespace CustomerProfiles
{
namespace Model
{

  /**
   */
  class AWS_CUSTOMERPROFILES_API GetWorkflowRequest : public CustomerProfilesRequest
  {
  public:
    GetWorkflowRequest();

    // Service request name is the Operation name which will send this request out,
    // each operation should has unique request name, so that we can get operation's name from this request.
    // Note: this is not true for response, multiple operations may have the same response name,
    // so we can not get operation's name from response.
    inline virtual const char* GetServiceRequestName() const override { return "GetWorkflow"; }

    Aws::String SerializePayload() const override;

    /**
     *
The unique name of the domain.

     */
    inline const Aws::String& GetDomainName() const{ return m_domainName; }

    /**
     *
The unique name of the domain.

     */
    inline bool DomainNameHasBeenSet() const { return m_domainNameHasBeenSet; }

    /**
     *
The unique name of the domain.

     */
    inline void SetDomainName(const Aws::String& value) { m_domainNameHasBeenSet = true; m_domainName = value; }

    /**
     *
The unique name of the domain.

     */
    inline void SetDomainName(Aws::String&& value) { m_domainNameHasBeenSet = true; m_domainName = std::move(value); }

    /**
     *
The unique name of the domain.

     */
    inline void SetDomainName(const char* value) { m_domainNameHasBeenSet = true; m_domainName.assign(value); }

    /**
     *
The unique name of the domain.

     */
    inline GetWorkflowRequest& WithDomainName(const Aws::String& value) { SetDomainName(value); return *this;}

    /**
     *
The unique name of the domain.

     */
    inline GetWorkflowRequest& WithDomainName(Aws::String&& value) { SetDomainName(std::move(value)); return *this;}

    /**
     *
The unique name of the domain.

     */
    inline GetWorkflowRequest& WithDomainName(const char* value) { SetDomainName(value); return *this;}

    /**
     *
Unique identifier for the workflow.

     */
    inline const Aws::String& GetWorkflowId() const{ return m_workflowId; }

    /**
     *
Unique identifier for the workflow.

     */
    inline bool WorkflowIdHasBeenSet() const { return m_workflowIdHasBeenSet; }

    /**
     *
Unique identifier for the workflow.

     */
    inline void SetWorkflowId(const Aws::String& value) { m_workflowIdHasBeenSet = true; m_workflowId = value; }

    /**
     *
Unique identifier for the workflow.

     */
    inline void SetWorkflowId(Aws::String&& value) { m_workflowIdHasBeenSet = true; m_workflowId = std::move(value); }

    /**
     *
Unique identifier for the workflow.

     */
    inline void SetWorkflowId(const char* value) { m_workflowIdHasBeenSet = true; m_workflowId.assign(value); }

    /**
     *
Unique identifier for the workflow.

     */
    inline GetWorkflowRequest& WithWorkflowId(const Aws::String& value) { SetWorkflowId(value); return *this;}

    /**
     *
Unique identifier for the workflow.

     */
    inline GetWorkflowRequest& WithWorkflowId(Aws::String&& value) { SetWorkflowId(std::move(value)); return *this;}

    /**
     *
Unique identifier for the workflow.

     */
    inline GetWorkflowRequest& WithWorkflowId(const char* value) { SetWorkflowId(value); return *this;}

  private:

    Aws::String m_domainName;
    bool m_domainNameHasBeenSet = false;

    Aws::String m_workflowId;
    bool m_workflowIdHasBeenSet = false;
  };

} // namespace Model
} // namespace CustomerProfiles
} // namespace Aws


text:
(function() {
'use strict';

	videojs.CallToAction = videojs.Component.extend({
		init: function( player, options ) {
			var addButton = false;
			if ( options.el && options.el.nodeType === 1) {
				this.contentEl_ = options.el;
				delete options.el;
			} else {
				addButton = true;
			}

			videojs.Component.call( this, player, options );

			if ( addButton ) {
				this.contentEl_ = this.callToActionContainer_;
				this.callToAction_ = this.addChild( 'callToActionButton', this.options_.link );
				this.exitButton.on( 'click', videojs.bind( this, function() {
					this.player_.trigger({type: 'calltoactionclose', actionTime: this.getTime() });
					this.conceal();
				}) );

				this.callToAction_.on('click', videojs.bind(this, function() {
					this.player_.trigger({type: 'calltoaction', actionTime: this.getTime() });
				}));
			}

			this.timerDisplay.length( this.options_.timer );

			this.player_.on( 'ended', videojs.bind( this, this.reveal ) );

			this.on('click', function(e) {
				e.stopImmediatePropagation();
			});

			// Do we have a playlist and does it autoAdvance?
			this.playlistAutoAdvance = false;
			this.playlistCheckTimer = setTimeout( videojs.bind( this, this.playlistCheck ), 1 );
		}
	});

	videojs.CallToAction.prototype.createEl = function() {
		var el = videojs.Component.prototype.createEl(null, {
			className: 'vjs-call-to-action ',
		});

		if ( this.contentEl_ && this.contentEl_.nodeType === 1 ) {
			el.appendChild( this.contentEl_ );
		} else {
			this.title_ = videojs.createEl('h2',{
				innerHTML: this.options_.title
			});
			this.message_ = videojs.createEl('p',{
				innerHTML: this.options_.text
			});
			this.callToActionContainer_ = videojs.createEl('div', {
				className: 'link-container'
			});
			/*this.callToAction_ = videojs.createEl('a',{
				innerHTML: this.options_.link.text,
				href: this.options_.link.url,
				target: '_blank',
				name: 'callToAction'
			});*/

			//this.callToActionContainer_.appendChild( this.callToAction_ );

			el.appendChild( this.title_ );
			el.appendChild( this.message_ );
			el.appendChild( this.callToActionContainer_ );
		}

		return el;
	};

	videojs.CallToAction.prototype.options_ = {
		title: '',
		text: '',
		link: {
			url: '',
			text: ''
		},
		el: null,
		timer: 30,
		children: {
			exitButton: {},
			timerDisplay: {
				descriptionText: "Time till next item:",
				timeLabel: "s"
			}
		}
	};

	videojs.CallToAction.prototype.playlistCheck = function() {
		if ( this.player_.playlist && this.player_.playlist.autoAdvanceFn ) {
			this.playlistAutoAdvance = true;
			this.autoAdvanceFn = this.player_.playlist.autoAdvanceFn;

			videojs.off( this.player().el(), 'ended', this.player_.playlist.autoAdvanceFn );

			this.timerDisplay.on( 'complete', videojs.bind( this, this.timerComplete ) );
			//this.player_.autoplay( false );
		} else {
			this.timerDisplay.hide();
		}

	};

	videojs.CallToAction.prototype.reveal = function () {
		this.show();

		if ( this.playlistAutoAdvance ) {
			// Load next item
			//this.player_.playlist.loadNext();
			this.player_.pause();
			// Show the timer
			this.timerDisplay.show();
			// Start the display timer
			this.timerDisplay.start();
			/*
				this.displayTime = this.options_.timer;
				this.displayTimerEl_.innerHTML = this.displayTime + " seconds";
			*/
		}
	};

	videojs.CallToAction.prototype.conceal = function() {
		this.hide();
		this.timerDisplay.cancel();
	};

	videojs.CallToAction.prototype.timerComplete = function() {
		this.hide();
		videojs.bind( this.player_.playlist, this.autoAdvanceFn )();
	};

	videojs.CallToAction.prototype.getTime = function() {
		this.timerDisplay.time_;
	};

	videojs.CallToActionButton = videojs.Button.extend({
		init: function( player, options ) {
			videojs.Button.call(this, player, options);
			this.name_ = "callToActionButton";
		}
	});
	videojs.CallToActionButton.prototype.createEl = function() {
		var props = {
			className: '',
			innerHTML: this.options_.text,
			role: 'button',
			'aria-live': 'polite', // let the screen reader user know that the text of the button may change
			tabIndex: 0
		};
		var el = videojs.Component.prototype.createEl('a', props);

		el.style.cursor = "pointer";

		return el;
	};
	videojs.CallToActionButton.prototype.onClick = function() {
		if ( this.options_.url ) {
			window.open(this.options_.url, 'CallToAction');
		}
	};

	if ( !videojs.ExitButton ) {
		/**
		 * Exit button.
		 * @class
		 * @construtor
		 * @param {vjs.Player|Object} player
		 * @param {Object} options
		 * @extends vjs.Button
		 */
		videojs.ExitButton = videojs.Button.extend({
			init: function(player, options){

				videojs.Component.call(this, player, options);
			}
		});
		videojs.ExitButton.prototype.buttonText = "Exit";
		videojs.ExitButton.prototype.buildCSSClass = function(){
			// TODO: Change vjs-control to vjs-button?
			return 'vjs-control vjs-exit-button icon-remove-sign ' + vjs.Component.prototype.buildCSSClass.call(this);
		};
		videojs.ExitButton.prototype.onClick = function() {};
	}

	if ( !videojs.PauseButton ) {
		/**
		 * Pause button.
		 * @class
		 * @construtor
		 * @param {vjs.Player|Object} player
		 * @param {Object} options
		 * @extends vjs.Button
		 */
		videojs.PauseButton = videojs.Button.extend({
			init: function(player, options){
				videojs.Component.call(this, player, options);
			}
		});
		videojs.PauseButton.prototype.buttonText = "Pause";
		videojs.PauseButton.prototype.buildCSSClass = function(){
			// TODO: Change vjs-control to vjs-button?
			return 'vjs-control vjs-pause-button icon-pause ' + vjs.Component.prototype.buildCSSClass.call(this);
		};
		videojs.PauseButton.prototype.onClick = function() {};
	}

		/**
		 * Timer Display.
		 * @class
		 * @construtor
		 * @param {vjs.Player|Object} player
		 * @param {Object} options
		 * @extends vjs.Component
		 */
		videojs.TimerDisplay = videojs.Component.extend({
			init: function(player, options){
				videojs.Component.call(this, player, options);
				this.pauseButton.on( 'click', videojs.bind( this, this.cancel ) );
			}
		});

		videojs.TimerDisplay.prototype.options_ = {
			descriptionText: '',
			timeLabel: 'seconds',
			children: {
				pauseButton: {}
			}
		};

		videojs.TimerDisplay.prototype.createEl = function() {

			var el = videojs.Component.prototype.createEl(null, {
				className: this.buildCSSClass()
			});

			this.descriptionText_ = videojs.Component.prototype.createEl( 'span', {
				innerHTML: this.options_.descriptionText
			});

			this.timerText_ = videojs.Component.prototype.createEl( 'span', {
				className: 'vjs-time-left'
			});

			el.appendChild( this.descriptionText_ );
			el.appendChild( this.timerText_ );
			return el;
		};
		videojs.TimerDisplay.prototype.buildCSSClass = function(){
			// TODO: Change vjs-control to vjs-button?
			return 'vjs-display-timer ' + vjs.Component.prototype.buildCSSClass.call(this);
		};

		videojs.TimerDisplay.prototype.length = function() {
			if ( arguments.length ) {
				this.options_.length = arguments[0];
			}
			return this.options_.length;
		};

		videojs.TimerDisplay.prototype.start = function() {
			this.clear();
			this.time_ = this.options_.length;
			this.play();
		};
		videojs.TimerDisplay.prototype.play = function() {
			this.update();
			this.timer_ = setInterval( videojs.bind( this, this.update ), 1000 );
		};
		videojs.TimerDisplay.prototype.pause = function() {
			this.clear();
		};
		videojs.TimerDisplay.prototype.cancel = function() {
			this.clear();
			this.time_ = 0;
			this.hide();
		};

		videojs.TimerDisplay.prototype.clear = function() {
			clearInterval( this.timer_ );
		};

		videojs.TimerDisplay.prototype.update = function() {
			this.timerText_.innerHTML = this.time_ + this.options_.timeLabel;
			this.time_--;

			if ( this.time_ <= 0 ) {
				this.clear();
				this.trigger( 'complete', {} );
			}

		};
})();

	/**
	 * @namespace plugins.callToAction
	 */
	/**
	 * Displays a logo as a control bar button.  Can be used to open a link in a new window.
	 *
	 * @memberof plugins.callToAction
	 * @function callToAction
	 * @param {Object} options Options object.
	 * @param {String} [options.title] Title of the call to action slide.
	 * @param {String} [options.text] A short message to include on the call to action slide.
	 * @param {Object} [options.link] Object containing the link url and text.
	 * @param {String} [options.link.url] The url for the call to action link.
	 * @param {String} [options.link.text] The text to display on the call to action button.
	 * @param {String|Element} [options.el] Either the id of the an element to use as the call to action slide, or a reference to the element.
	 */
(function() {
	videojs.plugin('callToAction', function( options ) {

		options = options || {};
		if ( (!options.link || !options.title) && !options.el ) {
			return;
		}

		if ( options.el ) {
			if ( typeof options.el === "string" && document.getElementById( options.el.replace('#','') ) ) {
				options.el = document.getElementById( options.el.replace('#','') );
				this.callToAction = this.addChild('callToAction', options );
			} else if ( options.el.nodeType === 1) {
				// We have a node, this node will be shown at the end of the video.
				this.callToAction = this.addChild('callToAction', options );
			} else {
				console.warn( "VideoJs.CallToAction Aborting: Invalid element specified, neither html element or element id" );
			}
		} else {
			// We don't have a node, we need to create one
			this.callToAction = this.addChild('callToAction', options );
		}

	});
})();


text:
Mitsubishi Outlander er en kompakt SUV fra den japanske bilfabrikant Mitsubishi.

Mitsubishi Outlander blev introduceret i 2003 på det nordamerikanske marked. På det asiatiske marked blev den allerede introduceret i 2001 under navnet Mitsubishi Airtrek.

Første generation (CU0W)

Første generation af Outlander blev bygget fra 2003 til 2006. Den var baseret på platformen fra Mitsubishi Lancer, blev udviklet i samarbejde med DaimlerChrysler, og motoren var baseret på motoren fra Mitsubishi Galant. Outlander var et lettere modificeret version af den japanske Airtrek, som var udviklet til det asiatiske marked.

Til basismotoren på 2,0 liter med 136 hk kunne der frit vælges mellem for- eller firehjulstræk. Alle andre motorer havde permanent firehjulstræk. Alle Outlander-modeller havde separate hjulophæng. Versionen med 2,4-litersmotor med 160 hk kunne som ekstraudstyr fås med firetrins automatisk gearkasse.

2,0-liters turbomotoren med 201 hk var baseret på teknikken fra ottende generation af Mitsubishi Lancer Evolution og gav Outlander gode præstationer. De færre hk skyldtes en anden turbolader og ændret ECU-software. Ændrede udstødningsværdier var også grunden til at Outlander Turbo i Europa kun havde 201 hk, i stedet for 240 hk i Japan.

Motorer

Anden generation (CW0W)

Anden generation af Outlander blev introduceret på New York International Auto Show i april 2006. Et særligt kendetegn er CVT-gearkassen, som findes som ekstraudstyr. Den europæiske version, som kom på markedet i februar 2007, findes for første gang med dieselmotor. I første omgang var det en pumpe/dyse-motor på 2,0 liter leveret af Volkswagen. Allerede den 17. januar 2007 blev det besluttet senere at introducere en 2,2-liters dieselmotor leveret af PSA Peugeot Citroën, så fra november 2007 fandtes der to forskellige dieselmotorer i programmet.

Det var den samme motor, som også blev brugt i PSAs søstermodeller, som med ændret forvogn og et andet karrosseridesign siden sommeren 2007 sælges som Peugeot 4007 og Citroën C-Crosser. Samtidig blev programmet udvidet med en version med benzinmotor. Det var en i samarbejde mellem DaimlerChrysler og Hyundai udviklet firecylindret motor på 2,4 liter. Kun denne benzinmotor med 170 hk kunne afhængigt af udstyrsvariant kombineres med en automatisk gearkasse i form af en trinløs CVT-gearkasse, som ved hjælp af programmering simulerede seks køretrin. I USA (2006), Rusland og Japan (2007) kunne modellen også fås en V6-motor på 3,0 liter med 220 hk og sekstrins automatisk gearkasse.

På Paris Motor Show i 2006 blev Outlander Concept forevist, som var en showbil baseret på den japanske seriemodel, og på Geneve Motor Show i 2007 blev samme bil forevist med 3,0-liters V6-motor.

I februar 2010 fik den tre år gamle model et facelift. Den kompakte SUV fik nu udvidet både udstyret og motorprogrammet. Bagenden forblev uforandret bortset fra en forkromet liste over nummerpladen. Til dieselmotoren på 2,2 liter med 156 hk fås nu også en dobbeltkoblingsgearkasse, TC-SST, som både kan bruges som sekventiel manuel gearkasse eller fuldautomatisk gearkasse.

Programmet blev også udvidet med en forhjulstrukket indstigningsmodel 2,0 2WD med variabel MIVEC-ventilstyring. Benzinmotoren på 2,0 liter har en effekt på 108 kW (147 hk). Siden modelskiftet bygges Outlander til det europæiske marked hos Mitsubishis datterselskab NedCar i Born i Holland, hvor også andre Mitsubishi-modeller og Volvo S40/V40 bliver bygget.

Modellen er blevet kollisionstestet af Euro NCAP i 2007 med et resultat på fire stjerner ud af fem mulige.

Kilder

Eksterne henvisninger

 Officielt websted

SUV'er
Forhjulstrukne biler
Biler introduceret i 2001
Biler fra 2000'erne
Biler fra 2010'erne
Outlander


text:
Q: SetResolver in console application using Simple Injector I am looking to do the equivalent of this:
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));

But in a console application. I also have cases where I need to do this in a worker role. I don't want to have to add a reference to the MVC dll all over the place. I am wondering if there is an equivalent for non-mvc projects? I need to stash the container I create so I can access it throughout my application. I thought of creating a static variable, but I'd rather not do this.
I saw there is a CommonSerivceLocator nuget for Simple Injector but oddly it requires 2.8.1 and the latest non-mvc Simple Injector is 2.8.0.

A:
I don't want to have to add a reference to the MVC dll all over the place.

This indicates that you are not applying dependency injection but are doing Service Location, which is an anti-pattern.
If you apply constructor injection to all your components, you will be able to let Simple Injector build up a complete object graph of dependent components (of many levels deep) without any of your components to know about the existence of an IoC container such as Simple Injector or an IoC abstraction such as the Common Service Locator and MVC's IDependencyResolver. This prevents you from referencing your IoC container or such abstraction "all over the place".
So in a Console Application that means that you typically have one place where you resolve the object graph(s). This is the place in the application that already knows about the existence of the IoC container. This place is typically referred to as the Composition Root.

I saw there is a CommonSerivceLocator nuget for Simple Injector but oddly it requires 2.8.1 and the latest non-mvc Simple Injector is 2.8.0.

I seem to have made an error in the build scripts that create the NuGet packages and although NuGet usually applies checks when a package is uploaded, for some reason it failed to check this. I fixed this and pushed v2.8.2 of the CommonServiceLocator adapter to NuGet. But note that we are dropping support for the CSL adapter in v3 of Simple Injector because it leads to bad practice. Don't use it; you don't need it.

redpajama_set_name: RedPajamaStackExchange


text:
Kitchen & Cellar
One Week Left for Dickinson Pilgrammage
May 21, 2017 | Comments
Lover's of poetry, strong-minded women or just lover's of history, have a week left to see "The Poetry and Life of Emily Dickinson" at The Morgan Museum and Library. Consistently garnering rave reviews, the exhibit has shifted thinking about the life of a reclusive women.
The bulk of her poetry was published after her death. The exhibit focuses on her childhood influences, the specter of the Civil War and her remarkable sensibility of the life on an author. She was wary of unwanted an unwarranted attention. She was an educated, thoughtful women whose work has past the test of time. Perhaps her isolation provided her a clarity of thought that we should all heed in this time of information saturation.
About Lori Theisen
Lori Theisen is a co-founder and managing editor of The Literary Cafe. A journalism major before she got swept up into the world of corporate marketing, she always wanted to indulge her passion of books, culture and food.
‹ The Challenge of the Whitney BiennialA Closing Window on Broadway ›
Mincing in Montreal
A group of my friends was searching for a getaway — somewhere close but not too close — where we could gather for a holiday weekend. Canada seemed high on everyone's list and Montreal seemed to fit the bill. We rented a house close to Mile's End and had a culinary adventure worth writing about here. One caveat - we did have inside connections as one of our party works in Canada. However, you can all benefit from his insider information here!
Spring is Here So We Are Going to Let Winter Go...
So winter activities only made it to a draft format. There were activities, but there was work--and an inability to get it all done. It's spring, so it's time to do better. As rain streaks the window in front of me, I'm committing to sharing more of what is out there. So here is what you can look forward to in coming days and weeks: All the Light We Cannot See, an outing to Queens and The French Workshop, Emily Dickinson at The Morgan, a new French children's bookstore, the Whitney Biennial and whatever else we can experience and fit into a busy schedule. Good problems!
What To Do in the NYC Now. . .
There are some genuine small gems available in the city right now. Click through on Read More for play, museum and restaurant recommendations happening right now in NYC. A great Irish play and an Indian restaurant in Chelsea, a cultural standout in SOHO, Charlotte Bronte in Murray Hill and vegetarian fare in Union Square.
Copyright © 2015, The Literary Cafe. All rights reserved.


No matter where you are or what the difficulty, the answer is always the same, just look up ! Love is waiting to enfold you hindered only by expectations of what that should feel like.
Start change with but one small step of kindness and begin swimming in a river of kind people.
Pray because you are speaking to the One in charge. Prayer is like aspirin, it works whether you believe or not.
Read scripture and find out that the old ones knew all the intricacies of our personal issues.
Meditate by breathing deeply. Look inside and See the answers.
Warriors of Light know that time is no hindrance to His purposes or our prayers. Our lives are made not by what happens but by our responses. Smile and the world smiles with you !


God's creation was ordained to conduct us into reality.
The incarnation of Jesus was ordained to convey God into us.
The crucifixion was ordained to evacuate us while the purpose of the resurrection was to convey us into God.
The ascension was ordained to bring the body of Jesus Christ into the headship of Christ.
Pentecost was ordained to bring the headship of Christ into His body.
Jesus conducted us into His headship, through resurrection He brought us into Himself.
The headship of Christ denoted the position He occupies in the church, it also denotes Him as the source and sustainer of the church.
Headship also means that Christ has been given absolute powers to exercise in the church according to the position He occupies.
10 And you are in Him, made full and having come to fullness of life [in Christ you too are filled with the Godhead—Father, Son and Holy Spirit—and reach full spiritual stature]. And He is the Head of all rule and authority [of every angelic principality and power].
We can only experience the fullness of God when we are one as a body.
Being firstborn has nothing to do with supremacy but everything to do with God's purpose. Jesus is the firstborn from the dead.
Jesus is inseparable from the body. The body can't exit without Christ, Christ can't exist without the body. The name Christ denotes the anointed one. Christ was anointed for the sake of the body. If it wasn't for the body, Jesus doesn't need the anointing. Jesus was manifested for the sake of the body and it is because of the body that he died on the cross.
Christ is the sovereign ruler over the entire universe.
It's because of His love for the church that He gave Himself to die for it.
After His resurrection, Christ came back again in the earth through the Holy Spirit as a life giving spirit.
No single individual can see the Father on their own accord. To see the fullness of God, every individual must be part of the body. We can only see God as a cooperate body.
Christ came as a life giving spirit so that He can work Himself in us to bring us under His headship.
The epitome of divine truth is that God became man so that man may became God in life and nature only but not in the God head. Meaning every work of creation should see us as their god. They should see their creator in us.
This was to serve the purposes of closing the age of this existence so that Christ may come and establish the new Jerusalem.
3 Then I heard a mighty voice from the throne and I perceived its distinct words, saying, See! The abode of God is with men, and He will live (encamp, tent) among them; and they shall be His people, and God shall personally be with them and be their God.
Lucifer was judged because he tried to put himself in the God head. No created being has a place in the God head.
God's dispensation was to pour Himself into man so that we can have a God man living to become the body of Christ.
God sent His son to come as man to live a God man life by His divine nature.
The corporate God man is like God, Christ is the head.
2 In My Father's house there are many dwelling places (homes). If it were not so, I would have told you; for I am going away to prepare a place for you.
The dwelling is mutual. There is a place in you that God finds expression and there is a place in God you find expression.
Preaching of the gospel is to bring the body into the headship of Christ. The gospel is there to bring you under the superintendence of the headship of Christ.
Christ will not come back until His body has matured. The maturity of the body will happen when the full body is under the headship of Christ.
Christ being a life giving Spirit is in your spirit.
Jesus Christ is not only in heaven but also here on earth but not in bodily form. He is here together with us as a life giving Spirit whose united with our spirit.
To walk with Christ means being careful with what is happening in your human spirit because your spirit man has been joined together with Christ.
To walk in Christ means to walk in our spirit. It's a walk where you are transacting with Christ Jesus; the more you relate and communion with Him the more He dispenses Himself in you.
Walking with Christ is a daily dispensation of Christ in us. The true church of Christ is birthed from the dispensation of God into man.
The purpose of Christ is for us to became a vessel that contains Him.
21 Has the potter no right over the clay, to make out of the same mass (lump) one vessel for beauty and distinction and honorable use, and another for menial or ignoble and dishonorable use?
22 What if God, although fully intending to show [the awfulness of] His wrath and to make known His power and authority, has tolerated with much patience the vessels (objects) of [His] anger which are ripe for destruction?
Every vessel must contain one thing, Christ.
God is interested in how much of Christ you have in you not so much whether you are right or wrong.
Being right or wrong is a matter of the law, it's not about conscience.
What matters in life is how much faithful we are with what He has given us. Faithfulness is a heart position.


When dealing with complex fractures, our Serious Injury team work alongside experts who are specialists in their own field to ensure the best possible advice and support is given.
Many accidents can result in multiple fractures: a motorcycle accident, a car accident or an accident at work.
Dealing with issues as a result of complex fractures requires the instruction of experts who are specialists in their own field and who are able to work with specialists in other disciplines. A team approach is what is needed, and our Serious Injury team is able to co-ordinate that approach to ensure early rehabilitation and the instruction of appropriate experts who can work alongside your treating team.
Dealing with complex fractures requires experience and expertise, and our Serious Injury team is able to provide advice for you and your family.


As Walt Disney World celebrates its 45th anniversary, I look back at the crazy experiences I would enjoy with my family on our family trips to the Vacation Kingdom. Whether, it was getting stuck in strollers, being ditched for Space Mountain, or fleeing from the rainstorm of seagull poop, every story was memorable. Hope you enjoy!


text:
Mare Fœcunditatis ("Mar de la Fertilidad" o "Mar de la Fecundidad") es un mar lunar de 840 kilómetros de diámetro. Su cuenca data del período Pre-Nectárico, los materiales circundantes del Nectárico y los interiores del Ímbrico Superior son más delgados que los del Mare Crisium o del Mare Tranquillitatis. Su cuenca se solapa con las de los mares Tranquillitatis al oeste; y con Crisium y Nectaris y el impacto de Langrenus al este.

En la parte oriental de este mar, alunizó en 1970 la sonda soviética Luna 16.

Sinus Successus

El Sinus Successus ("Bahía del Éxito") situado en las coordenadas , es un saliente en la parte nororiental del Mare Fecunditatis, con un diámetro de 126.65 km. Al este, se sitúa el cráter Condon, al sur el cráter Webb. Justo al noroeste de esta bahía, en 1971 se estrelló la sonda soviética Luna 18 y en 1972, muy cerca de este lugar, alunizó la sonda Luna 20.

Véase también
Anexo:Mares lunares
Anexo:Lista de valles lunares
Anexo:Lista de montañas lunares
Anexo:Lista de cráteres lunares

Referencias

Enlaces externos

 Digital Lunar Orbiter Photographic Atlas of the Moon.
 Mapa LROC

Mares de la Luna
Cuadrángulo LQ21


Fort Lauderdale, Fla., criminal defense attorney Sean Conway claims he was within his First Amendment rights and should not face disciplinary action over his blog comments calling one of the judges he practices before an "evil, unfair witch" who is "seemingly mentally ill". (Jordana Mishory, "Attorney Argues His 'Witch' Comments About Judge Are Protected Speech", Daily Business Review, Jul. 16; earlier). To me, this seems rather to miss the point: sure, almost everyone but a member of the local bar enjoys or should enjoy a First Amendment right to call a judge an evil, unfair witch. Lawyers admitted to practice, however, enlist as "officers of the court" with special obligations, among which may be (to name only one) to avoid the sorts of displays of enmity that might complicate future cases before that judge, as by provoking recusal. For an extreme instance, see the Geoffrey Fieger episode recounted here, here, here, and here. More on what lawyers can say about judges from Bruce Campbell (Campbell & Chadwick) at Texas Lawyer.
While calling her a "witch" was a juvenile choice of words, all of us (even attorneys) have the right to criticize elected officials. Provided he did not do it in court or otherwise disrupt court, he should not have been disciplined.
While judicial immunity makes many judges "above the law," judicial robes cannot, and should not, protect a judge from critics.
But as was pointed out, the specter of recusal makes this open to gaming. You draw a judge you know will not be favorable to your arguments and you publicly disparage them and then demand a new one since you one you insulted may not be fair.
4. You eliminate the gaming described by OBQuiet while preserving the necessary ability to subject judges to criticism from those who see them up close.
5. If the purpose of the existing policy is to improve respect for judges, why would I respect them if a single harsh comment is considered, in the eyes of the law, enough to make them forsake their duty in favor of a vendetta?
The particular judge repeatedly sought to deprive criminal defendants who appeared in her court of their speedy trial rights; Conway posted comments disparaging her practice in a blog whose audience was local attorneys. Political hyperbole (calling her an evil unfair witch on Halloween eve) has been part and parcel of our political culture since before the revolution. The ACLU is right; Conway made no false statements, and should therefore not be subject to discipline.
Finally, the recusal manipulation concern is unfounded. Judges must recuse themselves when they reasonably may be seen to be biased against a party, not against his lawyer. Cases routinely reject recusal motions that rest on out of court statements made by counsel critical of a sitting judge precisely because a contrary rule would give counsel veto power over the judge assigned to a case.
This is not even a close question. Calling a judge a "witch" or "evil" is a statement of opinion, not fact; it does not violate the bar rule, is not defamatory, and is perfectly appropriate outside of court.
Before a judge, an attorney must always be respectful and civil to him or her, and the same goes from the judge to the attorney. Outside, attorneys are perfectly entitled to use strong language to condemn judicial corruption, misconduct, or intentional error. Judges are public officials, and they must endure criticism stoically.
I don't even understand what this provoke recusal point means. It is well established that a party or attorney cannot use his or her intentional act towards a judge as grounds for disqualification. If the judge is so thin-skinned that he or she loses composure towards a party or attorney who has aimed sharp comments at the judge, then that judge needs to get off the bench.
Tough issue. My feeling is that the problem is not the gist of what was said but the way that in which it was said. I've never had the guts to do it but I would love to call out judges who treat parties and lawyers without respect or use their power for the sake of it (I could go on and on). But if I ever do, it would be analysis of the facts and opinions without emotionally charged words. But that is easy for me to say because I'm not a big fan of emotionally charged speech. It is just a really tough issue. I think it is just stupid and unprofessional to say what he said and I condemn it. Should it be sanctionable? I really don't know.
Anyone interested in this issue should check out Huminski v. Corsones, 396 F.3d 53 (2nd Cir. 2005) to see how retalitory and abusive judges and the system (the court clerk and sheriff acted in concert) – that is supposed to serve the People – actually can be. See also Cannon v Commission on Judicial Performance (1975) 14 Cal.3d 678, Barrett v. Harrington, 130 F.3d 246 (6th Cir. 1997)and Soliz v. Williams (1999) 74 Cal.App.4th 577. GLZ.


text:
You Have to See Google's Amazing New 'Landscraper' HQ in London
© HayesDavidson
Charlotte Luxford
Architecture & Design Editor16 June 2017
Google's swanky new London HQ, designed by starchitect firms Bjarke Ingels and Thomas Heatherwick, is set to be an impressive one million-square-feet 'landscraper' that will be longer than the Shard is tall when it's completed.
The submitted plans for the campus in the heart of King's Cross will be Google's first building to be wholly owned and designed specifically for the technology giant, outside of the US. Once it's gone through the planning stages, construction of the 11-storey building should begin in 2018.
Google has employed maverick architect Bjarke Ingels and homegrown Thomas Heatherwick, who's best-known for the new London bus design and the 2012 Olympic Cauldron, to design the new campus, which will house 7,000 Google employees.
Pulling into King's Cross station you'll be able to see the new building once it's finished, as it will run parallel to the railway platforms. At the top floor of the new HQ, a 200 metre-long trail will run through the roof with four cafes to choose from, one of which covers three storeys, with a promenade that looks back down towards the station.
A split-level rooftop garden will also give employees some much-needed respite away from the office, with three zones called 'gardens', 'fields' and 'plateau', with produce growing on-site, including strawberries and gooseberry bushes.
Staff will also be able to enjoy a luxurious wellness centre that's equipped with several gyms, treatment rooms, a swimming pool, and an indoor sports court.
The new building will also be combined with Google's current London location at 6 Pancras Square and one other office around the corner to complete the campus.


3rd Divisional Ammunition Column, No 1 Section.
It appears that Hickson was the name John, and an older sister Emma were born under, and that Tomlinson was the family name of their step father. The family, minus Emma, emigrated to Australia on the SS Pakeha, leaving Liverpool, and arriving in Fremantle on 18 May 1911. John, Dorothy, Wilfred and Walter (Jnr) with Walter (Snr) and Ellen Tomlinson.
Electoral Roll entries - 1916 and 1917 list JH Tomlinson at the 281 mile siding on the Trans Railway.
John began his training at Blackboy Hill, but completed his artillery preparation at Maribyrnong in Victoria.
On arrival in England he was taken on strength of the 3rd Division Ammunition Column (3DAC) where training continued until he was posted to France on 24 Nov 1916.
On 24 Jun 1917 he received a minor wound to his back requiring some attention from the 3rd New Zealand Field Ambulance, but he returned to duty the same day. However, for missing the 2:00 pm parade on 27 Sep 1917, John was confined to barracks for 7 days, but by Nov 1917 all was well, and he took a 2 week furlough in England.
Appointed acting Bombardier on 19 Jan 1918, but reverted at his own request on 8 Jun 1918.
John married Millicent Alice Grace Trame in Perth during 1927 and it would appear that sometime before 1931 John drops the Tomlinson name and reverts to Hickson.
Electoral Roll entries - 1925 a labourer [railway employee in POD] living at "Prospect" in Armadale; In 1931 - 1943 he and Millicent are living at "Grenfell", Railway avenue, Armadale, orchardist; 1954 - 1972 John and Millicent are living at 64 First Avenue, Kelmscott (now known as Banyard avenue).
No children found in BDM or newspapers.
Millicent died 2 Apr 1977 in Subiaco, aged 89.
This page was last edited on 24 July 2018, at 07:11.


We are an intergenerational church community that values highly the presence of children in our midst. To that end we offer the following programming for children.
Our focus in Sunday School is on learning in a fun and interactive environment. We use a dynamic curriculum which focuses on Biblical stories and faith practices and includes crafts and other activities.
Kids are also part of our worshiping community. They gather with the congregation in the Sunday service for a children's sermon before Sunday School and rejoin the service following their class. The children also prepare a Christmas Program for the congregation and are involved in our Easter Sunday morning service.
Beyond Sunday School, we offer a two-year program of Confirmation for youth in grades 7 and 8. Confirmation is an opportunity beyond Sunday School for youth to intentionally explore their Christian identity and the place and relevance of faith in their lives. At the end of the program youth are offered to opportunity to publicly affirm their faith during a special service of celebration.
The first year of the program is an in-depth exploration of the Bible and its relevance to our lives today while the second year focuses more on what it means to have faith and to live as a disciple of Jesus Christ in the real world.
This year, the Confirmation class meets on Wednesday evenings from 7–8 pm.
For one week every July we offer a daily program of fun and learning known as Vacation Bible School. Every morning during this week kids from the congregation and the neighbourhood gather to sing, make crafts, enjoy drama, eat, play games, and learn about the Bible as they travel through a series of interactive stations. It's always a high-energy time of fun and friendship that helps the kids to explore in an engaging way the Bible's message of God's unconditional love for them and all the world. Watch for updates on our website about the program for the upcoming summer.


At a glance, the AMX1 looks too expensive to be here, and not just because it bears the legend's name.
It's not a bells-and-whistles approach, just solid spec choices throughout: Tiagra groupset, FSA finishing kit and a Shimano RS10 wheelset shod with Vittoria Zaffiro tyres. All tried and tested stuff.
The triple-butted frame combined with carbon fork delivers a reassuring ride – great stability at speed, holding lines well through sweeping turns.
All things considered, there's very little to complain about, with the possible exception that a bit of dieting could further aid its appeal, as it's a pound heavier than the Ghost, despite having a very similar spec.


text:
ERRIN Chair to speak at Knowledge Exchange Platform on role of regions in ERA & Horizon Europe
On Tuesday 22 June from 09:00 CEST, ERRIN Chair Sarah English (Scotland Europa) will highlight the importance of ecosystem thinking within the renewed ERA during the Committee of the Regions and European Commission's Knowledge Exchange Platform.
Main Horizon Europe work programme adopted
The European Commission has adopted the main work programme of Horizon Europe for the period 2021-2022. The programme outlines the objectives and topic areas that will receive a share of €14.7 billion in funding.
ERRIN selected to join the European Commission's I3 Expert Group
ERRIN has been selected to join the European Commission's expert group on Interregional Innovation Investment - the I3 Expert Group.
By Gaia Ialisa Marotta
Deadline extension - Open Call to join the Be.CULTOUR community
The deadline of the Open Call to join the Be.CULTOUR community has been extended to Tuesday 8th June. ERRIN is building a community of passionate regional representatives committed to shaping the future of cultural tourism in their territory.
Join the Be.CULTOUR Community and foster your regional development through circular cultural tourism
ERRIN is building a community of passionate regional representatives committed to shaping the future of cultural tourism in their territory. Twelve local and regional representatives will have the opportunity to benefit from a peer-learning scheme that follows the pilot/mirror approach. Applications are open until 30 May 2021!
By Anna Tranberg
ERA governance taking shape – developing a Pact for research and innovation in Europe
The governance of the new ERA is taking shape with the first action being the adoption of the Pact for research and innovation in Europe. On 20 April, ERRIN participated in a workshop together with the Commission, Member States, and other stakeholder organisations to provide input on the first draft agreement of the Pact.


A not too messy, but not too delicate drip of melted ice cream down a waffle cone. Perfectly fluffed pillows on a sofa with a book open to the exact right page and a visibly steaming cup of tea on a side table. That's Johanna Brannan Lowe's job.
Klafeta was kind enough to take over the Modern Midwest Instagram account for the afternoon and her photos did not disappoint. Check out our recap.
In Chicago's Lincoln Park neighborhood, the world renowned Steppenwolf Theatre is entering its 41st season. Helping lead the charge into the company's fifth decade is artistic director Anna D. Shapiro. We put the powerhouse director through our 18-question ringer to see where her Midwest roots (and tastes) lie.
The team at Üllo and their partners at MINIMAL have designed a simple solution to a seemingly complex problem in a beautiful way. With their successful funding on Kickstarter, Üllo is now in the pre-order stages and will be purifying your wine in the near future.
A beautiful design and a focus on process comes together to make one special coffee maker out of Chicago.
A television personality, a master sommelier, and a successful restaurateur are three impressive stand-alone feats. Alpana Singh has accomplished them all. And with a bang, if we may add.
Promoting a bike first company culture.
Megan and Dave Miller are a husband and wife duo with a duo of Chicago bakeries and a duo of James Beard Foundation Award nominations.
We put the renowned Chicago pastry chef, through our 18-question ringer to see where her Midwest roots (and tastes) lie.
Gramovox looks to reimagine audiovisual equipment.
Paul Miller of 7m Woodworking creates pieces that cannot be found anywhere else.


Based on encouraging results from a variety of studies, clinical trials are now starting to enroll patients using three different broad classes of stem-cell-based approaches.
The first stem-cell approach is hematopoietic stem-cell transplantation (HSCT). Hematopoietic stem cells from the bone marrow are the common precursor cells from which both red and white blood cells originate. The HSCT requires multiple steps. First, stem cells, which circulate throughout the bloodstream, are collected by taking blood from the patient. The stem cells are obtained by filtering the blood, while the other cells – especially the white blood cells that are responsible for MS attacks – are removed. These stem cells are then set aside and preserved while a wiping out or "ablation" of the immune system, typically with high-dose chemotherapy, occurs.
This intensive course of chemotherapy destroys most blood cells as well as the bone marrow, where the blood cells are formed. Then, the patient's own hematopoietic stem cells can be transplanted back into the blood, in an effort to completely "reset" the immune system with the hopes of abolishing the autoimmunity responsible for MS.
One trial of this technique is the High-Dose Immunosuppression and Autologous (stem-cell) Transplantation for Multiple Sclerosis (HALT MS) Study, for poor-prognosis MS. The HALT Phase II study is being conducted in 25 patients with highly active RRMS who have failed conventional therapy. The two-year follow-up results of the HALT study were reported in 2013.57 The treatment induced profound immune suppression and a high rate of sustained remissions at two years.
Further interim results covering three years of the study were published in early 2015.58 The trial found that 78 percent of the study subjects had no new disease activity. Treatment failed in five subjects, and two deaths occurred; one attributed to MS progression and one secondary to asthma. There have been 130 adverse events that were severe or life-threatening, most relating to low blood counts induced by the treatment approach. There were two suicide attempts, neither completed, both in patients reported to have an unremarkable history before the HSCT, meaning that neither had a history of psychological problems that might lead to suicide attempts. Study participants will be followed for five years in total to see how long the benefits of this treatment may continue, and if the safety profile proves to be manageable.
Another study in Sweden published previously59 found a high proportion of patients with aggressive, relapsing forms of MS, were free from disease activity following HSCT. A group of 41 patients participated in this study. They had a mean annualized relapse rate of 4.1 in the year preceding treatment, which means that on average, these individuals with very active disease were each experiencing four relapses in one year.
With a mean average follow-up time of nearly four years (47 months) after receiving the HSCT procedure, 89 percent of participants were relapse-free and 77 percent of participants had no disability progression, as measured by EDSS. In addition to the serious though expected side effects, including sepsis and fever, a small number of patients experienced other adverse events. These included a reactivation of herpes zoster in seven patients and thyroid disease in four patients; no deaths occurred in this trial.
In 2015, Burt and colleagues published the results of a larger study, giving data on 123 patients with RRMS and 28 patients with SPMS who underwent HSCT over a 10-year period.60 The study was open-label, meaning that everyone in the study received the treatment and thus there was no comparison group. The findings included a significant decrease in relapse rates and new MRI lesions. Four-year data showed that 80 percent were relapse-free and 87 percent were free of progression. Importantly, there was also a significant improvement in disability scores for those patients in which long-term data were available.
While the data from this study is encouraging, it is important to point out the open-label nature of this study that may have led to biased results. Also, this method of treatment is not without risks. The administration of potent chemotherapy and the ablation of the bone marrow put a patient at risk for infections and other complications. In this trial, the main adverse events were related to the development of thyroid disease and other autoimmune conditions. Infections were not common, and those that did occur were not severe. Two cases of cancer occurred post-transplant, but it is unknown if there was any causal relationship with the HSCT. The group that carried out this study is currently conducting a randomized trial of HSCT versus standard MS therapies.
A second type of stem-cell therapy utilizes mesenchymal stem cells. These cells can be derived from tissues other than bone marrow and do not require a "wiping out" of the immune system for their use. In a Phase IIa study61, 10 patients with SPMS with involvement of the visual system were infused with self-derived (autologous) mesenchymal stem cells.
The researchers found an improvement in visual function, as well as an improvement in other laboratory and imaging measures of optic-nerve function. No serious adverse events or deaths occurred. Although the mechanism by which mesenchymal stem cells exert their beneficial effects has not been fully understood, these cells do not need to penetrate into the nervous system and grow at the site of lesions, such as the optic nerve. The results of this study were suggestive of a more generalized neuroprotective effect; this effect is discussed in the next section.
Multiple other Phase I or Phase II trials of mesenchymal stem cell therapies are currently either in the planning stages or recruiting, including a collaborative effort named MESEMS.62 MESEMS is an international group of eight independent study centers that have created a shared study design in order to be able to increase the power and significance of their results. The group plans to enroll 160 patients in total, with the goal of obtaining the data necessary to plan a more definitive Phase III trial.
A third approach to investigating stem-cell therapy, and perhaps the one most in-line with the commonsense notions about the potential uses of stem cells, is to utilize them for the purpose of directly regenerating myelin that has been damaged by MS. This approach requires multiple, complex steps in order to be successful. Techniques must be employed to: harvest a patient's stem cells; grow and multiply them; administer them to the patient; ensure that they get into the central nervous system; ensure that they are not destroyed by the body's own immune system; ensure that they grow to become the correct type of cell (for instance, to restore myelin); and to ensure that they do not overgrow or cause damage to the nervous system.
This approach to stem-cell therapy is being investigated in an open-label Phase I clinical trial63 announced in fall 2013. This small, single-center trial of 20 patients with progressive MS has fully enrolled. The study design involves infusing doses of stem cells harvested from the patients' own bone marrow directly into the cerebral spinal fluid (CSF), typically done via lumbar puncture, repeatedly over six months.
As an open-label study, the primary endpoint will be to determine the safety of this approach. Potential subsequent investigations may pursue efficacy, determine optimal dose and route of administration, and identify patients most likely to benefit from this therapeutic approach. It is important to recognize that as an open-label, uncontrolled, unblinded Phase I study, this project is at the earliest stages of experimental, human research. It cannot, by its very design, provide meaningful information about efficacy, despite what continued to be reported by the media.


text:
Zsombor Piros (Budapest, 13 de octubre de 1999) es un tenista profesional húngaro.

Carrera profesional
Su mejor ranking individual es el N.º 171 alcanzado el 9 de enero de 2023.

Títulos ATP Challenger (2; 2+0)

Individuales (2)

Finalista (2)

Referencias

Enlaces externos
Ficha oficial de la ATP

Tenistas masculinos de Hungría
Nacidos en Budapest


Ari Diamond, a Portland family-owned jewelryshowroom will be host to 14 of the remaining Gypsy Brides. Their 25th Anniversary is the kick off to a long-running exhibition. Visit the showroom between now – February 28, 2018 to see sparkles of all kinds.


Syrian Democratic Council's Aleppo Youth Assembly issued a press release on the violations of Afrin children by the occupying Turkish state.
Photographs of Afrin children who lost their life in the attacks carried out by the occupying Turkish state and their mercenary allies were brought in front of the Council's building during the meeting attended by dozens of students and members of the MSD Youth Assembly.
Statement read by Syrian Democratic Council (MSD) Aleppo Office member Evin Seydo said: "Crimes against children and massacres take place all over the world, and also in Afrin. The occupying Turkish state and their mercenary allies have murdered children in Afrin, deprived them of their rights to study, denied them their security and homes. Where are the world organizations that call for human and children's rights? Why are they silent while these massacres happen? Children had their houses destroyed, their families killed in front of their eyes".
The statement added: "As young people belonging to the Syrian Youth Council, we call on the world public and human rights organizations to act to stop these violations against the new generations".


text:
Ennis actress Denise Gough lands role in Game Of Thrones prequel
Published on 10/01/2019 in Home/News by clareecho1
ENNIS actress Denise Gough has landed a leading role in upcoming prequel series to Game Of Thrones, it has been confirmed.
The Olivier-award winning actress, one of 11 children, has built a strong stage profile in recent years while also starring in a number of screen successes such as Poldark (alongside Naomi Watts), The Walking Dead and Jimmy's Hall alongside fellow Ennis actress Simone Kirby.
However this latest role is expected to be the 39-year-old's highest profile work to date.
British director SJ Clarkson will take charge of the pilot episode of the yet-to-be named series which also stars Sheila Atim, Ivanno Jeremiah, Georgie Henley, Alex Sharp and Toby Regbo.
The Game Of Thrones prequel takes place thousands of years before the events of the main story line, with HBO saying it "chronicles the world's descent from the Age Of Heroes into its darkest hour".
Gough's new film Colette, starring Keira Knightley, has just opened in cinemas.
Tags: Denise GoughGame of Thronesprequel
Denise Gough nominated for Tony Award
IS THERE anything this woman can't do? Just weeks after receiving an Olivier Award, Ennis actress
Second Olivier Award for Ennis actress Denise Gough
THE legacy of the super talented Ennis based Gough family continues as Denise has just landed
Next Game of Thrones to be filmed in Limerick
A FEW of you may have heard of a minor TV series called Game of Thrones,
Previous Story Previous post: Cian Dillon calls time on his inter-county career
Next Story Next post: Aoibhín's Top Five Ways to Get Active in Clare
IS THERE anything this woman can't do? Just weeks after
THE legacy of the super talented Ennis based Gough family


text:
/****************************/
/* THIS IS OPEN SOURCE CODE */
/****************************/

/*
* File:    threads.c
* Author:  Philip Mucci
*          mucci@cs.utk.edu
* Mods:    Kevin London
*          london@cs.utk.edu
*/

/* This file contains thread allocation and bookkeeping functions */

#include "papi.h"
#include "papi_internal.h"
#include "papi_vector.h"
#include "papi_memory.h"
#include <string.h>
#include <unistd.h>

/*****************/
/* BEGIN GLOBALS */
/*****************/

/* The following globals get initialized and cleared by:
   extern int _papi_hwi_init_global_threads(void);
   extern int _papi_hwi_shutdown_thread(ThreadInfo_t *thread); */

/* list of threads, gets initialized to master process with TID of getpid() */

volatile ThreadInfo_t *_papi_hwi_thread_head;

/* If we have TLS, this variable ALWAYS points to our thread descriptor. It's like magic! */

#if defined(HAVE_THREAD_LOCAL_STORAGE)
THREAD_LOCAL_STORAGE_KEYWORD ThreadInfo_t *_papi_hwi_my_thread;
#endif

/* Function that returns and unsigned long thread identifier */

unsigned long ( *_papi_hwi_thread_id_fn ) ( void );

/* Function that sends a signal to other threads */

#ifdef ANY_THREAD_GETS_SIGNAL
int ( *_papi_hwi_thread_kill_fn ) ( int, int );
#endif

/*****************/
/*  END  GLOBALS */
/*****************/

static int
lookup_and_set_thread_symbols( void )
{
#if defined(ANY_THREAD_GETS_SIGNAL)
	int retval;
	char *error_ptc = NULL, *error_ptk = NULL;
	void *symbol_ptc = NULL, *symbol_ptk = NULL, *handle = NULL;

	handle = dlopen( NULL, RTLD_LAZY );
	if ( handle == NULL ) {
		PAPIERROR( "Error from dlopen(NULL, RTLD_LAZY): %d %s", errno,
				   dlerror(  ) );
		return ( PAPI_ESYS );
	}

	symbol_ptc = dlsym( handle, "pthread_self" );
	if ( symbol_ptc == NULL ) {
		error_ptc = dlerror(  );
		THRDBG( "dlsym(%p,pthread_self) returned NULL: %s\n",
				( error_ptc ? error_ptc : "No error, NULL symbol!" ) );
	}

	symbol_ptk = dlsym( handle, "pthread_kill" );
	if ( symbol_ptk == NULL ) {
		error_ptk = dlerror(  );
		THRDBG( "dlsym(%p,pthread_kill) returned NULL: %s\n",
				( error_ptk ? error_ptk : "No error, NULL symbol!" ) );
	}

	dlclose( handle );

	if ( !( ( _papi_hwi_thread_kill_fn && _papi_hwi_thread_id_fn ) ||
			( !_papi_hwi_thread_kill_fn && !_papi_hwi_thread_id_fn ) ) )
		return ( PAPI_EMISC );

	_papi_hwi_thread_kill_fn = ( int ( * )( int, int ) ) symbol_ptk;
	_papi_hwi_thread_id_fn = ( unsigned long ( * )( void ) ) symbol_ptc;
#endif
	return ( PAPI_OK );
}

static ThreadInfo_t *
allocate_thread( int tid )
{
	ThreadInfo_t *thread;
	int i;

	/* The Thread EventSet is special. It is not in the EventSet list, but is pointed
	   to by each EventSet of that particular thread. */

	thread = ( ThreadInfo_t * ) papi_malloc( sizeof ( ThreadInfo_t ) );
	if ( thread == NULL )
		return ( NULL );
	memset( thread, 0x00, sizeof ( ThreadInfo_t ) );

	thread->context =
		( hwd_context_t ** ) papi_malloc( sizeof ( hwd_context_t * ) *
										  ( size_t ) papi_num_components );
	if ( !thread->context ) {
		papi_free( thread );
		return ( NULL );
	}

	thread->running_eventset =
		( EventSetInfo_t ** ) papi_malloc( sizeof ( EventSetInfo_t * ) *
										   ( size_t ) papi_num_components );
	if ( !thread->running_eventset ) {
		papi_free( thread->context );
		papi_free( thread );
		return ( NULL );
	}

	for ( i = 0; i < papi_num_components; i++ ) {
		thread->context[i] =
			( void * ) papi_malloc( ( size_t ) _papi_hwd[i]->size.context );
		thread->running_eventset[i] = NULL;
		if ( thread->context[i] == NULL ) {
			for ( i--; i >= 0; i-- )
				papi_free( thread->context[i] );
			papi_free( thread->context );
			papi_free( thread );
			return ( NULL );
		}
		memset( thread->context[i], 0x00,
				( size_t ) _papi_hwd[i]->size.context );
	}

	if ( _papi_hwi_thread_id_fn ) {
           thread->tid = ( *_papi_hwi_thread_id_fn ) (  );
	}
	else {
	   thread->tid = ( unsigned long ) getpid(  );
	}

	thread->allocator_tid=thread->tid;

	if (tid == 0 ) {
	}
	else {
	  thread->tid=tid;
	}

	THRDBG( "Allocated thread %ld at %p, allocator: %ld\n", thread->tid,
		thread,
		thread->allocator_tid );

	return thread;
}

static void
free_thread( ThreadInfo_t ** thread )
{
	int i;
	THRDBG( "Freeing thread %ld at %p\n", ( *thread )->tid, *thread );

	for ( i = 0; i < papi_num_components; i++ ) {
		if ( ( *thread )->context[i] )
			papi_free( ( *thread )->context[i] );
	}

	if ( ( *thread )->context )
		papi_free( ( *thread )->context );

	if ( ( *thread )->running_eventset )
		papi_free( ( *thread )->running_eventset );

	memset( *thread, 0x00, sizeof ( ThreadInfo_t ) );
	papi_free( *thread );
	*thread = NULL;
}

static void
insert_thread( ThreadInfo_t * entry, int tid )
{
	_papi_hwi_lock( THREADS_LOCK );

	if ( _papi_hwi_thread_head == NULL ) {	/* 0 elements */
		THRDBG( "_papi_hwi_thread_head is NULL\n" );
		entry->next = entry;
	} else if ( _papi_hwi_thread_head->next == _papi_hwi_thread_head ) {	/* 1 elements */
		THRDBG( "_papi_hwi_thread_head was thread %ld at %p\n",
				_papi_hwi_thread_head->tid, _papi_hwi_thread_head );
		_papi_hwi_thread_head->next = entry;
		entry->next = ( ThreadInfo_t * ) _papi_hwi_thread_head;
	} else {				 /* 2+ elements */

		THRDBG( "_papi_hwi_thread_head was thread %ld at %p\n",
				_papi_hwi_thread_head->tid, _papi_hwi_thread_head );
		entry->next = _papi_hwi_thread_head->next;
		_papi_hwi_thread_head->next = entry;
	}

	_papi_hwi_thread_head = entry;

	THRDBG( "_papi_hwi_thread_head now thread %ld at %p\n",
			_papi_hwi_thread_head->tid, _papi_hwi_thread_head );

	_papi_hwi_unlock( THREADS_LOCK );

#if defined(HAVE_THREAD_LOCAL_STORAGE)
	/* Don't set the current local thread if we are a fake attach thread */
        if (tid==0) {
	   _papi_hwi_my_thread = entry;
	   THRDBG( "TLS for thread %ld is now %p\n", entry->tid,
			_papi_hwi_my_thread );
	}
#else
	( void ) tid;
#endif
}

static int
remove_thread( ThreadInfo_t * entry )
{
	ThreadInfo_t *tmp = NULL, *prev = NULL;

	_papi_hwi_lock( THREADS_LOCK );

	THRDBG( "_papi_hwi_thread_head was thread %ld at %p\n",
			_papi_hwi_thread_head->tid, _papi_hwi_thread_head );

	/* Find the preceding element and the matched element,
	   short circuit if we've seen the head twice */

	for ( tmp = ( ThreadInfo_t * ) _papi_hwi_thread_head;
		  ( entry != tmp ) || ( prev == NULL ); tmp = tmp->next ) {
		prev = tmp;
	}

	if ( tmp != entry ) {
		THRDBG( "Thread %ld at %p was not found in the thread list!\n",
				entry->tid, entry );
		return ( PAPI_EBUG );
	}

	/* Only 1 element in list */

	if ( prev == tmp ) {
		_papi_hwi_thread_head = NULL;
		tmp->next = NULL;
		THRDBG( "_papi_hwi_thread_head now NULL\n" );
	} else {
		prev->next = tmp->next;
		/* If we're removing the head, better advance it! */
		if ( _papi_hwi_thread_head == tmp ) {
			_papi_hwi_thread_head = tmp->next;
			THRDBG( "_papi_hwi_thread_head now thread %ld at %p\n",
					_papi_hwi_thread_head->tid, _papi_hwi_thread_head );
		}
		THRDBG( "Removed thread %p from list\n", tmp );
	}

	_papi_hwi_unlock( THREADS_LOCK );

#if defined(HAVE_THREAD_LOCAL_STORAGE)
	_papi_hwi_my_thread = NULL;
	THRDBG( "TLS for thread %ld is now %p\n", entry->tid,
			_papi_hwi_my_thread );
#endif

	return PAPI_OK;
}

int
_papi_hwi_initialize_thread( ThreadInfo_t ** dest, int tid )
{
	int retval;
	ThreadInfo_t *thread;
	int i;

	if ( ( thread = allocate_thread( tid  ) ) == NULL ) {
		*dest = NULL;
		return PAPI_ENOMEM;
	}

	/* Call the component to fill in anything special. */

	for ( i = 0; i < papi_num_components; i++ ) {
	    if (_papi_hwd[i]->cmp_info.disabled) continue;
	    retval = _papi_hwd[i]->init_thread( thread->context[i] );
	    if ( retval ) {
	       free_thread( &thread );
	       *dest = NULL;
	       return retval;
	    }
	}

	insert_thread( thread, tid );

	*dest = thread;
	return PAPI_OK;
}

#if defined(ANY_THREAD_GETS_SIGNAL)

/* This is ONLY defined for systems that enable ANY_THREAD_GETS_SIGNAL
   since we must forward signals sent to non-PAPI threads.

   This is NOT compatible with thread local storage, since to broadcast
   the signal, we need a list of threads. */

int
_papi_hwi_broadcast_signal( unsigned int mytid )
{
	int i, retval, didsomething = 0;
	volatile ThreadInfo_t *foo = NULL;

	_papi_hwi_lock( THREADS_LOCK );

	for ( foo = _papi_hwi_thread_head; foo != NULL; foo = foo->next ) {
		/* xxxx Should this be hardcoded to index 0 or walk the list or what? */
		for ( i = 0; i < papi_num_components; i++ ) {
			if ( ( foo->tid != mytid ) && ( foo->running_eventset[i] ) &&
				 ( foo->running_eventset[i]->
				   state & ( PAPI_OVERFLOWING | PAPI_MULTIPLEXING ) ) ) {
				/* xxxx mpx_info inside _papi_mdi_t _papi_hwi_system_info is commented out.
				   See papi_internal.h for details. The multiplex_timer_sig value is now part of that structure */
			  THRDBG("Thread %ld sending signal %d to thread %ld\n",mytid,foo->tid,
				  (foo->running_eventset[i]->state & PAPI_OVERFLOWING ? _papi_hwd[i]->cmp_info.hardware_intr_sig : _papi_os_info.itimer_sig));
			  retval = (*_papi_hwi_thread_kill_fn)(foo->tid,
				  (foo->running_eventset[i]->state & PAPI_OVERFLOWING ? _papi_hwd[i]->cmp_info.hardware_intr_sig : _papi_os_info.itimer_sig));
			  if (retval != 0)
				return(PAPI_EMISC);
			}
		}
		if ( foo->next == _papi_hwi_thread_head )
		  break;
	}
	_papi_hwi_unlock( THREADS_LOCK );

	return ( PAPI_OK );
}
#endif

/* This is undefined for systems that enable ANY_THREAD_GETS_SIGNAL
   since we always must enable threads for safety. */

int
_papi_hwi_set_thread_id_fn( unsigned long ( *id_fn ) ( void ) )
{
#if !defined(ANY_THREAD_GETS_SIGNAL)
	/* Check for multiple threads still in the list, if so, we can't change it */

	if ( _papi_hwi_thread_head->next != _papi_hwi_thread_head )
		return ( PAPI_EINVAL );

	/* We can't change the thread id function from one to another,
	   only NULL to non-NULL and vice versa. */

	if ( ( id_fn != NULL ) && ( _papi_hwi_thread_id_fn != NULL ) )
		return ( PAPI_EINVAL );

	_papi_hwi_thread_id_fn = id_fn;

	THRDBG( "Set new thread id function to %p\n", id_fn );

	if ( id_fn )
		_papi_hwi_thread_head->tid = ( *_papi_hwi_thread_id_fn ) (  );
	else
		_papi_hwi_thread_head->tid = ( unsigned long ) getpid(  );

	THRDBG( "New master tid is %ld\n", _papi_hwi_thread_head->tid );
#else
	THRDBG( "Skipping set of thread id function\n" );
#endif

	return PAPI_OK;
}

static int _papi_hwi_thread_free_eventsets(long tid) {

   EventSetInfo_t *ESI;
   ThreadInfo_t *master;
   DynamicArray_t *map = &_papi_hwi_system_info.global_eventset_map;
   int i;

   master = _papi_hwi_lookup_thread( tid );

   _papi_hwi_lock( INTERNAL_LOCK );

   for( i = 0; i < map->totalSlots; i++ ) {
      ESI = map->dataSlotArray[i];
      if ( ( ESI ) && (ESI->master!=NULL) ) {

	 if ( ESI->master == master ) {
	    THRDBG("Attempting to remove %d from tid %ld\n",ESI->EventSetIndex,tid);

	    /* Code copied from _papi_hwi_remove_EventSet(ESI);      */
	    _papi_hwi_free_EventSet( ESI );
	    map->dataSlotArray[i] = NULL;
	    map->availSlots++;
	    map->fullSlots--;
	 }
      }
   }

   _papi_hwi_unlock( INTERNAL_LOCK );

   return PAPI_OK;
}

int
_papi_hwi_shutdown_thread( ThreadInfo_t * thread, int force_shutdown )
{
	int retval = PAPI_OK;
	unsigned long tid;
	int i, failure = 0;

	if ( _papi_hwi_thread_id_fn )
		tid = ( *_papi_hwi_thread_id_fn ) (  );
	else
		tid = ( unsigned long ) getpid(  );

        THRDBG("Want to shutdown thread %ld, alloc %ld, our_tid: %ld\n",
	       thread->tid,
	       thread->allocator_tid,
	       tid);

	if ((thread->tid==tid) || ( thread->allocator_tid == tid ) || force_shutdown) {

                _papi_hwi_thread_free_eventsets(tid);

		remove_thread( thread );
		THRDBG( "Shutting down thread %ld at %p\n", thread->tid, thread );
		for( i = 0; i < papi_num_components; i++ ) {
		   if (_papi_hwd[i]->cmp_info.disabled) continue;
		   retval = _papi_hwd[i]->shutdown_thread( thread->context[i]);
		   if ( retval != PAPI_OK ) failure = retval;
		}
		free_thread( &thread );
		return ( failure );
	}

	THRDBG( "Skipping shutdown thread %ld at %p, thread %ld not allocator!\n",
			thread->tid, thread, tid );
	return PAPI_EBUG;
}

/* THESE MUST BE CALLED WITH A GLOBAL LOCK */

int
_papi_hwi_shutdown_global_threads( void )
{
        int err,num_threads,i;
	ThreadInfo_t *tmp,*next;
	unsigned long our_tid;

	tmp = _papi_hwi_lookup_thread( 0 );

	if ( tmp == NULL ) {
	   THRDBG( "Did not find my thread for shutdown!\n" );
	   err = PAPI_EBUG;
	}
	else {
	   our_tid=tmp->tid;

	   THRDBG("Shutting down %ld\n",our_tid);

	   err = _papi_hwi_shutdown_thread( tmp, 1 );

	   /* count threads */
	   tmp = ( ThreadInfo_t * ) _papi_hwi_thread_head;
	   num_threads=0;
	   while(tmp!=NULL) {
	      num_threads++;
	      if (tmp->next==_papi_hwi_thread_head) break;
	      tmp=tmp->next;
	   }

	   /* Shut down all threads allocated by this thread */
	   /* Urgh it's a circular list where we removed in the loop  */
	   /* so the only sane way to do it is get a count in advance */
	   tmp = ( ThreadInfo_t * ) _papi_hwi_thread_head;

	   for(i=0;i<num_threads;i++) {

	      next=tmp->next;

	      THRDBG("looking at #%d %ld our_tid: %ld alloc_tid: %ld\n",
		     i,tmp->tid,our_tid,tmp->allocator_tid);

		 THRDBG("Also removing thread %ld\n",tmp->tid);
	         err = _papi_hwi_shutdown_thread( tmp, 1 );

	      tmp=next;

	   }
	}

#ifdef DEBUG
	if ( ISLEVEL( DEBUG_THREADS ) ) {
		if ( _papi_hwi_thread_head ) {
			THRDBG( "Thread head %p still exists!\n", _papi_hwi_thread_head );
		}
	}
#endif

#if defined(HAVE_THREAD_LOCAL_STORAGE)
	_papi_hwi_my_thread = NULL;
#endif
	_papi_hwi_thread_head = NULL;
	_papi_hwi_thread_id_fn = NULL;
#if defined(ANY_THREAD_GETS_SIGNAL)
	_papi_hwi_thread_kill_fn = NULL;
#endif

	return err;
}

int
_papi_hwi_init_global_threads( void )
{
	int retval;
	ThreadInfo_t *tmp;

	_papi_hwi_lock( GLOBAL_LOCK );

#if defined(HAVE_THREAD_LOCAL_STORAGE)
	_papi_hwi_my_thread = NULL;
#endif
	_papi_hwi_thread_head = NULL;
	_papi_hwi_thread_id_fn = NULL;
#if defined(ANY_THREAD_GETS_SIGNAL)
	_papi_hwi_thread_kill_fn = NULL;
#endif

	retval = _papi_hwi_initialize_thread( &tmp , 0);
	if ( retval == PAPI_OK ) {
	   retval = lookup_and_set_thread_symbols(  );
	}

	_papi_hwi_unlock( GLOBAL_LOCK );

	return ( retval );
}

int
_papi_hwi_gather_all_thrspec_data( int tag, PAPI_all_thr_spec_t * where )
{
	int didsomething = 0;
	ThreadInfo_t *foo = NULL;

	_papi_hwi_lock( THREADS_LOCK );

	for ( foo = ( ThreadInfo_t * ) _papi_hwi_thread_head; foo != NULL;
		  foo = foo->next ) {
		/* If we want thread ID's */
		if ( where->id )
			memcpy( &where->id[didsomething], &foo->tid,
					sizeof ( where->id[didsomething] ) );

		/* If we want data pointers */
		if ( where->data )
			where->data[didsomething] = foo->thread_storage[tag];

		didsomething++;

		if ( ( where->id ) || ( where->data ) ) {
			if ( didsomething >= where->num )
				break;
		}

		if ( foo->next == _papi_hwi_thread_head )
			break;
	}

	where->num = didsomething;
	_papi_hwi_unlock( THREADS_LOCK );

	return ( PAPI_OK );

}