I'll be honest, of all the states on the East Coast, Maine has the biggest shoes to fill. Somehow my expectations of her rugged beauty are elevated to a level that, in all honesty, is likely setting things up for failure.
I am coming off of a Connecticut crisis when we cross the border into The Pine Tree State. Still feeling a little jittery with the idea of all those Lyme tainted ticks roaming through the lush forests, we press northward.


Chingiz Kanapyanov, deputy chairman of the Agency of the Republic of Kazakhstan for the regulation of the Almaty Regional Financial Centre (RFCA), answers questions from our magazine.
Mr Kanapyanov, what was 2007 like for the RFCA? What has the agency achieved so far?
On the whole, 2007 was a year of developing the stock market, and from that point of view, it was successful. We set up a national ratings agency, an educational centre, the RFCA Academy, and RFCA Media Holding. We also set up public information and education centres and a unified transfer and agency network on the basis of Kazpochta.
Last year a decision was taken on the capitalisation of the Kazakhstan Stock Exchange (KASE) and on its initial public offering (IPO) of shares. We also worked hard to attract new issuing agencies, investors and professional participants to the market. At present 50 broker and dealer companies have joined the RFCA. Twenty of them have been registered by the RFCA's authority and licensed under the Financial Monitoring Agency, including five with foreign involvement. At the same time the RFCA Agency has accredited 30 organisations, including six with foreign involvement. Some new foreign brokers and dealers have joined in – Deutsche Bank Securities, ABN AMRO Securities, etc. Thus, major world players have now joined the RFCA. We can say that the very concept of RFCA has become recognisable and understandable, both in Kazakhstan and abroad. World financial centres and stock exchanges – such as LSE, MICEX, NYSE Euronext, Tokyo and Hong Kong stock exchanges – have shown interest in it, to some extent.
At the end of 2007, the RFCA had 27 companies listed on its separate trading floor. Of course, this is not exactly what we expected, but you need to take account of two factors: first, a decision was taken to unify the RFCA's separate trading floor and KASE in the second half of the year, and second, the well-known adverse events both on world markets and in the Kazakh financial sector. All of that has made the players, banks and issuing agencies change their plans. A number of companies have decided not to seek listings on the Kazakh Stock Exchange, in the hope that market conditions will improve. An important role here was played by the introduction of new listing regulations for a joint trading floor.
How is the integration of the KASE and the RFCA's separate trading floors proceeding?
As you well know there are two trading floors, the main one and the RFCA's separate trading floor. Practice shows that this is not the best option: liquidity gets diluted, and investors and issuing agents get disorientated.
In this connection a strategic decision was taken to create a unified trading floor on the KASE. New listing regulations will come into force on 1st of June, KASE and the special trading floor will be united, and the special trading floor's privileges will be transferred to the rest of the Kazakh stock market. The KASE shares will be listed on the stock market as part of capitalization.
At the same time, the agency will hold on to 25% of shares and the rest will be offered both to Kazakh and foreign investors, but no more than 5% to any one party. This is a forced and, most likely, temporary measure aimed at maintaining the balance of interests of all sides, including professional players (banks, broker-dealer firms, and pension and investment funds).
The new regulatory framework which has been drafted for the unified trading floor with the involvement of experts from Singapore and London is at its final stage of approval by the Almaty Financial Centre and the Kazakh Stock Exchange.
In keeping with them, there will be three KASE trading floors: one for blue chips, another one for mid-caps and the third for start-ups. The last floor is our know-how. In that sector, the reporting requirements in terms of net income are not that stringent and therefore a company that has been set up virtually from scratch can immediately be listed on the stock market. This trading floor will mainly be aimed at small-scale and medium-scale business, a segment which until recently was virtually not represented on the market.
What is the situation like on the domestic stock market? What are the main problems?
The main problem is a relatively low liquidity level. The market lacks new issuers and new financial instruments. As regards the latter, we have now been actively working on the offering of financial instruments such as securitised debt obligations, securities, REITand on financial instruments that comply with Islamic law.
At the end of last year financial offerings included Sberbank shares and index funds of 60 Russian companies. We are hoping to bring in IPOs from Ukraine and China.
By listing Samruk's assets on the KASE, we will be able to increase liquidity. That was initially scheduled for December 2007, but due to various reasons it had to be delayed till the 2nd - 3rd quarter of this year. The companies are working on the form and mechanism of placing bonds and are finalizing its strategy. On top of that, a government decision has been taken to offer 24 state companies, which are still part of the committee for state property, on the market. This will be one of the last stages of privatisation.
We are working on ways of offering IPOs to the public. Most likely we will set up the investment fund, which will invest in blue chips and the fund will then be offered to the public. Certain restrictions will have to be imposed (as regards the investment amount) for bonds not to end up in one pair of hands. The fund itself should buy back the shares from the public.
Why did you set up institutions such as a national ratings agency and a specialised financial court? How is it going to affect the RFCA?
The national ratings agency is an important part of the domestic stock market because it assesses the credit rating of small and medium-sized companies.
From the economic point of view it has not always been effective, considering the scale of their business and the involvement of international rating agencies, such as Fitch, Moodys and S&P – the Big Troika. On top of that the agencies do not have offices in Kazakhstan, which means that their analytical reports are not always timely and precise as their experts lack information on the market situation. This is precisely why we set up the national ratings agency. We have used the experience of the Rating Agency Malaysia, RAM. The latter was set up in 1998. Having used the methodology of one of the main participants in the Big Troika, in three to four years RAM turned into the main rating agency in the Asia-Pacific region. We followed its suit. We are finalising the work on the methodology, hiring people and addressing other logistical issues. As a whole the ratings business is rather profitable, therefore as soon as the agency finds its feet, we will be able to move out and offer it either to a strategic investor or a Kazakh company.
At this stage our task is to provide domestic companies with the ratings that will be understood by a layman. The agency's job is also to make the Kazakh economy more transparent and competitive. Apart from the credit ratings it will also provide corporate governance ratings. We are closely working with the Kazakh association of independent directors on this issue.
As regards, the specialised financial court in Almaty, it was set up on 17th August 2006. This institution is rather unique not just for the Kazakh court system but for the rest of the CIS as well. It has the status of a regional court, which looks at civil and legal disputes only as a court of first instance. Relevant sections of the Supreme Court of the Republic of Kazakhstan would deal with appeals and oversight.
The financial court was set up with a view to simplifying legal proceedings for the RFCA players. There is no language barrier as business is conducted in Kazakh, Russian and English. The court mainly deals with financial and tax disputes, civil cases, arising as a result of broker or dealer activities. The court can also deal with labour and land disputes and disputes over contractual commitments. The main thing is for one of the parties in the dispute to be represented by a RFCA participant.
Thus the rating agency and the specialised financial court would offer a considerable advantage by creating favourable and attractive conditions for the RFCA participants.
What is the short and medium-term outlook for the RFCA?
Among major tasks that need to be addressed in the near future is the adoption of the new listing regulations and commercialisation of the stock exchange. We are actively involved in drafting a new tax code and finalising the work on the law on joint-stock companies and the bankruptcy law.
Under the development strategy, the RFCA should become an international financial hub. We are planning to set up 3-4 regional offices by the end of this year. They will be in Novosibirsk, Western China, Moscow and either Kiev or Tashkent, thus signifying an expansion of the RFCA's area of activity. All in all, it would cover Central Asia, the Caspian region, the CIS and Western China. Due to various reasons, including political considerations, many of the companies from this larger RFCA area might not want to seek listings on the London or Moscow Stock Exchanges. For them the KASE is a serious alternative. That applies to those who are not there just for prestige but simply want to make money. We have 5-6 Ukrainian companies which are waiting for the approval of our new listing regulations.
In the next 5-10 years we are hoping to become one of a dozen major financial centres of Asia, with capitalisation increasing from the current level of $65.7bn to $300bn.


text:
// ---------------------------------------------------------------------------- PCH
// ----------------------------------------------------------------------- INCLUDES
#include "utils/src/common/warning_disable.h"
#include <algorithm>
#include "utils/src/common/warning_enable.h"
// ----------------------------------------------------------------------- SYNOPSIS
#include "app/rdo_studio/src/main_window.h"
#include "app/rdo_studio/src/model/model.h"
#include "app/rdo_studio/src/model/model_tab_ctrl.h"
#include "app/rdo_studio/plugins/game5/src/graph_edge.h"
#include "app/rdo_studio/plugins/game5/src/graph_info.h"
#include "app/rdo_studio/plugins/game5/src/plugin_game5_graph_node_info_dialog.h"
#include "app/rdo_studio/plugins/game5/src/plugin_game5_graph_dialog.h"
// --------------------------------------------------------------------------------

namespace
{
	const int SPACER_X  = 20;
	const int SPACER_Y  = 20;
} // end anonymous namespace

PluginGame5GraphDialog::PluginGame5GraphDialog(QWidget * pParent)
	: QDialog(pParent, Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint)
	, m_traceTimeStamp(getTraceTimeStamp())
	, m_clickedNode(NULL)
{
	setupUi(this);

	if (pParent)
	{
		move(pParent->frameGeometry().center() - frameGeometry().center());
	}

	PluginGame5GraphNodeInfoDialog* nodeInfoDlg = new PluginGame5GraphNodeInfoDialog(this);

	connect(this       , &PluginGame5GraphDialog::updateNodeInfoDlg,
	        nodeInfoDlg, &PluginGame5GraphNodeInfoDialog::updateDlg);
	connect(this       , &PluginGame5GraphDialog::showNodeInfoDlg,
	        nodeInfoDlg, &PluginGame5GraphNodeInfoDialog::show);

	connect(nodeInfoDlg, &PluginGame5GraphNodeInfoDialog::updateCheckedNode,
	        this       , &PluginGame5GraphDialog::updateCheckedNode);
}

PluginGame5GraphDialog::~PluginGame5GraphDialog()
{}

QString PluginGame5GraphDialog::getTraceFile() const
{
	MainWindow* pMainWindow = (MainWindow*)(parent());
	rdo::gui::model::Model* pModel = pMainWindow->getModel();
	const QString traceFile = pModel->getFullName().section('.', 0, -2) + ".trc";
	return traceFile;
}

QString PluginGame5GraphDialog::getTraceTimeStamp() const
{
	QFile trcFile(getTraceFile());
	QString trcString;
	if (trcFile.open(QIODevice::ReadOnly))
	{
		trcString = QString(trcFile.readLine());
	}
	const QString timeStamp = trcString.section(' ', -2, -1);
	return timeStamp;
}

