Files
banban/OpenEntry.bat
T

685 lines
20 KiB
Batchfile

@echo off
chcp 65001 >nul
set CURDIR=%~dp0
echo __ ___
echo /\ \__ /\_ \
echo __ __ __ __ ___\ \ ,_\ __\//\ \ ___ _____ __ ___
echo /'__`\/\ \/\ \ /'__`\ /'___\ \ \/ /'__`\\ \ \ / __`\/\ '__`\ /'__`\/' _ `\
echo /\ \L\ \ \ \_\ \/\ __//\ \__/\ \ \_/\ __/ \_\ \_ /\ \L\ \ \ \L\ \/\ __//\ \/\ \
echo \ \___, \ \____/\ \____\ \____\\ \__\ \____\/\____\ \ \____/\ \ ,__/\ \____\ \_\ \_\
echo \/___/\ \/___/ \/____/\/____/ \/__/\/____/\/____/ \/___/ \ \ \/ \/____/\/_/\/_/
echo \ \_\ \ \_\
echo \/_/ \/_/
@echo off
echo **********************************************************************************************
echo Choose language
echo 1 English
echo 2 Chinese
echo **********************************************************************************************
set /p lang_opt=Enter choice (1 or 2):
if "%lang_opt%"=="1" (
set lang=EN
) else (
if "%lang_opt%"=="2" (
set lang=CN
) else (
echo Invalid choice, defaulting to Chinese.
set lang=CN
)
)
if "%lang%"=="EN" (
echo **********************************************************************************************
echo OpenEntry User Guide!!!
echo Since the SDK is compatible with many modules of Quectel ASR platform, in order to facilitate customer development, customers can choose the supported modules according to the product form,
echo This configuration only needs to be configured once. If you want to change the supported module, you need to reconfigure it.
echo 1 Customers can choose the corresponding module OC, SDK support can be consulted by Quectel AE/FAE
echo 2 Customers can choose to cut the corresponding function
echo 3 Customers can choose whether to plug in flash
echo 4 Customers can modify the name of the generated firmware package
echo **********************************************************************************************
) else (
echo **********************************************************************************************
echo ^ OpenEntry 使用指引!!!
echo ^由于 SDK 兼容移远 ASR 平台诸多模组,为了方便客户开发,客户可以根据产品形态自行选择支持的模块,
echo ^功能等一些参数配置。此配置仅需要配置一次即可,如要更换支持的模块,需要重新配置。
echo ^1 客户可以选择对应模块 OC,SDK 支持情况可咨询移远 AE/FAE
echo ^2 客户可以选择裁剪对应的功能
echo ^3 客户可以选择是否外挂 flash
echo ^4 客户可以修改生成固件包的名字
echo **********************************************************************************************
)
if "%lang%"=="EN" (
set /p start=Press Enter to start!!!!
) else (
set /p start=敲回车开始!!!!
)
:start
set ex_fshsize=NO_EXTFLASH
set APP_MODE=XIP
echo
echo ******************************************************
if "%lang%"=="EN" (
echo Select the module you are currently using
) else (
echo 选择你当前使用的模块
)
echo 1.EC600MCN_LC
echo 2.EC600MCN_CC
echo 3.EC800MCN_LC
echo 4.EC800MCN_CC
echo 5.EC800MCN_GC
echo 6.EC800MCN_GD
echo 7.EC800MCN_LF
echo 8.EC600MCN_LF
echo 9.EC600MCN_LA/LE
echo 10.EC600KCN_MC
echo 11.EC800MCN_LA/LE
echo 12.EC800MCN_GA
echo 13.EC800KCN_MC
echo 14.EC200MCN_GB
echo 15.EG810MCN_LA
echo 16.EG810MCN_GA
echo 17.EG800KCN_GC
echo 18.EC800MCN_MC
echo 19.EC800MCN_NC
echo 20.EC600MCN_MC
echo 21.EC800MCN_GM
echo 22.EC600KCN_CC
echo 23.EC600KCN_LC
echo 24.EC800KCN_LC
echo 25.EC800KCN_CC
echo 26.EG800PCN_LA
echo 27.EC200MCN_LC
echo 28.EC200MCN_LF
echo 29.EG800KEU_CC
echo 30.EG810MCN_LC
echo 31.EG800KLA_CC
echo 32.EC800KCN_MD
echo 33.EG810MEU_LC
echo 34.EG810MLA_LC
echo 35.EG800KLA_LC
echo 36.EG800KEU_LC
echo 37.EC600MEU_LA
echo 38.EC600MLA_LA
echo 39.EC600KCN_CK
echo 40.EC600KCN_LK
echo 41.EC800KCN_CK
echo 42.EC800KCN_LK
echo 43.EG915KEU_LA
echo 44.EG800AKCN_91LC
echo 45.EG800AKCN_90LC
echo 46.EG800WCN_11LG
echo 47.EG800AKCN_11LG
echo 48.EG915KEU_LC
echo 49.EG915KEU_LG
echo 50.EG600AKCN_90LC
echo 51.EG600AKCN_91LC
echo 52.EG600AKCN_00LC
echo 53.EG600AKCN_11LC
echo 54.EG800AKEU_11LC
echo 55.EG800AKLA_11LC
echo 56.EG800AKEU_11LG
echo 57.EG800AKLA_00LC
echo 58.EG915NEA_AK
echo 59.EG915NLA_AK
echo 60.EG800AKCN_11LN
echo 61.EG915KLA_LC
echo 62.EG915KLA_LA
echo 63.EG915KLA_LG
echo 64.EG800AKEU_00LC
echo 65.EG800AKGL_11LC
echo 66.EG915NLA_AF
echo 67.EG915NEA_AG
echo 68.EG915NEA_AC
echo 69.EC600NCN_AC
echo 70.EG915NLA_GK
echo 71.EG800AKLA_11LG
echo 72.EG600AKCN_11LG
echo ******************************************************
echo
if "%lang%"=="EN" (
set /p QUEC_PROJECT=Please enter the project number to compile...
) else (
set /p QUEC_PROJECT=请输入要编译的项目序号...
)
if %QUEC_PROJECT%==1 (
set quec_prj=EC600MCN_LC
) else if %QUEC_PROJECT%==2 (
set quec_prj=EC600MCN_CC
) else if %QUEC_PROJECT%==3 (
set quec_prj=EC800MCN_LC
) else if %QUEC_PROJECT%==4 (
set quec_prj=EC800MCN_CC
) else if %QUEC_PROJECT%==5 (
set quec_prj=EC800MCN_GC
) else if %QUEC_PROJECT%==6 (
set quec_prj=EC800MCN_GD
) else if %QUEC_PROJECT%==7 (
set quec_prj=EC800MCN_LF
) else if %QUEC_PROJECT%==8 (
set quec_prj=EC600MCN_LF
) else if %QUEC_PROJECT%==9 (
set quec_prj=EC600MCN_LE
) else if %QUEC_PROJECT%==10 (
set quec_prj=EC600KCN_MC
) else if %QUEC_PROJECT%==11 (
set quec_prj=EC800MCN_LE
) else if %QUEC_PROJECT%==12 (
set quec_prj=EC800MCN_GA
) else if %QUEC_PROJECT%==13 (
set quec_prj=EC800KCN_MC
) else if %QUEC_PROJECT%==14 (
set quec_prj=EC200MCN_GB
) else if %QUEC_PROJECT%==15 (
set quec_prj=EG810MCN_LA
) else if %QUEC_PROJECT%==16 (
set quec_prj=EG810MCN_GA
) else if %QUEC_PROJECT%==17 (
set quec_prj=EG800KCN_GC
) else if %QUEC_PROJECT%==18 (
set quec_prj=EC800MCN_MC
) else if %QUEC_PROJECT%==19 (
set quec_prj=EC800MCN_NC
) else if %QUEC_PROJECT%==20 (
set quec_prj=EC600MCN_MC
) else if %QUEC_PROJECT%==21 (
set quec_prj=EC800MCN_GM
) else if %QUEC_PROJECT%==22 (
set quec_prj=EC600KCN_CC
) else if %QUEC_PROJECT%==23 (
set quec_prj=EC600KCN_LC
) else if %QUEC_PROJECT%==24 (
set quec_prj=EC800KCN_LC
) else if %QUEC_PROJECT%==25 (
set quec_prj=EC800KCN_CC
) else if %QUEC_PROJECT%==26 (
set quec_prj=EG800PCN_LA
) else if %QUEC_PROJECT%==27 (
set quec_prj=EC200MCN_LC
) else if %QUEC_PROJECT%==28 (
set quec_prj=EC200MCN_LF
) else if %QUEC_PROJECT%==29 (
set quec_prj=EG800KEU_CC
) else if %QUEC_PROJECT%==30 (
set quec_prj=EG810MCN_LC
) else if %QUEC_PROJECT%==31 (
set quec_prj=EG800KLA_CC
) else if %QUEC_PROJECT%==32 (
set quec_prj=EC800KCN_MD
) else if %QUEC_PROJECT%==33 (
set quec_prj=EG810MEU_LC
) else if %QUEC_PROJECT%==34 (
set quec_prj=EG810MLA_LC
) else if %QUEC_PROJECT%==35 (
set quec_prj=EG800KLA_LC
) else if %QUEC_PROJECT%==36 (
set quec_prj=EG800KEU_LC
) else if %QUEC_PROJECT%==37 (
set quec_prj=EC600MEU_LA
) else if %QUEC_PROJECT%==38 (
set quec_prj=EC600MLA_LA
) else if %QUEC_PROJECT%==39 (
set quec_prj=EC600KCN_CK
) else if %QUEC_PROJECT%==40 (
set quec_prj=EC600KCN_LK
) else if %QUEC_PROJECT%==41 (
set quec_prj=EC800KCN_CK
) else if %QUEC_PROJECT%==42 (
set quec_prj=EC800KCN_LK
) else if %QUEC_PROJECT%==43 (
set quec_prj=EG915KEU_LA
) else if %QUEC_PROJECT%==44 (
set quec_prj=EG800AKCN_91LC
) else if %QUEC_PROJECT%==45 (
set quec_prj=EG800AKCN_90LC
) else if %QUEC_PROJECT%==46 (
set quec_prj=EG800WCN_11LG
) else if %QUEC_PROJECT%==47 (
set quec_prj=EG800AKCN_11LG
) else if %QUEC_PROJECT%==48 (
set quec_prj=EG915KEU_LC
) else if %QUEC_PROJECT%==49 (
set quec_prj=EG915KEU_LG
) else if %QUEC_PROJECT%==50 (
set quec_prj=EG600AKCN_90LC
) else if %QUEC_PROJECT%==51 (
set quec_prj=EG600AKCN_91LC
) else if %QUEC_PROJECT%==52 (
set quec_prj=EG600AKCN_00LC
) else if %QUEC_PROJECT%==53 (
set quec_prj=EG600AKCN_11LC
) else if %QUEC_PROJECT%==54 (
set quec_prj=EG800AKEU_11LC
) else if %QUEC_PROJECT%==55 (
set quec_prj=EG800AKLA_11LC
) else if %QUEC_PROJECT%==56 (
set quec_prj=EG800AKEU_11LG
) else if %QUEC_PROJECT%==57 (
set quec_prj=EG800AKLA_00LC
) else if %QUEC_PROJECT%==58 (
set quec_prj=EG915NEA_AK
) else if %QUEC_PROJECT%==59 (
set quec_prj=EG915NLA_AK
) else if %QUEC_PROJECT%==60 (
set quec_prj=EG800AKCN_11LN
) else if %QUEC_PROJECT%==61 (
set quec_prj=EG915KLA_LC
) else if %QUEC_PROJECT%==62 (
set quec_prj=EG915KLA_LA
) else if %QUEC_PROJECT%==63 (
set quec_prj=EG915KLA_LG
) else if %QUEC_PROJECT%==64 (
set quec_prj=EG800AKEU_00LC
) else if %QUEC_PROJECT%==65 (
set quec_prj=EG800AKGL_11LC
) else if %QUEC_PROJECT%==66 (
set quec_prj=EG915NLA_AF
) else if %QUEC_PROJECT%==67 (
set quec_prj=EG915NEA_AG
) else if %QUEC_PROJECT%==68 (
set quec_prj=EG915NEA_AC
) else if %QUEC_PROJECT%==69 (
set quec_prj=EC600NCN_AC
) else if %QUEC_PROJECT%==70 (
set quec_prj=EG915NLA_GK
) else if %QUEC_PROJECT%==71 (
set quec_prj=EG800AKLA_11LG
) else if %QUEC_PROJECT%==72 (
set quec_prj=EG600AKCN_11LG
)else (
goto ERR
)
if "%lang%"=="EN" (
echo The project you selected is %quec_prj%
) else (
echo 您选择的项目为%quec_prj%
)
@rem TO SWE 当需要增加新功能时,则同步修改ql-kernel\threadx\config\common\makefile文件,实现宏的定义
echo
echo ***********************************************************************
if "%lang%"=="EN" (
echo Start cutting and selecting functions. For example, if you need to use LCD and TTS, enter 13. If you want to select all, enter 123456789A...
) else (
echo 开始裁剪选择功能,例如需要使用LCD和TTS,那么则输入13,全选则输入123456789A...
)
echo 1.LCD
echo 2.AMR
echo 3.MP3
echo 4.TTS
echo 5.MBEDTLS
echo 6.WAV
echo 7.CAMERA
echo 8.NTP
echo 9.PING
if "%lang%"=="EN" (
echo A.MDSSS_SPS--(Single card protocol stack supports dual SIM single standby function^)
echo B.USBNET--(Only available for versions supporting USBNET^)
echo C.AUDIO_DENOISE--(Enable support for audio noise reduction^)
) else (
echo A.MDSSS_SPS--(单卡协议栈支持双卡单待功能 1602平台不支持此功能^)
echo B.USBNET--(仅适用于支持USBNET的版本^)
echo C.AUDIO_DENOISE--(开启支持音频降噪功能^)
)
echo D.KEYPAD
if "%lang%"=="EN" (
echo Note: The more functions you add, the more flash and ram space you need to reserve for the kernel firmware.
) else (
echo 注意事项:增加功能越多需要预留给内核固件的flash和ram空间越大
)
echo ***********************************************************************
set MLCD=
set MAMR=
set MMP3=
set MTTS=
set MMBEDTLS=
set MWAV=
set MCAMERA=
set MNTP=
set MPING=
set MDSSS_SPS=
set MUSBNET=
set AUDIO_DENOISE=
set MKEYPAD=
if "%lang%"=="EN" (
set /p QUEC_MODULE=Please enter the serial number of the function block to be added (you can enter multiple at the same time^), no function is required, enter 0...
) else (
set /p QUEC_MODULE=请输入要增加功能块的序号(可同时填多个^),不需要任何功能输入0...
)
echo %QUEC_MODULE%|findstr "1" >nul
if %errorlevel%==0 (
set MLCD=LCD_
if "%lang%"=="EN" (
echo LCD Function is turned on
) else (
echo LCD 功能已打开
)
)
echo %QUEC_MODULE%|findstr "2" >nul
if %errorlevel%==0 (
set MAMR=AMR_
if "%lang%"=="EN" (
echo AMR Function is turned on
) else (
echo AMR 功能已打开
)
)
echo %QUEC_MODULE%|findstr "3" >nul
if %errorlevel%==0 (
set MMP3=MP3_
if "%lang%"=="EN" (
echo MP3 Function is turned on
) else (
echo MP3 功能已打开
)
)
echo %QUEC_MODULE%|findstr "4" >nul
if %errorlevel%==0 (
set MTTS=TTS_
if "%lang%"=="EN" (
echo TTS Function is turned on
) else (
echo TTS 功能已打开
)
)
echo %QUEC_MODULE%|findstr "5" >nul
if %errorlevel%==0 (
set MMBEDTLS=MBEDTLS_
if "%lang%"=="EN" (
echo MBEDTLS Function is turned on
) else (
echo MBEDTLS 功能已打开
)
)
echo %QUEC_MODULE%|findstr "6" >nul
if %errorlevel%==0 (
set MWAV=WAV_
if "%lang%"=="EN" (
echo WAV Function is turned on
) else (
echo WAV 功能已打开
)
)
echo %QUEC_MODULE%|findstr "7" >nul
if %errorlevel%==0 (
set MCAMERA=CAMERA_
if "%lang%"=="EN" (
echo CAMERA Function is turned on
) else (
echo CAMERA 功能已打开
)
)
echo %QUEC_MODULE%|findstr "8" >nul
if %errorlevel%==0 (
set MNTP=NTP_
if "%lang%"=="EN" (
echo NTP Function is turned on
) else (
echo NTP 功能已打开
)
)
echo %QUEC_MODULE%|findstr "9" >nul
if %errorlevel%==0 (
set MPING=PING_
if "%lang%"=="EN" (
echo PING Function is turned on
) else (
echo PING 功能已打开
)
)
echo %QUEC_MODULE%|findstr "A" >nul
if %errorlevel%==0 (
set MDSSS_SPS=DSSS_SPS
if "%lang%"=="EN" (
echo DSSS_SPS Single card protocol stack supports dual SIM single standby function is turned on
) else (
echo DSSS_SPS 单卡协议栈支持双卡单待功能已打开
)
)
echo %QUEC_MODULE%|findstr "B" >nul
if %errorlevel%==0 (
set MUSBNET=USBNET_
if "%lang%"=="EN" (
echo USBNET Function is turned on
) else (
echo USBNET 功能已打开
)
)
echo %QUEC_MODULE%|findstr "C" >nul
if %errorlevel%==0 (
set AUDIO_DENOISE=QL_AUDIO_DENOISE
if "%lang%"=="EN" (
echo AUDIO_DENOISE Function is turned on
) else (
echo AUDIO_DENOISE 功能已打开
)
)
echo %QUEC_MODULE%|findstr "D" >nul
if %errorlevel%==0 (
set MKEYPAD=KEYPAD_
if "%lang%"=="EN" (
echo KEYPAD Function is turned on
) else (
echo KEYPAD 功能已打开
)
)
echo %QUEC_MODULE%|findstr "0" >nul
if %errorlevel%==0 (
set module=
if "%lang%"=="EN" (
echo All the above functions are cut
) else (
echo 上述功能全裁剪
)
)
set module=%MLCD%%MAMR%%MMP3%%MTTS%%MMBEDTLS%%MWAV%%MCAMERA%%MNTP%%MPING%%MDSSS_SPS%%MUSBNET%%AUDIO_DENOISE%%MKEYPAD%
echo _%module% >%CURDIR%\ql-config\config\func.txt
if "%quec_prj%"=="EC600MCN_CC" (
goto ext
) else if "%quec_prj%"=="EC600MCN_LF" (
goto ext
) else if "%quec_prj%"=="EC800MCN_CC" (
goto ext
) else if "%quec_prj%"=="EC600MCN_LC" (
goto ext
) else if "%quec_prj%"=="EC800MCN_MC" (
goto ext
) else if "%quec_prj%"=="EC800MCN_NC" (
goto ext
) else if "%quec_prj%"=="EC600KCN_CC" (
goto ext
) else if "%quec_prj%"=="EC800KCN_CC" (
goto ext
) else if "%quec_prj%"=="EG800KEU_CC" (
goto ext
) else if "%quec_prj%"=="EC600KCN_MC" (
goto ext
) else if "%quec_prj%"=="EC800KCN_MC" (
goto ext
) else if "%quec_prj%"=="EG800KLA_CC" (
goto ext
) else if "%quec_prj%"=="EG800KLA_LC" (
goto ext
) else if "%quec_prj%"=="EG800KEU_LC" (
goto ext
) else if "%quec_prj%"=="EC600KCN_LC" (
goto ext
) else if "%quec_prj%"=="EC800KCN_LC" (
goto ext
) else if "%quec_prj%"=="EG800AKCN_91LC" (
goto ext
) else if "%quec_prj%"=="EG800AKCN_90LC" (
goto ext
) else if "%quec_prj%"=="EG800AKCN_11LG" (
goto ext
) else if "%quec_prj%"=="EG800KCN_GC" (
goto ext
) else if "%quec_prj%"=="EC800MCN_GD" (
goto ext
) else if "%quec_prj%"=="EG600AKCN_90LC" (
goto ext
) else if "%quec_prj%"=="EG600AKCN_91LC" (
goto ext
) else if "%quec_prj%"=="EG600AKCN_00LC" (
goto ext
) else if "%quec_prj%"=="EG600AKCN_11LC" (
goto ext
) else if "%quec_prj%"=="EG915KEU_LG" (
goto ext
) else if "%quec_prj%"=="EG800WCN_11LG" (
goto ext
) else if "%quec_prj%"=="EG800AKEU_11LC" (
goto ext
) else if "%quec_prj%"=="EG800AKLA_11LC" (
goto ext
) else if "%quec_prj%"=="EG800AKEU_11LG" (
goto ext
) else if "%quec_prj%"=="EG800AKLA_00LC" (
goto ext
) else if "%quec_prj%"=="EG800AKCN_11LN" (
goto ext
) else if "%quec_prj%"=="EG800AKEU_00LC" (
goto ext
) else if "%quec_prj%"=="EG800AKGL_11LC" (
goto ext
) else if "%quec_prj%"=="EG800AKLA_11LG" (
goto ext
) else if "%quec_prj%"=="EG600AKCN_11LG" (
goto ext
) else (
set APP_MODE=XIP
goto packname
)
:ext
echo
echo ******************************************************
if "%lang%"=="EN" (
echo Whether to install external flash, if not, please press 0
) else (
echo 是否外挂flash,如果没有请按0
)
echo 0.NO_EXT_FLASH
echo 1.1M_EXT_FLASH
echo 2.2M_EXT_FLASH
echo 3.4M_EXT_FLASH
echo 4.8M_EXT_FLASH
echo 5.16M_EXT_FLASH
echo ******************************************************
echo
if "%lang%"=="EN" (
set /p ext_flash=Please enter the serial number corresponding to the external flash size...
) else (
set /p ext_flash=请输入对应外挂flash大小的序号...
)
if %ext_flash%==0 (
set APP_MODE=XIP
set ex_fshsize=NO_EXTFLASH
goto packname
) else if %ext_flash%==1 (
set ex_fshsize=EXT_FLASH_M01
) else if %ext_flash%==2 (
set ex_fshsize=EXT_FLASH_M02
) else if %ext_flash%==3 (
set ex_fshsize=EXT_FLASH_M04
) else if %ext_flash%==4 (
set ex_fshsize=EXT_FLASH_M08
) else if %ext_flash%==5 (
set ex_fshsize=EXT_FLASH_M16
) else (
goto ERR
)
:appmode
echo
if "%lang%"=="EN" (
echo ******************************************************
echo Please check whether the customer_app.bin partition is on the external flash~~~
echo 0.APP_MODE_FUN=0 Default settings, no partition modification
echo 1.APP_MODE_FUN=1 Modify the partition and put customer_app.bin into the external flash
echo ******************************************************
) else (
echo ******************************************************
echo 请检查customer_app.bin 分区是否在外置flash上~~~
echo 0.app存在于内置flash
echo 1.app存在于外挂flash
echo ******************************************************
)
echo
if "%lang%"=="EN" (
set /p APP_MODE_FUN=Please Enter...
) else (
set /p APP_MODE_FUN=请输入...
)
if %APP_MODE_FUN%==0 (
set APP_MODE=XIP
) else if %APP_MODE_FUN%==1 (
set APP_MODE=RAM
) else (
goto ERR
)
:packname
if "%lang%"=="EN" (
set /p CUST_VER=Please enter the generated firmware package name. Enter 0 to use the default firmware name of Quectel...
) else (
set /p CUST_VER=请输入生成的固件包名称,输入0则使用移远默认固件名称
)
if "%lang%"=="EN" (
echo firmware package name%CUST_VER%
) else (
echo 固件名称为%CUST_VER%
)
set cust_ver=%CUST_VER%
if "%lang%"=="EN" (
set /p OEM_VER=Please enter the OEM name, if none please enter 0...
echo The firmware name is %OEM_VER%
) else (
set /p OEM_VER=请输入OEM名称,若无请输入0
echo OEM名称为%OEM_VER%
)
set oem_ver=%OEM_VER%
:build
call build.bat project_name -p %quec_prj% -b %ex_fshsize% -x %APP_MODE% -c %cust_ver%
call build_all.bat
goto exit
:ERR
echo _______ ________ ________ ________ ________
echo |\ ___ \ |\ __ \|\ __ \|\ __ \|\ __ \
echo \ \ __/|\ \ \|\ \ \ \|\ \ \ \|\ \ \ \|\ \
echo \ \ \_|/_\ \ _ _\ \ _ _\ \ \\\ \ \ _ _\
echo \ \ \_|\ \ \ \\ \\ \ \\ \\ \ \\\ \ \ \\ \|
echo \ \_______\ \__\\ _\\ \__\\ _\\ \_______\ \__\\ _\
echo \|_______|\|__|\|__|\|__|\|__|\|_______|\|__|\|__|
:exit