亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? key.c

?? MCU為:ATMGEA128
?? C
字號:
#include "include.h"

#ifndef __key_c__
#define __key_c__


#define	T6				2
#define	T2I				2
#define	KEY_VERSION		T2I
extern unsigned char colourmode;
extern unsigned char user_config[CONFIGDATA_MAX];
//***************************************************************** 
//函   數(shù)   名  	:   KEYSCAN   
//建 立 時  間   	:   2006-9-23 
//功 能 描  述   	:   KEYCODE,定義值為0X00的鍵值為無按鍵按下。
//說明			:本函數(shù)為鍵盤掃描,返回KEYCODE
//						0x00:無鍵按鍵
//備        注   		:   沒有返回值 
//最后修改時間		:   2006-9-23
//***************************************************************** 
//**************************鍵盤掃描****************
unsigned char keyscan(void){
static unsigned char 	keydelay=0;
static unsigned char 	keybuf=0x00;
unsigned char 		keycode=0x00;
unsigned char 		temp,keystate;//
keystate=0;
if((KEY1_PIN&(1<<KEY1_BIT))==0)keystate|=0x4;
if((KEY2_PIN&(1<<KEY2_BIT))==0)keystate|=0x8;
//得到當(dāng)前鍵的狀態(tài)keystate
#define 	short_btm	5
#define	long_btm	200
if(keystate==0x00)
	{
	//無鍵按下的操作!
	if(keydelay>short_btm&&keydelay<long_btm)keycode=keybuf;
	if(keydelay>long_btm)
		{
		switch(keybuf)
			{
			case 0x8:
				keycode=0x1;
				break;
			case 0x4:
				keycode=0x2;	
				break;
			default:
				keycode=keybuf;
			}
		};
	if(keydelay<=short_btm)keycode=0;
	keybuf=0;
	keydelay=0;
	return keycode;
	}
else
	{
		  //有按鍵按下的操作。
	  if(keystate==keybuf)
	  	{
	    	keydelay++;
	   	if(keydelay>short_btm)//防抖動時間=5*20MS
			{
			
			}
		if(keydelay>long_btm)//連續(xù)按鍵處理**暫時無此功能
			{
			keydelay=long_btm+5;
			}
	  	}
	  else
	  	{
	  	keybuf=keystate;
	  	keydelay=0;
	  	}
return 0x00;
	}
}
//**************************************鍵處理********************* 
//函   數(shù)   名  	:   dokey  
//建 立 時  間   	:   2006-9-23 
//功 能 描  述   	:  
//說明			:
//備        注   		:   沒有返回值 
//最后修改時間		:   2006-9-23
//********************************************************************
void dokey(unsigned char keycode)
{
static unsigned int osdoff_time=0;
static unsigned char cur_gm=gm0;



unsigned char key_tmp=keycode;
extern 	unsigned char led_status,activeline;
extern 	unsigned char osdstyle;
extern unsigned char 	user_config[CONFIGDATA_MAX];
static unsigned char tmp,tmp1=0;
static unsigned char mimastep=0;
static unsigned int step_rst=0;
int i,j;
//osdstyle=KEY_VERSION;
//osdstyle=4;

//進(jìn)入模式選擇
//******************osd菜單模式 0*****************   
if(osdstyle==0)
	{
	switch(key_tmp)
	    {
		case 0x00:
			if(activeline!=0xff){
				if(osdoff_time++==1000)
					{
					activeline=0xff;
					osdoff_time=0;			
					osddisable();
					cleanline(0,0);
					cleanline(0,1);
					cleanline(0,2);
					osdstyle=2;
					}
				}
			break;
		case 0x01://key dowm
			 break;
		case 0x02://key up
			 break;
		case 0x04://key +
			 break;
		case 0x08://key -
			 break;
		case 0x10://KEY FUNCTION
		case 0x40://KEY FUNCTION
			 break;
		default:
			 break;
		}
	return;
	}
//******************osd菜單模式 1*****************   
//標(biāo)準(zhǔn)
//鮮艷
//明亮
if(osdstyle==1)
	{
	switch(key_tmp)
	    {
		case 0x00:
			if(activeline!=0xff){
				if(osdoff_time++==1000)
					{
					activeline=0xff;
					osdoff_time=0;			
					osddisable();
					cleanline(0,0);
					cleanline(0,1);
					cleanline(0,2);				
					savecfg();
					osdstyle=4;
					}
				}
			break;
		case 0x01://key dowm
			 break;
		case 0x02://key up
			 break;
		case 0x04://key +
			 break;
		case 0x08://key -
			 break;
		case 0x10://KEY FUNCTION
		case 0x40://KEY FUNCTION
			osdstyle=1;
			osdoff_time=0;	
			colourmode++;
			if(colourmode==3)colourmode=0;
			switch(colourmode)
				{
				case 0://標(biāo)準(zhǔn)
				t103_write(0x50, 0x68, 0x80);
				t103_write(0x50, 0x69, 0x80);
				t103_write(0x50, 0x6c, 0x80);
				refreshmenu();
				break;
				case 1://明亮
				t103_write(0x50, 0x68, 0xb0);
				t103_write(0x50, 0x69, 0x70);
				t103_write(0x50, 0x6c, 0x80);
				refreshmenu();
				break;
				case 2://鮮艷
				t103_write(0x50, 0x68, 0x80);
				t103_write(0x50, 0x69, 0x80);
				t103_write(0x50, 0x6c, 0xb0);		
				refreshmenu();
				break;
				default:
			 	break;
				}
			 break;
		default:
			 break;
		}
	return;
	}
//******************osd菜單模式 2***************** T2I模式 
if(osdstyle==2)
	{
	if(key_tmp!=0&&activeline==0xff)
	{	
		//key+-updown,display the style 2
		if(key_tmp==0x01||key_tmp==0x02||key_tmp==0x04||key_tmp==0x08)
		{
		activeline=0;
		user_config[BRIGHTNESS]=t103_read(0x50, 0x69);
		user_config[CHROMA]=t103_read(0x50, 0x6c);
		user_config[CONSTRAST]=t103_read(0x50,0x68);
		refreshmenu();	
		refreshline(0, activeline);
		}
	osdenable();//active==0xff:osd開啟
	return;
	}
	switch(key_tmp)
	    {
		case 0x00:
			if(activeline!=0xff){
				if(osdoff_time++==1000)
					{
					activeline=0xff;
					osdoff_time=0;			
					osddisable();
					cleanline(0,0);
					cleanline(0,1);
					cleanline(0,2);				
					savecfg();
					osdstyle=2;
					}
				}
			break;
		case 0x01://key dowm
			osdoff_time=0;	
			cleanline(0,activeline);
			activeline++;
			if(activeline>=MEUNLINE_MAX)activeline=MEUNLINE_MAX-1;
			refreshline(0, activeline);
			 break;
		case 0x02://key up
			osdoff_time=0;
			cleanline(0,activeline);
			/*
			switch(activeline)
					{
					case RESET_DEF:
						if(activeline==0xff)break;
						osdstyle=4;
						OSDInit();
						osdenable();
						break;
					default:
						if(activeline!=0)activeline--;
						refreshline(0, activeline);
						break;
				}
			*/
			if(activeline!=0)activeline--;
			refreshline(0, activeline);
			
			 break;
		case 0x04://key +
			osdoff_time=0;
			if(activeline>=MEUNLINE_MAX)
				{
				activeline=0;
				}
			else
				{
				if(user_config[activeline]<0xfc)user_config[activeline]+=4;
				switch(activeline)
					{
					case BRIGHTNESS:
						t103_write(0x50, 0x69,user_config[BRIGHTNESS]);
						//TD28_WRITE(0x0c, user_config[BRIGHTNESS]>>2);
						break;
					case CHROMA:
						t103_write(0x50, 0x6c, user_config[CHROMA]);
						break;
					case CONSTRAST:
						t103_write(0x50,0x68,user_config[CONSTRAST]);
						//TD28_WRITE(0x09, user_config[CONSTRAST]>>2);
						break;
					case RESET_DEF:
						t103_reset();
						t103_init();
						OSDInit();
						user_config[BRIGHTNESS]=DEFA_BRIGHTNESS;
						user_config[CHROMA]=DEFA_CHROMA;
						user_config[CONSTRAST]=DEFA_CONSTRAST;
						t103_write(0x50, 0x69,user_config[BRIGHTNESS]);
						t103_write(0x50, 0x6c, user_config[CHROMA]);
						t103_write(0x50,0x68,user_config[CONSTRAST]);
						/*
						user_config[BRIGHTNESS]=t103_read(0x50, 0x68);
						user_config[CHROMA]=t103_read(0x50, 0x6c);
						user_config[CONSTRAST]=t103_read(0x50,0x69);
						*/
						refreshline(0,0);
						cleanline(0,1);
						cleanline(0,2);
						activeline=0;
						osdoff_time=0;
						osdenable();
						break;
					default:
						break;
					}
				refreshline(0, activeline);
				}
			 break;
		case 0x08://key -
			osdoff_time=0;
			if(activeline>=MEUNLINE_MAX)
				{
				activeline=0;
				}
			else
				{
				if(user_config[activeline]>=4)user_config[activeline]-=4;
				switch(activeline)
					{
					case BRIGHTNESS:
						t103_write(0x50, 0x69,user_config[BRIGHTNESS]);
						//TD28_WRITE(0x0c, user_config[BRIGHTNESS]>>2);
						break;
					case CHROMA:
						t103_write(0x50, 0x6c, user_config[CHROMA]);
						
						break;
					case CONSTRAST:
						t103_write(0x50,0x68,user_config[CONSTRAST]);
						//TD28_WRITE(0x09, user_config[CONSTRAST]>>2);
						break;
					case RESET_DEF:
						t103_reset();
						t103_init();
						OSDInit();
						user_config[BRIGHTNESS]=DEFA_BRIGHTNESS;
						user_config[CHROMA]=DEFA_CHROMA;
						user_config[CONSTRAST]=DEFA_CONSTRAST;
						t103_write(0x50, 0x69,user_config[BRIGHTNESS]);
						t103_write(0x50, 0x6c, user_config[CHROMA]);
						t103_write(0x50,0x68,user_config[CONSTRAST]);
						/*
						user_config[BRIGHTNESS]=t103_read(0x50, 0x68);
						user_config[CHROMA]=t103_read(0x50, 0x6c);
						user_config[CONSTRAST]=t103_read(0x50,0x69);
						*/
						refreshline(0,0);
						cleanline(0,1);
						cleanline(0,2);
						activeline=0;
						osdoff_time=0;
						osdenable();
						break;
					default:
						break;
					}
				refreshline(0, activeline);
				}
			 break;
		case 0x10://KEY FUNCTION
		case 0x40://KEY FUNCTION
			 break;
		default:
			 break;
		}
	return;
	}
//*********************osd 菜單模式4*********************************
//td28 gamma test
if(osdstyle==4)
	{
	switch(key_tmp)
	    {
		case 0x00:
		{
				if(osdoff_time++==1000)
					{
					activeline=0xff;
					osdoff_time=0;			
					osddisable();
					cleanline(0,0);
					cleanline(0,1);
					cleanline(0,2);				
					savecfg();
					osdstyle=2;
					osddisable();
					}
				}
			break;
			break;
		case 0x01://key dowm
			osdoff_time=0;
			refreshmenu();
			if(cur_gm==gm8)
				cur_gm=gm0;
			else 
				cur_gm++;
			 break;
		case 0x02://key up
			osdoff_time=0;			
			if(cur_gm==gm0)
				cur_gm=gm8;
			else 
				cur_gm--;
			 break;
		case 0x04://key +
			
			osdoff_time=0;
			user_config[cur_gm]++;
			user_config[cur_gm]&=0xf;
			if(cur_gm==gm0||cur_gm==gm1)
				{
				tmp=((user_config[gm1]<<4)&0xf0)|user_config[gm0];
				TD28_WRITE(0x14, tmp);
				//TD28_WRITE(0x0c, tmp);
				refreshline_gm(0, 0);
				}
			if(cur_gm==gm2||cur_gm==gm3)
				{
				tmp=((user_config[gm3]<<4)&0xf0)|user_config[gm2];
				TD28_WRITE(0x15, tmp);
				//TD28_WRITE(0x09, tmp);
				refreshline_gm(0, 1);
				}
			if(cur_gm==gm4||cur_gm==gm5)
				{
				tmp=((user_config[gm5]<<4)&0xf0)|user_config[gm4];
				TD28_WRITE(0x16, tmp);
				refreshline_gm(0, 2);
				}
			if(cur_gm==gm6||cur_gm==gm7)
				{
				tmp=((user_config[gm7]<<4)&0xf0)|user_config[gm6];
				TD28_WRITE(0x17, tmp);
				refreshline_gm(0, 3);
				}
			if(cur_gm==gm8)
				{
				tmp=user_config[gm8];
				TD28_WRITE(0x18, tmp);	
				refreshline_gm(0, 4);
				}
			//refreshmenu();
			 break;
		case 0x08://key -
			osdoff_time=0;
			user_config[cur_gm]--;
			user_config[cur_gm]&=0xf;
			
			if(cur_gm==gm0||cur_gm==gm1)
				{
				tmp=((user_config[gm1]<<4)&0xf0)|user_config[gm0];
				TD28_WRITE(0x14, tmp);
				refreshline_gm(0, 0);
				}
			if(cur_gm==gm2||cur_gm==gm3)
				{
				tmp=((user_config[gm3]<<4)&0xf0)|user_config[gm2];
				TD28_WRITE(0x15, tmp);
				refreshline_gm(0, 1);
				}
			if(cur_gm==gm4||cur_gm==gm5)
				{
				tmp=((user_config[gm5]<<4)&0xf0)|user_config[gm4];
				TD28_WRITE(0x16, tmp);
				refreshline_gm(0, 2);
				}
			if(cur_gm==gm6||cur_gm==gm7)
				{
				tmp=((user_config[gm7]<<4)&0xf0)|user_config[gm6];
				TD28_WRITE(0x17, tmp);
				refreshline_gm(0, 3);
				}
			if(cur_gm==gm8)
				{
				tmp=user_config[gm8];
				TD28_WRITE(0x18, tmp);	
				refreshline_gm(0, 4);
				}
			//refreshmenu();
			 break;
		default:
			 break;
		}
	}
}
//*********************osd 菜單模式**********************************