std::vector<int> PluginGame5GraphDialog::getSolutionNodes() const
{
	QFile trcFile(getTraceFile());
	QString trcString;
	if (trcFile.open(QIODevice::ReadOnly))
	{
		trcString = QString(trcFile.readAll());
	}

	QString solutionStr;
	const int begin = trcString.indexOf("SD");
	int end;
	if (begin > 0)
	{
		end = trcString.indexOf("SES", begin);
		solutionStr = trcString.mid(begin, end - begin);
	}

	const QRegExp regExp("(\\d{1,5})((\\s\\d){3}\\s\\s\\d{1,2}\\s\\d{1,2})");
	std::vector<int> list;
	list.push_back(1);

	int pos = 0;
	while((pos = regExp.indexIn(solutionStr, pos))!= -1)
	{
		list.push_back(regExp.cap(1).toInt());
		pos += regExp.matchedLength();
	}

	trcFile.close();
	return list;
}

QStringList PluginGame5GraphDialog::parseTrace() const
{
	QFile trcFile(getTraceFile());
	QString trcString;
	if (trcFile.open(QIODevice::ReadOnly))
	{
		trcString = QString(trcFile.readAll());
	}

	const int begin = trcString.indexOf("SB");
	const int end   = trcString.indexOf("SEN", begin);
	const QString trcStringShort = trcString.mid(begin, end - begin);

	const QRegExp regExp("(STN|STR)(((\\s)-?\\d{1,5}){8}((\\s)(\\s)(\\d{1,2})(\\s)(\\d{1,2})))(((\\nSRK)((\\s)\\d){4})(\\s\\d{1,2})((\\nSRK)((\\s)\\d){3})(\\s\\d{1,2}))?");
	QStringList list;
	int pos = 0;
	while((pos = regExp.indexIn(trcStringShort, pos))!= -1)
	{
		list << regExp.cap(2) + regExp.cap(16) + regExp.cap(21);
		pos += regExp.matchedLength();
	}
	trcFile.close();
	return list;
}

QString PluginGame5GraphDialog::getTraceInfo() const
{
	QFile trcFile(getTraceFile());
	QString trcString;
	if (trcFile.open(QIODevice::ReadOnly))
	{
		trcString = QString(trcFile.readAll());
	}

	const int begin = trcString.indexOf("DPS_C");
	const QString trcStringShort = trcString.mid(begin);

	trcFile.close();
	return trcStringShort;
}

int PluginGame5GraphDialog::parseTraceInfo(const QString& key) const
{
	const QString regExpPat = "(" + key + "\\s)(\\d{1,5})";
	const QRegExp regExp(regExpPat);
	int value = 0;
	const QString str = getTraceInfo();

	int pos = 0;
	while((pos = regExp.indexIn(str, pos))!= -1)
	{
		value = regExp.cap(2).toInt();
		pos += regExp.matchedLength();
	}

	return value;
}

void PluginGame5GraphDialog::updateGraph(const std::vector<unsigned int>& startBoardState)
{
	graphWidget->scene()->clear();//@todo (*)Хранить и рисовать 2 разных объекта
	m_graphNodeList.clear();      //Очистка вектора, объекты удалены при очистке сцены
	m_clickedNode = NULL;

	GraphNode* leftNode;
	GraphNode* rightNode;
	std::vector<std::vector<int>> paintLevel;
	QStringList parsingResult = parseTrace();
	//@todo Во время парсинга разделять строку на атрибуты GraphNode и запоминать самые широкие
	//заодно сделать (*)
	const QString nodeText = GraphNode::generateNodeTextLargeView(999, 999, 999, 999, 999, 999, "Начало поиска");
	const QFontMetrics fontMetrics = QFontMetrics(graphWidget->scene()->font());
	const QRect nodeRect = fontMetrics.boundingRect(QRect(), Qt::AlignCenter, nodeText);
	m_nodeWidth  = nodeRect.width();
	m_nodeHeight = nodeRect.height();

	m_graphNodeList.resize(parsingResult.size() + 1);
	m_graphNodeList[0] = new GraphNode(1, NULL, 0, 0, "Начало поиска", 0, 0, 0, 0, 0, startBoardState, m_nodeWidth, m_nodeHeight);
	for (const auto& string: parsingResult)
	{
		const int graphNodeId       = string.section(" ",  1,  1).toInt();
		const int parentGraphNodeId = string.section(" ",  2,  2).toInt();
		const int pathCost          = string.section(" ",  3,  3).toInt();
		const int restPathCost      = string.section(" ",  4,  4).toInt() - pathCost;
		const int moveDirection     = string.section(" ",  5,  5).toInt();
		const int moveCost          = string.section(" ",  7,  7).toInt();

		const int tileMoveFrom      = string.section(" ", -1, -1).toInt();
		const int tileMoveTo        = string.section(" ", -2, -2).toInt();
		const int relevantTile      = string.section(" ", -4, -4).toInt();

		QString moveDirectionText;
		switch (moveDirection)
		{
			case 1: moveDirectionText = "Вправо"; break;
			case 2: moveDirectionText = "Влево" ; break;
			case 3: moveDirectionText = "Вверх" ; break;
			case 4: moveDirectionText = "Вниз"  ; break;
		}

		const int graphNodeIndex = graphNodeId - 1;
		const int parentGraphNodeIndex = parentGraphNodeId - 1;

		const int graphLevel = m_graphNodeList[parentGraphNodeIndex]->getGraphLevel() + 1;
		std::vector<unsigned int> boardState = m_graphNodeList[parentGraphNodeIndex]->getBoardState();
		std::swap(boardState[tileMoveFrom - 1], boardState[tileMoveTo - 1]);

		m_graphNodeList[graphNodeIndex] = new GraphNode(graphNodeId, m_graphNodeList[parentGraphNodeIndex],
		                                                pathCost, restPathCost, moveDirectionText, moveCost,
		                                                relevantTile, graphLevel, tileMoveFrom, tileMoveTo,
		                                                boardState, m_nodeWidth, m_nodeHeight);
		connect(m_graphNodeList[graphNodeIndex], &GraphNode::clickedNode  , this, &PluginGame5GraphDialog::updateCheckedNode);
		connect(m_graphNodeList[graphNodeIndex], &GraphNode::doubleClicked, this, &PluginGame5GraphDialog::emitShowNodeInfoDlg);
	}

	for (unsigned int i = 0; i < m_graphNodeList.size(); i++)
	{
		const int nodeGraphLevel = m_graphNodeList[i]->getGraphLevel();
		const int currentLevel = paintLevel.size() - 1;
		if (currentLevel < nodeGraphLevel)
		{
			paintLevel.push_back(std::vector<int>());
		}
		paintLevel[nodeGraphLevel].push_back(i);
	}

	for (unsigned int i = 1; i < paintLevel.size(); i++)
	{
		quickSort(paintLevel[i]);
		for (unsigned int j = 0; j < paintLevel[i].size(); j++)
		{
			m_graphNodeList[paintLevel[i][j]]->setGraphOnLevelOrder(j);
		}
	}

	for (int nodeId: getSolutionNodes())
	{
		m_graphNodeList[nodeId - 1]->setRelatedToSolution(true);
	}

	for (unsigned int j = 0; j < paintLevel.back().size(); j++)
	{
		const int node = paintLevel.back()[j];

		graphWidget->scene()->addItem(m_graphNodeList[node]);
		m_graphNodeList[node]->setPos((SPACER_X + m_nodeWidth) * (j + 1), (paintLevel.size() - 1) * (SPACER_Y + m_nodeHeight));
	}
	leftNode  = m_graphNodeList[paintLevel.back().front()];
	rightNode = m_graphNodeList[paintLevel.back().back()];

	for (int i = (int)paintLevel.size() - 2; i >= 0; i--)
	{
		bool buildFlag   = true;
		unsigned int tempNodeNum = 0;
		unsigned int tempCounter = 0;
		std::vector<UnbuiltRange> unbuiltRangeVector;
		for (unsigned int j = 0; j < paintLevel[i].size(); j++)
		{
			const int node = paintLevel[i][j];
			if (m_graphNodeList[node]->haveChild())
			{
				graphWidget->scene()->addItem(m_graphNodeList[node]);
				m_graphNodeList[node]->setPos(m_graphNodeList[node]->childrenMeanX(), m_graphNodeList[node]->childrenMeanY() - (SPACER_Y + m_nodeHeight));
				for (auto childNode: m_graphNodeList[node]->getChildrenList())
				{
					graphWidget->scene()->addItem(new GraphEdge(*m_graphNodeList[node], *childNode));
				}

				if (!buildFlag)
				{
					buildFlag = true;
					UnbuiltRange temp = {tempNodeNum, tempCounter};
					unbuiltRangeVector.push_back(temp);
					tempCounter = 0;
				}
			}
			else
			{
				if (buildFlag)
				{
					buildFlag = false;
					tempNodeNum = j;
				}
				tempCounter++;
			}
		}
		if (!buildFlag)
		{
			buildFlag = true;
			UnbuiltRange temp = {tempNodeNum, tempCounter};
			unbuiltRangeVector.push_back(temp);
			tempCounter = 0;
		}
		for (const UnbuiltRange& unbuiltRange: unbuiltRangeVector)
		{
			const unsigned int endUnbuiltRange = unbuiltRange.firstNode + unbuiltRange.range;
			if (unbuiltRange.firstNode == 0)
			{
				const int temp = paintLevel[i][endUnbuiltRange];
				for (unsigned int k = unbuiltRange.firstNode; k < endUnbuiltRange; k++)
				{
					const int node = paintLevel[i][k];
					const int segment = unbuiltRange.range - k + unbuiltRange.firstNode;

					graphWidget->scene()->addItem(m_graphNodeList[node]);
					m_graphNodeList[node]->setPos(m_graphNodeList[temp]->pos().x() - (SPACER_X + m_nodeWidth) * segment, m_graphNodeList[temp]->pos().y());
				}
				if (leftNode->pos().x() > m_graphNodeList[paintLevel[i][unbuiltRange.firstNode]]->pos().x())
				{
					leftNode = m_graphNodeList[paintLevel[i][unbuiltRange.firstNode]];
				}
			}
			else if (endUnbuiltRange == paintLevel[i].size())
			{
				const int temp = paintLevel[i][unbuiltRange.firstNode - 1];
				for (unsigned int k = unbuiltRange.firstNode; k < endUnbuiltRange; k++)
				{
					const int node = paintLevel[i][k];
					const int segment = k - unbuiltRange.firstNode + 1;

					graphWidget->scene()->addItem(m_graphNodeList[node]);
					m_graphNodeList[node]->setPos(m_graphNodeList[temp]->pos().x() + (SPACER_X + m_nodeWidth) * segment, m_graphNodeList[temp]->pos().y());
				}
				if (rightNode->pos().x() < m_graphNodeList[paintLevel[i][endUnbuiltRange - 1]]->pos().x())
				{
					rightNode = m_graphNodeList[paintLevel[i][endUnbuiltRange - 1]];
				}
			}
			else
			{
				const int temp1 = paintLevel[i][unbuiltRange.firstNode - 1];
				const int temp2 = paintLevel[i][endUnbuiltRange];
				double deltaX =  m_graphNodeList[temp2]->pos().x() - m_graphNodeList[temp1]->pos().x();

				if (deltaX < (unbuiltRange.range + 1) * (SPACER_X + m_nodeWidth))
				{
					for (unsigned int l = endUnbuiltRange; l < paintLevel[i].size(); l++)
					{
						const int node = paintLevel[i][l];
						m_graphNodeList[node]->forceShift((unbuiltRange.range + 1) * (SPACER_X + m_nodeWidth) - deltaX);
					}
					deltaX = m_graphNodeList[temp2]->pos().x() - m_graphNodeList[temp1]->pos().x();
				}

				for (unsigned int k = unbuiltRange.firstNode; k < endUnbuiltRange; k++)
				{
					const int node    = paintLevel[i][k];
					const int segment = k - unbuiltRange.firstNode + 1;

					graphWidget->scene()->addItem(m_graphNodeList[node]);
					m_graphNodeList[node]->setPos(m_graphNodeList[temp1]->pos().x() + segment * deltaX/(unbuiltRange.range + 1), m_graphNodeList[temp1]->pos().y());
				}
			}
		}
	}
	graphWidget->updateGraphInfo(parseTraceInfo("DPS_CO"), parseTraceInfo("DPS_TO"), parseTraceInfo("DPS_TT"));
}

