contract ERC721Receiver {

	/**
	 * @dev Magic value to be returned upon successful reception of an NFT.
	 * Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`,
	 * which can be also obtained as `ERC721Receiver(0).onERC721Received.selector`
	 */
	bytes4 internal constant ERC721_RECEIVED = 0x150b7a02;

	/**
	 * @notice Handle the receipt of an NFT
	 * @dev The ERC721 smart contract calls this function on the recipient
	 * after a `safetransfer`. This function MAY throw to revert and reject the
	 * transfer. Return of other than the magic value MUST result in the
	 * transaction being reverted.
	 * Note: the contract address is always the message sender.
	 * @param _operator The address which called `safeTransferFrom` function
	 * @param _from The address which previously owned the token
	 * @param _tokenId The NFT identifier which is being transferred
	 * @param _data Additional data with no specified format
	 * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
	 */
	function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) public returns(bytes4);
}
/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.
 * See (https://github.com/OpenZeppelin/openzeppelin-solidity)
 */
function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) public returns(bytes4);

/**
 	 * @notice Handle the receipt of an NFT
 	 * @dev The ERC721 smart contract calls this function on the recipient
 	 * after a `safetransfer`. This function MAY throw to revert and reject the
 	 * transfer. Return of other than the magic value MUST result in the
 	 * transaction being reverted.
 	 * Note: the contract address is always the message sender.
 	 * @param _operator The address which called `safeTransferFrom` function
 	 * @param _from The address which previously owned the token
 	 * @param _tokenId The NFT identifier which is being transferred
 	 * @param _data Additional data with no specified format
 	 * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
 	 */