//******************************************************************* 
//函   數(shù)   名  	:   leddisplay  
//建 立 時  間   	:   2006-9-23 
//功 能 描  述   	:  	0x00:全亮
//						0x01:
//						0x00:
//						0x00:
//						0x00:
//						0x00:

//說明			:
//備        注   		:   沒有返回值 
//最后修改時間		:   2006-9-23
//********************************************************************
void leddisplay(void){
static	unsigned char led_delay=0;
extern 	unsigned char led_status;
switch(led_status){
	case 0x00:
		LED1_ON;
		LED2_ON;
		break;
	case 0x01:
		led_delay++;
		if(led_delay<=500/TIME_TICK)
			LED1_ON;
			LED2_ON;
		if(led_delay>=500/TIME_TICK&led_delay<=1000/TIME_TICK)
			LED1_OFF;
			LED2_ON;
		if(led_delay>1000/TIME_TICK)
			{
			led_delay=0;
			LED1_ON;
			LED2_ON;
			}
		break;
	case 0x02:
		led_delay++;
		if(led_delay<=250/TIME_TICK)
			LED1_ON;
		if(led_delay>=250/TIME_TICK&led_delay<=500/TIME_TICK)
			LED1_OFF;
		if(led_delay>500/TIME_TICK)
			{
			led_delay=0;
			LED1_ON;
			}
			LED2_OFF;
		break;
	case 0x03:
		led_delay++;
		if(led_delay<=500/TIME_TICK)
			LED2_ON;
		if(led_delay>=500/TIME_TICK&led_delay<=1000/TIME_TICK)
			LED2_OFF;
		if(led_delay>1000/TIME_TICK)
			{
			led_delay=0;
			LED2_ON;
			}
		break;
	case 0x04:
		led_delay++;
		if(led_delay<=250/TIME_TICK)
			LED2_ON;
		if(led_delay>=250/TIME_TICK&led_delay<=500/TIME_TICK)
			LED2_OFF;
		if(led_delay>500/TIME_TICK)
			{
			led_delay=0;
			LED2_ON;
			}
		break;
	case 0x05:
		LED2_ON;
		LED2_ON;
		break;
		case 0x06:		
	default:
		break;
	}
}
void statusscan(void)
{
static	unsigned char udstatus=0XFF;
extern  unsigned char cur_mode;
unsigned char tmp;
int i,j;
//unsigned char 	
//初始化狀態(tài)
//0 :TD28-0x05-0x2b;	T103-0XCE-0XB9  (1:TD28-0x04-0x28;T103-0XCE-0X82)
tmp=UD_PIN&(1<<UD_BIT);

//up	to 	down
if((tmp==(1<<UD_BIT))&&(udstatus!=(1<<UD_BIT)))
{
for(i=0;i<10000;i++)
	{
	if((tmp=UD_PIN&(1<<UD_BIT))!=(1<<UD_BIT))return;;
	for(j=0;j<10;j++);
	}
udstatus=(1<<UD_BIT);
TD28_WRITE(0x05, 0x2b);
if(cur_mode==0)t103_write(0X50, 0XCE, 0Xb9);
if(cur_mode==1)t103_write(0X50, 0XCE, 0Xa6);
return;
}

//down	to	up
if((tmp==0)&&(udstatus!=0))
{
for(i=0;i<10000;i++)
	{
	if((tmp=UD_PIN&(1<<UD_BIT))!=0)return;
	for(j=0;j<10;j++);
	}
udstatus=0;
TD28_WRITE(0x05, 0x28);
if(cur_mode==0)t103_write(0X50, 0XCE, 0X82);
if(cur_mode==1)t103_write(0X50, 0XCE, 0Xdb);
return;
}
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丰满放荡岳乱妇91ww| 国产精品亲子伦对白| 天天综合网天天综合色| 欧美日韩亚洲不卡| 亚洲成精国产精品女| 欧美日韩在线亚洲一区蜜芽| 亚洲免费观看高清完整版在线观看| 国产精品888| 一区二区三区在线免费观看| 欧美日韩中文精品| 老司机精品视频导航| 欧美精品一区二区三区久久久| 国产成人免费高清| 亚洲欧美日韩在线播放| 337p亚洲精品色噜噜噜| 黄一区二区三区| 伊人色综合久久天天| 欧美男同性恋视频网站| 视频一区二区三区在线| 久久人人97超碰com| 91免费看片在线观看| 麻豆精品视频在线| 蜜臂av日日欢夜夜爽一区| 国产精品乱码妇女bbbb| 51午夜精品国产| 91婷婷韩国欧美一区二区| 久久成人免费电影| 亚洲成人一区在线| 怡红院av一区二区三区| www日韩大片| 欧美日韩精品是欧美日韩精品| 国产乱码精品一区二区三区av | 91丨porny丨首页| 国产一区二三区好的| 亚洲精品中文在线影院| 国产精品视频一二三区| 日韩欧美成人激情| 欧美一区二区三区公司| 69堂国产成人免费视频| 欧美性做爰猛烈叫床潮| 91美女蜜桃在线| 91麻豆免费看| 日本福利一区二区| 色琪琪一区二区三区亚洲区| www.成人网.com| 成人黄页在线观看| 91亚洲精品久久久蜜桃网站| 国产精品一区二区不卡| 国产盗摄一区二区三区| 国产成人精品www牛牛影视| 国产美女一区二区| 国产精品伊人色| 国产麻豆精品视频| 国产99一区视频免费 | 日韩成人一区二区三区在线观看| 亚洲在线观看免费| 丝袜亚洲另类欧美综合| 国产精选一区二区三区| 国产成人在线网站| 99国产精品久久| 欧美色倩网站大全免费| 日韩美女视频在线| 成人免费小视频| 亚洲第一激情av| 国产精品 欧美精品| 欧美伊人久久久久久久久影院| 在线观看日韩高清av| 精品国产一区a| 亚洲人精品一区| 精品一区二区免费在线观看| 91女厕偷拍女厕偷拍高清| 日韩午夜激情免费电影| 日韩伦理av电影| 国产麻豆精品视频| 欧美性生活一区| 国产精品久久久久久久岛一牛影视 | 色国产综合视频| 欧美韩日一区二区三区四区| 亚洲成人av免费| av电影天堂一区二区在线观看| 欧美精品第一页| 亚洲一区二区高清| 一本久道久久综合中文字幕| 久久久一区二区三区| 亚洲国产aⅴ成人精品无吗| 懂色av一区二区三区免费看| 欧美videossexotv100| 亚洲日本乱码在线观看| av中文字幕一区| 久久精品国产亚洲a| 欧美视频中文字幕| 一区二区三区精品在线观看| 精东粉嫩av免费一区二区三区| 欧美人成免费网站| 日韩av电影天堂| 777亚洲妇女| 九九久久精品视频| 欧美国产禁国产网站cc| 丁香五精品蜜臀久久久久99网站| 欧美va亚洲va香蕉在线| 青青草国产成人99久久| 欧美一区二区三区免费观看视频| 日韩中文字幕av电影| 欧美一级在线观看| 久久国产免费看| 国产精品久久三区| 在线观看av不卡| 日韩高清中文字幕一区| 欧美精品一区二区三区高清aⅴ | 亚洲精品国产精华液| 7777精品伊人久久久大香线蕉完整版 | 色婷婷综合久色| 视频精品一区二区| 久久精品欧美一区二区三区不卡| 成人黄色免费短视频| 亚洲va天堂va国产va久| 国产精品久久久久7777按摩| 欧美伊人久久大香线蕉综合69| 日韩1区2区日韩1区2区| 亚洲欧美在线观看| 日韩一区二区免费在线电影| 日韩免费高清电影| 91丨九色丨国产丨porny| 秋霞午夜av一区二区三区| 最新日韩av在线| 久久精品夜夜夜夜久久| 欧美三区免费完整视频在线观看| 国产乱人伦精品一区二区在线观看| 亚洲视频一二三| 中文字幕一区在线观看视频| 亚洲日本中文字幕区| 国产调教视频一区| 久久一区二区视频| 欧美电影免费观看高清完整版 | 日韩一区二区三区视频在线 | 精品亚洲国内自在自线福利| 亚洲女女做受ⅹxx高潮| 国产亚洲一区字幕| 久久嫩草精品久久久精品| 538prom精品视频线放| 欧美日韩一级二级| 欧美日韩一区视频| 日韩一二三四区| 精品伦理精品一区| 国产亚洲视频系列| 国产女主播在线一区二区| 久久亚洲综合色| 国产精品久线观看视频| 综合中文字幕亚洲| 亚洲一区二区三区四区的| 亚洲高清免费观看| 蜜桃视频免费观看一区| 狠狠色狠狠色合久久伊人| 久久99国产精品久久| 国产在线播放一区| 91免费视频观看| 欧美一区2区视频在线观看| 欧美国产精品一区二区三区| 亚洲激情欧美激情| 日本一道高清亚洲日美韩| 国产不卡视频一区| 色网综合在线观看| 国产欧美日韩精品一区| 亚洲激情男女视频| 精品影视av免费| 色av综合在线| 久久欧美中文字幕| 日韩精品福利网| 成人高清免费观看| 欧美一级高清片| 中文字幕一区二区三区av| 奇米精品一区二区三区在线观看一| 成人网在线免费视频| 日韩欧美国产麻豆| 亚洲综合色视频| 99久久精品费精品国产一区二区| 欧美一区二区三区免费| 一区二区三区中文免费| 国产91丝袜在线18| 久久久久久久久久久久久久久99 | 欧洲亚洲国产日韩| 一区二区三区蜜桃网| bt7086福利一区国产| 久久综合色婷婷| 狠狠色丁香婷婷综合| 日韩精品一区二| 老鸭窝一区二区久久精品| 欧美日韩综合色| 亚洲成a人v欧美综合天堂下载 | 在线免费观看日本欧美| 国产精品国产自产拍在线| 成人一级视频在线观看| 亚洲国产精品ⅴa在线观看| 国产一区二区三区在线观看精品 | 亚洲免费观看高清完整| 91浏览器入口在线观看| 综合久久一区二区三区| 色琪琪一区二区三区亚洲区| 亚洲午夜影视影院在线观看| 91麻豆免费看|