void PluginGame5GraphDialog::onPluginAction(const std::vector<unsigned int>& boardState)
{
	if (m_traceTimeStamp != getTraceTimeStamp())
	{
		m_traceTimeStamp = getTraceTimeStamp();
		updateGraph(boardState);
	}
	exec();
}

void PluginGame5GraphDialog::updateCheckedNode(GraphNode* node)
{
	if (node != m_clickedNode)
	{
		if (m_clickedNode)
		{
			m_clickedNode->setChecked(false);
		}
		node->setChecked(true);
		m_clickedNode = node;
		emit updateNodeInfoDlg(node);
	}
}

void PluginGame5GraphDialog::emitShowNodeInfoDlg()
{
	emit showNodeInfoDlg();
}

void PluginGame5GraphDialog::quickSort(std::vector<int>& vector)
{
	SortStruct sortStruct(this);
	std::sort(vector.begin(), vector.end(), sortStruct);
}

redpajama_set_name: RedPajamaGithub


Once you have decided to make home improvements, you may be thinking of what your room is going to look like. But, your first step should be creating a plan. This article will lay out some points to consider if you are thinking about tackling some home improvement projects.
Talk to your friends and family and ask them for help before starting your home improvement project. By waiting until the project is started, you may have difficulty finding the extra help you need. It may also take you longer to finish your project than you initially expected.
You can make your ceiling look higher with these two tips. Paint stripes in the room or add a floor lamp that is tall. This will create a unique optical illusion. This can even make your room appear bigger and more spacious than it really is.
To update your house, think about installing a bamboo floor. Bamboo floors are quite popular and very durable. Bamboo also is quite pliable, and therefore scratch and dent resistant. It is surprisingly durable and thus great for highly-trafficked areas, and is resistant to humidity, making it useful for kitchens and bathrooms.
Homeowners should avoid choosing unlicensed contractors to accomplish home improvement projects. Contractors are required by law to have some certifications. They don't have to do a test to get certification, though. Most importantly, a contractor without a proper license is likely not carrying proper professional insurance, making them especially risky to work with.
Consider building a basement bar. It can be a real passion project for many that like to design their own bigger projects. No matter how it is done, a bar is a great home improvement.
Empty shoe boxes can be an inexpensive way to increase the storage space in any room. You can cover the shoe boxes with fabric or wallpaper samples for an interesting decorating touch. They make terrific storage containers, and they can even give your room a little extra drama.
If you get advice from your contractor, you must assume that it is sound. If you have put the effort into finding a good contractor, trust that he knows his business and what he is doing. If he does not like the way something looks, there is probably a reason for it. Also, take into consideration his budget advice before beginning your project. You should trust in your contractor.
In order to get the best out of your home improvements, you should have a plan. The tips and techniques that were found in the above article will ensure you have the proper knowledge to complete many home improvement projects. That kind of preparation guarantees that your project will work well.


text:
NATO Leadership on Ethical AI is Key to Future Interoperability
Defense Innovation Emerging technology Europe's Edge NATO
Joanna van der Merwe
Establishing NATO ethical AI principles is the first step toward both technical and political alignment
Photo: The barrel and sight equipment on top of a Titan Strike unmanned ground vehicle, equipped with a .50 Caliber machine gun, moves and secures ground on Salisbury Plain during exercise Autonomous Warrior 18, where military personnel, government departments and industry partners are taking part in Exercise Autonomous Warrior, working with NATO allies in a groundbreaking exercise to understand how the military can exploit technology in robotic and autonomous situations. Credit: PA Images via REUTERS
From Havel to Pavel: The New Czech President ChatGPT Chills – Will Its Hoaxes Divide Transatlantic Regulators? The European Union's Evolving Military Capability How Western Tanks Will Make a Difference in Ukraine Wagner and the Serbs Mighty Baltics Lead the NATO Pack Germany to Crocodile: Eat Me Last
In October 2020, Deputy Secretary General of NATO Mircea Geoană highlighted the benefits of establishing a "transatlantic community cooperating on Artificial Intelligence (AI)." The Deputy Head of NATO's Innovation Unit followed with a commitment to its responsible use. The US Department of Defense (DoD) adopted Ethical Principles for AI in 2020 and has committed to bringing together NATO member and partners to operationalize these principles. Despite these statements and developments, more work is required to tackle the very real challenge that ethical AI will pose to future interoperability within NATO.
Without a NATO-led initiative focused on aligning these ethical principles across the Alliance, the interoperability risk of nations fielding AI-based systems that hinder joint operations is high. As the foremost security framework for Europe and North America, as well as the leading defense alliance for promoting and protecting democratic values, NATO is able to facilitate alignment on this issue. As part of a broader strategy on emerging and disruptive technologies, NATO must prioritize ethical AI if it wishes to promote the shared values upon which it was founded, play a key role in facilitating innovation across the Atlantic, and ultimately retain the ability of its members to undertake joint operations.
Establishing NATO ethical AI principles is the first step toward both technical and political alignment, in turn enhancing and fostering interoperability, which is the foundation for NATO to respond to emerging threats as an Alliance, in a flexible and timely manner.
A key challenge for NATO is raising awareness that the answers to ethical questions can no longer be left to later stages of the development and procurement cycle. Decisions made at the political and legal level will have a significant impact on the engineering practices used to develop AI, as well as the technical characteristics of the AI-based systems. The answers to questions such as respecting human dignity, human control, and accountability will be the foundation upon which many technical elements are programed. Systems developers need to make a number of calls throughout the development cycle informed by the answers to key questions, including:
how to label data
what data to use, and
what is an acceptable outcome?
These answers will also impact how AI systems are evaluated and ultimately deployed.
If individual nations or groups are left to develop their own ethical principles without wider alignment to NATO, the result will be a number of AI-based systems with varying technical specifications based on the legal and policy decisions made by individual governments when answering the key questions. As has been demonstrated in areas such as facial recognition and policing algorithms, the assumptions made by those developing the tools and answering the key questions have a significant impact on the real-world functioning of the tool and societal acceptance of its ethics. The risk of tools failing to gain acceptance depends on the legal and ethical decisions made by governments. For the military, this may mean one state using an AI-based system that is seen as unacceptable by another, and in a joint operation one state fielding a system that cannot be used by another. Or worse yet, this could render a joint operation impossible. Without the ability to interoperate across NATO, the inability to effectively and efficiently respond to future threats would undermine the Alliance.
The role of the private sector is another aspect of ethical AI development that has proved a challenge to governments and the transatlantic relationship. Within states, governments have struggled to adequately regulate Big Tech firms, which has led to these companies encroaching on government responsibilities to protect and uphold the public interest. This encroachment permeates all aspects of government, including defense and security. As Deputy Secretary of Defense Kathleen Hicks discussed during her confirmation hearings, the lack of competition is also a challenge to innovation in the private defense industry. This, along with a lack of regulation, feeds into the power imbalance between the sectors. Consequently, private sector companies building the AI and AI systems that are or will be deployed on the battlefield are deciding the ethics policies for themselves.
The transatlantic partnership must focus on coordinating these core principles and systematic governance to ensure AI systems development aligns with the rule of law and democracy. In particular, this must ensure answering questions about human dignity, human control, and accountability. NATO is the ideal defense and security forum for this alignment. Given the US lead on adopting ethical principles for the entire DoD and the EU's drive to assert checks and balances for private-sector tech companies, NATO remains the organization that can bring these two together and establishes the ethical bottom line. These will then ensure the diverging legal and ethical stances towards Big Tech do not lead to an interoperability barrier in the future. If developments surrounding the General Data Protection Regulation (GDPR) and the challenges it brought for U.S.-based, data-driven companies are any indication, a strong transatlantic led initiative is needed in order to ensure the same challenges do not hinder NATO.
The solution to the challenge that ethical AI poses for the future of interoperability within NATO is for the Alliance to establish shared transatlantic ethical principles, informed by the US DoD, the EU, and others. Establishing these principles will not only strengthen transatlantic political relations; more technically, it will allow for the establishment of standardization agreements and inform training and education initiatives of the Alliance in the future.
From Havel to Pavel: The New Czech President
ChatGPT Chills – Will Its Hoaxes Divide Transatlantic Regulators?

redpajama_set_name: RedPajamaCommonCrawl


text:
HANSARD 1803–2005 → 1990s → 1994 → January 1994 → 18 January 1994 → Written Answers (Commons) → EDUCATION
Schools, Wandsworth
HC Deb 18 January 1994 vol 235 cc540-1W 540W
§ Mr. Spearing
To ask the Secretary of State for Education, pursuant to the oral answer to the hon. Member for Edinburgh, Leith (Mr. Chisholm) of 14 December 1993,Official Report, column 825, how many children at 541W the latest available date in the borough of Wandsworth were (a) in attendance in nursery classes or nursery schools, (b) in reception classes in primary schools under school starting age and (c) in other pre-school groups; how many (i) qualified nursery teachers, (ii) qualified nursery nurses and (iii) other qualified or non-qualified teachers and nurses, were employed in the borough on nursery education at the latest available date; and what is the latest estimate of the number of children aged three and four years currently resident in that borough.
§ Mr. Robin Squire
In Wandsworth, in January 1993 —the latest date for which information on schools is available—there were nearly 2,400 pupils below compulsory school age in maintained nursery schools and nursery classes in maintained primary schools. A further 1,700 pupils below compulsory school age were in infant classes in maintained primary schools. Information on reception classes only is not collected centrally.
The maintained nursery schools and nursery classes were staffed by 71 full-time equivalent teachers, of whom two were unqualified 75 full-time equivalent qualified nursery assistants and a further 26 full-time equivalent unqualified nursery assistants and other education support staff.
As regards other pre-school groups, we are informed by the Pre-school Playgroups Association that their member playgroups in Wandsworth had nearly 400 three and four-year-olds in attendance in mid-1992, the latest date for which such information is available. Information on other forms of pre-school group provision, such as day nurseries, is the responsibility of my right hon. Friend the Secretary of State for Health. Information on nursery classes in independent or special schools is not collected centrally.
In January 1993, the estimated three and four-year-old population in Wandsworth was just over 6,000. I should perhaps add that Wandsworth now has a policy of offering a nursery class place to all parents who want one for the year before entering compulsory education. This policy is not yet fully reflected in the figures available.
Back to Data Protection
Forward to University Expenditure


text:
Post-vaccine headache in the Emergency Department: what you need to know. St Emlyn's
By Dan Horner / April 9, 2021 April 19, 2021 / #FOAMed, COVID19, Emergency Medicine
I am sure you all saw the recent MHRA press release and guidance, discussing the issue of a possible link between the AstraZeneca COVID19 vaccine and a rare type of thrombotic condition of Vaccine induced thrombocytopenic thrombosis (VITT). This is a good example of why it is important to use the yellow card reporting system and a reminder to us all why we ideally need phase 4 research studies (post marketing surveillance) in non-pandemic times.
This statement was a helpful conclusion to the developing concerns around thrombosis and vaccination. There have been several anecdotal cases reported of unusual site thrombosis following vaccination in otherwise healthy adults. We have seen a few of these potential cases locally and it is good to get timely access to national data when you have local concerns.
Bringing together all the yellow card reports and known cases, the MHRA describe the risk of serious harm with the vaccine of around 1:250,000. Unfortunately, this risk seems higher in younger patients – reported at 1:100,000 by the BBC on this nice comparative infographic.
Although concerning, the first thing to highlight is that this risk is still very low indeed; younger adults are still twice as likely to die from COVID19 and around three times more likely to die in a road traffic accident than suffer a serious harm due to vaccine side effects.
But what is this serious harm anyway? Well, I don't think we know exactly. There appears to be a specific syndrome caused by vaccination (AstraZeneca in particular) which presents at 5-28 days and is characterised by thrombocytopenia and unusual site thrombosis. So much so, that the British Society for Haematology have started calling it Vaccine Induced Thrombosis and Thrombocytopenia (VITT). However, others have given it a different name – down under (and in Canada) they appear to prefer the term Vaccine induced Prothrombotic Immune Thrombocytopenia (VIPIT). Just goes to show that we are dealing with uncertainty.
So before we roll our sleeves up and get stuck into the uncertainty, let's take a look at a similar condition to see if we can learn anything that may help.
Heparin Induced Thrombosis and Thrombocytopenia (HITT)
This condition not only has very similar wording to the above, but some early bench research from Germany has suggested significant similarities. You would be forgiven for never having seen this in ED, but we see a fair few cases every year on the ICU. HITT tends to present about 5-10 days after starting heparin compounds, and presents with worsening thrombosis and thrombocytopenia.
How on earth do you give an anticoagulant that leads to low platelets, which causes thrombosis you say? I hear you. Simply put, heparin binds to platelet factor 4 (on the surface of platelets) to create an antigen complex; this antigen is attacked by IgG antibodies in a dysfunctional immune response. Platelets get activated, clump, release procoagulant microparticles and thrombin generation is triggered, with all the consequent platelet consumption and thrombotic clinical manifestations.
Clots can be found anywhere with HITT; DVT and PE can extend, but you can also see adrenal vein thrombosis, necrotising skin lesions, cerebral venous sinus thrombosis and mesenteric thrombosis.
Treatment is based on cessation of all heparin compounds (including line flushes) and consideration of alternative anticoagulants to treat thrombosis, such as fondaparinux, argatroban, danaparoid or other therapies (DOACs, etc). Platelet transfusions are to be avoided, as you don't want more clumping. Emerging treatments include intravenous immunoglobulin and plasmapheresis, 2 treatment modalities that always get wheeled out when an antibody reaction is involved (1). The evidence to date is case report based, but these treatments are acknowledged universally as options for refractory HITT.
There is an excellent open access review of HITT in the BMJ here and a less open access bestpractice module here for those who want to know more (2).
I am here for VITT, not HITT?
Fair enough. But it is worth revising HITT based on the early data suggesting that Vaccine induced thrombocytopenic thrombosis has a similar pathophysiology. In March, German researchers from the Paul Ehrlich Institute were busy analysing serum from 31 cases of CVST following vaccination and reported HITT mimicry in multiple samples. The German Society of Thrombosis and Haemostasis subsequently released a statement suggesting that the pathophysiology was so similar, that investigation and treatment modalities should be as well. The BSH produced similar recommendations shortly after.
What is the best way to identify this condition in the ED? I would suggest being your usual glorious selves and taking a thorough history (including recent vaccination), performing a thorough examination (checking for pupura and signs of VTE in particular) and bearing this condition in mind throughout. If a patient is presenting shortly after vaccination (4 to 28 days) with significant symptoms, a platelet count would be a useful place to start regarding investigations. This can be followed by tailored imaging to investigate for thrombosis, if you have clinical suspicion. A very high d-dimer and a low fibrinogen would also support the diagnosis. Specific HITT antibody assays can be sent as well to help clarify the diagnosis, but they do not come back quickly…
It is vital to identify Vaccine induced thrombocytopenic thrombosis early, as the treatment is unusual; all heparin based compounds should be avoided (despite the presence of thrombosis), non-heparin based anticoagulants should be commenced and early consideration given to immunomodulatory therapy (immunoglobulin preferentially). Platelet transfusions should be avoided if at all possible. This is all well and good, but my strongest personal recommendation if you are unlucky enough to encounter a case would be to arrange an early MDT involving haematology. This is a relatively unknown condition, with a very limited evidence base. You do not want to be managing it alone.
HOWEVER. It is as rare as hens' teeth. Therefore be pragmatic and sensible. Think about a platelet count and considered clinical examination in a patient with post vaccine symptoms and a consistent history. I personally would do very little else, unless my clinical suspicions are otherwise raised.
I thought this was all about headache and CVST?
No. It is not.
Both HITT and VITT can present with unusual site thrombosis. The site of this thrombosis can indeed be in the brain (CVST), thus presenting with headache. But it doesn't have to be. As above, unusual site thrombosis can refer to clots in a variety of locations. Some authors have reported that Vaccine induced thrombocytopenic thrombosis has a predilection for CVST, but I am not sure we can draw such conclusions when we are talking about a case series of 30 odd patients and a reliance on clinician reporting. This does, however, give us an opportunity to revise CVST a bit, think about when to consider it in the patient with atraumatic headache and our approach to diagnosis in the ED.
Although in Vaccine Induced Thrombosis and Thrombocytopenia Cerebral Vein Thrombosis is the commonest type, abdominal thrombosis (esp portal vein) and some arterial thrombosis also occur. The low platelet count is key. #VITT
— Michael Makris (@ProfMakris) April 8, 2021
CVST in isolation is another rare pathology, with an incidence of 1:100,000. It is tricky to diagnose, as it can present with isolated headache only. Like other rare but serious cases of headache, the consequences of missed diagnosis are severe. If CVST is untreated, backpressure from the obstructed venous sinus often leads to intracranial haemorrhage. You are then in a position where the treatment for the index condition is anticoagulation, but the patient has intracranial bleeding. We have a few of these on our neuroICU every year and they don't get any easier to manage…
There are some things to remember about CVST that can help you in all this. Firstly, it is very rare, as above. Second, there are specific risk factors which make the condition more likely, such as: late stage pregnancy/post partum; known thrombophilia; active malignancy and COCP use. Third, there are some specific clinical examination findings in the context of headache that can increase your pretest probability: papilloedema on fundoscopy for instance; or the presence of otherwise unexplained focal neurology, or seizures.
A d-dimer test can occasionally add value here also. There is a reasonable body of evidence from 2 previous systematic reviews in 2012 and 2015 to suggest that a negative d-dimer test (below your standard cut point for VTE, not age adjusted!!) has a reasonable sensitivity for identification of disease and a good negative predictive value (3,4). There is even an EMJ BestBET on this (5). However, the evidence is not perfect and there are real downsides to indiscriminate use of this test, as we all know. I would caution against routine evaluation and suggest you apply this test in the context of your overall assessment. For me, that means when I have a patient who is GCS 15 with no focal neurology and no other indication to image, but there are some concerns in the history or specific risk factors that make me consider the diagnosis. I find a negative value helpful reassurance then, and a positive value pushes me towards a discussion about imaging.
Of note, the gold standard imaging tests for CVST is an MR venogram, or a CT venogram if you are happy to take the ionising radiation/contrast. These can be challenging to access and get reported, depending on your neuroradiology expertise available. For what it's worth, even when seriously considering CVST, I tend to start by ordering a plain CT brain. Sometimes this reveals alternative pathology, sometimes it reveals subtle signs of raised intracranial pressure or venous haemorrhage in keeping with the diagnosis of CVST, and sometimes it is completely normal. All of these results affect my assessment of risk. So any answer is a helpful one.
There is a nice open access and recent review of CVST here (6).
A note on pretest probability.
There has been a lot of chat about getting 'Bayesian' on social media, when discussing these issues. The insinuation being either that the risk of these conditions presenting to ED is so very low, that no tests other than a definitive one would be useful, or that the risk is just so low we should not investigate at all.
I am not sure I agree with this. Just because something is rare, does not mean it does not exist in the ED, or that a through clinical evaluation is unhelpful. And if a rare condition has catastrophic consequences if missed, then there is a clear onus on us to consider and tailor investigation where appropriate. As an example, subarachnoid haemorrhage is actually very rare – 6:100,000 according to some authors (7). We investigate this particular condition very aggressively, and have done so for a long time.
Emerging Evidence
There is no doubt that this is a new area of research and discovery. Inevitably there will be changes to the evidence base in the next few weeks so keep an eye on the blog and on our twitter feeds to keep up to date. We are also expecting some guidance from RCEM soon.
We would also recommend reading the two papers published in the NEJM today describing case series of patients and the explanation of the VITT mechanisms from Germany (10,11).
Two @NEJM papers on thrombosis and thrombocytopenia after ChAdOx1 (Astra Zeneca) vaccination
Rare, immune-mediated complication of this vaccine that mimics platelet activation seen in disorders such as HIThttps://t.co/TJbRJdryKAhttps://t.co/TXKhxgjp53
— Eric Tseng (@tsengeric) April 9, 2021
I am not saying here that everyone with a post vaccination headache should get a d-dimer measured. And I am not saying that everyone with a post vaccination headache should get a MRV/CTV. And I am definitely not saying that everyone with a post vaccination headache should not get any tests done, because both VITT and CVST are so rare.
I am saying that we should remember to be good clinicians (diagnosticians?) first and foremost. We should evaluate risk based on historical and clinical features. We should inform this risk assessment judiciously, with ancillary tests like a platelet count, fibrinogen, d-dimer when indicated. And if we really think there is a significant risk of VITT/CVST based on this preliminary assessment, then we should pursue definitive investigations and seek expert help.
Like always, the vast majority of headaches attending the ED will be primary headache disorders and need nothing more than diagnosis, effective analgaesia, reassurance and appropriate disposition (8,9).
Emergency physicians are generally excellent at thinking about and looking for needles, in our continually growing haystack. Vaccine induced thrombocytopenic thrombosis is just a further needle. CVST has always been lurking in there. Keep an eye out. Bear them in mind. Remind yourselves what to look for. Maybe your particular haystack won't have any of these particular needles in it at all. But at least you'll be looking. And thinking.
Based on the numbers there may be no needle in your haystack
— Alex Nevard (@AlexNevard) April 8, 2021
Above all, don't revolutionise your practice based on a risk that is marginally above that of being struck by lightning. The opportunity costs would likely be far greater than any benefits.
@RCEMProf
UPDATE from @EMManchester on 13/4/21:
The Royal College of Emergency Medicine, in association with the Society for Acute Medicine and Royal College of Physicians, have released a guideline as linked below. A key factor here is ensuring that we don't put people into the investigation pathway unless they need investigation for VITT, else you might end up doing a lot of FBCs.
Refs:
1 – Padmanabhan et al. IVIg for Treatment of Severe Refractory Heparin-Induced Thrombocytopenia. Chest 2017 Sep;152(3):478-485
2 – Linkins, LA. Heparin Induced Thrombocytopenia. BMJ 2014;349:g7566
3 – Dentali et al. D-dimer testing in the diagnosis of cerebral vein thrombosis: a systematic review and a meta-analysis of the literature. J Thromb Haemost 2012 Apr;10(4):582-9
4 – Alons et al. D-dimer for the exclusion of cerebral venous thrombosis: a meta-analysis of low risk patients with isolated headache. BMC Neurol. 2015; 15: 118.
5 – Smith andd Kumar. BET 1: Does a normal D-dimer rule out cerebral venous sinus thrombosis (CVST)? EMJ 2018;35:396-397.
6 – Ulivi L, Squitieri M, Cohen H, et a lCerebral venous thrombosis: a practical guide Practical Neurology 2020;20:356-367.
7 – Lin et al. Incidence of subarachnoid haemorrhage. Role of Region, Year, and Rate of Computed Tomography: A Meta-Analysis. Stroke 1996;27:625–629
8 – Locker et al. The utility of clinical features in patients presenting with nontraumatic headache: an investigation of adult patients attending an emergency department. Headache 2006 Jun;46(6):954-61
9 – https://www.nice.org.uk/guidance/cg150
10 – Thrombotic Thrombocytopenia after ChAdOx1 nCov-19 Vaccination https://www.nejm.org/doi/full/10.1056/NEJMoa2104840?query=featured_home
11 – Thrombosis and Thrombocytopenia after ChAdOx1 nCoV-19 Vaccination https://www.nejm.org/doi/full/10.1056/NEJMoa2104882?query=featured_home
The following protocol has been recently proposed as a potential approach to these patients at one UK hospital. Please note, this protocol advises a clinical assessment BEFORE a laboratory assessment. Use your noggins and order further tests only when necessary, following this initial assessment. Do not be fooled into ordering a load of bloods at triage, which will cause you heartache when they all come back mildly raised and you have no idea what to do next.
We do not necessarily endorse this pathway and present it only as an example. We would advise you to discuss and agree your pathway locally, with MDT support.
Cite this article as: Dan Horner, "Post-vaccine headache in the Emergency Department: what you need to know. St Emlyn's," in St.Emlyn's, April 9, 2021, https://www.stemlynsblog.org/post-vaccine-headache-in-the-emergency-department-what-you-need-to-know-st-emlyns/.
Dan Horner
Dr Daniel Horner BA MBBS MD PgCert MRCP (UK) FRCEM FFICM is an editorial board member on the St Emlyn's blog and podcast. He is Professor of Emergency Medicine of the Royal College of Emergency Medicine. He is a consultant in Emergency Medicine and Intensive Care at Salford Royal NHS Foundation Trust. He is chair of the national exemplar centre Thrombosis Committee and Regional lead for Injuries and Emergencies on the NIHR Clinical Research Network. He is a Senior clinical lecturer at the University of Manchester and collaborator with the University of Sheffield. You can find him on twitter as @RCEMProf
Thanks so much for following. Viva la #FOAMed Cancel reply


When it comes to business cards, stationery, custom forms, newsletters, the finest full color printing, and everything in between, trust Business Partner to exceed your print expectations. Business Partner specializes in adding that extra creative touch so your materials stand out from the competition.
Thousands of businesses, organizations & marketing departments nationwide rely on us for a wide range of creative marketing products & services. The fact is, when you take advantage of all the resources that we have available, you'll save both time & money. Your business deserves Business Partner.
Stand out at your next trade show with a display that gets the results you want. Mirror your current marketing concepts or generate excitement and drama with customized, professional quality large-format graphics that can be printed on a variety of materials. Business Partner's designers are always looking to stretch their creative limits and will work with you to design an innovative, enticing, and informative display.
We can place your company or organization's logo on more than 750,000 individual items. We offer distinctive advertising specialties, promotional marketing products, awards, incentives, premiums, and/or business gifts which will increase your company's visibility, while adding value to your marketing program.
We offer the latest styles & brands in wearable items. Shirts, jackets, hats and more can either be embroidered or screen printed for a professional look. You can trust Business Partner for all your apparel and uniform needs. We will help you maintain a consistent and professional image at your work place and in front of customers.
From Promotional, Sales & Training Videos to TV Commercials or Video for the Web. We offer "State of The Art" Creative Productions filmed on location or in our studio. Our goal is to provide high value reliable service and a stunning end-product that your audience will remember. So... You might just have the best product or service in the world - let's work together to make sure everyone knows it!
We produce leading edge & cost effective web development with unique graphics & ease of navigation. Businesses with significant online activity, big or small, cannot afford to compromise on their online presence. With next generation web technologies, we provide our clients with professional & comprehensive web based solutions that will give your company a robust online presence.
Successful corporate branding is a vital component of every company's marketing strategy. From logo design to brochures, letterhead, business cards, postcards & more you can count on Business Partner to develop a creative and seamless program that incorporates your brand into every piece of your marketing communications. Business Partner specializes in adding that extra creative touch so your materials stand out from the competition.
If you need attention-getting internal or external signage, Business Partner has the in-house and network resources available to create customized signs & banners to achieve maximum brand awareness.
Stand out at your next trade show with a display that gets the results you want. Mirror your current marketing concepts or generate excitement and drama with customized, professional quality large-format graphics that can be printed on a variety of materials. Marketing Mart's designers are always looking to stretch their creative limits and will work with you to design an innovative, enticing, and informative display.
We offer the latest styles & brands in wearable items. Shirts, jackets, hats and more can either be embroidered or screen printed for a professional look. You can trust Marketing Mart for all your apparel and uniform needs. We will help you maintain a consistent and professional image at your work place and in front of customers.
Successful corporate branding is a vital component of every company's marketing strategy. From logo design to brochures, letterhead, business cards, postcards & more you can count on Marketing Mart to develop a creative and seamless program that incorporates your brand into every piece of your marketing communications. Marketing Mart specializes in adding that extra creative touch so your materials stand out from the competition.
If you need attention-getting internal or external signage, Marketing Mart has the in-house and network resources available to create customized signs & banners to achieve maximum brand awareness.


You can pay online for your reservation either by Electronic Funds Transfer (EFT), or with your credit or debit card through our partner Exchange4Free.
Exchange4Free gives you a great exchange rate and there are no international bank charges. Payments made with a credit card through Exchange4Free are subject to a 2.5% surcharge.
Please be advised: Credit Card Payments from certain Countries usually require pre-authorisation from your Bank, so please contact them before you make your deposit/payment to avoid any inconvenience and to save yourself time.
To make a payment, please click the 'Pay Online Now' button beneath and follow the instructions to get to our secure online payment gateway.
been made. You can email your proof of payment to info@natureslight.co.za.
confirmation. The remaining 70% is due 6 weeks before the starting date of your tour.
You are required to pay us in South African Rands into our South African bank account. Please ensure that you mention your name and "Invoice number" in the reference, so we can allocate your payment properly.
Please note that all bank charges are for your account, so please ensure that when making the payment to check all applicable boxes on your internet banking. Depending on your bank, these usually amount to about 20-30 USD/15-20 GBP/17-23 EUR. Should we be charged bank charges upon receiving your deposit, we will have to invoice you for the difference.
allowed, it is not required.
It is compulsory for you to have an all-risk travel insurance/medical insurance for the full duration of your travels with us, which covers amongst others, medical aid, evacuation, theft and baggage loss. Without proof of comprehensive travel insurance we cannot transport you.
In the case of cancellation on the day of departure or later: the full travel sum.
I have paid the deposit, now what?
pack' full of information about the workshop and its location, and how you can best prepare yourself for your exciting workshop with us.
this, and a 'booking form' which you fill in and return to us. On this form, you will be required to provide certain details so that in case of emergencies, we can help you immediately.


With nearly 2000 KM running from north to south of Vietnam, We have plenty of options for Motorcycle tours on Ho Chi Minh trail. After the war, the trail was repaired some times and it now becomes a quite smooth road. It doesn't offer much of off-road ride any more but it's still a good choice to experience the beauty of Vietnam with green nature, colourful hill tribes…and learn more about the Vietnam War history.


text:
Beyond Booking
The Inside Story of Airbnb's Management Shakeup and Battle to Stay Private
Authors : Olivia Zaleski and Eric Newcomer, Bloomberg - Feb 06, 2018 5:30 pm
Source : Skift
Who needs an IPO when you can control the limits of space and time on an "infinite time horizon" like Airbnb CEO Brian Chesky? Also, if two-thirds of the company's profits were being generated by ex-CFO Tosi's hedge fund within the company, how will the company fare without him?
— Deanna Ting
Early last week, the top executives of Airbnb Inc. gathered in San Francisco for annual planning meetings. They were brimming with confidence. The home-rental company had exceeded financial projections for 2017, with $93 million in profit on $2.6 billion in revenue, said people with knowledge of the matter. Airbnb was ready, by some employees' estimations, to begin the process to go public.
But the boss had another view. Brian Chesky, the 36-year-old co-founder and chief executive officer, privately informed his financial chief, Laurence Tosi, that Airbnb wouldn't initiate an initial public offering this year. The news came as a surprise to Tosi. He had been discussing the prospect with major investors before transitioning to a larger role beyond finance.
Chesky made it clear that things wouldn't go as Tosi wanted. Chesky said he would promote Belinda Johnson, who was running business affairs and legal, to chief operating officer. Tosi had expected to get the COO job after Airbnb's public offering. He'd struggled to work with Johnson in the past, and some insiders viewed the move as a way to force Tosi's departure. Accounts differ on whether Chesky then asked Tosi for his resignation, but by the end of the meeting, the CFO was out.
Although the two men had many feuds, the question of when to sell shares to the public was a recurring point of contention between Chesky and Tosi. Four prominent backers—General Atlantic, Glade Brook Capital, Technology Crossover Ventures and TPG—supported Tosi's plan to begin the listing process by drafting paperwork as soon as next month, according to emails reviewed by Bloomberg and people familiar with the matter. These firms also encouraged the prospect of him taking a more influential role at the company, the people said. Tosi and a spokesman for Airbnb declined to comment.
Read the full article here: Skift
#airbnb
BRANDING IS CRUCIAL TO THE SUCCESS OF YOUR SHORT-TERM RENTAL BUSINESS
Four reasons Airbnb hosts also need their own website.
5 Tips to Make Your Vacation Rental Stand Out from the Crowd


It is easy to nag at public participation events organised by the authorities but I shall skip this part this time. While one can always do earlier, more and better, this event was by and large rather well organised. Quite a diverse crowd of "stake-holders" was present and the Ministry presented past, present and discussions of the future of the CAP reasonably well.
Discussions were held at four groups one of which was dedicated to the environmental issues in agriculture. Since there were not many environmentalists present, I had of course to go there. The participation was actually quite active.
Not surprisingly the voices were diverse and some of the problems voiced actually connected to other policies. This is to be expected however – CAP is so complicated that not so many people understand how it works. In spite of many differences there was actually high level of consensus regarding importance of agricultural biodiversity, landscapes, pollination, needs to protect soils and water. Bureaucratic problems faced by organic farming and the need to maintain diversity of agricultural production were highlighted as well.
In the afternoon session the major stake-holders were invited to present their views, starting with the farmers organisations, followed by the environmental, non agricultural rural entrepreneurs, rural networks and scientists. I had the honour of presenting the environmental view.
In spite of tight time-schedule it was possible to present the main points. CAP needs radical change, since the current direct payment system is not fair to many farmers, it does not support agricultural biodiversity and does not help to address the environmental problems in agriculture – quite to the contrary, as seen from the reliable correlation between the nitrogen balance and the subsidies.


Spray in the air around your home or place of work when you need help to remove a strong female presence from you or your targets life. Use with caution!. Made using the finest essential oils and herbs. Shake well before use. Approx 100ml.


These three habits help your body, and also have a positive impact on your brain.
You might think that the impact of aging on the brain is something you can't do much about. After all, isn't it an inevitability?
To an extent, as we may not be able to rewind the clock and change our levels of higher education or intelligence (both factors that delay the onset of symptoms of aging). But adopting specific lifestyle behaviors–whether you're in your thirties or late forties–can have a tangible effect on how well you age. Even in your fifties and beyond, activities like learning a new language or musical instrument, taking part in aerobic exercise, and developing meaningful social relationships can do wonders for your brain. There's no question that when we compromise on looking after ourselves, our aging minds pick up the tab.


text:
Vikings Film Room: Kirk Cousins & T.J. Hockenson have great chemistry
Tyler Forness
The Minnesota Vikings made a calculated, long-term risk and investment when they traded a second-round and third-round pick for tight end T.J. Hockenson.
The idea was that investing in a top-tier tight end would be a smarter financial decision than getting a WR2 that is likely paid even more money. Brandin Cooks was the likely choice in that instance but he was owed $18 million next season with his salary fully guaranteed.
In his first four games, Hockenson has 26 receptions for 192 yards and a touchdown on 35 targets, but what is really impressive is how they have built chemistry so quickly.
T.J. Hockenson is all-in with Kirk Cousins
The play itself isn't anything special but there is the chemistry needed to execute this type of timing route.
It's a 1X3 set with Hockenson in the middle slot. He runs an out route with a clearout by Jalen Reagor running a go route. While an out route is a simple route, it's also one that needs great timing and placement to avoid a turnover.
Cousins sees that the nearside boundary corner follows Reagor down the field and throws the ball a step before Hockenson makes his break. This is pivotal to throwing a completion here as the defender doesn't have the leverage or quickness to make a play on the ball.
This is the type of chemistry you see between a receiver and quarterback after playing for a year or two but Hockenson had only been a member of the Minnesota Vikings for 24 days at this point. A truly impressive feat for the Vikings' offense.
A breakdown of where the Vikings units rank after 11 games
Story originally appeared on Vikings Wire
Patrick Mahomes says he's gone to Tom Brady for advice this week
Chiefs quarterback Patrick Mahomes revealed that he has been talking to Tom Brady this week for advice about getting ready for the AFC Championship Game. "I talked to Tom a little bit, I have a good relationship with him now and he gives me a lot of advice," Mahomes said. "Why would you not want [more]


text:
Year: Junior
Hometown: Mobile, Ala.
High School: McGill-Toolen
Experience: 1 Letter
SOPHOMORE (2018)
• Played in 12 games
• Finished the season with 18 catches for 234 yards and one touchdown
• Returned six kickoffs for 93 yards, including a season-long against SMU
• Totaled 25 yards on 5 carries for 5 yards per rush
• Averaged 13 yards per catch and 29.3 all-purpose per game
• FAU (9/21): Made to receptions for 30 yards and one touchdown
• Memphis (10/13): Recorded 56 yards on four catches
• Navy (11/10): Returned a trio of kickoffs back for 45 total yards
FRESHMAN (2017)
• Appeared in all 13 games at receiver
• Caught 17 passes for 270 yards and two touchdowns
• Averaged 15.9 yards per catch
• FIU (8/31): Caught first career pass on a 27-yard toss
• Cincinnati (9/30): Took a handoff 47 yards for first career rush
• SMU (11/4): Snagged a career-high three passes for 58 yards, including a career-long 46-yard grab
• UConn (11/11): Tallied first career touchdown reception, finished with two catches for 17 yards
• Temple (11/18): Grabbed three passes for 30 yards and a score
• Memphis (12/2): Hauled in three balls for 46 yards in The American Championship
• Played at McGill-Toolen out of Mobile, Ala.
• Ranked as the number 88 receiver in the country by 247 Sports
• Caught 47 passes for 990 yards as a senior


text:
New industrial development slated for Canal Winchester
By: Tristan Navera
Columbus Business First
A new warehouse project is headed to Canal Winchester.
NorthPoint Development Inc. is breaking ground on a pair of speculative warehouses on 110 acres along Bixby Road at Rager Road, near U.S. Route 33. The Kansas City developer has been behind a series of warehouse and industrial projects in the Rickenbacker International Airport area in recent years.
The two warehouses will be 430,000 square feet apiece, with 36-foot-clear ceiling heights. At 520-by-840 feet, they will be divisible as needed for smaller tenants, or leased out wholesale. Dayton-based Miller-Valentine Group is the general contractor on the buildings, and Studio North Architecture is the designer.
"We have a great relationship with NorthPoint Development, which has been very active in the Dayton, Cincinnati and Columbus regions," Dave Dickerson, president of Midwest business development for Miller-Valentine, said in a statement. "And we are excited to make our presence known in the Columbus area. This project will cement our regional reputation as a trusted guide with the capabilities to manage projects of a significant scale."
NorthPoint had intended to break ground on the project in March but paused temporarily because of the Covid-19 pandemic. The buildings will be constructed using pre-cast materials and be completed in June 2021. It's Miller-Valentine's sixth contract with NorthPoint.
Rick Trott of CBRE has been named broker for the project, which has been dubbed NorthPoint Logistics Park. The city sold $950,000 in bonds to purchase the property and then sell it to the developer for $15,000 per acre. It's currently farmland.
Columbus' industrial market hit pause because of the pandemic, but experts don't expect to hold their breath long. The region's vacancy rate ticked up to 6.6% in the second quarter of the year because of new construction deliveries and a brief drop in demand, according to a report from NAI Ohio Equities. But it still counts 8.4 million square feet of industrial construction in the market.
"We expect the Columbus Industrial market to thrive as soon as the current pandemic settles down," Curt Berlin, NAI industrial specialist, said in the report. "Consumers have continued to increase their amount of online shopping and Central Ohio is one of the top distribution hubs in the nation."
Read the Full Article >>
NorthPoint nears kickoff of Blue River Commerce Center's next chapter
Keystone Trade Center Project Moves Forward
NorthPoint to begin site work on massive Antrim Township fulfillment center Jan. 4
2020 Top Real Estate Deals: Blue River Commerce Center
Looking at a property or have a specific need?
info@northpointkc.com
About UsLeadershipCareersIn the NewsOffice Locations
Find a PropertySubmit a PropertyPrivacy PolicyCCPAAccessibilityTerms and Conditions
© 2021 NorthPoint Development. All Rights Reserved.


text:
Greenview Woman Facing Murder Charges Will See Courtroom In June
ByReporter Mike Anthony
The case of a Greenview-area woman charged with first-degree murder and armed criminal action is set to return to a courtroom in mid-June.
Christine Zahn had been charged with second-degree murder until an amended complaint was filed by the attorney general's office back in September.
It's alleged that Zahn, who claims self-defense, shot her boyfriend in November 2018.
The case had been set to return to the courtroom last week but, like many court cases due to the COVID-19 situation, was continued and is now on the docket for a pre-trial conference on June 19th.with a jury trial, for the time being, set for the end of October.
The case is being heard in Laclede County on a change of venue from Camden County.
Jeff City Women Wins $100,000 In Lottery Ticket From Osage Beach
Morgan Commission Gets Nearly $2.5 Million In Corona Aid
By Reporter Mike Anthony


The 'Back to Basics' series will provide opportunities to engage with the Reggio philosophy and fundamental principles. Participants will be invited to work with materials, to discuss, to reflect, and to document their learning throughout a series of sessions that support understanding and the continued development of Reggio inspired practice.
This event is fully subscribed. Thank you for your interest.


text:
Microsoft Kills Messenger, Resurrects on Skype!
@admin_techno January 9, 2013
In a very interesting read that i came across on Microsoft, It looks like it has finally decided to kill its dear messenger and pins hope on the much more striking Skype:
Windows Live Messenger will officially retire this March, Microsoft announced Tuesday( Yesterday the 8th) in a mass email to the chat service's users.
On March 15, all users will be switched over to Skype, which the software giant acquired for $8.5 billion in October 2011.
"We are retiring the existing Messenger service globally … and bringing the great features of Messenger and Skype together," Microsoft said, adding that Messenger will continue to be available in mainland China. Last November, Skype president Tony Bates confirmed in a blog post that Messenger would be shuttered in the first quarter of 2013.
The company also encouraged users to "update to Skype," and sign in using their Microsoft account (formerly known as a "Windows Live ID"), which includes an email address and password. All Messenger contacts will be included in Skype upon sign-in, the email said.
Those who are signed in to Messenger on desktop will see a banner notification to "upgrade," it added. When clicked, a pop-up window to install Skype will appear, and will automatically uninstall Messenger.
Until March 15, Messenger "will continue to work as you know it today," Microsoft said, but after that date, users won't be able to sign in, and will be prompted to switch to Skype.
Starting last November, Messenger users had the ability to talk to their contacts using Skype.
Last October, the VoIP service released a new version of its desktop client for Mac and Windows that included integration with Facebook and Microsoft accounts.
Messenger users, do you plan to switch over to Skype before March 15? What will you miss — if anything — about Windows Live Messenger? Tell us in the comments below.
[via The Next Web]
PC TIP OF THE DAY: Just Do It Like A Pro!
PC Joke Of The Day: Solving everything the windows way!


text:
Norm Macdonald's Video Podcast Returns May 12th
By Bradford Evans
Here's an action-packed promo for Norm Macdonald's video podcast, Norm Macdonald Live, which is returning on Monday, live at 6pm PST on the Video Podcast Network, after nearly a year off the air. The 20-episode second season will kick off with Ray Romano as a guest. Adam Sandler and Bob Saget are also doing the show this season. The show featured guests like Larry King, Billy Bob Thornton, and Russell Brand last year. Macdonald is currently at the center of a Twitter campaign to make him the new host of CBS's The Late Late Show, so we'll see if he addresses that upon his video podcast return.
norm macdonald live
video podcast network
Sign Up for the Splitsider Newsletter
Smart and funny analysis on the comedy world, plus exclusive content from comedians and Vulture editors.
By submitting your email, you agree to our Terms and Privacy Notice and to receive email correspondence from us.
You'll receive the next newsletter in your inbox.
An Ode to 'MOOD 4 EVA,' the Best Song on Beyoncé's New Lion King Album Beyoncé's hardest bar, her greatest line, her sickest burn, is just her reciting her government name.


Admittedly, after hiking for four days across mountainous terrain, possibly battling altitude sickness, we may feel like 90-year-olds.
We researched the various ways to visit Machu Picchu. One option is a day trip from Cusco taking a train and then bus up to the ruins.
If you're feeling a bit more adventurous you can walk the Inca Trail or the Inca Quarry Trail, both multi-day treks taking you through breathtaking scenery, with the highlight being the final walk into Machu Picchu as dawn breaks.
We decided on Intrepid Travel's seven-day Inca Trail Express which includes trips to the Sacred Valley and Ollantaytambo, followed by the four-day Inca Trail hike.
You need a permit to travel the Inca Trail and the Peruvian Government limits the number of permits they issue, so make sure you book early.
The best time to visit is during the dry season (April to October). The most popular, and therefore busiest time, is June to August.
We've chosen to go in September so that we're travelling outside peak season but still during dry season. We're packing rain jackets just in case!
So now we've made the decision it's time to put on our boots and start walking – we've got a lot of training ahead of us if we're going to conquer a 45-kilometre hike through the Andes!
After all, it's not about the destination, it's about the journey.


The Black Horse was also colloquially known as "The Bluster" (not the Blister as stated in the book 'Ten Miles From Anywhere' which is in fact a typing error). The nickname was a reference to the strong winds that whipped over the fields and in fact still do as you can see by the positions of the trees in the garden.
Today the house is called The Old Bakery as it was bought by a baker in the 1930's and was run as a Bakehouse until 1965.
Some listings record the pub as being in Wickhambrook; the boundary between the two parishes runs quite close to the north of the building.
The house itself was built about 1750 and was a Blacksmith's for about a century. (Hence the name the Black Horse). It was run as a small alehouse for a while and eventually bought by Greene King in 1898 and they owned it for 15 years.
The pub was not listed in the 1916 Kelly's Directory.
There was another Black Horse on Hargrave Rd.


text:
package cn.shin.autotest.selenium;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

/**
 * Provide basic methods for web driver operations.
 *
 * @author Shin Feng
 * @date 2014-10-24
 */
public class WebDriverDecorator implements WebDriver {
	private static final Logger LOG = Logger
			.getLogger(WebDriverDecorator.class);
	private static EventFiringWebDriver driver;
	private static WebDriverEventListenerImpl eventListener = new WebDriverEventListenerImpl();
	private WebDriverFactory webDriverFactory = new WebDriverFactory();

	/**
	 * Default constructor
	 */
	public WebDriverDecorator() {
	}

	/**
	 * Constructor with the specific type of the driver.
	 *
	 * @param driverType
	 *            type of the driver
	 */
	public WebDriverDecorator(String driverType) {
		driver = new EventFiringWebDriver(
				webDriverFactory.setDriver(driverType));
		driver.register(eventListener);
		this.maximizeWindow();
	}

	/**
	 * Maximize the window of the browser.
	 */
	public void maximizeWindow() {
		driver.manage().window().maximize();
	}

	public static WebDriver getDriver() {
		return driver;
	}

	/**
	 * Navigate to the specific URL.
	 *
	 * @param url
	 */
	public void get(String url) {
		driver.get(url);
	}

	public WebElement findElement(By by) {
		waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout());
		return driver.findElement(by);
	}

	/**
	 * Find the element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @return WebElement
	 */
	public WebElement findElementByXpath(String xpath) {
		By by = By.xpath(xpath);
		waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout());
		return driver.findElement(by);
	}

	/**
	 * Click the element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void findElementAndClickByXpath(String xpath) {
		By by = By.xpath(xpath);
		waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout())
				.click();
		wait(1);
	}

	/**
	 * Type the text into the element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param text
	 *            text to type
	 */
	public void findElementAndSendKeysByXpath(String xpath, String text) {
		By by = By.xpath(xpath);
		waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout())
				.sendKeys(text);
		wait(1);
	}

	/**
	 * Clear the text in the element via XPath.
	 *
	 * @param xpath
	 *            xpath of the element
	 */
	public void findElementAndClearByXpath(String xpath) {
		By by = By.xpath(xpath);
		waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout())
				.clear();
		wait(1);
	}

	public List<WebElement> findElements(By by) {
		return driver.findElements(by);
	}

	public List<WebElement> findElementsByXpath(String xpath) {
		By by = By.xpath(xpath);
		return driver.findElements(by);
	}

	/**
	 * Click the element with the specific index.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param index
	 *            index of the element (from 0)
	 */
	public void findElementsAndClickByXpath(String xpath, int index) {
		By by = By.xpath(xpath);
		driver.findElements(by).get(index).click();
		wait(1);
	}

	/**
	 * Wait for the element displayed in specific duration via locator.
	 *
	 * @param by
	 *            locator of the element
	 * @param second
	 *            duration for waiting
	 * @return WebElement
	 */
	public WebElement waitForElementDisplayed(By by, int second) {
		WebDriverWait wait = new WebDriverWait(driver, second);
		WebElement element = wait.until(ExpectedConditions
				.visibilityOfElementLocated(by));
		return element;
	}

	/**
	 * Wait for the element displayed in specific duration via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param second
	 *            duration for waiting
	 * @return WebElement
	 */
	public WebElement waitForElementDisplayedByXpath(String xpath, int second) {
		WebDriverWait wait = new WebDriverWait(driver, second);
		WebElement element = wait.until(ExpectedConditions
				.visibilityOfElementLocated(By.xpath(xpath)));
		return element;
	}

	/**
	 * Wait for the element to be clickable in specific duration via locator.
	 *
	 * @param by
	 *            locator of the element
	 * @param second
	 *            duration for waiting
	 * @return WebElement
	 */
	public WebElement waitForElementClickable(By by, int second) {
		WebDriverWait wait = new WebDriverWait(driver, second);
		WebElement element = wait.until(ExpectedConditions
				.elementToBeClickable(by));
		return element;
	}

	/**
	 * Wait for the element to be clickable in specific duration via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param second
	 *            duration for waiting
	 * @return WebElement
	 */
	public WebElement waitForElementClickableByXpath(String xpath, int second) {
		WebDriverWait wait = new WebDriverWait(driver, second);
		WebElement element = wait.until(ExpectedConditions
				.elementToBeClickable(By.xpath(xpath)));
		return element;
	}

	/**
	 * Is the element displayed or not via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @return boolean
	 */
	public boolean isElementDisplayedByXpath(String xpath) {
		By by = By.xpath(xpath);
		try {
			waitForElementDisplayed(by, webDriverFactory.getDefaultTimeout())
					.isDisplayed();
			LOG.info("The element, " + by + " is displayed.");
			return true;
		} catch (Exception e) {
			LOG.info("The element, " + by + " is not displayed!");
			return false;
		}
	}

	/**
	 * Switch to the default frame.
	 */
	public void switchToDefaultFrame() {
		driver.switchTo().defaultContent();
	}

	/**
	 * Switch the frame via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void switchToFrame(String xpath) {
		By by = By.xpath(xpath);
		LOG.info("Switch to the frame: " + by);
		driver.switchTo().frame(waitForElementDisplayed(by, 10));
	}

	@Override
	public TargetLocator switchTo() {
		return driver.switchTo();
	}

	public String getCurrentUrl() {
		return driver.getCurrentUrl();
	}

	public String getTitle() {
		return driver.getTitle();
	}

	public String getPageSource() {
		return driver.getPageSource();
	}

	public void close() {
		driver.close();
	}

	public void quit() {
		driver.quit();
	}

	/**
	 * Confirm the alert.
	 */
	public void confirmAlert() {
		Alert alert = driver.switchTo().alert();
		alert.accept();
	}

	/**
	 * Cancel the alert.
	 */
	public void cancelAlert() {
		Alert alert = driver.switchTo().alert();
		alert.dismiss();
	}

	/**
	 * Prompt the alert.
	 */
	public void promptAlert(String content) {
		Alert alert = driver.switchTo().alert();
		alert.sendKeys(content);
		alert.accept();
	}

	public void back() {
		driver.navigate().back();
	}

	public void forward() {
		driver.navigate().forward();
	}

	public void refresh() {
		driver.navigate().refresh();
	}

	@Override
	public Navigation navigate() {
		return driver.navigate();
	}

	/**
	 * Select the option from the specific select via the XPath.
	 *
	 * @param xpath
	 * @param optionText
	 */
	public void selectOptionByXpath(String xpath, String optionText) {
		findElementAndClickByXpath(xpath);
		String option = xpath + "/option[text()='" + optionText + "']";
		findElementAndClickByXpath(option);
		clickByXpath(option);
		wait(10);
	}

	/**
	 * Select the elements according to the XPaths.
	 *
	 * @param xpaths
	 */
	public void selectElementsByXpath(String[] xpaths) {
		Actions actions = new Actions(driver);
		actions.keyDown(Keys.CONTROL);
		for (String xpath : xpaths) {
			actions.click(findElementByXpath(xpath));
		}
		actions.keyUp(Keys.CONTROL);
		actions.perform();
	}

	/**
	 * Move mouse to the specific element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void moveToElementByXpath(String xpath) {
		Actions actions = new Actions(driver);
		actions.moveToElement(findElementByXpath(xpath)).perform();
	}

	/**
	 * Move mouse to the specific element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void moveToElementJqueryByXpath(String xpath) {
		WebElement target = driver.findElement(By.xpath(xpath));
		((JavascriptExecutor) driver).executeScript(
				"$(arguments[0]).mouseover();", target);
		wait(2);
	}

	/**
	 * Move mouse to the element by offset.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param xOffset
	 * @param yOffset
	 */
	public void moveByOffsetByXpath(String xpath, int xOffset, int yOffset) {
		Point point = getLocationByXpath(xpath);
		Actions actions = new Actions(driver);
		actions.moveByOffset(point.getX() + xOffset, point.getY() + yOffset)
				.build().perform();
	}

	/**
	 * Move mouse to the element by offset and click.
	 *
	 * @param xpath
	 *            XPath of the element
	 * @param xOffset
	 * @param yOffset
	 */
	public void moveByOffsetAndClickByXpath(String xpath, int xOffset,
			int yOffset) {
		Point point = getLocationByXpath(xpath);
		Actions actions = new Actions(driver);
		actions.moveByOffset(point.getX() + xOffset, point.getY() + yOffset)
				.click().build().perform();
	}

	/**
	 * Drag the element to another element and drop.
	 *
	 * @param srcXpath
	 *            XPath of the dragged element
	 * @param destXpath
	 */
	public void dragAndDropToElementByXpath(String srcXpath, String destXpath) {
		WebElement srcElement = findElementByXpath(srcXpath);
		WebElement destElement = findElementByXpath(destXpath);
		Actions actions = new Actions(driver);
		actions.moveToElement(srcElement).clickAndHold()
				.moveToElement(destElement).release().perform();
	}

	/**
	 * Drag the element by offset and drop.
	 *
	 * @param xpath
	 * @param xOffset
	 * @param yOffset
	 */
	public void dragAndDropByOffsetByXpath(String xpath, int xOffset,
			int yOffset) {
		WebElement element = findElementByXpath(xpath);
		Actions actions = new Actions(driver);
		actions.moveToElement(element).clickAndHold()
				.moveByOffset(xOffset, yOffset).release().perform();
	}

	/**
	 * Click the mouse via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void clickByXpath(String xpath) {
		Actions actions = new Actions(driver);
		actions.click(findElementByXpath(xpath)).build().perform();
	}

	/**
	 * Click the mouse using jQuery via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void clickJqueryByXpath(String xpath) {
		WebElement target = driver.findElement(By.xpath(xpath));
		((JavascriptExecutor) driver).executeScript("$(arguments[0]).click();",
				target);
	}

	/**
	 * Click the right mouse via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void rightClickByXpath(String xpath) {
		Actions actions = new Actions(driver);
		actions.contextClick(findElementByXpath(xpath)).build().perform();
	}

	/**
	 * Double click the mouse via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void doubleClickByXpath(String xpath) {
		Actions actions = new Actions(driver);
		actions.doubleClick(findElementByXpath(xpath)).build().perform();
	}

	/**
	 * Get the location of the element
	 *
	 * @return
	 */
	public Point getLocationByXpath(String xpath) {
		return findElementByXpath(xpath).getLocation();
	}

	/**
	 * Scroll the page to the specific element via XPath.
	 *
	 * @param xpath
	 *            XPath of the element
	 */
	public void scrollToElement(String xpath) {
		WebElement target = driver.findElement(By.xpath(xpath));
		((JavascriptExecutor) driver).executeScript(
				"arguments[0].scrollIntoView();", target);
	}

	public Set<String> getWindowHandles() {
		return driver.getWindowHandles();
	}

	public String getWindowHandle() {
		return driver.getWindowHandle();
	}

	@Override
	public Options manage() {
		return driver.manage();
	}

	/**
	 * Capture the screen as PNG file.
	 */
	public void captureScreen() {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
		String date = formatter.format(new Date());
		String fileName = date;
		File srcFile = ((TakesScreenshot) driver)
				.getScreenshotAs(OutputType.FILE);
		File destFile = new File("test-classes/Screenshots" + File.separator
				+ fileName + ".png");
		try {
			FileUtils.copyFile(srcFile, destFile);
		} catch (IOException e) {
			LOG.error("IOException");
		}
	}

	/**
	 * Wait for the element to display after the specific second.
	 *
	 * @param second
	 *            the duration for waiting
	 */
	public void wait(int second) {
		try {
			Thread.sleep((long) second * 1000);
		} catch (InterruptedException e) {
			LOG.error("InterruptedException");
		}
	}

	/**
	 * Switch to the new window.
	 *
	 */
	public void switchToNewWindow() {
		String currentWindow = driver.getWindowHandle();
		Set<String> handles = driver.getWindowHandles();
		Iterator<String> iterator = handles.iterator();
		while (iterator.hasNext()) {
			if (currentWindow == iterator.next()) {
				continue;
			}
			driver.switchTo().window(iterator.next());
		}
		wait(2);
	}
}


text:
Why is this site named Antipope?
Antipope acquired its name due to a drunken mistake in 1991.
Back in the mists of pre-history, I wanted an email and usenet feed very badly. However, usenet feeds were kind of hard to come by in the UK in 1991. Indeed, the only way to get one was to cough up a sum of money comparable to the price of a car, or to bribe a sysadmin who could give you a downstream feed via UUCP over modem. (This was before there were any ISPs in the UK, you see.)
Well, I found a sysadmin who was willing to be bribed with alcohol, and by and by the subject of a UUCP feed came up.
"What sitename do you want?" he asked.
I'd been posting on usenet under the alias "AutoPope -- pontifications by email". (If you don't know what the long word means, go look it up.) So I said, "How about autopope.uucp?"
"Okay." Hic. Burp.
And the next day, I was the somewhat bemused owner of a site called antipope.uucp (which is still in the UUCP maps, although it hasn't collected any mail for the past four years). I connected to it using a 286-powered PC running at all of 12MHz, and a 2400 baud modem. And there was no spam. (You tell that to youngsters these days and they won't believe you. Mutter, grumble.)
The Antipope tag followed me when I got my first Demon dial-up TCP/IP connection, about six months after Demon started up in 1993. (It took me that long because ISPs were new and badly funded in those days -- I only found about about them by word of mouth.) So I still have antipope.demon.co.uk. And of course, it seemed reasonable in 1996 to register antipope.org and hang it off my own server in 1997, when I finally got around to a colocation deal.
So Antipope is not a significant name; it's just a communications error. You have been warned.
[ Main index ]


was also established which has treated almost 700 patients.
This entry was posted on August 28, 2010 at 2:41 pm and is filed under Uncategorized.	You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


Dagne Dover is a designer handbag brand that easily transitions from day to night while helping you to keep all of your things organized at a price point of $135.
Stop looking frantically through your bag for that one misplaced item and get organized with Dagne Dover. This handbag brand offers trendy luxurious styles that can easily be used as a chic everyday day to keep your purse essentials and life in order. From work bags to gym bags they have the perfect bags to fit any occasion seamlessly.
Free returns for order on used products within 30 days of purchase on orders shipped within the US.
Senreve is an upscale luxury handbag brand that offers a variety of styles for the modern multi-faceted women. This handbag company brings you the latest in handbag looks and styles with a main price point of $800.


Benjamin Fulford investigates a mysterious plasma weapon seen prior to the Niigata earthquake in July 2007 and Red, White & Blue HAARP lights near the epicenter prior to the recent quake in China. Taiwan satellites measured a 50% drop in ionospheric energy above the Sichuan epicenter on the day before the quake. Both earthquakes targeted nuclear military facilities… coincidence or war crime?
A Swiss team is developing a solar plane that will carry 300 passengers.
These scientists are instead convinced that the human-caused global warming hypothesis is without scientific validity and that government action on the basis of this hypothesis would unnecessarily and counterproductively damage both human prosperity and the natural environment of the Earth.
For information about this project, click below.


The 11-digit IFSC Code of state bank of india ,BIADA BUILDING,PASWAN CHOWK,HAJIPUR,DISTT.VAISHALI.BIHAR 844101 located in the location of VAISHALI district of BIHAR is given below. You can use this IFSC Code to transfer money using Immediate Payment Service (IMPS), Real Time Gross Settlement (RTGS) and the National Electronic Fund Transfer (NEFT) system. You can also find this code on your chequebook issued by the state bank of india. IFSC code of state bank of india located in BIADA BUILDING,PASWAN CHOWK,HAJIPUR,DISTT.VAISHALI.BIHAR 844101, BIHAR is SBIN0017487 and MICR code is NA.