From d9081c1bd3e73f16431b71a546b6f5465a95dcae Mon Sep 17 00:00:00 2001 From: erdanergou Date: Mon, 16 Jan 2023 15:50:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=8A=9F=E8=83=BD=E5=B0=9D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/jsLibraryMappings.xml | 6 + pom.xml | 16 + .../depository_manage/EPSON/ENS/ENS.java | 10 + .../EPSON/ENS/ENSEnumrations.java | 341 + .../EPSON/ENS/ENSStatus.java | 231 + .../depository_manage/EPSON/EPDM/EPDM.java | 21 + .../EPSON/EPDM/EPDMEnumrations.java | 426 + .../EPSON/EPDM/EPDMMediaLayoutRange.java | 214 + .../EPSON/EPDM/EPDMMediaTypeRange.java | 125 + .../EPSON/EPDM/EPDMSelectData.java | 151 + .../EPSON/EPDM/EPDMString.java | 150 + .../EPSON/Other/MessageString.java | 301 + .../depository_manage/EPSON/Other/Print.java | 125 + .../EPSON/Other/PrintBarCode.java | 57 + .../EPSON/Other/SelectPrinterInfo.java | 57 + .../EPSON/epsonException/ENSException.java | 35 + .../EPSON/epsonException/EPDMException.java | 25 + .../config/EPSON/ENS/Global_MEDIA_ENS.java | 22 + .../config/EPSON/EPDM/Global_MEDIA_EPDM.java | 77 + .../depository_manage/config/PortConfig.java | 2 +- .../controller/EPSON/AddMediaLayoutDlg.java | 102 + .../controller/EPSON/PrintDlg.java | 80 + .../controller/EPSON/PrintSettingsDlg.java | 279 + .../controller/EPSON/PrinterIndexDlg.java | 80 + .../controller/EPSON/SetRollPaperDlg.java | 99 + .../controller/PageController.java | 20 +- .../entity/EPSON/EPDM/EPDMMediaLayoutInf.java | 149 + .../entity/EPSON/EPDM/MEDIA_LAYOUT.java | 12 + .../entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java | 18 + .../entity/EPSON/EPDM/MEDIA_POSITION.java | 12 + .../entity/EPSON/EPDM/MEDIA_TYPE.java | 12 + .../entity/EPSON/EPDM/PRINT_QUALITY.java | 12 + .../impl/DepositoryRecordServiceImpl.java | 10 +- .../service/impl/EPSON/ENS/ENSWrapper.java | 36 + .../impl/EPSON/ENS/ENSWrapperImpl.java | 253 + .../service/impl/EPSON/EPDM/EPDMWrapper.java | 35 + .../impl/EPSON/EPDM/EPDMWrapperImpl.java | 622 + .../utils/CreateQrCodeUtil.java | 3 +- .../static/css/JcPrinter/chalk_index.css | 15681 ++++++++++++++++ .../css/JcPrinter/fonts/element-icons.ttf | Bin 0 -> 55956 bytes .../css/JcPrinter/fonts/element-icons.woff | Bin 0 -> 28200 bytes .../resources/static/css/JcPrinter/style.css | 217 + .../drawParameter/DrawLableBarCode.js | 14 + .../JcPrinter/drawParameter/DrawLableGraph.js | 12 + .../JcPrinter/drawParameter/DrawLableImage.js | 10 + .../JcPrinter/drawParameter/DrawLableLine.js | 9 + .../drawParameter/DrawLableQrCode.js | 9 + .../JcPrinter/drawParameter/DrawLableText.js | 17 + .../drawParameter/InitDrawingBoard.js | 8 + .../generateImagePreviewImage.js | 3 + .../js/JcPrinter/drawParameter/initSdk.js | 4 + .../JcPrinter/drawParameter/picturePrint.js | 3 + .../js/JcPrinter/element-ui_lib_index.js | 1 + .../static/js/JcPrinter/index_Demo.js | 518 + .../js/JcPrinter/jcPrinterSdk_api_third.js | 662 + .../resources/static/js/JcPrinter/jquery.js | 10993 +++++++++++ .../static/js/JcPrinter/layer/layer.js | 2 + .../static/js/JcPrinter/layer/mobile/layer.js | 2 + .../js/JcPrinter/layer/mobile/need/layer.css | 1 + .../layer/theme/default/icon-ext.png | Bin 0 -> 5911 bytes .../js/JcPrinter/layer/theme/default/icon.png | Bin 0 -> 11493 bytes .../JcPrinter/layer/theme/default/layer.css | 1 + .../layer/theme/default/loading-0.gif | Bin 0 -> 5793 bytes .../layer/theme/default/loading-1.gif | Bin 0 -> 701 bytes .../layer/theme/default/loading-2.gif | Bin 0 -> 1787 bytes .../templates/pages/EPSON/PrintSetting.html | 93 + .../templates/pages/EPSON/PrinterIndex.html | 103 + .../pages/JcPrinter/PrinterIndex.html | 220 + .../pages/material/material-view.html | 70 +- .../templates/pages/warehouse/manager.html | 7 +- .../depository_manage/TestForOther.java | 31 +- 71 files changed, 32864 insertions(+), 53 deletions(-) create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java create mode 100644 src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java create mode 100644 src/main/resources/static/css/JcPrinter/chalk_index.css create mode 100644 src/main/resources/static/css/JcPrinter/fonts/element-icons.ttf create mode 100644 src/main/resources/static/css/JcPrinter/fonts/element-icons.woff create mode 100644 src/main/resources/static/css/JcPrinter/style.css create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableBarCode.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableGraph.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableImage.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableLine.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableQrCode.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/DrawLableText.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/InitDrawingBoard.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/generateImagePreviewImage.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/initSdk.js create mode 100644 src/main/resources/static/js/JcPrinter/drawParameter/picturePrint.js create mode 100644 src/main/resources/static/js/JcPrinter/element-ui_lib_index.js create mode 100644 src/main/resources/static/js/JcPrinter/index_Demo.js create mode 100644 src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js create mode 100644 src/main/resources/static/js/JcPrinter/jquery.js create mode 100644 src/main/resources/static/js/JcPrinter/layer/layer.js create mode 100644 src/main/resources/static/js/JcPrinter/layer/mobile/layer.js create mode 100644 src/main/resources/static/js/JcPrinter/layer/mobile/need/layer.css create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/icon-ext.png create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/icon.png create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/layer.css create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/loading-0.gif create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/loading-1.gif create mode 100644 src/main/resources/static/js/JcPrinter/layer/theme/default/loading-2.gif create mode 100644 src/main/resources/templates/pages/EPSON/PrintSetting.html create mode 100644 src/main/resources/templates/pages/EPSON/PrinterIndex.html create mode 100644 src/main/resources/templates/pages/JcPrinter/PrinterIndex.html diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 00000000..385c6baf --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3647c99c..3354b310 100644 --- a/pom.xml +++ b/pom.xml @@ -214,6 +214,22 @@ 2.8.8 + + + + net.java.dev.jna + jna + 5.5.0 + + + + + com.profesorfalken + WMI4Java + 1.6.3 + + + diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java new file mode 100644 index 00000000..848b2833 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENS.java @@ -0,0 +1,10 @@ +package com.dreamchaser.depository_manage.EPSON.ENS; + +import com.sun.jna.Memory; +import com.sun.jna.Pointer; + +public class ENS { + + protected Pointer _ptrToStruct = new Memory(10); + private boolean _disposed = false; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java new file mode 100644 index 00000000..9cca9feb --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSEnumrations.java @@ -0,0 +1,341 @@ +package com.dreamchaser.depository_manage.EPSON.ENS; + +import sun.management.snmp.jvmmib.EnumJvmMemPoolThreshdSupport; + +/** + * 用于ENS相关的枚举类 + */ +public class ENSEnumrations { + + + /** + * 用于ENS错误码的枚举 + */ + public enum ENSErrorCode + { + ERR_BASE (0), + ERR_PARAMETER (ERR_BASE.getI()- 1), //Values of necessary arguments have not been set. + ERR_INITIALIZE (ERR_BASE.getI()- 2), //Failure in initialization of bi-directional communication module. + //Or API has not been initialized. + ERR_NOTSUPPORT (ERR_BASE.getI()- 3), //Error before the start of communication (i.e. a port specification error etc.). + //Or other error occurred in bi-directional communication module. + ERR_PRINTER (ERR_BASE.getI()- 4), //Printer has not been registered + ERR_NOTFOUND (ERR_BASE.getI()- 5), //Communication cannot be opened. + //Communication trouble. Or there is no device information which can be acquired. + ERR_BUFFERSIZE (ERR_BASE.getI()- 6), //Specified buffer size value is too small. + ERR_TEMPORARY (ERR_BASE.getI()- 7), //Temporary storage memory used in API cannot be secured. + ERR_COMMUNICATION (ERR_BASE.getI()- 8), //Communication error occurred inside system of bi-directional communication module. + ERR_INVALIDDATA (ERR_BASE.getI()- 9), //Data acquired by API contains invalid code, so data is not reliable. + ERR_CHANNEL (ERR_BASE.getI()- 10), //No usable communication channel for packet transmission/reception. + ERR_HANDLE (ERR_BASE.getI()- 11), //Handle of specified bi-directional communication module is invalid. + ERR_BUSY (ERR_BASE.getI()- 12), //Port could not be opened while printer is printing (communicating). + ERR_LOADDLL (ERR_BASE.getI()- 13), //Failure in loading bi-directional communication module. + ERR_DEVICEID (ERR_BASE.getI()- 14), //Specified DeviceID information is invalid. + ERR_PRNHANDLE (ERR_BASE.getI()- 15), //Specified printer handle is invalid. + ERR_PORT (ERR_BASE.getI()- 16), //Unsupported printer path name was specified. + ERR_TIMEOUT (ERR_BASE.getI()- 17), //Receive processing stopped due to a time out. + ERR_JOB1 (ERR_BASE.getI()- 18), //Job management error No. 1. + ERR_JOB2 (ERR_BASE.getI()- 19), //Job management error No. 2. + ERR_JOB3 (ERR_BASE.getI()- 20), //Job management error No. 3. + ERR_INVALIDHANDLE ( ERR_BASE.getI()- 21),//Specified discovery handle is invalid. + ERR_USERCANCEL (ERR_BASE.getI()- 22), //Discovery was canceled by user. + ERR_THREADSTART (ERR_BASE.getI()- 23), //Failed in starting thread. + ERR_TRAPRESOURCE ( ERR_BASE.getI()- 24), //Insufficient trap resource. + ERR_SERVICE ( ERR_BASE.getI()- 25), //Core service error. + ERR_JOBNOTSUPPORT ( ERR_BASE.getI()- 26),//Job management function is not supported. + ERR_TRAPNOTSUPPORT ( ERR_BASE.getI()- 27), //Trap function is not supported. + ERR_SETTRAP ( ERR_BASE.getI()- 28), //Trap setting failure. + ERR_NOTRAPDATA ( ERR_BASE.getI()- 29), //No Trap notification data. + ERR_GSTNOTSUPPORT ( ERR_BASE.getI()- 30),//Unsupported general status. + ERR_OTHER ( - 31); //Other error; + + private int i; + ENSErrorCode(int i) { + this.i = i; + } + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * @return + */ + public static ENSErrorCode getENSErrorCode(int i){ + switch (i) { + case 0: + return ERR_PARAMETER; + case -1: + return ERR_PARAMETER; + case -2: + return ERR_INITIALIZE; + case -3: + return ERR_NOTSUPPORT; + case -4: + return ERR_PRINTER; + case -5: + return ERR_NOTFOUND; + case -6: + return ERR_BUFFERSIZE; + case -7: + return ERR_TEMPORARY; + case -8: + return ERR_COMMUNICATION; + case -9: + return ERR_INVALIDDATA; + case -10: + return ERR_CHANNEL; + case -11: + return ERR_HANDLE; + case -12: + return ERR_BUSY; + case -13: + return ERR_LOADDLL; + case -14: + return ERR_DEVICEID; + case -15: + return ERR_PRNHANDLE; + case -16: + return ERR_PORT; + case -17: + return ERR_TIMEOUT; + case -18: + return ERR_JOB1; + case -19: + return ERR_JOB2; + case -20: + return ERR_JOB3; + case -21: + return ERR_INVALIDHANDLE; + case -22: + return ERR_USERCANCEL; + case -23: + return ERR_THREADSTART; + case -24: + return ERR_TRAPRESOURCE; + case -25: + return ERR_SERVICE; + case -26: + return ERR_JOBNOTSUPPORT; + case -27: + return ERR_TRAPNOTSUPPORT; + case -28: + return ERR_SETTRAP; + case -29: + return ERR_NOTRAPDATA; + case -30: + return ERR_GSTNOTSUPPORT; + case -31: + return ERR_OTHER; + default: + return null; + } + } + + } + + /** + * 用于ENS类型的枚举 + */ + public enum ENSType //Printer path type + { + TYPE_PORT (0), //Port + TYPE_PRINTER (1), //Printer registration name + TYPE_IPX (2); //IPX + + + private int i; + ENSType(int i) { + + this.i = i; + } + public int getI() { + return i; + } + } + + + /** + * 用于ENS路径类型的枚举 + */ + public enum ENSPathType + { + TYPE_EJL (0), //Printer compatible with EJL commands (Page printer) + TYPE_REMOTE (1), //Printer compatible with remote commands (INK/SIDM printer) + TYPE_UNKNOWN (100); //Type cannot be determined. + + private int i; + + ENSPathType(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * @param i + * @return + */ + public static ENSPathType getENSPathType(int i){ + switch (i){ + case 0: + return TYPE_EJL; + case 1: + return TYPE_REMOTE; + case 100: + return TYPE_UNKNOWN; + default: + return null; + } + } + } + + + //------------------------------------ + //Definitions Printer StateCode for TM-C3400/TM-C3500/TM-C7500 (printer type). + //Please add StatusCode which are not being defined. + //Some value that is not being defined in enum by specification change of SDK may be returned. + //Refer SDK specifications for the latest definition. + //------------------------------------ + public enum StatusCode + { + ST_Error (0x00 ), + ST_TestPrint (0x01 ), + ST_Busy (0x02 ), + ST_Wait (0x03 ), + ST_Idle (0x04 ), + ST_NotPrint (0x05 ), + ST_Inkdrying (0x06 ), + ST_Cleaning (0x07 ); + + private int i; + StatusCode(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * @param i + * @return + */ + public static StatusCode getStatusCode(int i){ + switch (i){ + case 0x00: + return ST_Error; + case 0x01: + return ST_TestPrint; + case 0x02: + return ST_Busy; + case 0x03: + return ST_Wait; + case 0x04: + return ST_Idle; + case 0x05: + return ST_NotPrint; + case 0x06: + return ST_Inkdrying; + case 0x07: + return ST_Cleaning; + default: + return null; + } + } + } + + //------------------------------------ + //Definitions Printer ErrorCode for TM-C3400/TM-C3500/TM-C7500 (printer type). + //Please add ErrorCode which are not being defined. + //Some value that is not being defined in enum by specification change of SDK may be returned. + //Refer SDK specifications for the latest definition. + //------------------------------------ + public enum ErrorCode + { + ERR_FatalError (0x00 ), + ERR_CoverOpen (0x02 ), + ERR_PaperJam (0x04 ), + ERR_Inkout (0x05 ), + ERR_Paperout (0x06 ); + + private int i; + ErrorCode(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * @param i + * @return + */ + public static ErrorCode getErrorCode(int i){ + switch (i){ + case 0x00: + return ERR_FatalError; + case 0x02: + return ERR_CoverOpen; + case 0x04: + return ERR_PaperJam; + case 0x05: + return ERR_Inkout; + case 0x06: + return ERR_Paperout; + default: + return null; + } + } + } + + //------------------------------------ + //Definitions Printer WarningCode for TM-C3400/TM-C3500/TM-C7500 (printer type). + //Please add WarningCode which are not being defined. + //Some value that is not being defined in enum by specification change of SDK may be returned. + //Refer SDK specifications for the latest definition. + //------------------------------------ + public enum WarningCode + { + WAR_InkLow_B (0x010 ), + WAR_InkLow_C (0x011 ), + WAR_InkLow_M (0x012 ), + WAR_InkLow_Y (0x013 ); + + private int i; + WarningCode(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * @param i + * @return + */ + public static WarningCode getWarningCode(int i){ + switch (i){ + case 0x010: + return WAR_InkLow_B; + case 0x011: + return WAR_InkLow_C; + case 0x012: + return WAR_InkLow_M; + case 0x013: + return WAR_InkLow_Y; + + default: + return null; + } + } + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java new file mode 100644 index 00000000..233fbc84 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/ENS/ENSStatus.java @@ -0,0 +1,231 @@ +package com.dreamchaser.depository_manage.EPSON.ENS; + +import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.sun.jna.Memory; +import com.sun.jna.Structure; + +public class ENSStatus extends ENS{ + + public class STATUSVERSION extends Structure + { + public short MajorVersion; + public short MinerVersion; + } + + public class PAPERPATHINFO extends Structure + { + public byte Type; + public byte Path; + } + + public class CHARASTATUSINFO01 extends Structure + { + public byte Version; + public int StartDate; + public int TotalPrintedLine; + public short TotalTime; + public short CSFBin1PaperSize; + public short CSFBin2PaperSize; + public short CSFBin3PaperSize; + public short SeriesPaperWidth; + } + + public class CHARASTATUSINFO02 extends Structure + { + public byte Version; + public int StartDate; + public int TotalPrintedLine; + public short TotalTime; + public int ChangeRibonLine; + } + + public class CHARASTATUSINFO03 extends Structure + { + public byte Version; + public short CSFBin1PaperSize; + public byte CSFBin1PaperType; + public byte CSFBin1PaperRest; + public short CSFBin2PaperSize; + public byte CSFBin2PaperType; + public byte CSFBin2PaperRest; + public byte SIMMVolume; + } + + + public class TRAYFIELDINFO extends Structure + { + public byte FieldType; + public byte Position; + } + + public class PAPERTRAYINFO extends Structure + { + public byte TrayType; + public byte TrayVolume; + public TRAYFIELDINFO TrayField; + } + + public class JOBNAMEINFO extends Structure + { + public int JobID; + public char[] Jobname = new char[64]; + } + + public class CARTRIDGEANDINKINFO extends Structure + { + public byte CartridgeType; + public int ColorType; + public byte InkRest; + public byte InkDimension; + } + + + public class HEATERTEMPERATUREINFO extends Structure + { + public byte TemperatureUnit; + public byte TemperatureSetForPreHeater; + public byte PreHeaterTemperature; + public byte PreHeaterInfo; + public byte TemperatureSetForPlatenHeater; + public byte PlatenHeaterTemperature; + public byte PlatenHeaterInfo; + public byte TemperatureSetForAfterHeater; + public byte AfterHeaterTemperature; + public byte AfterHeaterInfo; + } + + public class ROMCODEINFO extends Structure + { + public byte Size; + public byte[] Data = new byte[255]; + } + + public static class INKSIDMSTATUS_02 extends Structure + { + public int StatusSize; + public STATUSVERSION Version; + public byte StatusCode; + public byte ErrorCode; + public byte SelfPrintCode; + + public int[] WarmingCode = new int[2]; + public byte[] RestCSFPaper = new byte[4]; + public byte[] ReserveRestCSFPaper = new byte[4]; + public PAPERPATHINFO PaperPath; + public short PaperSizeError; + public byte PaperTypeError; + public PAPERPATHINFO PaperPathError; + public CHARASTATUSINFO01 CharaStatus01; + public CHARASTATUSINFO02 CharaStatus02; + public CHARASTATUSINFO03 CharaStatus03; + public short CopyPrintNumber; + public byte InkColorNumber; + public byte MicroWeaveInfo; + public short CleaningTime; + public byte[] PaperSelectStatus = new byte[11]; + public byte[] ReservePaperSelectStatus = new byte[5]; + public CARTRIDGEANDINKINFO[] CartridgeInk = new CARTRIDGEANDINKINFO[16]; + public PAPERTRAYINFO[] PaperTray = new PAPERTRAYINFO[8]; + public byte PrintTec; + public int ReplaceCartridge; + public short RomCode; + public byte[] InkRemainInfo = new byte[3]; + public byte[] ReserveInkRemainInfo = new byte[5]; + public byte CancelCode; + public byte CutterInfo; + public byte PaperJamInfo; + public byte RouteChangeLeverInfo; + public JOBNAMEINFO JobNameInfo; + public int ColorimetricCalibrationIDSize; + public byte[] ColorimetricCalibrationID = new byte[260]; + public byte PaperRestUnit; + public int PaperRestValue; + public short PaperWidth; + public byte PaperInfoType; + public byte PaperInfoValue; + public byte InkSelect; + public HEATERTEMPERATUREINFO HeaterTemperature; + public byte AvailableWarningCode2; + public byte[] WarningCode2 = new byte[16]; + public byte PrinterMachineInfo2SetFlag; + public byte[] PrinterMachineInfo2 = new byte[4]; + public byte FatalErrorCodeSetFlag; + public byte FatalErrorCode; + public byte ReprintInfo; + public byte StatusReplyType; + public byte[] SerialNo = new byte[10]; + public byte[] InkMaintenanceLimit = new byte[16]; + public ROMCODEINFO RomCode2; + public byte[] Reserved = new byte[194]; + }; + + private boolean _disposed = false; + public INKSIDMSTATUS_02 _struct; + + public byte StatusCode; + + public byte getStatusCode() { + return _struct.StatusCode; + } + + public byte ErrorCode; + public byte getErrorCode() { + return _struct.ErrorCode; + } + + public byte[] WarningCode; + public byte[] getWarningCode() { + return _struct.WarningCode2; + } + public ENSStatus() + { + + int Size = Integer.SIZE / 8 * 6 + 556 + Short.SIZE / 8 * 5; + + _ptrToStruct = new Memory(Size); + + _struct = new INKSIDMSTATUS_02(); + _struct.StatusSize = Size; + _struct.Version = new STATUSVERSION(); + _struct.StatusCode = 0; + _struct.ErrorCode = 0; + _struct.SelfPrintCode = 0; + _struct.PaperPath = new PAPERPATHINFO(); + _struct.PaperSizeError = 0; + _struct.PaperTypeError = 0; + _struct.PaperPathError = new PAPERPATHINFO(); + _struct.CharaStatus01 = new CHARASTATUSINFO01(); + _struct.CharaStatus02 = new CHARASTATUSINFO02(); + _struct.CharaStatus03 = new CHARASTATUSINFO03(); + _struct.CopyPrintNumber = 0; + _struct.InkColorNumber = 0; + _struct.MicroWeaveInfo = 0; + _struct.CleaningTime = 0; + _struct.PrintTec = 0; + _struct.ReplaceCartridge = 0; + _struct.RomCode = 0; + _struct.CancelCode = 0; + _struct.CutterInfo = 0; + _struct.PaperJamInfo = 0; + _struct.RouteChangeLeverInfo = 0; + _struct.JobNameInfo = new JOBNAMEINFO(); + _struct.ColorimetricCalibrationIDSize = 0; + _struct.PaperRestUnit = 0; + _struct.PaperRestValue = 0; + _struct.PaperWidth = 0; + _struct.PaperInfoType = 0; + _struct.PaperInfoValue = 0; + _struct.InkSelect = 0; + _struct.HeaterTemperature = new HEATERTEMPERATUREINFO(); + _struct.AvailableWarningCode2 = 0; + _struct.PrinterMachineInfo2SetFlag = 0; + _struct.FatalErrorCodeSetFlag = 0; + _struct.FatalErrorCode = 0; + + Global_MEDIA_ENS.integerINKSIDMSTATUS_02Map.put(_ptrToStruct.getInt(0),_struct); + } + + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java new file mode 100644 index 00000000..4ecb474e --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDM.java @@ -0,0 +1,21 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; + +public abstract class EPDM { + + protected Pointer _ptrToStruct = new Memory(24); + private boolean _disposed = false; + + public Pointer StructurePointer; + + public Pointer getStructurePointer() { + StructureToPtr(); + return _ptrToStruct; + } + + public abstract void PtrToStructure(); + public abstract void StructureToPtr(); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java new file mode 100644 index 00000000..0b2b5c53 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMEnumrations.java @@ -0,0 +1,426 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + + +/** + * 用于EPDM相关的枚举类 + */ +public class EPDMEnumrations { + + + /** + * 用于EPDM的错误码 + */ + public enum EPDMErrorCode { + EPDM_ERR_NORMAL(0), // The function succeeds. + EPDM_ERR_CMD(-1), // The command is not supported. + EPDM_ERR_PARAM(-2), // The parameter error + EPDM_ERR_NOTSUPPORT(-3), // The specified Printer Driver is not supported. + EPDM_ERR_DLLNOTFOUND(-4), // Not found the printer specific DLL + EPDM_ERR_NOMEM(-5), // Shortage of memory. + EPDM_ERR_OPENPRT(-6), // Open fails + EPDM_ERR_FAIL(-7), // Any error is occurred. + EPDM_ERR_VERSION(-8), // Not Supprot this DLL version. + EPDM_ERR_NOTVALID(-9), // The function can not reply valid value. + EPDM_ERR_COMMUNICATION(-10), // A communication error. + EPDM_ERR_FATAL(-11), // Fatal error. + EPDM_ERR_NOTFOUND(-12), // Not found the input data. + EPDM_ERR_FILEFORMAT(-13), // Import file format error. + EPDM_ERR_READFILE(-14), // The export file is not read. + EPDM_ERR_WRITEFILE(-15), // The export file is not write. + EPDM_ERR_OVERWRITE(-16), // The export file name is exist(Do not overwrite). + EPDM_ERR_LONGERNAME(-17), // The Add Name is longer. + EPDM_ERR_MAXDATA(-18), // The Add Data is max. + EPDM_ERR_FWVERSION(-19); // The F/W version is old. + + + private int i; + + EPDMErrorCode(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * + * @param s 输入 + * @return + */ + public static EPDMErrorCode getEPDMErrorCode(int s) { + switch (s) { + case 0: + return EPDM_ERR_NORMAL; + case -1: + return EPDM_ERR_CMD; + case -2: + return EPDM_ERR_PARAM; + case -3: + return EPDM_ERR_NOTSUPPORT; + case -4: + return EPDM_ERR_DLLNOTFOUND; + case -5: + return EPDM_ERR_NOMEM; + case -6: + return EPDM_ERR_OPENPRT; + case -7: + return EPDM_ERR_FAIL; + case -8: + return EPDM_ERR_VERSION; + case -9: + return EPDM_ERR_NOTVALID; + case -10: + return EPDM_ERR_COMMUNICATION; + case -11: + return EPDM_ERR_FATAL; + case -12: + return EPDM_ERR_NOTFOUND; + case -13: + return EPDM_ERR_FILEFORMAT; + case -14: + return EPDM_ERR_READFILE; + case -15: + return EPDM_ERR_WRITEFILE; + case -16: + return EPDM_ERR_OVERWRITE; + case -17: + return EPDM_ERR_LONGERNAME; + case -18: + return EPDM_ERR_MAXDATA; + case -19: + return EPDM_ERR_FWVERSION; + default: + return null; + } + + } + + } + + /** + * 用于打开打印机类型的枚举 + */ + public enum OpenType { + EPDM_OPENTYPE_CUR(0), // Open with the printer driver's current default DEVMODE data structure. + EPDM_OPENTYPE_ORG(1), // Open with the DEVMODE data structure in factory reset. + EPDM_OPENTYPE_IN(2); // Open with the DEVMODE data structure specified by the lpDM parameter. + + private int i; + + OpenType(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * + * @param i 输入 + * @return + */ + public static OpenType getEPDMOpenType(int i) { + switch (i) { + case 0: + return EPDM_OPENTYPE_CUR; + case 1: + return EPDM_OPENTYPE_ORG; + case 2: + return EPDM_OPENTYPE_IN; + default: + return null; + } + } + + } + + + /** + * 用于控制类型的枚举 + */ + public enum Command { + EPDM_CMD_MEDIA(60), // Media type + EPDM_CMD_STRING(213), // String. + EPDM_CMD_FAVORITE(500), // My favorite :Comment=STR + EPDM_CMD_FAVORITEW(501), // My favorite :Comment=WSTR + EPDM_CMD_MEDIALAYOUT(502), // Media layout :Comment=STR + EPDM_CMD_MEDIALAYOUTW(503), // Media layout :Comment=WSTR + EPDM_CMD_QUALITY(504), // Print qulity + EPDM_CMD_AUTOCUT(505), // Media cut mode + EPDM_CMD_AUTOCUTNUM(506), // Count of media cut + EPDM_CMD_MEDIAPOSITION(507), // Search media position + EPDM_CMD_DRIVERSETTINGS(600), // Driver settings :Comment=STR + EPDM_CMD_DRIVERSETTINGSW(601), // Driver settings :Comment=WSTR + EPDM_CMD_PRINTERSETTINGS(602), // Printer settings :Comment=STR + EPDM_CMD_PRINTERSETTINGSW(603), // Printer settings :Comment=WSTR + EPDM_CMD_STRINGW(1024); // UNICODE String. + + private int i; + + Command(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + /** + * 用于获取对应的枚举值 + * + * @param i 输入 + * @return + */ + public static Command getCommand(int i) { + switch (i) { + case 60: + return EPDM_CMD_MEDIA; + case 213: + return EPDM_CMD_STRING; + case 500: + return EPDM_CMD_FAVORITE; + case 501: + return EPDM_CMD_FAVORITEW; + case 502: + return EPDM_CMD_MEDIALAYOUT; + case 503: + return EPDM_CMD_MEDIALAYOUTW; + case 504: + return EPDM_CMD_QUALITY; + case 505: + return EPDM_CMD_AUTOCUT; + case 506: + return EPDM_CMD_AUTOCUTNUM; + case 507: + return EPDM_CMD_MEDIAPOSITION; + case 600: + return EPDM_CMD_DRIVERSETTINGS; + case 601: + return EPDM_CMD_DRIVERSETTINGSW; + case 602: + return EPDM_CMD_PRINTERSETTINGS; + case 603: + return EPDM_CMD_PRINTERSETTINGSW; + case 1024: + return EPDM_CMD_STRINGW; + + default: + return null; + } + } + + } + + + /** + * 用于结构类型的枚举 + */ + public enum StructVersion { + EPDM_STVER_STRING_1(1), // Structure Version define for [EPDM_STRING_1] + EPDM_STVER_STRINGW_1(1), // Structure Version define for [EPDM_STRINGW_1] + EPDM_STVER_FAVORITEINF(1), // Structure Version define for [EPDM_FAVORITEINF] + EPDM_STVER_FAVORITEINFW(1), // Structure Version define for [EPDM_FAVORITEINFW] + EPDM_STVER_FAVORITERANGE(1), // Structure Version define for [EPDM_FAVORITERANGE] + EPDM_STVER_MEDIALAYOUTINF(1), // Structure Version define for [EPDM_MEDIALAYOUTINF] + EPDM_STVER_MEDIALAYOUTINF_2(2), // Structure Version define for [EPDM_MEDIALAYOUTINF_2] + EPDM_STVER_MEDIATYPERANGE(1), // Structure Version define for [EPDM_MEDIATYPERANGE] + EPDM_STVER_MEDIATYPERANGE_2(2), // Structure Version define for [EPDM_MEDIATYPERANGE_2] + EPDM_STVER_MEDIALAYOUTRANGE(1), // Structure Version define for [EPDM_MEDIALAYOUTRANGE] + EPDM_STVER_MEDIALAYOUTRANGE_2(2), // Structure Version define for [EPDM_MEDIALAYOUTRANGE_2] + EPDM_STVER_MEDIALAYOUTADD(1), // Structure Version define for [EPDM_MEDIALAYOUTADD] + EPDM_STVER_MEDIALAYOUTADD_2(2), // Structure Version define for [EPDM_MEDIALAYOUTADD_2] + EPDM_STVER_MEDIALAYOUTADDW(1), // Structure Version define for [EPDM_MEDIALAYOUTADDW] + EPDM_STVER_MEDIALAYOUTADDW_2(2), // Structure Version define for [EPDM_MEDIALAYOUTADDW_2] + EPDM_STVER_PRINTERSETTINGS(1), // Structure Version define for [EPDM_PRINTERSETTINGS] + EPDM_STVER_EXPORTDATA(1), // Structure Version define for [EPDM_EXPORTDATA] + EPDM_STVER_EXPORTDATAW(1), // Structure Version define for [EPDM_EXPORTDATAW] + EPDM_STVER_FAVORITEADD(1), // Structure Version define for [EPDM_FAVORITEADD] + EPDM_STVER_FAVORITEADDW(1), // Structure Version define for [EPDM_FAVORITEADDW] + EPDM_STVER_EXPORT_DRIVERSETTINGS(1), // Structure Version define for [EPDM_EXPORT_DRIVERSETTINGS] + EPDM_STVER_EXPORT_DRIVERSETTINGSW(1), // Structure Version define for [EPDM_EXPORT_DRIVERSETTINGSW] + EPDM_STVER_EXPORT_PRINTERSETTINGS(1), // Structure Version define for [EPDM_EXPORT_PRINTERSETTINGS] + EPDM_STVER_EXPORT_PRINTERSETTINGSW(1); // Structure Version define for [EPDM_EXPORT_PRINTERSETTINGSW] + + private int i; + + StructVersion(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + + } + + + /** + * 用于名称的枚举 + */ + public enum StringID + { + EPDM_STRING_MEDIA (3), // Media Name. + EPDM_STRING_FAVORITE (15), // Favorite Name + EPDM_STRING_MEDIALAYOUT (16), // Media Layout Name + EPDM_STRING_MEDIATYPE (17), // Media Type Name + EPDM_STRING_AUTOCUT (18), // Autocut Action Type Name + EPDM_STRING_MEDIAPOSITION (19); // Media Position Kind Name + + private int i; + StringID(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + public static StringID getStringID(int s) { + switch (s) { + case 3: + return EPDM_STRING_MEDIA; + case 15: + return EPDM_STRING_FAVORITE; + case 16: + return EPDM_STRING_MEDIALAYOUT; + case 17: + return EPDM_STRING_MEDIATYPE; + case 18: + return EPDM_STRING_AUTOCUT; + case 19: + return EPDM_STRING_MEDIAPOSITION; + default: + return null; + } + + } + } + + /** + * 用于媒体类型的枚举 + */ + public enum MediaTypeID + { + EPDM_MEDIATYPE_DIECUT ((short) 0), // Die-cut Label(Gap) + EPDM_MEDIATYPE_BMDIECUT ((short)1), // Die-cut Label(BM) + EPDM_MEDIATYPE_BMDIECUTGAP ((short)2), // Black Mark Die-cut Label(Gap) + EPDM_MEDIATYPE_ALLLABEL ((short)3), // Full-page Label + EPDM_MEDIATYPE_BMALLLABEL ((short)4), // Black Mark Full-page Label + EPDM_MEDIATYPE_RECEIPT ((short)5), // Continuous Paper + EPDM_MEDIATYPE_BMRECEIPT ((short)6), // Black Mark Continuous Paper + EPDM_MEDIATYPE_TPDIECUT ((short)7), // Transparent Die-cut Label + EPDM_MEDIATYPE_TPALLLABEL ((short)8); // Transparent Full-page Label + + private short i; + + + MediaTypeID(short i) { + this.i = i; + } + + public short getI() { + return i; + } + + public static MediaTypeID getMediaTypeID(short s) { + switch (s) { + case 0: + return EPDM_MEDIATYPE_DIECUT; + case 1: + return EPDM_MEDIATYPE_BMDIECUT; + case 2: + return EPDM_MEDIATYPE_BMDIECUTGAP; + case 3: + return EPDM_MEDIATYPE_ALLLABEL; + case 4: + return EPDM_MEDIATYPE_BMALLLABEL; + case 5: + return EPDM_MEDIATYPE_RECEIPT; + case 6: + return EPDM_MEDIATYPE_BMRECEIPT; + case 7: + return EPDM_MEDIATYPE_TPDIECUT; + case 8: + return EPDM_MEDIATYPE_TPALLLABEL; + default: + return null; + } + + } + } + + + /** + * 用于打印质量的枚举 + */ + public enum PrintQualityID + { + EPDM_QUALITY_360X180 (0), // Quality level (360dpi * 180dpi) + EPDM_QUALITY_360X360 (1), // Quality level (360dpi * 360dpi) + EPDM_QUALITY_720X360 (2); // Quality level (720dpi * 360dpi) + + + private int i; + + PrintQualityID(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + public static PrintQualityID getPrintQualityID(int s) { + switch (s) { + case 0: + return EPDM_QUALITY_360X180; + case 1: + return EPDM_QUALITY_360X360; + case 2: + return EPDM_QUALITY_720X360; + default: + return null; + } + + } + + + } + + + /** + * 用于打印机状态的枚举 + */ + public enum OverWriteID + { + EPDM_OVERWRITE_OFF (0), // Disable over write + EPDM_OVERWRITE_ON (1); // Enable over write + + + private int i; + OverWriteID(int i) { + this.i = i; + } + + public int getI() { + return i; + } + + public static OverWriteID getOverWriteID(int s) { + switch (s) { + case 0: + return EPDM_OVERWRITE_OFF; + case 1: + return EPDM_OVERWRITE_ON; + default: + return null; + } + + } + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java new file mode 100644 index 00000000..c9b7e82c --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaLayoutRange.java @@ -0,0 +1,214 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.dreamchaser.depository_manage.exception.MyException; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class EPDMMediaLayoutRange extends EPDM{ + + + + + public class EPDM_MEDIALAYOUTRANGE extends Structure + { + public int dwVersion; + public int dwSize; + public short iIDCount; + public short iMediaTypeCount; + public Pointer lpMediaLayoutID; + public Pointer lpMediaTypeRange; + public short iMaxString; + public short iMaxCount; + + + @Override + protected List getFieldOrder() { + return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "iIDCount", "iMediaTypeCount", "lpMediaLayoutID", "lpMediaTypeRange", "iMaxString", "iMaxCount")); + } + + public EPDM_MEDIALAYOUTRANGE() { + + } + + public EPDM_MEDIALAYOUTRANGE(Pointer p) { + super(p); + } + + }; + + private boolean _disposed = false; + private EPDM_MEDIALAYOUTRANGE _struct; + + + + public EPDMEnumrations.StructVersion Version; + + + public short IDCount; + + public short getIDCount() { + return _struct.iIDCount; + } + + + public short[] MediaLayoutID; + + public short[] getMediaLayoutID() { + + try + { + short[] arr = new short[_struct.iIDCount]; + + for (int i = 0; i < _struct.iIDCount; i++) + { + Pointer current = new Memory(_struct.lpMediaLayoutID.getLong(0) + (2 * i)); + + arr[i] = Global_MEDIA_EPDM.epdm_mediaLayoutRange_short.get(current.getInt(0)); + } + return arr; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + + public EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] MediaTypeRange; + + public EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] getMediaTypeRange() { + try + { + EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] arr = new EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[_struct.iMediaTypeCount]; + + int struct_size = 22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8; + + for (int i = 0; i < _struct.iMediaTypeCount; i++) + { + Pointer current = new Memory(_struct.lpMediaTypeRange.getInt(0) + (struct_size) * i); + arr[i] = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(current.getInt(0)); + } + return arr; + } + catch (Exception e) + { + // Error handling. + System.out.println(e.getMessage()); + } + return MediaTypeRange; + } + + public EPDMMediaLayoutRange() { + + int struct_size = 24; + _ptrToStruct = new Memory(struct_size); + _struct = new EPDM_MEDIALAYOUTRANGE(_ptrToStruct); + _struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIALAYOUTRANGE.getI(); + _struct.dwSize = struct_size; + _struct.iIDCount = 0; + _struct.iMediaTypeCount = 0; + _struct.lpMediaLayoutID = new Memory(10); + _struct.lpMediaTypeRange = new Memory(10); + _struct.iMaxString = 0; + _struct.iMaxCount = 0; + + StructureToPtr(); + PtrToStructure(); + } + + @Override + public void PtrToStructure() { + _struct.read(); + _struct = Global_MEDIA_EPDM.epdm_medialayoutrangeMap.get(_ptrToStruct.getInt(0)); + + } + + @Override + public void StructureToPtr() { + _struct.write(); + Global_MEDIA_EPDM.epdm_medialayoutrangeMap.put(_ptrToStruct.getInt(0),_struct); + } + + public void Alloc() + { + try + { + // iIDCount、iMediaTypeCount = 0 is EPDM_ERR_FAIL. + if (_struct.iIDCount == 0 || _struct.iMediaTypeCount == 0) + { + throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL); + } + + + + // Free the memory. + Native.free(Pointer.nativeValue(_struct.lpMediaLayoutID)); + Native.free(Pointer.nativeValue(_struct.lpMediaTypeRange)); + + + _struct.lpMediaLayoutID = new Memory(_struct.iIDCount * Short.SIZE / 8); + + int sizeOfEPDM_MEDIATYPERANGE = (22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8); + + _struct.lpMediaTypeRange = new Memory(_struct.iMediaTypeCount *sizeOfEPDM_MEDIATYPERANGE ).getPointer(0); + + EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[] epdmMediaTypeRange = new EPDMMediaTypeRange.EPDM_MEDIATYPERANGE[_struct.iMediaTypeCount]; + for (int i = 0; i < _struct.iMediaTypeCount; i++) + { + Pointer current = new Memory(_ptrToStruct.getLong(0) + (sizeOfEPDM_MEDIATYPERANGE * i)); + epdmMediaTypeRange[i] = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(current.getInt(0)); + + epdmMediaTypeRange[i].dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIATYPERANGE.getI(); + epdmMediaTypeRange[i].dwSize = (22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8); + + Pointer current2 = new Memory(_struct.lpMediaTypeRange.getLong(0) + (sizeOfEPDM_MEDIATYPERANGE * i)); + Global_MEDIA_EPDM.epdm_mediatyperangeMap.put(current2.getInt(0),epdmMediaTypeRange[i]); + } + } + catch (Exception e) + { + // Error handling. + System.out.println(e.getMessage()); + } + } + + public int GetMediaTypeIndex(EPDMEnumrations.MediaTypeID mediaTypeID) + { + try + { + int i = -1; + + if (_struct.iMediaTypeCount <= 0) + { + return i; + } + + for (i = 0; i < _struct.iMediaTypeCount; i++) + { + short typeID = MediaTypeRange[i].iTypeID; + if (typeID == mediaTypeID.getI()) + { + break; + } + } + return i; + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java new file mode 100644 index 00000000..8e417e3d --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMMediaTypeRange.java @@ -0,0 +1,125 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; +import com.sun.xml.bind.v2.runtime.MarshallerImpl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class EPDMMediaTypeRange extends EPDM { + + @Override + public void PtrToStructure() { + _struct.read(); + _struct = Global_MEDIA_EPDM.epdm_mediatyperangeMap.get(_ptrToStruct.getInt(0)); + } + + @Override + public void StructureToPtr() { + _struct.write(); + Global_MEDIA_EPDM.epdm_mediatyperangeMap.put(_ptrToStruct.getInt(0),_struct); + } + + public class EPDM_MEDIATYPERANGE extends Structure + { + public int dwVersion; + public int dwSize; + public short iMaxPaperWid; + public short iMaxPaperHig; + public short iMaxLabelWid; + public short iMaxLabelHig; + public short iMaxLabelGap; + public short iMaxBMGap; + public short iMaxPrintWid; + public short iMaxPrintHig; + public short iMaxPrintX; + public short iMaxPrintY; + public short iMinPaperWid; + public short iMinPaperHig; + public short iMinLabelWid; + public short iMinLabelHig; + public short iMinLabelGap; + public short iMinBMGap; + public short iMinPrintWid; + public short iMinPrintHig; + public short iMinPrintX; + public short iMinPrintY; + public short iTypeID; + public short iRsv; + + @Override + protected List getFieldOrder() { + return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "iMaxPaperWid", "iMaxPaperHig", "iMaxLabelWid", "iMaxLabelHig", + "iMaxLabelGap", "iMaxBMGap","iMaxPrintWid","iMaxPrintHig","iMaxPrintX","iMaxPrintY","iMinPaperWid","iMinPaperHig", + "iMinLabelWid","iMinLabelHig","iMinLabelGap","iMinBMGap","iMinPrintWid","iMinPrintHig","iMinPrintX","iMinPrintY", + "iTypeID","iRsv")); + } + + public EPDM_MEDIATYPERANGE() { + + } + + public EPDM_MEDIATYPERANGE(Pointer p) { + super(p); + } + + }; + + private boolean _disposed = false; + public EPDM_MEDIATYPERANGE _struct; + + + public short MaxPaperWid; + + public short getMaxPaperWid() { + return _struct.iMaxPaperWid; + } + + public short MaxPaperHig; + + public short getMaxPaperHig() { + return _struct.iMaxPaperHig; + } + + public EPDMMediaTypeRange() + { + + int struct_size = 22 * Short.SIZE / 8 + 2 * Integer.SIZE / 8; + + _ptrToStruct =new Memory(struct_size ); + _struct = new EPDM_MEDIATYPERANGE(_ptrToStruct); + _struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIATYPERANGE.getI(); + _struct.dwSize = struct_size; + _struct.iMaxPaperWid = 0; + _struct.iMaxPaperHig = 0; + _struct.iMaxLabelWid = 0; + _struct.iMaxLabelHig = 0; + _struct.iMaxLabelGap = 0; + _struct.iMaxBMGap = 0; + _struct.iMaxPrintWid = 0; + _struct.iMaxPrintHig = 0; + _struct.iMaxPrintX = 0; + _struct.iMaxPrintY = 0; + _struct.iMinPaperWid = 0; + _struct.iMinPaperHig = 0; + _struct.iMinLabelWid = 0; + _struct.iMinLabelHig = 0; + _struct.iMinLabelGap = 0; + _struct.iMinBMGap = 0; + _struct.iMinPrintWid = 0; + _struct.iMinPrintHig = 0; + _struct.iMinPrintX = 0; + _struct.iMinPrintY = 0; + _struct.iTypeID = EPDMEnumrations.MediaTypeID.EPDM_MEDIATYPE_DIECUT.getI(); + _struct.iRsv = 0; + + StructureToPtr(); + PtrToStructure(); + } + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java new file mode 100644 index 00000000..2f69cc29 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMSelectData.java @@ -0,0 +1,151 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.dreamchaser.depository_manage.exception.MyException; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class EPDMSelectData extends EPDM{ + + @Override + public void PtrToStructure() { + _struct.read(); + _struct = Global_MEDIA_EPDM.epdm_selectdataMap.get(_ptrToStruct.getInt(0)); + } + + @Override + public void StructureToPtr() { + _struct.write(); + Global_MEDIA_EPDM.epdm_selectdataMap.put(_ptrToStruct.getInt(0),_struct); + } + + public static class EPDM_SELECTDATA extends Structure + { + public short iCount; + public short iSize; + public Pointer lpData; + + @Override + protected List getFieldOrder() { + return new ArrayList<>(Arrays.asList("iCount", "iSize", "lpData")); + } + + public EPDM_SELECTDATA(Pointer p) { + super(p); + } + + public EPDM_SELECTDATA() { + } + }; + + + private boolean _disposed = false; + private EPDM_SELECTDATA _struct; + + + public short Count; + + + public Long[] Data; + + + public short getCount() { + return _struct.iCount; + } + + public Long[] getData() { + try + { + if (_struct.lpData == Pointer.NULL || _struct.iSize > Long.SIZE / 8) + { + return null; + } + + Long[] arr = new Long[_struct.iCount]; + + for (int i = 0; i < _struct.iCount; i++) + { + Pointer current = new Memory(_struct.lpData.getLong(0) + (_struct.iSize * i)); + arr[i] = GetSelectData(current); + } + return arr; + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + public EPDMSelectData() + { + _ptrToStruct = new Memory(Short.SIZE / 8 * 2); + + _struct.iCount = 0; + _struct.iSize = 0; + _struct.lpData = new Memory(10); + + + StructureToPtr(); + PtrToStructure(); + } + + + private Long GetSelectData(Pointer p) + { + try + { + Long data = 0L; + switch (_struct.iSize) + { + case 8: + data = Global_MEDIA_EPDM.epdm_select_data_int64.get(p.getInt(0)); + break; + case 4: + data = Long.valueOf(Global_MEDIA_EPDM.epdm_select_data_int32.get(p.getInt(0))); + break; + case 2: + default: + data = Long.valueOf(Global_MEDIA_EPDM.epdm_select_data_int16.get(p.getInt(0))); + break; + } + return data; + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + public void Alloc() + { + try + { + // iIDCount、iSize = 0 is EPDM_ERR_FAIL. + if (_struct.iCount == 0 || _struct.iSize == 0) + { + throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL); + } + + // Free the memory. + Native.free(Pointer.nativeValue(_struct.lpData)); + // Allocate the memory. - EPDMSelectData.lpData + _struct.lpData =new Memory(_struct.iCount * _struct.iSize); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java new file mode 100644 index 00000000..c7348c7f --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/EPDM/EPDMString.java @@ -0,0 +1,150 @@ +package com.dreamchaser.depository_manage.EPSON.EPDM; + +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.dreamchaser.depository_manage.exception.MyException; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; +import com.sun.media.jfxmedia.track.Track; +import jdk.nashorn.internal.objects.Global; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; + +public class EPDMString extends EPDM { + + public class EPDM_STRING_1 extends Structure + { + public int dwVersion; + public int dwSize; + public int dwStrSize; + public int dwCommand; + public int dwID; + public Pointer lpString; + + + @Override + protected List getFieldOrder() { + return new ArrayList<>(Arrays.asList("dwVersion", "dwSize", "dwStrSize", "dwCommand", "dwID", "lpString")); + } + + public EPDM_STRING_1() { + } + + public EPDM_STRING_1(Pointer p) { + super(p); + } + }; + + private boolean _disposed = false; + private EPDM_STRING_1 _struct; + + public int Command; + + public int getCommand() { + return _struct.dwCommand; + } + + public void setCommand(int command) { + _struct.dwCommand = command; + } + + public int ID; + + public int getID() { + return _struct.dwID; + } + + public void setID(int ID) { + _struct.dwID = ID; + } + + + + public String string; + + public String getString() { + byte[] StringData = new byte[_struct.dwStrSize]; + + // Deploy the memory to array. + int i = 0; + for (i = 0; i < _struct.dwStrSize; i++) + { + Pointer current = new Memory(_struct.lpString.getLong(0) + i); +// StringData[i]= current.getByte(0); + StringData[i] = Global_MEDIA_EPDM.epdm_epdmString_byte.get(current.getInt(0)); + if (StringData[i] == 0) + { + break; + } + } + try { + return new String(StringData,"gbk"); + } catch (UnsupportedEncodingException e) { + throw new MyException(e.getMessage()); + } + } + + public EPDMString() + { + + + int structSize = 5 * Integer.SIZE / 8; + _ptrToStruct = new Memory( structSize ); + + _struct = new EPDM_STRING_1(_ptrToStruct); + _struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_STRING_1.getI(); + _struct.dwSize = structSize; + _struct.dwStrSize = 0; + _struct.dwCommand = 0; + _struct.dwID = 0; + _struct.lpString = new Memory(10); + StructureToPtr(); + PtrToStructure(); + } + + + @Override + public void PtrToStructure() { + _struct.read(); + _struct = Global_MEDIA_EPDM.epdm_string_1Map.get(_ptrToStruct.getInt(0)); + } + + @Override + public void StructureToPtr() { + _struct.write(); + Global_MEDIA_EPDM.epdm_string_1Map.put(_ptrToStruct.getInt(0),_struct); + } + + + public void Alloc() + { + try + { + // m_Struct.dwStrSize == 0 is EPDM_ERR_FAIL. + if (_struct.dwStrSize == 0) + { + throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL); + } + + // Free the memory. + Native.free(Pointer.nativeValue(_struct.lpString)); + + // Allocate the memory. - EPDMString.lpString + _struct.lpString =new Memory((int)_struct.dwStrSize); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java new file mode 100644 index 00000000..319747dd --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/MessageString.java @@ -0,0 +1,301 @@ +package com.dreamchaser.depository_manage.EPSON.Other; + +import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations; +import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations.StatusCode; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapperImpl; + + +public class MessageString { + public static final int STATE_ENS_ERROR = 1; + public static final int STATE_MEDIA_LAYOUT_ERROR = 2; + public static final int STATE_MEDIA_POSITION_ERROR = 3; + public static final int STATE_PRINT_SETTING_ERROR = 4; + public static final int STATE_EPDI_DLL_NOT_FOUND = 5; + public static final int STATE_ENS_DLL_NOT_FOUND = 6; + public static final int STATE_DRIVER_NOT_FOUND = 7; + public static final int STATE_SYSTEM_PARAM_ERROR = 8; + public static final int STATE_DRAWIMAGE_ERROR = 9; + + public static final String STR_ENS_ERROR = "Can't get the printer status.\n\nEpsonNet SDK error code : "; + public static final String STR_MEDIA_LAYOUT_ERROR = "Fail to add the media layout.\r\n\r\nEPDI error code : "; + public static final String STR_MEDIA_POSITION_ERROR = "Fail to change the media position detection setting.\r\n\r\nEPDI error code : "; + public static final String STR_PRINT_SETTING_ERROR = "Fail to change the print settings.\r\n\r\nEPDI error code : "; + public static final String STR_STATUS_BUSY = "Printer is busy.\r\nStop the printing..."; + public static final String STR_STATUS_PRINTING = "Printer is printing now.\r\nStop the printing..."; + public static final String STR_STATUS_CLEANING = "Printer is cleaning the print head.\r\nStop the printing..."; + public static final String STR_STATUS_OTHER = "Printer is busy.\r\nStop the printing..."; + public static final String STR_ERROR_PAPERJAM = "Paper jam error.\r\nStop the printing..."; + public static final String STR_ERROR_PAPEROUT = "Paper out error.\r\nStop the printing..."; + public static final String STR_ERROR_INKEND = "Ink cartridge error.\r\nStop the printing..."; + public static final String STR_ERROR_OTHER = "Other error.\r\nStop the printing..."; + public static final String STR_WARNING_INKLOW = "Ink is low.\r\n"; + public static final String STR_WARNING_OTHER = "Other warning.\r\n"; + public static final String STR_EPDI_DLL_NOT_FOUND = "doesn't support this function.\r\nOr check if program architecture(x86/x64) and OS architecture are correct."; + public static final String STR_ENS_DLL_NOT_FOUND = "EpsonNet SDK isn't installed in this PC.\r\nPerfoming the printing without printer status check."; + public static final String STR_DRIVER_NOT_FOUND = "Epson printer doesn't exist. \r\n\r\nPlease install the printer driver before starting the sample program."; + public static final String STR_SYSTEM_PARAM_ERROR = "Specified value is out of range."; + public static final String STR_DRAWIMAGE_ERROR = "Failed to print image."; + + + public static boolean GetSDKError(int i, int state) { + boolean err = true; + String strMessage = ""; + String strSDKErrorCode; + + try { + if (i != ENSEnumrations.ENSErrorCode.ERR_BASE.getI()) { + strMessage = STR_ENS_ERROR; + err = false; + ENSEnumrations.ENSErrorCode ensErrorCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(i); + if (ensErrorCode != null) { + strSDKErrorCode = ensErrorCode.toString(); + } + + } + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + return err; + } + + + public static boolean GetEPDMError(int i, int state) + { + boolean err = true; + String strMessage = ""; + String strEPDMErrorCode; + + try + { + if (i != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL.getI()) + { + switch(state) + { + case (STATE_MEDIA_LAYOUT_ERROR): + { + strMessage = STR_MEDIA_LAYOUT_ERROR; + err = false; + break; + } + case (STATE_MEDIA_POSITION_ERROR): + { + strMessage = STR_MEDIA_POSITION_ERROR; + err = false; + break; + } + case (STATE_PRINT_SETTING_ERROR): + { + strMessage = STR_PRINT_SETTING_ERROR; + err = false; + break; + } + default: + { + strMessage = ""; + err = false; + break; + } + } + if (strMessage.length() > 0) + { + strEPDMErrorCode = EPDMEnumrations.EPDMErrorCode.valueOf(strMessage).toString(); + } + } + } + catch (Exception e) + { + // Error handling. + } + return err; + } + + + public static boolean GetPrinterStatusError(ENSEnumrations.StatusCode sc, ENSEnumrations.ErrorCode ec, ENSWrapperImpl.WARNING_INFO wc) + { + boolean err = true; + String strMessage = ""; + + try + { + switch (sc) + { + case ST_Busy: + { + strMessage = STR_STATUS_BUSY; + err = false; + break; + } + case ST_Wait: + { + strMessage = STR_STATUS_PRINTING; + err = false; + break; + } + case ST_Cleaning: + { + strMessage = STR_STATUS_CLEANING; + err = false; + break; + } + case ST_Error: + { + switch (ec) + { + case ERR_PaperJam: + { + strMessage = STR_ERROR_PAPERJAM; + err = false; + break; + } + case ERR_Paperout: + { + strMessage = STR_ERROR_PAPEROUT; + err = false; + break; + } + case ERR_Inkout: + { + strMessage = STR_ERROR_INKEND; + err = false; + break; + } + default: + { + strMessage = STR_ERROR_OTHER; + err = false; + break; + } + } + break; + } + case ST_Idle: + { + if (wc.InkLowWarning ) + { + strMessage += STR_WARNING_INKLOW; + err = true; + } + if (wc.OtherWarning) + { + strMessage += STR_WARNING_OTHER; + err = true; + } + break; + } + default: + { + strMessage = STR_STATUS_OTHER; + err = false; + break; + } + } + if (strMessage.length() > 0) + { +// MessageBox.Show((strMessage), "", MessageBoxButtons.OK); + // 弹出一个消息框,并返回结构 + } + } + catch (Exception e) + { + // Error handling. + } + return err; + } + + + public static boolean GetSystemError(int state, String devName) + { + boolean err = true; + String strMessage = ""; + + if ( devName == null) + { + devName = ""; + } + try + { + switch (state) + { + case (STATE_EPDI_DLL_NOT_FOUND): + { + strMessage = String.format("%s %s",devName, STR_EPDI_DLL_NOT_FOUND); + err = false; + break; + } + default: + { + strMessage = ""; + err = false; + break; + } + } + if (strMessage.length() > 0) + { +// MessageBox.Show((strMessage), "", MessageBoxButtons.OK); + // 弹出一个文本信息框 + } + } + catch (Exception e) + { + // Error handling. + } + return err; + } + + public static boolean GetSystemError(int state) + { + boolean err = true; + String strMessage = ""; + + try + { + switch (state) + { + case (STATE_ENS_DLL_NOT_FOUND): + { + strMessage = STR_ENS_DLL_NOT_FOUND; + err = false; + break; + } + case (STATE_DRIVER_NOT_FOUND): + { + strMessage = STR_DRIVER_NOT_FOUND; + err = false; + break; + } + case (STATE_SYSTEM_PARAM_ERROR): + { + strMessage = STR_SYSTEM_PARAM_ERROR; + err = false; + break; + } + case (STATE_DRAWIMAGE_ERROR): + { + strMessage = STR_DRAWIMAGE_ERROR; + err = false; + break; + } + default: + { + strMessage = ""; + err = false; + break; + } + } + if (strMessage.length() > 0) + { +// MessageBox.Show((strMessage), "", MessageBoxButtons.OK); + // 弹出一个文本信息框 + } + } + catch (Exception e) + { + // Error handling. + } + return err; + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java new file mode 100644 index 00000000..711630f1 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/Print.java @@ -0,0 +1,125 @@ +package com.dreamchaser.depository_manage.EPSON.Other; + +import com.dreamchaser.depository_manage.exception.MyException; + +import javax.print.PrintService; +import java.awt.*; +import java.awt.geom.Rectangle2D; +import java.awt.print.*; + +public class Print { + private int _pageNumber = 0; + private int _totalPrintPage = 0; + private boolean _exceptionFlag = false; + + private PrinterJob _pdPrint; + + + private void PD_PrintPage() + { + try + { + PD_PrintPage_DrawBarcode(); + PD_PrintPage_Close(); + } + catch (Exception e) + { + // Error handling. + _exceptionFlag = true; + } + } + + + public Print(String devName, String portName, int totalPrintPage) + { + try + { + // Create the PrintDocumentObject. + _pdPrint = PrinterJob.getPrinterJob(); + // Add the PrintPageEventHandler. +// _pdPrint.PrintPage += new PrintPageEventHandler(PD_PrintPage); + + // Set the using Printer. + PrintService[] printServices = PrinterJob.lookupPrintServices(); + for (PrintService printService:printServices + ) { + String name = printService.getName(); + if(name.contains(devName)){ + _pdPrint.setPrintService(printService); + break; + } + } + _pdPrint.setJobName("Test Print"); + + + _totalPrintPage = totalPrintPage; + + return; + } + catch(Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + + + public void DoPrinting() + { + try + { + // Start the print. + _pdPrint.print(); + + if(_exceptionFlag) + { + throw new Exception(); + } + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + private void PD_PrintPage_DrawBarcode() + { + try + { + // 调用预设二维码打印类 + _pdPrint.setPrintable(new PrintBarCode()); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + private void PD_PrintPage_Close() + { + try + { + // Check final page. + if (_pageNumber < _totalPrintPage) + { + _pdPrint.cancel(); + } + + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + + + +} + diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java new file mode 100644 index 00000000..f9dec53b --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/PrintBarCode.java @@ -0,0 +1,57 @@ +package com.dreamchaser.depository_manage.EPSON.Other; + +import java.awt.*; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.awt.print.PrinterException; + +public class PrintBarCode implements Printable { + + /** + + * @param graphics 指明打印的图形环境 + + * @param pageFormat 指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) + + * @param pageIndex 指明页号 + + **/ + + // 设置用于打印的编码 + public String code; + + + public void setCode(String code) { + this.code = code; + } + + @Override + public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException { + + + //print string + String str = code; + + //转换成Graphics2D + Graphics2D g2 = (Graphics2D) g; + + //设置打印颜色为黑色 + g2.setColor(Color.black); + + //打印起点坐标 + double x = pf.getImageableX(); + double y = pf.getImageableY(); + + if (pageIndex == 0) {//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称) + + //Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput + Font font = new Font("Courier New", Font.PLAIN, 9); + g2.setFont(font);//设置字体 + + g2.drawString(code,20,100); + + return PAGE_EXISTS; + } + return NO_SUCH_PAGE; + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java new file mode 100644 index 00000000..822ad991 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/Other/SelectPrinterInfo.java @@ -0,0 +1,57 @@ +package com.dreamchaser.depository_manage.EPSON.Other; + +import com.alibaba.fastjson.JSONObject; +import com.profesorfalken.wmi4java.WMI4Java; +import org.apache.catalina.Manager; + +import javax.print.PrintService; +import javax.print.attribute.PrintServiceAttributeSet; +import java.awt.*; +import java.awt.print.PrinterJob; +import java.io.PrintStream; +import java.net.InetAddress; +import java.net.Socket; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 用于实现打印机选择的类 + */ +public class SelectPrinterInfo { + + public static List GetPrinterInfoList() { + + //定义打印机信息列表 + List printerInfoList = new ArrayList(); + PRINTER_INFO printerInfo; + try { + // 获取本地所有打印机 + List> wmiObjectListProperties = WMI4Java.get().getWMIObjectList("Win32_PRINTER"); + for (Map printer:wmiObjectListProperties + ) { + + printerInfo = new PRINTER_INFO(); + // 获取设备名称 + printerInfo.devName = printer.get("Name"); + // 获取端口名称 + printerInfo.portName =printer.get("PortName") ; + + if (printerInfo.devName.contains("EPSON")){ + printerInfoList.add(printerInfo); + } + + } + return printerInfoList; + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + public static class PRINTER_INFO { + public String devName; + public String portName; + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java new file mode 100644 index 00000000..22d71e51 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/ENSException.java @@ -0,0 +1,35 @@ +package com.dreamchaser.depository_manage.EPSON.epsonException; + +import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用于ENS的错误类 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ENSException extends Exception{ + + private static final long serialVersionUID = -2429062150745133718L; + + /** + * 错误类型 + */ + public ENSEnumrations.ENSErrorCode ensErrorCode; + + + public ENSEnumrations.ENSErrorCode getEnsErrorCode() { + return ensErrorCode; + } + + public void setEnsErrorCode(ENSEnumrations.ENSErrorCode ensErrorCode) { + this.ensErrorCode = ensErrorCode; + } + + public ENSException(ENSEnumrations.ENSErrorCode e) + { + ensErrorCode = e; + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java b/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java new file mode 100644 index 00000000..251fa58d --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/EPSON/epsonException/EPDMException.java @@ -0,0 +1,25 @@ +package com.dreamchaser.depository_manage.EPSON.epsonException; + +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用于EPDM的错误类 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class EPDMException extends Exception { + + private static final long serialVersionUID = 6037874212969710082L; + + /** + * 错误类型 + */ + public EPDMEnumrations.EPDMErrorCode epdmErrorCode; + + public EPDMException(EPDMEnumrations.EPDMErrorCode e) + { + epdmErrorCode = e; + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java b/src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java new file mode 100644 index 00000000..cd65f033 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/config/EPSON/ENS/Global_MEDIA_ENS.java @@ -0,0 +1,22 @@ +package com.dreamchaser.depository_manage.config.EPSON.ENS; + +import com.dreamchaser.depository_manage.EPSON.ENS.ENSStatus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Global_MEDIA_ENS { + + /** + * 用于全局INKSIDMSTATUS_02中的实现 + */ + public static Map integerINKSIDMSTATUS_02Map = new HashMap<>(); + + + /** + * 用于存储ENS中出现要进行暂存的字符串 + */ + public static Map ENS_STRUCTURE_Str = new HashMap<>(); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java b/src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java new file mode 100644 index 00000000..75fd35b0 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/config/EPSON/EPDM/Global_MEDIA_EPDM.java @@ -0,0 +1,77 @@ +package com.dreamchaser.depository_manage.config.EPSON.EPDM; + + +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaLayoutRange; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaTypeRange; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMSelectData; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMString; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.EPDMMediaLayoutInf; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT_RANGE; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Global_MEDIA_EPDM { + /** + * 用于全局MEDIA_LAYOUT_RANGE中的实现 + */ + public static Map media_layout_rangeMap = new HashMap<>(); + + /** + * 用于全局EPDMMediaLayoutRange的实现 + */ + public static Map epdmMediaLayoutRangeMap = new HashMap<>(); + + + /** + * 用于全局EPDM_MEDIALAYOUTRANGE的实现 + */ + public static Map epdm_medialayoutrangeMap = new HashMap<>(); + + + /** + * + * 用于全局EPDM_MEDIATYPERANGE的实现 + */ + public static Map epdm_mediatyperangeMap = new HashMap<>(); + + + /** + * 用于全局EPDM_SELECTDATA的实现 + */ + public static Map epdm_selectdataMap = new HashMap<>(); + + /** + * 用于EPDMMediaLayoutRange中的PtrToStructure转short + */ + public static Map epdm_mediaLayoutRange_short = new HashMap<>(); + + /** + * 用于全局EPDM_STRING_1的实现 + */ + public static Map epdm_string_1Map = new HashMap<>(); + + + /** + * 用于EPDMSelectData中的使用 + */ + public static List epdm_select_data_int64 = new ArrayList<>(); + public static List epdm_select_data_int32 = new ArrayList<>(); + public static List epdm_select_data_int16 = new ArrayList<>(); + + + /** + * 用于EPDMString中使用的byte + */ + public static Map epdm_epdmString_byte = new HashMap<>(); + + + /** + * 用于全局EPDM_MEDIALAYOUTINF的实现 + */ + public static Map epdm_medialayoutinfMap = new HashMap<>(); + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java index 82d3390f..98a6abb1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/PortConfig.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Map; /** - * 用于 + * 用于对接HR系统 */ @Data public class PortConfig { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java new file mode 100644 index 00000000..f90df413 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/AddMediaLayoutDlg.java @@ -0,0 +1,102 @@ +package com.dreamchaser.depository_manage.controller.EPSON; + +import com.dreamchaser.depository_manage.EPSON.Other.MessageString; +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT_RANGE; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl; + +public class AddMediaLayoutDlg { + + private String _devName; + private String _portName; + private boolean _isEPDMOpen = true; + + public AddMediaLayoutDlg(String devName, String portName) + { + + _devName = devName; + _portName = portName; + } + + public void AddMediaLayoutDlg_Load() + { + try + { + EPDMWrapperImpl.GetInstance().Open(_devName, _portName); + UpdateMediaLayoutRangeString(); + } catch (Exception e) + { + // Error handling. + ExceptionClose(); + } + } + /** + * 这是更新媒体布局范围字符串的方法。 + */ + private void UpdateMediaLayoutRangeString() { + MEDIA_LAYOUT_RANGE obj = EPDMWrapperImpl.GetInstance().GetMediaLayoutRangeValue(); + GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinPaperWid), MediaLayoutRangeToString(obj.MaxPaperWid)); + GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelWid), MediaLayoutRangeToString(obj.MaxLabelWid)); + GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelHig), MediaLayoutRangeToString(obj.MaxLabelHig)); + GetMediaLayoutRangeString(MediaLayoutRangeToString(obj.MinLabelGap), MediaLayoutRangeToString(obj.MaxLabelGap)); + } + + + /** + * 这是获取媒体布局范围字符串的方法。 + * @param minRangeString 最小范围字符串。 + * @param maxRangeString 最大范围字符串。 + * @return + */ + private String GetMediaLayoutRangeString(String minRangeString, String maxRangeString) { + try { + String rangeString = ""; + + if (minRangeString.length() > 0 && maxRangeString.length() > 0) { + rangeString = "( " + minRangeString + " - " + maxRangeString + " )"; + } + return rangeString; + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是将媒体布局范围值更改为字符串的方法。 + * + * @param size 介质布局范围值(0.1mm单位) + * @return + */ + private String MediaLayoutRangeToString(double size) { + try { + // Changed the size. (0.1mm to mm) + double d = size / 10; + + return String.format("%01f", d); + } catch (Exception e) { + // Error handling. + ExceptionClose(); + throw new MyException(e.getMessage()); + } + } + + /** + * 这是关闭应用的方法。 + */ + private void ExceptionClose() { + EPDMClose(); + } + + + /** + * 这是用于关闭的方法 + */ + private void EPDMClose() { + if (_isEPDMOpen) { + EPDMWrapperImpl.GetInstance().Close(); + } + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java new file mode 100644 index 00000000..b68d98d0 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintDlg.java @@ -0,0 +1,80 @@ +package com.dreamchaser.depository_manage.controller.EPSON; + +import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations; +import com.dreamchaser.depository_manage.EPSON.Other.MessageString; +import com.dreamchaser.depository_manage.EPSON.Other.Print; +import com.dreamchaser.depository_manage.EPSON.epsonException.ENSException; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapper; +import com.dreamchaser.depository_manage.service.impl.EPSON.ENS.ENSWrapperImpl; + +public class PrintDlg { + private String _devName; + private String _portName; + private boolean _isENSInitialize = true; + + + /** + * 这是PrintDlg的构造函数 + * + * @param devName 选中的打印机的设备名称 + * @param portName 选中的打印机的端口名称 + */ + public PrintDlg(String devName, String portName) { + + _devName = devName; + _portName = portName; + } + + /** + * 获取打印机状态和打印动作。 + */ + private void PrintButton_Click() { + ENSWrapperImpl obj = ENSWrapperImpl.GetInstance(); + // 获取打印数量 + int printPage = 1; + try { + try { + obj.Initialize(_devName, _portName); + } catch (Exception e) { + throw new MyException(e.getMessage()); + } + if (_isENSInitialize) { + ENSEnumrations.StatusCode sc = obj.GetStatusInformation(); + ENSEnumrations.ErrorCode ec = obj.GetErrorInformation(); + ENSWrapperImpl.WARNING_INFO wc = obj.GetWarningInformation(); + if (!MessageString.GetPrinterStatusError(sc, ec, wc)) { + return; + } + } + + Print print = new Print(_devName, _portName, printPage); + print.DoPrinting(); + } catch (Exception e) { + // Error handling. + ExceptionClose(); + } finally { + ENSClose(); + } + } + + + + private void ENSClose() { + if (_isENSInitialize) { + try { + ENSWrapperImpl.GetInstance().Release(); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + } + + /// + /// This is the method that close application. + /// + private void ExceptionClose() { + ENSClose(); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java new file mode 100644 index 00000000..f5ededd8 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrintSettingsDlg.java @@ -0,0 +1,279 @@ +package com.dreamchaser.depository_manage.controller.EPSON; + +import com.dreamchaser.depository_manage.EPSON.Other.MessageString; +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_LAYOUT; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_TYPE; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.PRINT_QUALITY; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapper; +import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class PrintSettingsDlg { + private List _mediaLayoutList; + private List _mediaTypeList; + private List _printQualityList; + private String _devName; + private String _portName; + private boolean _isEPDMOpen = true; + + /** + * 这是PrintSettingsDlg的构造函数。 + * @param devName + * @param portName + */ + public PrintSettingsDlg(String devName, String portName) + { + + _devName = devName; + _portName = portName; + } + + + /** + * 初始化加载方法 + */ + public Map> PrintSettings_Load() + { + try + { + EPDMWrapperImpl.GetInstance().Open(_devName, _portName); + List StrMediaLayoutList = UpdateMediaLayoutComboBox(); + List StrMediaTypeList = UpdateMediaTypeComboBox(); + List StrPrintQualityList = UpdatePrintQualityComboBox(); + Map> listMap = new HashMap<>(); + listMap.put("StrMediaLayoutList",StrMediaLayoutList); + listMap.put("StrMediaTypeList",StrMediaTypeList); + listMap.put("StrPrintQualityList",StrPrintQualityList); + return listMap; + } + catch (Exception e) + { + // Error handling. + ExceptionClose(); + + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是在MediaTypeComboBox更改操作上实现更新打印质量列表的事件处理程序。 + */ + private void MediaTypeComboBox_SelectedIndexChanged() + { + try + { + EPDMWrapperImpl obj = EPDMWrapperImpl.GetInstance(); +// int index = MediaTypeComboBox.SelectedIndex; + int index = 1; // 获取选中的数据的下标 + + obj.SetMediaType(_mediaTypeList.get(index).getMediaTypeID()); + + // 同时获取输出index + _printQualityList = obj.GetPrintQualityList(index); + if (_printQualityList == null) + { + return; + } + List StrPrintQualityList = new ArrayList<>(); + +// PrintQualityComboBox.Items.Clear(); + + for (PRINT_QUALITY printQuality : _printQualityList) + { + StrPrintQualityList.add(printQuality.getStrPrintQuality()); +// PrintQualityComboBox.Items.Add(printQuality.StrPrintQuality); +// this.Controls.Add(PrintQualityComboBox); + } + // 设置选中的下标 +// PrintQualityComboBox.SelectedIndex = index; + } catch (Exception ep) + { + // Error handling. + ExceptionClose(); + } + } + + + private void ApplyButton_Click() + { + EPDMWrapperImpl obj = EPDMWrapperImpl.GetInstance(); + try + { + int index = 0; + + // index为选中的媒体布局下标 +// index = MediaLayoutComboBox.SelectedIndex; + obj.SetMediaLayout(_mediaLayoutList.get(index).getMediaLayoutID()); + + // index为选中的媒体类型下标 +// index = MediaTypeComboBox.SelectedIndex; + obj.SetMediaType(_mediaTypeList.get(index).getMediaTypeID()); +// + // index为选中的打印质量下标 +// index = PrintQualityComboBox.SelectedIndex; + if (index >= 0) + { + // 如果选中的大于0 + obj.SetPrintQuality(_printQualityList.get(index).getPrintQualityID()); + } + else + { + // 否则设置为将打印质量设置为不可用 +// PrintQualityComboBox.Enabled = false; + } + obj.UpdateDevMode(); + } catch (Exception e) + { + // Error handling. + ExceptionClose(); + } + finally + { + EPDMClose(); + } + } + + + + + + + /** + * 这是更新打印质量组合框列表的方法。 + */ + private List UpdatePrintQualityComboBox() + { + // 用于保存当前打印质量 + List StrPrintQualityList = new ArrayList<>(); + try + { + Integer index = 0; + + _printQualityList = EPDMWrapperImpl.GetInstance().GetPrintQualityList( index); + if (_printQualityList == null) + { + return null; + } + + for (PRINT_QUALITY printQuality : _printQualityList) + { + StrPrintQualityList.add(printQuality.getStrPrintQuality()); + } + return StrPrintQualityList; + // index 是选中的打印质量 + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是更新媒体类型组合框列表的方法。 + */ + private List UpdateMediaTypeComboBox() + { + try + { + int index = 0; + + _mediaTypeList = EPDMWrapperImpl.GetInstance().GetMediaTypeList(index); + if (_mediaTypeList == null) + { + return null; + } + List StrMediaTypeList = new ArrayList<>(); + + + for (MEDIA_TYPE mediaType : _mediaTypeList) + { +// MediaTypeComboBox.Items.Add(mediaType.StrMediaType); +// this.Controls.Add(MediaTypeComboBox); + StrMediaTypeList.add(mediaType.getStrMediaType()); + } + + return StrMediaTypeList; +// MediaTypeComboBox.SelectedIndex = index; + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是更新媒体布局组合框列表的方法。 + */ + private List UpdateMediaLayoutComboBox() + { + try + { + int index = 0; + + _mediaLayoutList = EPDMWrapperImpl.GetInstance().GetMediaLayoutList(index); + if (_mediaLayoutList == null) + { + return null; + } + + List StrMediaLayoutList = new ArrayList<>(); + + + for (MEDIA_LAYOUT mediaLayout : _mediaLayoutList) + { + StrMediaLayoutList.add(mediaLayout.getStrMediaLayout()); + } + // index是选中的下标 + return StrMediaLayoutList; + + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是关闭PrintSettingsDlg的方法。 + */ + private void EPDMClose() + { + if (_isEPDMOpen) + { + try + { + EPDMWrapperImpl.GetInstance().Close(); + } catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + } + + + /** + * 这是关闭对话的方法 + */ + private void ExceptionClose() + { + EPDMClose(); + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java new file mode 100644 index 00000000..8a88614c --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/PrinterIndexDlg.java @@ -0,0 +1,80 @@ +package com.dreamchaser.depository_manage.controller.EPSON; + +import com.dreamchaser.depository_manage.EPSON.Other.MessageString; +import com.dreamchaser.depository_manage.EPSON.Other.SelectPrinterInfo; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.pojo.RestResponse; +import com.dreamchaser.depository_manage.utils.CrudUtil; +import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/Epson") +public class PrinterIndexDlg { + + private List _printerInfoList; + + private PrintSettingsDlg printSettingsDlg; + + /** + * 用于获取当前电脑的爱普生打印机列表 + * @return + */ + @PostMapping("/GetPrinterInfoList") + public RestResponse GetPrinterInfoList(){ + try { + List list = new ArrayList<>(); + _printerInfoList = SelectPrinterInfo.GetPrinterInfoList(); + if (_printerInfoList.size() == 0) { + MessageString.GetSystemError(MessageString.STATE_DRIVER_NOT_FOUND); + return new RestResponse(null); + } else { + for (SelectPrinterInfo.PRINTER_INFO printerInfo : _printerInfoList) + { + list.add(printerInfo.devName); + } + } + return new RestResponse(list); + }catch (Exception e){ + throw new MyException(e.getMessage()); + } + } + + + /** + * 用于初始化打印机设置页面 + * @param map 选中的打印机 + * @return + */ + @PostMapping("/PrintSettingLoad") + public RestResponse PrintSettingLoad(@RequestBody Map map){ + if(map.containsKey("index")){ + Integer index = ObjectFormatUtil.toInteger(map.get("index")); + printSettingsDlg = new PrintSettingsDlg(_printerInfoList.get(index).devName,_printerInfoList.get(index).portName); + return new RestResponse(200); + }else{ + throw new MyException("缺少必要参数"); + } + + } + + + /** + * 用于初始化打印机设置页面中的列表 + * @return + */ + @PostMapping("/updatePrintSettingPage") + public RestResponse updatePrintSettingPage(){ + Map> listMap = printSettingsDlg.PrintSettings_Load(); + return new RestResponse(listMap); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java new file mode 100644 index 00000000..9653228c --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/controller/EPSON/SetRollPaperDlg.java @@ -0,0 +1,99 @@ +package com.dreamchaser.depository_manage.controller.EPSON; + +import com.dreamchaser.depository_manage.EPSON.Other.MessageString; +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.MEDIA_POSITION; +import com.dreamchaser.depository_manage.exception.MyException; +import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapperImpl; + +import java.util.ArrayList; +import java.util.List; + +public class SetRollPaperDlg { + private List _mediaPositionList; + private String _devName; + private String _portName; + private boolean _isEPDMOpen = true; + + public SetRollPaperDlg(String _devName, String _portName) { + this._devName = _devName; + this._portName = _portName; + } + + + /** + * 这是加载时的方法 + */ + private void SetRollPaperDlg_Load(){ + try + { + EPDMWrapperImpl.GetInstance().Open(_devName, _portName); + UpdateMediaPositionComboBox(); + } catch (Exception e) + { + // Error handling. + ExceptionClose(); + } + } + + + /** + * 这是更新媒体位置组合框列表的方法 + */ + private void UpdateMediaPositionComboBox(){ + List strMediaPositionList = new ArrayList<>(); + try + { + Integer index = 0; + + _mediaPositionList = EPDMWrapperImpl.GetInstance().GetMediaPositionList(index); + if (_mediaPositionList == null) + { + return; + } + + + for (MEDIA_POSITION mediaPosition : _mediaPositionList) + { + strMediaPositionList.add(mediaPosition.StrMediaPosition); + } + // 最终选中 +// MediaPositionComboBox.SelectedIndex = index; + + } catch (Exception e) + { + // Error handling. + ExceptionClose(); + } + } + + /** + * 这是用于关闭EPDM的方法 + */ + private void EPDMClose() + { + if (_isEPDMOpen) + { + try + { + EPDMWrapperImpl.GetInstance().Close(); + } catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + } + + + /** + * 这是用于关闭的的方法。 + */ + private void ExceptionClose() + { + EPDMClose(); + } + + + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index 5e25f509..aeb67238 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -1349,8 +1349,8 @@ public class PageController { Group group = groupService.findGroupOnlyById(applicationInRecordPById.getMid()); // 获取组合详情数据 List groupInfoList = groupService.findGroupInfoByGid(applicationInRecordPById.getMid()); - mv.addObject("group",group); - mv.addObject("groupInfoList",groupInfoList); + mv.addObject("group", group); + mv.addObject("groupInfoList", groupInfoList); mv.addObject("record", applicationInRecordPById); mv.setViewName("pages/application/form-step-look_group"); } @@ -2112,8 +2112,8 @@ public class PageController { param.put("version", mp.getVersion()); List materialByBarCodeByCondition = materialService.findMaterialByBarCodeByCondition(param); param.put("materialAndBarCodeList", materialByBarCodeByCondition); - param.put("splitList",splitInfoByMid); - param.put("unit",mp.getUnit()); + param.put("splitList", splitInfoByMid); + param.put("unit", mp.getUnit()); String context = JSONObject.toJSONString(param); materialList.add(context); } @@ -2257,4 +2257,16 @@ public class PageController { } + @GetMapping("/printCode") + public ModelAndView printCode(int mid) { + ModelAndView mv = new ModelAndView(); + // 获取当前对应物料 + Material materialById = materialService.findMaterialById(mid); + // 获取当前物料对应的码值 + String qrCodeByMcode = materialService.findQrCodeByMcode(materialById.getCode()); + mv.addObject("qrCode",qrCodeByMcode); + mv.setViewName("pages/JcPrinter/PrinterIndex"); + return mv; + } + } diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java new file mode 100644 index 00000000..6b141139 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/EPDMMediaLayoutInf.java @@ -0,0 +1,149 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDM; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; +import com.sun.jna.Structure; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class EPDMMediaLayoutInf extends EPDM { + + + public class EPDM_MEDIALAYOUTINF extends Structure + { + public int dwVersion; + public int dwSize; + public short iPaperWid; + public short iPaperHig; + public short iLabelWid; + public short iLabelHig; + public short iLabelGap; + public short iBMGap; + public short iPrintWid; + public short iPrintHig; + public short iPrintX; + public short iPrintY; + public short iMediaTypeID; + public short iMediaLayoutID; + + + @Override + protected List getFieldOrder() { + return new ArrayList<>(Arrays.asList("dwVersion","dwSize","iPaperWid","iPaperHig","iLabelWid","iLabelHig","iLabelGap","iBMGap" + ,"iPrintWid","iPrintHig","iPrintX","iPrintY","iMediaTypeID","iMediaLayoutID")); + } + + public EPDM_MEDIALAYOUTINF() { + } + + public EPDM_MEDIALAYOUTINF(Pointer p) { + super(p); + } + + }; + + public short PaperWid; + + public short getPaperWid() { + return _struct.iPaperWid; + } + + public void setPaperWid(short paperWid) { + _struct.iPaperWid = paperWid; + } + + public short LabelWid; + + public short getLabelWid() { + return _struct.iLabelWid; + } + + public void setLabelWid(short labelWid) { + _struct.iLabelWid = labelWid; + } + public short LabelHig; + + public short getLabelHig() { + return _struct.iLabelHig; + } + + public void setLabelHig(short labelHig) { + _struct.iLabelHig = labelHig; + } + + public short LabelGap; + + public short getLabelGap() { + return _struct.iLabelGap; + } + + public void setLabelGap(short labelGap) { + _struct.iLabelGap = labelGap; + } + + public short MediaTypeID; + + public short getMediaTypeID() { + return _struct.iMediaTypeID; + } + + public void setMediaTypeID(short mediaTypeID) { + _struct.iMediaTypeID = mediaTypeID; + } + public short MediaLayoutID; + + public short getMediaLayoutID() { + return _struct.iMediaLayoutID; + } + + public void setMediaLayoutID(short mediaLayoutID) { + _struct.iMediaLayoutID = mediaLayoutID; + } + + + + private boolean _disposed = false; + public EPDM_MEDIALAYOUTINF _struct; + + + public EPDMMediaLayoutInf() + { + int structSize = 12 * Short.SIZE / 8 + Integer.SIZE / 8 * 2; + _ptrToStruct = new Memory(structSize); + + _struct = new EPDM_MEDIALAYOUTINF(_ptrToStruct); + _struct.dwVersion = EPDMEnumrations.StructVersion.EPDM_STVER_MEDIALAYOUTINF.getI(); + _struct.dwSize = structSize; + _struct.iPaperWid = 0; + _struct.iPaperHig = 0; + _struct.iLabelWid = 0; + _struct.iLabelHig = 0; + _struct.iLabelGap = 0; + _struct.iBMGap = 0; + _struct.iPrintWid = 0; + _struct.iPrintHig = 0; + _struct.iPrintX = 0; + _struct.iPrintY = 0; + _struct.iMediaTypeID = 0; + _struct.iMediaLayoutID = 0; + StructureToPtr(); + PtrToStructure(); + } + + @Override + public void PtrToStructure() { + _struct.read(); + _struct = Global_MEDIA_EPDM.epdm_medialayoutinfMap.get(_ptrToStruct.getInt(0)); + } + + @Override + public void StructureToPtr() { + _struct.write(); + Global_MEDIA_EPDM.epdm_medialayoutinfMap.put(_ptrToStruct.getInt(0),_struct); + } +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java new file mode 100644 index 00000000..a3f2ae9c --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT.java @@ -0,0 +1,12 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import lombok.Data; + +/** + *这是定义媒体布局信息的类。 + */ +@Data +public class MEDIA_LAYOUT { + public String StrMediaLayout; + public int MediaLayoutID; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java new file mode 100644 index 00000000..031f6a98 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_LAYOUT_RANGE.java @@ -0,0 +1,18 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import lombok.Data; + +/** + * 这是定义介质分布范围值的类 + */ +@Data +public class MEDIA_LAYOUT_RANGE { + public short MinPaperWid; + public short MaxPaperWid; + public short MinLabelWid; + public short MaxLabelWid; + public short MinLabelHig; + public short MaxLabelHig; + public short MinLabelGap; + public short MaxLabelGap; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java new file mode 100644 index 00000000..ecb1ae0f --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_POSITION.java @@ -0,0 +1,12 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import lombok.Data; + +/** + * 这是定义媒体位置信息的类 + */ +@Data +public class MEDIA_POSITION { + public String StrMediaPosition; + public int MediaPositionID; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java new file mode 100644 index 00000000..856947f3 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/MEDIA_TYPE.java @@ -0,0 +1,12 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import lombok.Data; + +/** + * 这是定义媒体类型信息的类 + */ +@Data +public class MEDIA_TYPE { + public String StrMediaType; + public int MediaTypeID; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java new file mode 100644 index 00000000..d0b8bb39 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EPSON/EPDM/PRINT_QUALITY.java @@ -0,0 +1,12 @@ +package com.dreamchaser.depository_manage.entity.EPSON.EPDM; + +import lombok.Data; + +/** + * 这是定义打印质量信息的类。 + */ +@Data +public class PRINT_QUALITY { + public String StrPrintQuality; + public int PrintQualityID; +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 1c48e66e..435e6271 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -2060,12 +2060,12 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { userIdByDid = roleService.findUserIdByDid(inventory.getDepositoryId()); // 用于保存仓库管理员的企业微信openid StringBuilder QyWxUid = new StringBuilder(); - for (int j = 0; j < userIdByDid.size(); j++) { + for (Integer integer : userIdByDid) { // 仓库管理员订单信息 Map userRecord = new HashMap<>(); // 用户当前子订单 - String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + userIdByDid.get(j), "minRecord"); + String userMinRecord = (String) redisTemplate.opsForHash().get("user:" + integer, "minRecord"); if (userMinRecord == null) { // 如果当前用户没有子订单 userRecord.put("minRecord", "[" + minRecordKey + "," + "]"); // 插入一条子订单 } else { // 如果当前用户已经有子订单 @@ -2074,9 +2074,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { userRecord.put("minRecord", minRecordList.toString()); } // 更新redis中用户记录 - redisTemplate.opsForHash().putAll("user:" + userIdByDid.get(j), userRecord); - minRecordManage.append(userIdByDid.get(j)).append(","); - UserByPort userByPort = LinkInterfaceUtil.FindUserById(userIdByDid.get(j), userToken); + redisTemplate.opsForHash().putAll("user:" + integer, userRecord); + minRecordManage.append(integer).append(","); + UserByPort userByPort = LinkInterfaceUtil.FindUserById(integer, userToken); // QyWxUid.append(userByPort.getWorkwechat() + ","); } QyWxUid.append("PangFuZhen,"); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java new file mode 100644 index 00000000..4f26e5c5 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapper.java @@ -0,0 +1,36 @@ +package com.dreamchaser.depository_manage.service.impl.EPSON.ENS; + +import com.dreamchaser.depository_manage.service.impl.EPSON.EPDM.EPDMWrapper; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; + +public interface ENSWrapper extends Library { + + String strLibrary = "C:/Program Files (x86)/EpsonNet/EpsonNetSDK/EpsonNetSDK"; + // String strLibrary = "C://Program Files//EpsonNet//EpsonNetSDK//EpsonNetSDK.dll"; + ENSWrapper instance = Native.load(strLibrary, ENSWrapper.class); + + int ENSInitialize(); + + + int ENSRelease(); + + int ENSGetDeviceID + (int PathType, String PrnPath, + Pointer IdBuff, int BuffLen, + int StructVersion); + + int ENSOpenCommunication + (int PathType, String PrnPath, + Pointer IdBuff, Pointer PtrHandle); + + int ENSCloseCommunication + (Pointer PtrHandle); + + int ENSGetInformation + (Pointer PtrHandle, String Command, + Pointer GetParm, Pointer GetBuff, + int BuffLen); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java new file mode 100644 index 00000000..5e20ccd2 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/ENS/ENSWrapperImpl.java @@ -0,0 +1,253 @@ +package com.dreamchaser.depository_manage.service.impl.EPSON.ENS; + +import com.dreamchaser.depository_manage.EPSON.ENS.ENSEnumrations; +import com.dreamchaser.depository_manage.EPSON.ENS.ENSStatus; +import com.dreamchaser.depository_manage.EPSON.epsonException.ENSException; +import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS; +import com.dreamchaser.depository_manage.exception.MyException; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; + +public class ENSWrapperImpl { + + /** + * 这是定义警告代码标志的类。 + */ + public class WARNING_INFO + { + public boolean InkLowWarning = false; + public boolean OtherWarning = false; + } + + private static ENSWrapperImpl _singleton = new ENSWrapperImpl(); + private String _devName, _portName; + private Pointer _ptrHandle; + + private static final String INFO_COMMAND = "STATUS"; + + private ENSWrapperImpl() + { + } + + public static ENSWrapperImpl GetInstance() + { + return _singleton; + } + + + /** + * 这个方法用于实现ENSInitialize. + * @param devName 所选打印机的设备名称 + * @param portName 所选打印机的端口名称 + */ + public void Initialize(String devName, String portName) + { + try + { + _devName = devName; + _portName = portName; + + ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSInitialize()); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这个方法用于获取选中的打印机的状态 + * @param structINKSIDM INKSIDMSTATUS_02 对象 + */ + public void GetPrinterStatus(ENSStatus.INKSIDMSTATUS_02 structINKSIDM) { + Pointer ptrInt = Pointer.NULL; + Pointer ptrTemp = Pointer.NULL; + Pointer ptrGetBuff = Pointer.NULL; + try + { + // Handling of to call ENSGetDeviceID. + int buffLen = 0; + + // ENSGetDeviceID 1st call. Get the required buffLen. + ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetDeviceID(ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, Pointer.NULL, buffLen, 0x1)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BUFFERSIZE) + { + throw new ENSException(errCode); + } + + ptrTemp = new Memory(buffLen); + + // ENSGetDeviceID 2nd call. + errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetDeviceID( ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, ptrTemp, buffLen, 0x1)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + +// Handling of to call ENSOpenCommunication. + errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSOpenCommunication( ENSEnumrations.ENSType.TYPE_PRINTER.getI(), _devName, ptrTemp, _ptrHandle)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + + // Get printer status information. + structINKSIDM = new ENSStatus.INKSIDMSTATUS_02(); + String str = "STRUCTURE=INKSIDMSTATUS_02"; + int random = (int) Math.random(); + ptrInt = new Memory(random); + Global_MEDIA_ENS.ENS_STRUCTURE_Str.put(random,str); + + // Handling of to call ENSGetInformation. + buffLen = 0; + + // ENSGetInformation 1st call. Get the required buffLen. + errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetInformation(_ptrHandle, INFO_COMMAND, ptrInt, Pointer.NULL, buffLen)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BUFFERSIZE) + { + throw new ENSException(errCode); + } + + ptrGetBuff = new Memory(buffLen); + + // ENSGetInformation 2nd call. + errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSGetInformation(_ptrHandle, INFO_COMMAND, ptrInt, ptrGetBuff, buffLen)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + + // Get INKSIDMSTATUS_02 structure object. +// structINKSIDM = (ENSStatus.INKSIDMSTATUS_02)Marshal.PtrToStructure(ptrGetBuff, typeof(ENSStatus.INKSIDMSTATUS_02)); + structINKSIDM = Global_MEDIA_ENS.integerINKSIDMSTATUS_02Map.get(ptrGetBuff.getInt(0)); +// + // Handling of to call ENSCloseCommunication. + errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSCloseCommunication(_ptrHandle)); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + finally + { + Native.free(Pointer.nativeValue(ptrTemp)); + Native.free(Pointer.nativeValue(ptrInt)); + Native.free(Pointer.nativeValue(ptrGetBuff)); + } + } + + /** + * 这个方法用于获取状态信息 + * @return + */ + public ENSEnumrations.StatusCode GetStatusInformation() + { + try + { + ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02(); + GetPrinterStatus(structINKSIDM); + return ENSEnumrations.StatusCode.getStatusCode(structINKSIDM.StatusCode); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这个方法用于获取ErrorCode + * @return + */ + public ENSEnumrations.ErrorCode GetErrorInformation() + { + try + { + ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02(); + GetPrinterStatus( structINKSIDM); + return ENSEnumrations.ErrorCode.getErrorCode(structINKSIDM.ErrorCode); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是获取WarningCode的方法。 + * 判断是否出现警告。 + * @return + */ + public WARNING_INFO GetWarningInformation() + { + try + { + ENSStatus.INKSIDMSTATUS_02 structINKSIDM = new ENSStatus.INKSIDMSTATUS_02(); + GetPrinterStatus( structINKSIDM); + + int awc = structINKSIDM.AvailableWarningCode2; + WARNING_INFO warningInfo = new WARNING_INFO(); + + if (awc != 0) + { + for (int i = 0; i < awc; i++) + { + if ((structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_B.getI()) || + (structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_C.getI()) || + (structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_M.getI()) || + (structINKSIDM.WarningCode2[i] == ENSEnumrations.WarningCode.WAR_InkLow_Y.getI())) + { + warningInfo.InkLowWarning = true; + } + else + { + warningInfo.OtherWarning = true; + } + } + } + return warningInfo; + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是实现ENSRelease的方法 + */ + public void Release() + { + try + { + ENSEnumrations.ENSErrorCode errCode = ENSEnumrations.ENSErrorCode.getENSErrorCode(ENSWrapper.instance.ENSRelease()); + if (errCode != ENSEnumrations.ENSErrorCode.ERR_BASE) + { + throw new ENSException(errCode); + } + } + + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java new file mode 100644 index 00000000..208c16fc --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapper.java @@ -0,0 +1,35 @@ +package com.dreamchaser.depository_manage.service.impl.EPSON.EPDM; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; + + +public interface EPDMWrapper extends Library { + + + String strLibrary = "C:/Windows/System32/spool/drivers/x64/3/E_BEPSET32"; +// String strLibrary = "3/E_BEPSET32"; +// String strLibrary = "\\3\\E_BEPSET32"; +// String strLibrary = "C:/Windows/System32/spool/drivers/W32X86/3/E_BEPSET32.DLL"; + EPDMWrapper instance = Native.load(strLibrary, EPDMWrapper.class); + IntByReference number = new IntByReference(0); + + + int EPDM_Open(String DevName, String PortName, int Type, Pointer DMAdd, Pointer PrnHandleAdd); + + int EPDM_GetRange(Pointer PrnHandle, int Command, Pointer Param); + + int EPDM_GetData(Pointer PrnHandle, int Command, Pointer Param); + + int EPDM_SetData(Pointer PrnHandle, int Command, int Param); + + int EPDM_AddData(Pointer PrnHandle, int Command, Pointer Param); + + int EPDM_ImportData(Pointer PrnHandle, int Command, Pointer Param); + + boolean EPDM_UpdateDevMode(Pointer PrnHandle); + + boolean EPDM_Close(Pointer PrnHandle); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java new file mode 100644 index 00000000..2fa306a8 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/EPSON/EPDM/EPDMWrapperImpl.java @@ -0,0 +1,622 @@ +package com.dreamchaser.depository_manage.service.impl.EPSON.EPDM; + +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMEnumrations; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMMediaLayoutRange; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMSelectData; +import com.dreamchaser.depository_manage.EPSON.EPDM.EPDMString; +import com.dreamchaser.depository_manage.EPSON.epsonException.EPDMException; +import com.dreamchaser.depository_manage.config.EPSON.ENS.Global_MEDIA_ENS; +import com.dreamchaser.depository_manage.config.EPSON.EPDM.Global_MEDIA_EPDM; +import com.dreamchaser.depository_manage.entity.EPSON.EPDM.*; +import com.dreamchaser.depository_manage.exception.MyException; +import com.sun.jna.Memory; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import org.apache.commons.collections4.Get; +import org.apache.commons.math3.analysis.function.Add; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.List; + +/** + * 用于实现EPDMWrapper的方法 + */ +public class EPDMWrapperImpl { + + + private static EPDMWrapperImpl _singleton = new EPDMWrapperImpl(); + /*打印质量*/ + private static String STR_PRINTQUALITY_360X180 = "360x180dpi"; + private static String STR_PRINTQUALITY_360X360 = "360x360dpi"; + private static String STR_PRINTQUALITY_720X360 = "720x360dpi"; + + private Pointer _ptrGetParm = new Memory(24); + + public static EPDMWrapperImpl GetInstance() { + return _singleton; + } + + + /** + * 这是实现EpDMOpen的方法 + * + * @param devName 所选打印机的设备名称。 + * @param portName 所选打印机的端口名称。 + */ + public void Open(String devName, String portName) { + + + try { + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_Open(devName, portName, 0, Pointer.NULL, _ptrGetParm)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + } catch (Exception e) { + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取MediaLayoutRange的最小值和最大值的方法。 + * + * @return 包含获取值的类 + */ + public MEDIA_LAYOUT_RANGE GetMediaLayoutRangeValue() { + try { + EPDMMediaLayoutRange epdmMediaLayoutRange = GetMediaLayoutRange(); + // Get the MediaLayoutRange value. + int index = epdmMediaLayoutRange.GetMediaTypeIndex(EPDMEnumrations.MediaTypeID.EPDM_MEDIATYPE_DIECUT); + + MEDIA_LAYOUT_RANGE mediaLayoutRange = new MEDIA_LAYOUT_RANGE(); + mediaLayoutRange.MinPaperWid = epdmMediaLayoutRange.MediaTypeRange[index].iMinPaperWid; + mediaLayoutRange.MaxPaperWid = epdmMediaLayoutRange.MediaTypeRange[index].iMaxPaperWid; + + mediaLayoutRange.MinLabelWid = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelWid; + mediaLayoutRange.MaxLabelWid = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelWid; + + mediaLayoutRange.MinLabelHig = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelHig; + mediaLayoutRange.MaxLabelHig = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelHig; + + mediaLayoutRange.MinLabelGap = epdmMediaLayoutRange.MediaTypeRange[index].iMinLabelGap; + mediaLayoutRange.MaxLabelGap = epdmMediaLayoutRange.MediaTypeRange[index].iMaxLabelGap; + return mediaLayoutRange; + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是用于实现EPDM_GetRange的方法 + * + * @return EPDM_MEDIALAYOUTRANGE结构体 + */ + public EPDMMediaLayoutRange GetMediaLayoutRange() { + try { + EPDMMediaLayoutRange epdmMediaLayoutRange = new EPDMMediaLayoutRange(); + // EPDM_GetRange第一次调用。获取所需的内存大小。 + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMediaLayoutRange.getStructurePointer())); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + System.out.println(errCode); + throw new EPDMException(errCode); + } + + epdmMediaLayoutRange.PtrToStructure(); + + epdmMediaLayoutRange.Alloc(); + + Global_MEDIA_EPDM.epdmMediaLayoutRangeMap.put(_ptrGetParm.getInt(0), epdmMediaLayoutRange); + // 第二次调用EPDM_GetRange + + errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMediaLayoutRange.getStructurePointer())); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + Global_MEDIA_EPDM.epdmMediaLayoutRangeMap.put(_ptrGetParm.getInt(0), epdmMediaLayoutRange); + return epdmMediaLayoutRange; + + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + + /** + * 这是实现EPDM_Close的方法 + */ + public void Close() { + try { + if (!EPDMWrapper.instance.EPDM_Close(_ptrGetParm)) { + throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL); + } + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是创建媒体位置组合框列表的方法。 + * + * @param index 所选组合框序列的个数。 + * @return >媒体职位列表。 + */ + public List GetMediaPositionList(Integer index) { + try { + List mediaPositionList = new ArrayList(); + MEDIA_POSITION mediaPosition; + + // GetRange EPDM_CMD_MEDIAPOSITION + EPDMSelectData epdmSelectData = GetMediaPositionRange(); + +// GetData EPDM_CMD_MEDIAPOSITION & Get combo box index. + index = ArrayIndexOf(epdmSelectData.Data, GetMediaPositionID()); + +// GetData EPDM_CMD_STRING + for (int i = 0; i < epdmSelectData.Count; i++) { + String strData = GetString(EPDMEnumrations.StringID.EPDM_STRING_MEDIAPOSITION.getI(), epdmSelectData.Data[i].intValue()); + + // Add the mediapositionlist + mediaPosition = new MEDIA_POSITION(); + mediaPosition.StrMediaPosition = strData; + mediaPosition.MediaPositionID = epdmSelectData.Data[i].intValue(); + mediaPositionList.add(mediaPosition); + } + return mediaPositionList; + + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是创建媒体布局组合框列表的方法。 + * + * @param index 所选组合框序列的数目。 + * @return 媒体布局列表。 + */ + public List GetMediaLayoutList(Integer index) { + try { + List mediaLayoutList = new ArrayList(); + MEDIA_LAYOUT mediaLayout; + + // GetRange EPDM_CMD_MEDIALAYOUT + EPDMMediaLayoutRange epdmMediaLayoutRange = GetMediaLayoutRange(); + // GetData EPDM_CMD_MEDIALAYOUT & Get combo box index. + index = ArrayIndexOfForShort(epdmMediaLayoutRange.MediaLayoutID, GetMediaLayoutID()); + +// GetData EPDM_CMD_STRING + for (int i = 0; i < epdmMediaLayoutRange.IDCount; i++) { + String strData = GetString(EPDMEnumrations.StringID.EPDM_STRING_MEDIALAYOUT.getI(), epdmMediaLayoutRange.MediaLayoutID[i]); + +//  Add the mediaLayoutlist + mediaLayout = new MEDIA_LAYOUT(); + mediaLayout.StrMediaLayout = strData; + mediaLayout.MediaLayoutID = (int) epdmMediaLayoutRange.MediaLayoutID[i]; + mediaLayoutList.add(mediaLayout); + } + return mediaLayoutList; + + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取当前媒体布局ID的方法。 + * + * @return 媒体布局id + */ + public short GetMediaLayoutID() { + try { + EPDMMediaLayoutInf epdmMeiaLayoutInf = new EPDMMediaLayoutInf(); + +// GetData EPDM_CMD_mediaLayout + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), epdmMeiaLayoutInf.StructurePointer)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + epdmMeiaLayoutInf.PtrToStructure(); + + short mediaLayoutID = epdmMeiaLayoutInf.MediaLayoutID; + + return mediaLayoutID; + + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取媒体位置范围的方法。 + * + * @return EPDM_CMD_MEDIAPOSITION的数据结构对象EPDM_SelectData + */ + public EPDMSelectData GetMediaPositionRange() { + try { + return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_MEDIAPOSITION); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取当前媒体位置检测设置ID的方法。 + * + * @return >媒体位置检测设置ID + */ + public short GetMediaPositionID() { + try { + return GetShortData(EPDMEnumrations.Command.EPDM_CMD_MEDIAPOSITION); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是设置媒体布局的方法。 + * @param mediaLayoutID 所选媒体布局ID + */ + public void SetMediaLayout(int mediaLayoutID) + { + try + { + SetData(EPDMEnumrations.Command.EPDM_CMD_MEDIALAYOUT.getI(), mediaLayoutID); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是创建媒体类型组合框列表的方法。 + * @param index 所选组合框序列的个数 + * @return 媒体类型列表 + */ + public List GetMediaTypeList(Integer index) { + try { + List mediaTypeList = new ArrayList(); + MEDIA_TYPE mediaType; + + // GetRange EPDM_CMD_MEDIA + EPDMSelectData epdmSelectData = GetMediaTypeRange(); + + // GetData EPDM_CMD_MEDIA + short mediaTypeID = GetMediaTypeID(); + + // Get combo box index. + index = ArrayIndexOf(epdmSelectData.Data, mediaTypeID); + + // GetData EPDM_CMD_STRING + for (int i = 0; i < epdmSelectData.Count; i++) { + String strData = GetString( EPDMEnumrations.StringID.EPDM_STRING_MEDIA.getI(), epdmSelectData.Data[i].intValue()); + + // Add the mediatypelist + mediaType = new MEDIA_TYPE(); + mediaType.StrMediaType = strData; + mediaType.MediaTypeID = epdmSelectData.Data[i].intValue(); + mediaTypeList.add(mediaType); + } + return mediaTypeList; + + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取媒体类型范围的方法。 + * + * @return epdm_select的数据结构对象。 + */ + public EPDMSelectData GetMediaTypeRange() { + try { + return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_MEDIA); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获取当前媒体类型ID的方法。 + * @return 媒体类型ID。 + */ + public short GetMediaTypeID() + { + try + { + return GetShortData(EPDMEnumrations.Command.EPDM_CMD_MEDIA); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是实现EPDMSelectData结构的EPDM GetRange的方法。 + * + * @param cmd 命令获取设置的范围 + * @return EPDMSelectData结构对象。 + */ + public EPDMSelectData GetSelectDataRange(EPDMEnumrations.Command cmd) { + try { + EPDMSelectData epdmSelectData = new EPDMSelectData(); + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, cmd.getI(), epdmSelectData.StructurePointer)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + + throw new EPDMException(errCode); + + } + epdmSelectData.PtrToStructure(); + + // Allocate the memory. - EPDMSelectData.Data + epdmSelectData.Alloc(); + + // EPDM_GetRange 2nd call. + errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetRange(_ptrGetParm, cmd.getI(), epdmSelectData.StructurePointer)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + epdmSelectData.PtrToStructure(); + + return epdmSelectData; + } catch (EPDMException e) { + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是用于实现EPDM_GetData的方法 + * + * @param cmd 命令获取数据 + * @return + */ + public short GetShortData(EPDMEnumrations.Command cmd) { + Pointer ptrPosition = Pointer.NULL; + try { + ptrPosition = new Memory(Short.SIZE / 8); + + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, cmd.getI(), ptrPosition)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + + return _ptrGetParm.getShort(0); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } finally { + Native.free(Pointer.nativeValue(ptrPosition)); + } + } + + /** + * 这是实现EPDM_sTRiNG_1结构的EPDM_GetData的方法 + * + * @param stringParam 要获取的字符串的命令。 + * @param id 要获取的字符串的ID + * @return + */ + public String GetString(int stringParam, int id) { + try { + EPDMString epdmString = new EPDMString(); + + epdmString.Command = stringParam; + epdmString.ID = id; + + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_STRING.getI(), epdmString.StructurePointer)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + + epdmString.PtrToStructure(); + + // Allocate the memory. - EPDMString.String + epdmString.Alloc(); + + errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_GetData(_ptrGetParm, EPDMEnumrations.Command.EPDM_CMD_STRING.getI(), epdmString.StructurePointer)); + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + + epdmString.PtrToStructure(); + + return epdmString.getString(); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是用于实现EPDM_SetData的方法 + * + * @param cmd 要获取的命令号。 + * @param param 数据参数 + */ + public void SetData(int cmd, int param) { + try { + EPDMEnumrations.EPDMErrorCode errCode = EPDMEnumrations.EPDMErrorCode.getEPDMErrorCode(EPDMWrapper.instance.EPDM_SetData(_ptrGetParm, cmd, param)); + + if (errCode != EPDMEnumrations.EPDMErrorCode.EPDM_ERR_NORMAL) { + throw new EPDMException(errCode); + } + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是实现EPDM_UpdateDevMode的方法 + */ + public void UpdateDevMode() { + try { + if (!EPDMWrapper.instance.EPDM_UpdateDevMode(_ptrGetParm)) { + throw new EPDMException(EPDMEnumrations.EPDMErrorCode.EPDM_ERR_FAIL); + } + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是设置媒体类型的方法。 + * @param mediaTypeID 所选媒体类型ID。 + */ + public void SetMediaType(int mediaTypeID) + { + try + { + SetData(EPDMEnumrations.Command.EPDM_CMD_MEDIA.getI(), mediaTypeID); + } + catch (Exception e) + { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是创建打印质量组合框列表的方法。 + * + * @param index 所选组合框序列的个数(输出),当没有可选择的打印质量时,-1返回索引。 + * @return 印刷质量的清单 + */ + public List GetPrintQualityList(Integer index) { + try { + List printQualityList = new ArrayList(); + PRINT_QUALITY printQuality; + + // GetData EPDM_CMD_MEDIA + EPDMSelectData epdmSelectData = GetPrintQualityRange(); + if (epdmSelectData == null) { + index = -1; + return null; + } + + // GetData EPDM_CMD_MEDIA & Get combo box index. + index = ArrayIndexOf(epdmSelectData.Data, GetPrintQualityID()); + + // GetPrintQualityString + String strData = ""; + for (int i = 0; i < epdmSelectData.Count; i++) { + int ID = epdmSelectData.Data[i].intValue(); + if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_360X180.getI()) { + strData = STR_PRINTQUALITY_360X180; + } else if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_360X360.getI()) { + strData = STR_PRINTQUALITY_360X360; + } else if (ID == EPDMEnumrations.PrintQualityID.EPDM_QUALITY_720X360.getI()) { + strData = STR_PRINTQUALITY_720X360; + } + + // Add the mediapositionlist + printQuality = new PRINT_QUALITY(); + printQuality.StrPrintQuality = strData; + printQuality.PrintQualityID = ID; + printQualityList.add(printQuality); + } + return printQualityList; + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是得到打印质量范围的方法。 + * + * @return + */ + public EPDMSelectData GetPrintQualityRange() { + try { + return GetSelectDataRange(EPDMEnumrations.Command.EPDM_CMD_QUALITY); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + /** + * 这是获得目前印刷质量的方法之一。 + * + * @return 打印质量ID + */ + public short GetPrintQualityID() { + try { + return GetShortData(EPDMEnumrations.Command.EPDM_CMD_QUALITY); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + /** + * 这是设置打印质量的方法。 + * + * @param printQualityID 选定打印质量ID。 + */ + public void SetPrintQuality(int printQualityID) { + try { + SetData(EPDMEnumrations.Command.EPDM_CMD_QUALITY.getI(), printQualityID); + } catch (Exception e) { + // Error handling. + throw new MyException(e.getMessage()); + } + } + + + public Integer ArrayIndexOf(Object[] objects, Object object) { + int num = 0; + for (int i = 0; i < objects.length; i++) { + Object obj = objects[i]; + if (obj.toString().equals(object.toString())) { + num = i; + } + } + return num; + } + + + public Integer ArrayIndexOfForShort(short[] objects, short object) { + int num = 0; + for (int i = 0; i < objects.length; i++) { + short obj = objects[i]; + if (obj == object) { + num = i; + } + } + return num; + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java index 11d4b2be..938afb9d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java @@ -8,6 +8,7 @@ import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.oned.Code128Writer; +import com.google.zxing.oned.Code39Writer; import com.google.zxing.oned.EAN13Writer; import com.google.zxing.pdf417.encoder.BarcodeMatrix; import com.google.zxing.qrcode.QRCodeWriter; @@ -81,7 +82,7 @@ public class CreateQrCodeUtil { * @param width 宽度 * @return base64格式的字符串 */ - public static String CreateBarCodeCode128(String content, int height, int width){ + public static String CreateBarCode128(String content, int height, int width){ String resultImage = ""; if (!StringUtils.isEmpty(content)) { ServletOutputStream stream = null; diff --git a/src/main/resources/static/css/JcPrinter/chalk_index.css b/src/main/resources/static/css/JcPrinter/chalk_index.css new file mode 100644 index 00000000..eb3644c4 --- /dev/null +++ b/src/main/resources/static/css/JcPrinter/chalk_index.css @@ -0,0 +1,15681 @@ +@charset "UTF-8"; +@font-face { + font-family: element-icons; + src: url(/static/css/JcPrinter/fonts/element-icons.woff) format("woff"), + url(/static/css/JcPrinter/fonts/element-icons.ttf) format("truetype"); + font-weight: 400; + font-display: "auto"; + font-style: normal +} + + + +[class*=" el-icon-"], [class^=el-icon-] { + font-family: element-icons !important; + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: baseline; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.el-icon-ice-cream-round:before { + content: "\e6a0" +} + +.el-icon-ice-cream-square:before { + content: "\e6a3" +} + +.el-icon-lollipop:before { + content: "\e6a4" +} + +.el-icon-potato-strips:before { + content: "\e6a5" +} + +.el-icon-milk-tea:before { + content: "\e6a6" +} + +.el-icon-ice-drink:before { + content: "\e6a7" +} + +.el-icon-ice-tea:before { + content: "\e6a9" +} + +.el-icon-coffee:before { + content: "\e6aa" +} + +.el-icon-orange:before { + content: "\e6ab" +} + +.el-icon-pear:before { + content: "\e6ac" +} + +.el-icon-apple:before { + content: "\e6ad" +} + +.el-icon-cherry:before { + content: "\e6ae" +} + +.el-icon-watermelon:before { + content: "\e6af" +} + +.el-icon-grape:before { + content: "\e6b0" +} + +.el-icon-refrigerator:before { + content: "\e6b1" +} + +.el-icon-goblet-square-full:before { + content: "\e6b2" +} + +.el-icon-goblet-square:before { + content: "\e6b3" +} + +.el-icon-goblet-full:before { + content: "\e6b4" +} + +.el-icon-goblet:before { + content: "\e6b5" +} + +.el-icon-cold-drink:before { + content: "\e6b6" +} + +.el-icon-coffee-cup:before { + content: "\e6b8" +} + +.el-icon-water-cup:before { + content: "\e6b9" +} + +.el-icon-hot-water:before { + content: "\e6ba" +} + +.el-icon-ice-cream:before { + content: "\e6bb" +} + +.el-icon-dessert:before { + content: "\e6bc" +} + +.el-icon-sugar:before { + content: "\e6bd" +} + +.el-icon-tableware:before { + content: "\e6be" +} + +.el-icon-burger:before { + content: "\e6bf" +} + +.el-icon-knife-fork:before { + content: "\e6c1" +} + +.el-icon-fork-spoon:before { + content: "\e6c2" +} + +.el-icon-chicken:before { + content: "\e6c3" +} + +.el-icon-food:before { + content: "\e6c4" +} + +.el-icon-dish-1:before { + content: "\e6c5" +} + +.el-icon-dish:before { + content: "\e6c6" +} + +.el-icon-moon-night:before { + content: "\e6ee" +} + +.el-icon-moon:before { + content: "\e6f0" +} + +.el-icon-cloudy-and-sunny:before { + content: "\e6f1" +} + +.el-icon-partly-cloudy:before { + content: "\e6f2" +} + +.el-icon-cloudy:before { + content: "\e6f3" +} + +.el-icon-sunny:before { + content: "\e6f6" +} + +.el-icon-sunset:before { + content: "\e6f7" +} + +.el-icon-sunrise-1:before { + content: "\e6f8" +} + +.el-icon-sunrise:before { + content: "\e6f9" +} + +.el-icon-heavy-rain:before { + content: "\e6fa" +} + +.el-icon-lightning:before { + content: "\e6fb" +} + +.el-icon-light-rain:before { + content: "\e6fc" +} + +.el-icon-wind-power:before { + content: "\e6fd" +} + +.el-icon-baseball:before { + content: "\e712" +} + +.el-icon-soccer:before { + content: "\e713" +} + +.el-icon-football:before { + content: "\e715" +} + +.el-icon-basketball:before { + content: "\e716" +} + +.el-icon-ship:before { + content: "\e73f" +} + +.el-icon-truck:before { + content: "\e740" +} + +.el-icon-bicycle:before { + content: "\e741" +} + +.el-icon-mobile-phone:before { + content: "\e6d3" +} + +.el-icon-service:before { + content: "\e6d4" +} + +.el-icon-key:before { + content: "\e6e2" +} + +.el-icon-unlock:before { + content: "\e6e4" +} + +.el-icon-lock:before { + content: "\e6e5" +} + +.el-icon-watch:before { + content: "\e6fe" +} + +.el-icon-watch-1:before { + content: "\e6ff" +} + +.el-icon-timer:before { + content: "\e702" +} + +.el-icon-alarm-clock:before { + content: "\e703" +} + +.el-icon-map-location:before { + content: "\e704" +} + +.el-icon-delete-location:before { + content: "\e705" +} + +.el-icon-add-location:before { + content: "\e706" +} + +.el-icon-location-information:before { + content: "\e707" +} + +.el-icon-location-outline:before { + content: "\e708" +} + +.el-icon-location:before { + content: "\e79e" +} + +.el-icon-place:before { + content: "\e709" +} + +.el-icon-discover:before { + content: "\e70a" +} + +.el-icon-first-aid-kit:before { + content: "\e70b" +} + +.el-icon-trophy-1:before { + content: "\e70c" +} + +.el-icon-trophy:before { + content: "\e70d" +} + +.el-icon-medal:before { + content: "\e70e" +} + +.el-icon-medal-1:before { + content: "\e70f" +} + +.el-icon-stopwatch:before { + content: "\e710" +} + +.el-icon-mic:before { + content: "\e711" +} + +.el-icon-copy-document:before { + content: "\e718" +} + +.el-icon-full-screen:before { + content: "\e719" +} + +.el-icon-switch-button:before { + content: "\e71b" +} + +.el-icon-aim:before { + content: "\e71c" +} + +.el-icon-crop:before { + content: "\e71d" +} + +.el-icon-odometer:before { + content: "\e71e" +} + +.el-icon-time:before { + content: "\e71f" +} + +.el-icon-bangzhu:before { + content: "\e724" +} + +.el-icon-close-notification:before { + content: "\e726" +} + +.el-icon-microphone:before { + content: "\e727" +} + +.el-icon-turn-off-microphone:before { + content: "\e728" +} + +.el-icon-position:before { + content: "\e729" +} + +.el-icon-postcard:before { + content: "\e72a" +} + +.el-icon-message:before { + content: "\e72b" +} + +.el-icon-chat-line-square:before { + content: "\e72d" +} + +.el-icon-chat-dot-square:before { + content: "\e72e" +} + +.el-icon-chat-dot-round:before { + content: "\e72f" +} + +.el-icon-chat-square:before { + content: "\e730" +} + +.el-icon-chat-line-round:before { + content: "\e731" +} + +.el-icon-chat-round:before { + content: "\e732" +} + +.el-icon-set-up:before { + content: "\e733" +} + +.el-icon-turn-off:before { + content: "\e734" +} + +.el-icon-open:before { + content: "\e735" +} + +.el-icon-connection:before { + content: "\e736" +} + +.el-icon-link:before { + content: "\e737" +} + +.el-icon-cpu:before { + content: "\e738" +} + +.el-icon-thumb:before { + content: "\e739" +} + +.el-icon-female:before { + content: "\e73a" +} + +.el-icon-male:before { + content: "\e73b" +} + +.el-icon-guide:before { + content: "\e73c" +} + +.el-icon-news:before { + content: "\e73e" +} + +.el-icon-price-tag:before { + content: "\e744" +} + +.el-icon-discount:before { + content: "\e745" +} + +.el-icon-wallet:before { + content: "\e747" +} + +.el-icon-coin:before { + content: "\e748" +} + +.el-icon-money:before { + content: "\e749" +} + +.el-icon-bank-card:before { + content: "\e74a" +} + +.el-icon-box:before { + content: "\e74b" +} + +.el-icon-present:before { + content: "\e74c" +} + +.el-icon-sell:before { + content: "\e6d5" +} + +.el-icon-sold-out:before { + content: "\e6d6" +} + +.el-icon-shopping-bag-2:before { + content: "\e74d" +} + +.el-icon-shopping-bag-1:before { + content: "\e74e" +} + +.el-icon-shopping-cart-2:before { + content: "\e74f" +} + +.el-icon-shopping-cart-1:before { + content: "\e750" +} + +.el-icon-shopping-cart-full:before { + content: "\e751" +} + +.el-icon-smoking:before { + content: "\e752" +} + +.el-icon-no-smoking:before { + content: "\e753" +} + +.el-icon-house:before { + content: "\e754" +} + +.el-icon-table-lamp:before { + content: "\e755" +} + +.el-icon-school:before { + content: "\e756" +} + +.el-icon-office-building:before { + content: "\e757" +} + +.el-icon-toilet-paper:before { + content: "\e758" +} + +.el-icon-notebook-2:before { + content: "\e759" +} + +.el-icon-notebook-1:before { + content: "\e75a" +} + +.el-icon-files:before { + content: "\e75b" +} + +.el-icon-collection:before { + content: "\e75c" +} + +.el-icon-receiving:before { + content: "\e75d" +} + +.el-icon-suitcase-1:before { + content: "\e760" +} + +.el-icon-suitcase:before { + content: "\e761" +} + +.el-icon-film:before { + content: "\e763" +} + +.el-icon-collection-tag:before { + content: "\e765" +} + +.el-icon-data-analysis:before { + content: "\e766" +} + +.el-icon-pie-chart:before { + content: "\e767" +} + +.el-icon-data-board:before { + content: "\e768" +} + +.el-icon-data-line:before { + content: "\e76d" +} + +.el-icon-reading:before { + content: "\e769" +} + +.el-icon-magic-stick:before { + content: "\e76a" +} + +.el-icon-coordinate:before { + content: "\e76b" +} + +.el-icon-mouse:before { + content: "\e76c" +} + +.el-icon-brush:before { + content: "\e76e" +} + +.el-icon-headset:before { + content: "\e76f" +} + +.el-icon-umbrella:before { + content: "\e770" +} + +.el-icon-scissors:before { + content: "\e771" +} + +.el-icon-mobile:before { + content: "\e773" +} + +.el-icon-attract:before { + content: "\e774" +} + +.el-icon-monitor:before { + content: "\e775" +} + +.el-icon-search:before { + content: "\e778" +} + +.el-icon-takeaway-box:before { + content: "\e77a" +} + +.el-icon-paperclip:before { + content: "\e77d" +} + +.el-icon-printer:before { + content: "\e77e" +} + +.el-icon-document-add:before { + content: "\e782" +} + +.el-icon-document:before { + content: "\e785" +} + +.el-icon-document-checked:before { + content: "\e786" +} + +.el-icon-document-copy:before { + content: "\e787" +} + +.el-icon-document-delete:before { + content: "\e788" +} + +.el-icon-document-remove:before { + content: "\e789" +} + +.el-icon-tickets:before { + content: "\e78b" +} + +.el-icon-folder-checked:before { + content: "\e77f" +} + +.el-icon-folder-delete:before { + content: "\e780" +} + +.el-icon-folder-remove:before { + content: "\e781" +} + +.el-icon-folder-add:before { + content: "\e783" +} + +.el-icon-folder-opened:before { + content: "\e784" +} + +.el-icon-folder:before { + content: "\e78a" +} + +.el-icon-edit-outline:before { + content: "\e764" +} + +.el-icon-edit:before { + content: "\e78c" +} + +.el-icon-date:before { + content: "\e78e" +} + +.el-icon-c-scale-to-original:before { + content: "\e7c6" +} + +.el-icon-view:before { + content: "\e6ce" +} + +.el-icon-loading:before { + content: "\e6cf" +} + +.el-icon-rank:before { + content: "\e6d1" +} + +.el-icon-sort-down:before { + content: "\e7c4" +} + +.el-icon-sort-up:before { + content: "\e7c5" +} + +.el-icon-sort:before { + content: "\e6d2" +} + +.el-icon-finished:before { + content: "\e6cd" +} + +.el-icon-refresh-left:before { + content: "\e6c7" +} + +.el-icon-refresh-right:before { + content: "\e6c8" +} + +.el-icon-refresh:before { + content: "\e6d0" +} + +.el-icon-video-play:before { + content: "\e7c0" +} + +.el-icon-video-pause:before { + content: "\e7c1" +} + +.el-icon-d-arrow-right:before { + content: "\e6dc" +} + +.el-icon-d-arrow-left:before { + content: "\e6dd" +} + +.el-icon-arrow-up:before { + content: "\e6e1" +} + +.el-icon-arrow-down:before { + content: "\e6df" +} + +.el-icon-arrow-right:before { + content: "\e6e0" +} + +.el-icon-arrow-left:before { + content: "\e6de" +} + +.el-icon-top-right:before { + content: "\e6e7" +} + +.el-icon-top-left:before { + content: "\e6e8" +} + +.el-icon-top:before { + content: "\e6e6" +} + +.el-icon-bottom:before { + content: "\e6eb" +} + +.el-icon-right:before { + content: "\e6e9" +} + +.el-icon-back:before { + content: "\e6ea" +} + +.el-icon-bottom-right:before { + content: "\e6ec" +} + +.el-icon-bottom-left:before { + content: "\e6ed" +} + +.el-icon-caret-top:before { + content: "\e78f" +} + +.el-icon-caret-bottom:before { + content: "\e790" +} + +.el-icon-caret-right:before { + content: "\e791" +} + +.el-icon-caret-left:before { + content: "\e792" +} + +.el-icon-d-caret:before { + content: "\e79a" +} + +.el-icon-share:before { + content: "\e793" +} + +.el-icon-menu:before { + content: "\e798" +} + +.el-icon-s-grid:before { + content: "\e7a6" +} + +.el-icon-s-check:before { + content: "\e7a7" +} + +.el-icon-s-data:before { + content: "\e7a8" +} + +.el-icon-s-opportunity:before { + content: "\e7aa" +} + +.el-icon-s-custom:before { + content: "\e7ab" +} + +.el-icon-s-claim:before { + content: "\e7ad" +} + +.el-icon-s-finance:before { + content: "\e7ae" +} + +.el-icon-s-comment:before { + content: "\e7af" +} + +.el-icon-s-flag:before { + content: "\e7b0" +} + +.el-icon-s-marketing:before { + content: "\e7b1" +} + +.el-icon-s-shop:before { + content: "\e7b4" +} + +.el-icon-s-open:before { + content: "\e7b5" +} + +.el-icon-s-management:before { + content: "\e7b6" +} + +.el-icon-s-ticket:before { + content: "\e7b7" +} + +.el-icon-s-release:before { + content: "\e7b8" +} + +.el-icon-s-home:before { + content: "\e7b9" +} + +.el-icon-s-promotion:before { + content: "\e7ba" +} + +.el-icon-s-operation:before { + content: "\e7bb" +} + +.el-icon-s-unfold:before { + content: "\e7bc" +} + +.el-icon-s-fold:before { + content: "\e7a9" +} + +.el-icon-s-platform:before { + content: "\e7bd" +} + +.el-icon-s-order:before { + content: "\e7be" +} + +.el-icon-s-cooperation:before { + content: "\e7bf" +} + +.el-icon-bell:before { + content: "\e725" +} + +.el-icon-message-solid:before { + content: "\e799" +} + +.el-icon-video-camera:before { + content: "\e772" +} + +.el-icon-video-camera-solid:before { + content: "\e796" +} + +.el-icon-camera:before { + content: "\e779" +} + +.el-icon-camera-solid:before { + content: "\e79b" +} + +.el-icon-download:before { + content: "\e77c" +} + +.el-icon-upload2:before { + content: "\e77b" +} + +.el-icon-upload:before { + content: "\e7c3" +} + +.el-icon-picture-outline-round:before { + content: "\e75f" +} + +.el-icon-picture-outline:before { + content: "\e75e" +} + +.el-icon-picture:before { + content: "\e79f" +} + +.el-icon-close:before { + content: "\e6db" +} + +.el-icon-check:before { + content: "\e6da" +} + +.el-icon-plus:before { + content: "\e6d9" +} + +.el-icon-minus:before { + content: "\e6d8" +} + +.el-icon-help:before { + content: "\e73d" +} + +.el-icon-s-help:before { + content: "\e7b3" +} + +.el-icon-circle-close:before { + content: "\e78d" +} + +.el-icon-circle-check:before { + content: "\e720" +} + +.el-icon-circle-plus-outline:before { + content: "\e723" +} + +.el-icon-remove-outline:before { + content: "\e722" +} + +.el-icon-zoom-out:before { + content: "\e776" +} + +.el-icon-zoom-in:before { + content: "\e777" +} + +.el-icon-error:before { + content: "\e79d" +} + +.el-icon-success:before { + content: "\e79c" +} + +.el-icon-circle-plus:before { + content: "\e7a0" +} + +.el-icon-remove:before { + content: "\e7a2" +} + +.el-icon-info:before { + content: "\e7a1" +} + +.el-icon-question:before { + content: "\e7a4" +} + +.el-icon-warning-outline:before { + content: "\e6c9" +} + +.el-icon-warning:before { + content: "\e7a3" +} + +.el-icon-goods:before { + content: "\e7c2" +} + +.el-icon-s-goods:before { + content: "\e7b2" +} + +.el-icon-star-off:before { + content: "\e717" +} + +.el-icon-star-on:before { + content: "\e797" +} + +.el-icon-more-outline:before { + content: "\e6cc" +} + +.el-icon-more:before { + content: "\e794" +} + +.el-icon-phone-outline:before { + content: "\e6cb" +} + +.el-icon-phone:before { + content: "\e795" +} + +.el-icon-user:before { + content: "\e6e3" +} + +.el-icon-user-solid:before { + content: "\e7a5" +} + +.el-icon-setting:before { + content: "\e6ca" +} + +.el-icon-s-tools:before { + content: "\e7ac" +} + +.el-icon-delete:before { + content: "\e6d7" +} + +.el-icon-delete-solid:before { + content: "\e7c9" +} + +.el-icon-eleme:before { + content: "\e7c7" +} + +.el-icon-platform-eleme:before { + content: "\e7ca" +} + +.el-icon-loading { + -webkit-animation: rotating 2s linear infinite; + animation: rotating 2s linear infinite +} + +.el-icon--right { + margin-left: 5px +} + +.el-icon--left { + margin-right: 5px +} + +@-webkit-keyframes rotating { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg) + } +} + +@keyframes rotating { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg) + } +} + +.el-pagination { + white-space: nowrap; + padding: 2px 5px; + color: #303133; + font-weight: 700 +} + +.el-pagination::after, .el-pagination::before { + display: table; + content: "" +} + +.el-pagination::after { + clear: both +} + +.el-pagination button, .el-pagination span:not([class*=suffix]) { + display: inline-block; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + vertical-align: top; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-pagination .el-input__inner { + text-align: center; + -moz-appearance: textfield; + line-height: normal +} + +.el-pagination .el-input__suffix { + right: 0; + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.el-pagination .el-select .el-input { + width: 100px; + margin: 0 5px +} + +.el-pagination .el-select .el-input .el-input__inner { + padding-right: 25px; + border-radius: 3px +} + +.el-pagination button { + border: none; + padding: 0 6px; + background: 0 0 +} + +.el-pagination button:focus { + outline: 0 +} + +.el-pagination button:hover { + color: #409EFF +} + +.el-pagination button:disabled { + color: #C0C4CC; + background-color: #FFF; + cursor: not-allowed +} + +.el-pagination .btn-next, .el-pagination .btn-prev { + background: center center no-repeat #FFF; + background-size: 16px; + cursor: pointer; + margin: 0; + color: #303133 +} + +.el-pagination .btn-next .el-icon, .el-pagination .btn-prev .el-icon { + display: block; + font-size: 12px; + font-weight: 700 +} + +.el-pagination .btn-prev { + padding-right: 12px +} + +.el-pagination .btn-next { + padding-left: 12px +} + +.el-pagination .el-pager li.disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-pager li, .el-pager li.btn-quicknext:hover, .el-pager li.btn-quickprev:hover { + cursor: pointer +} + +.el-pagination--small .btn-next, .el-pagination--small .btn-prev, .el-pagination--small .el-pager li, .el-pagination--small .el-pager li.btn-quicknext, .el-pagination--small .el-pager li.btn-quickprev, .el-pagination--small .el-pager li:last-child { + border-color: transparent; + font-size: 12px; + line-height: 22px; + height: 22px; + min-width: 22px +} + +.el-pagination--small .arrow.disabled { + visibility: hidden +} + +.el-pagination--small .more::before, .el-pagination--small li.more::before { + line-height: 24px +} + +.el-pagination--small button, .el-pagination--small span:not([class*=suffix]) { + height: 22px; + line-height: 22px +} + +.el-pagination--small .el-pagination__editor, .el-pagination--small .el-pagination__editor.el-input .el-input__inner { + height: 22px +} + +.el-pagination__sizes { + margin: 0 10px 0 0; + font-weight: 400; + color: #606266 +} + +.el-pagination__sizes .el-input .el-input__inner { + font-size: 13px; + padding-left: 8px +} + +.el-pagination__sizes .el-input .el-input__inner:hover { + border-color: #409EFF +} + +.el-pagination__total { + margin-right: 10px; + font-weight: 400; + color: #606266 +} + +.el-pagination__jump { + margin-left: 24px; + font-weight: 400; + color: #606266 +} + +.el-pagination__jump .el-input__inner { + padding: 0 3px +} + +.el-pagination__rightwrapper { + float: right +} + +.el-pagination__editor { + line-height: 18px; + padding: 0 2px; + height: 28px; + text-align: center; + margin: 0 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 3px +} + +.el-pager, .el-pagination.is-background .btn-next, .el-pagination.is-background .btn-prev { + padding: 0 +} + +.el-dialog, .el-pager li { + -webkit-box-sizing: border-box +} + +.el-pagination__editor.el-input { + width: 50px +} + +.el-pagination__editor.el-input .el-input__inner { + height: 28px +} + +.el-pagination__editor .el-input__inner::-webkit-inner-spin-button, .el-pagination__editor .el-input__inner::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0 +} + +.el-pagination.is-background .btn-next, .el-pagination.is-background .btn-prev, .el-pagination.is-background .el-pager li { + margin: 0 5px; + background-color: #f4f4f5; + color: #606266; + min-width: 30px; + border-radius: 2px +} + +.el-pagination.is-background .btn-next.disabled, .el-pagination.is-background .btn-next:disabled, .el-pagination.is-background .btn-prev.disabled, .el-pagination.is-background .btn-prev:disabled, .el-pagination.is-background .el-pager li.disabled { + color: #C0C4CC +} + +.el-pagination.is-background .el-pager li:not(.disabled):hover { + color: #409EFF +} + +.el-pagination.is-background .el-pager li:not(.disabled).active { + background-color: #409EFF; + color: #FFF +} + +.el-pagination.is-background.el-pagination--small .btn-next, .el-pagination.is-background.el-pagination--small .btn-prev, .el-pagination.is-background.el-pagination--small .el-pager li { + margin: 0 3px; + min-width: 22px +} + +.el-pager, .el-pager li { + vertical-align: top; + margin: 0; + display: inline-block +} + +.el-pager { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + list-style: none; + font-size: 0 +} + +.el-pager .more::before { + line-height: 30px +} + +.el-pager li { + padding: 0 4px; + background: #FFF; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + box-sizing: border-box; + text-align: center +} + +.el-pager li.btn-quicknext, .el-pager li.btn-quickprev { + line-height: 28px; + color: #303133 +} + +.el-pager li.btn-quicknext.disabled, .el-pager li.btn-quickprev.disabled { + color: #C0C4CC +} + +.el-pager li.active + li { + border-left: 0 +} + +.el-pager li:hover { + color: #409EFF +} + +.el-pager li.active { + color: #409EFF; + cursor: default +} + +@-webkit-keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@-webkit-keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +.el-dialog { + position: relative; + margin: 0 auto 50px; + background: #FFF; + border-radius: 2px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + box-sizing: border-box; + width: 50% +} + +.el-dialog.is-fullscreen { + width: 100%; + margin-top: 0; + margin-bottom: 0; + height: 100%; + overflow: auto +} + +.el-dialog__wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; + margin: 0 +} + +.el-dialog__header { + padding: 20px 20px 10px +} + +.el-dialog__headerbtn { + position: absolute; + top: 20px; + right: 20px; + padding: 0; + background: 0 0; + border: none; + outline: 0; + cursor: pointer; + font-size: 16px +} + +.el-dialog__headerbtn .el-dialog__close { + color: #909399 +} + +.el-dialog__headerbtn:focus .el-dialog__close, .el-dialog__headerbtn:hover .el-dialog__close { + color: #409EFF +} + +.el-dialog__title { + line-height: 24px; + font-size: 18px; + color: #303133 +} + +.el-dialog__body { + padding: 30px 20px; + color: #606266; + font-size: 14px; + word-break: break-all +} + +.el-dialog__footer { + padding: 10px 20px 20px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-dialog--center { + text-align: center +} + +.el-dialog--center .el-dialog__body { + text-align: initial; + padding: 25px 25px 30px +} + +.el-dialog--center .el-dialog__footer { + text-align: inherit +} + +.dialog-fade-enter-active { + -webkit-animation: dialog-fade-in .3s; + animation: dialog-fade-in .3s +} + +.dialog-fade-leave-active { + -webkit-animation: dialog-fade-out .3s; + animation: dialog-fade-out .3s +} + +@-webkit-keyframes dialog-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes dialog-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@-webkit-keyframes dialog-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +@keyframes dialog-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +.el-autocomplete { + position: relative; + display: inline-block +} + +.el-autocomplete-suggestion { + margin: 5px 0; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 4px; + border: 1px solid #E4E7ED; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background-color: #FFF +} + +.el-autocomplete-suggestion__wrap { + max-height: 280px; + padding: 10px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-autocomplete-suggestion__list { + margin: 0; + padding: 0 +} + +.el-autocomplete-suggestion li { + padding: 0 20px; + margin: 0; + line-height: 34px; + cursor: pointer; + color: #606266; + font-size: 14px; + list-style: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.el-autocomplete-suggestion li.highlighted, .el-autocomplete-suggestion li:hover { + background-color: #F5F7FA +} + +.el-autocomplete-suggestion li.divider { + margin-top: 6px; + border-top: 1px solid #000 +} + +.el-autocomplete-suggestion li.divider:last-child { + margin-bottom: -6px +} + +.el-autocomplete-suggestion.is-loading li { + text-align: center; + height: 100px; + line-height: 100px; + font-size: 20px; + color: #999 +} + +.el-autocomplete-suggestion.is-loading li::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.el-autocomplete-suggestion.is-loading li:hover { + background-color: #FFF +} + +.el-autocomplete-suggestion.is-loading .el-icon-loading { + vertical-align: middle +} + +.el-dropdown { + display: inline-block; + position: relative; + color: #606266; + font-size: 14px +} + +.el-dropdown .el-button-group { + display: block +} + +.el-dropdown .el-button-group .el-button { + float: none +} + +.el-dropdown .el-dropdown__caret-button { + padding-left: 5px; + padding-right: 5px; + position: relative; + border-left: none +} + +.el-dropdown .el-dropdown__caret-button::before { + content: ''; + position: absolute; + display: block; + width: 1px; + top: 5px; + bottom: 5px; + left: 0; + background: rgba(255, 255, 255, .5) +} + +.el-dropdown .el-dropdown__caret-button.el-button--default::before { + background: rgba(220, 223, 230, .5) +} + +.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled)::before { + top: 0; + bottom: 0 +} + +.el-dropdown .el-dropdown__caret-button .el-dropdown__icon { + padding-left: 0 +} + +.el-dropdown__icon { + font-size: 12px; + margin: 0 3px +} + +.el-dropdown .el-dropdown-selfdefine:focus:active, .el-dropdown .el-dropdown-selfdefine:focus:not(.focusing) { + outline-width: 0 +} + +.el-dropdown [disabled] { + cursor: not-allowed; + color: #bbb +} + +.el-dropdown-menu { + position: absolute; + top: 0; + left: 0; + z-index: 10; + padding: 10px 0; + margin: 5px 0; + background-color: #FFF; + border: 1px solid #EBEEF5; + border-radius: 4px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-dropdown-menu__item, .el-menu-item { + font-size: 14px; + padding: 0 20px; + cursor: pointer +} + +.el-dropdown-menu__item { + list-style: none; + line-height: 36px; + margin: 0; + color: #606266; + outline: 0 +} + +.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover { + background-color: #ecf5ff; + color: #66b1ff +} + +.el-dropdown-menu__item i { + margin-right: 5px +} + +.el-dropdown-menu__item--divided { + position: relative; + margin-top: 6px; + border-top: 1px solid #EBEEF5 +} + +.el-dropdown-menu__item--divided:before { + content: ''; + height: 6px; + display: block; + margin: 0 -20px; + background-color: #FFF +} + +.el-dropdown-menu__item.is-disabled { + cursor: default; + color: #bbb; + pointer-events: none +} + +.el-dropdown-menu--medium { + padding: 6px 0 +} + +.el-dropdown-menu--medium .el-dropdown-menu__item { + line-height: 30px; + padding: 0 17px; + font-size: 14px +} + +.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 6px +} + +.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 6px; + margin: 0 -17px +} + +.el-dropdown-menu--small { + padding: 6px 0 +} + +.el-dropdown-menu--small .el-dropdown-menu__item { + line-height: 27px; + padding: 0 15px; + font-size: 13px +} + +.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 4px +} + +.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 4px; + margin: 0 -15px +} + +.el-dropdown-menu--mini { + padding: 3px 0 +} + +.el-dropdown-menu--mini .el-dropdown-menu__item { + line-height: 24px; + padding: 0 10px; + font-size: 12px +} + +.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 3px +} + +.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 3px; + margin: 0 -10px +} + +.el-menu { + border-right: solid 1px #e6e6e6; + list-style: none; + position: relative; + margin: 0; + padding-left: 0; + background-color: #FFF +} + +.el-menu--horizontal > .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal > .el-menu-item:not(.is-disabled):hover, .el-menu--horizontal > .el-submenu .el-submenu__title:hover { + background-color: #fff +} + +.el-menu::after, .el-menu::before { + display: table; + content: "" +} + +.el-breadcrumb__item:last-child .el-breadcrumb__separator, .el-menu--collapse > .el-menu-item .el-submenu__icon-arrow, .el-menu--collapse > .el-submenu > .el-submenu__title .el-submenu__icon-arrow { + display: none +} + +.el-menu::after { + clear: both +} + +.el-menu.el-menu--horizontal { + border-bottom: solid 1px #e6e6e6 +} + +.el-menu--horizontal { + border-right: none +} + +.el-menu--horizontal > .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + border-bottom: 2px solid transparent; + color: #909399 +} + +.el-menu--horizontal > .el-menu-item a, .el-menu--horizontal > .el-menu-item a:hover { + color: inherit +} + +.el-menu--horizontal > .el-submenu { + float: left +} + +.el-menu--horizontal > .el-submenu:focus, .el-menu--horizontal > .el-submenu:hover { + outline: 0 +} + +.el-menu--horizontal > .el-submenu:focus .el-submenu__title, .el-menu--horizontal > .el-submenu:hover .el-submenu__title { + color: #303133 +} + +.el-menu--horizontal > .el-submenu.is-active .el-submenu__title { + border-bottom: 2px solid #409EFF; + color: #303133 +} + +.el-menu--horizontal > .el-submenu .el-submenu__title { + height: 60px; + line-height: 60px; + border-bottom: 2px solid transparent; + color: #909399 +} + +.el-menu--horizontal > .el-submenu .el-submenu__icon-arrow { + position: static; + vertical-align: middle; + margin-left: 8px; + margin-top: -3px +} + +.el-menu--collapse .el-submenu, .el-menu-item { + position: relative +} + +.el-menu--horizontal .el-menu .el-menu-item, .el-menu--horizontal .el-menu .el-submenu__title { + background-color: #FFF; + float: none; + height: 36px; + line-height: 36px; + padding: 0 10px; + color: #909399 +} + +.el-menu--horizontal .el-menu .el-menu-item.is-active, .el-menu--horizontal .el-menu .el-submenu.is-active > .el-submenu__title { + color: #303133 +} + +.el-menu--horizontal .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal .el-menu-item:not(.is-disabled):hover { + outline: 0; + color: #303133 +} + +.el-menu--horizontal > .el-menu-item.is-active { + border-bottom: 2px solid #409EFF; + color: #303133 +} + +.el-menu--collapse { + width: 64px +} + +.el-menu--collapse > .el-menu-item [class^=el-icon-], .el-menu--collapse > .el-submenu > .el-submenu__title [class^=el-icon-] { + margin: 0; + vertical-align: middle; + width: 24px; + text-align: center +} + +.el-menu--collapse > .el-menu-item span, .el-menu--collapse > .el-submenu > .el-submenu__title span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block +} + +.el-menu-item, .el-submenu__title { + height: 56px; + line-height: 56px; + list-style: none +} + +.el-menu--collapse > .el-menu-item.is-active i { + color: inherit +} + +.el-menu--collapse .el-menu .el-submenu { + min-width: 200px +} + +.el-menu--collapse .el-submenu .el-menu { + position: absolute; + margin-left: 5px; + top: 0; + left: 100%; + z-index: 10; + border: 1px solid #E4E7ED; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-menu--collapse .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: none; + transform: none +} + +.el-menu--popup { + z-index: 100; + min-width: 200px; + border: none; + padding: 5px 0; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-menu--popup-bottom-start { + margin-top: 5px +} + +.el-menu--popup-right-start { + margin-left: 5px; + margin-right: 5px +} + +.el-menu-item { + color: #303133; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap +} + +.el-radio-button__inner, .el-submenu__title { + -webkit-box-sizing: border-box; + position: relative; + white-space: nowrap +} + +.el-menu-item * { + vertical-align: middle +} + +.el-menu-item i { + color: #909399 +} + +.el-menu-item:focus, .el-menu-item:hover { + outline: 0; + background-color: #ecf5ff +} + +.el-menu-item.is-disabled { + opacity: .25; + cursor: not-allowed; + background: 0 0 !important +} + +.el-menu-item [class^=el-icon-] { + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px; + vertical-align: middle +} + +.el-menu-item.is-active { + color: #409EFF +} + +.el-menu-item.is-active i { + color: inherit +} + +.el-submenu { + list-style: none; + margin: 0; + padding-left: 0 +} + +.el-submenu__title { + font-size: 14px; + color: #303133; + padding: 0 20px; + cursor: pointer; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + box-sizing: border-box +} + +.el-submenu__title * { + vertical-align: middle +} + +.el-submenu__title i { + color: #909399 +} + +.el-submenu__title:focus, .el-submenu__title:hover { + outline: 0; + background-color: #ecf5ff +} + +.el-submenu__title.is-disabled { + opacity: .25; + cursor: not-allowed; + background: 0 0 !important +} + +.el-submenu__title:hover { + background-color: #ecf5ff +} + +.el-submenu .el-menu { + border: none +} + +.el-submenu .el-menu-item { + height: 50px; + line-height: 50px; + padding: 0 45px; + min-width: 200px +} + +.el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: 20px; + margin-top: -7px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 12px +} + +.el-submenu.is-active .el-submenu__title { + border-bottom-color: #409EFF +} + +.el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.el-submenu.is-disabled .el-menu-item, .el-submenu.is-disabled .el-submenu__title { + opacity: .25; + cursor: not-allowed; + background: 0 0 !important +} + +.el-submenu [class^=el-icon-] { + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px +} + +.el-menu-item-group > ul { + padding: 0 +} + +.el-menu-item-group__title { + padding: 7px 0 7px 20px; + line-height: normal; + font-size: 12px; + color: #909399 +} + +.el-radio-button__inner, .el-radio-group { + display: inline-block; + line-height: 1; + vertical-align: middle +} + +.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow { + -webkit-transition: .2s; + transition: .2s; + opacity: 0 +} + +.el-radio-group { + font-size: 0 +} + +.el-radio-button { + position: relative; + display: inline-block; + outline: 0 +} + +.el-radio-button__inner { + background: #FFF; + border: 1px solid #DCDFE6; + font-weight: 500; + border-left: 0; + color: #606266; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + cursor: pointer; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.el-radio-button__inner.is-round { + padding: 12px 20px +} + +.el-radio-button__inner:hover { + color: #409EFF +} + +.el-radio-button__inner [class*=el-icon-] { + line-height: .9 +} + +.el-radio-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.el-radio-button:first-child .el-radio-button__inner { + border-left: 1px solid #DCDFE6; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.el-radio-button__orig-radio { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1 +} + +.el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #FFF; + background-color: #409EFF; + border-color: #409EFF; + -webkit-box-shadow: -1px 0 0 0 #409EFF; + box-shadow: -1px 0 0 0 #409EFF +} + +.el-radio-button__orig-radio:disabled + .el-radio-button__inner { + color: #C0C4CC; + cursor: not-allowed; + background-image: none; + background-color: #FFF; + border-color: #EBEEF5; + -webkit-box-shadow: none; + box-shadow: none +} + +.el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner { + background-color: #F2F6FC +} + +.el-radio-button:last-child .el-radio-button__inner { + border-radius: 0 4px 4px 0 +} + +.el-radio-button:first-child:last-child .el-radio-button__inner { + border-radius: 4px +} + +.el-radio-button--medium .el-radio-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.el-radio-button--medium .el-radio-button__inner.is-round { + padding: 10px 20px +} + +.el-radio-button--small .el-radio-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.el-radio-button--small .el-radio-button__inner.is-round { + padding: 9px 15px +} + +.el-radio-button--mini .el-radio-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.el-radio-button--mini .el-radio-button__inner.is-round { + padding: 7px 15px +} + +.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled) { + -webkit-box-shadow: 0 0 2px 2px #409EFF; + box-shadow: 0 0 2px 2px #409EFF +} + +.el-picker-panel, .el-popover, .el-select-dropdown, .el-table-filter, .el-time-panel { + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-switch { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + font-size: 14px; + line-height: 20px; + height: 20px; + vertical-align: middle +} + +.el-switch__core, .el-switch__label { + display: inline-block; + cursor: pointer +} + +.el-switch.is-disabled .el-switch__core, .el-switch.is-disabled .el-switch__label { + cursor: not-allowed +} + +.el-switch__label { + -webkit-transition: .2s; + transition: .2s; + height: 20px; + font-size: 14px; + font-weight: 500; + vertical-align: middle; + color: #303133 +} + +.el-switch__label.is-active { + color: #409EFF +} + +.el-switch__label--left { + margin-right: 10px +} + +.el-switch__label--right { + margin-left: 10px +} + +.el-switch__label * { + line-height: 1; + font-size: 14px; + display: inline-block +} + +.el-switch__input { + position: absolute; + width: 0; + height: 0; + opacity: 0; + margin: 0 +} + +.el-switch__core { + margin: 0; + position: relative; + width: 40px; + height: 20px; + border: 1px solid #DCDFE6; + outline: 0; + border-radius: 10px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #DCDFE6; + -webkit-transition: border-color .3s, background-color .3s; + transition: border-color .3s, background-color .3s; + vertical-align: middle +} + +.el-input__prefix, .el-input__suffix { + -webkit-transition: all .3s; + color: #C0C4CC +} + +.el-switch__core:after { + content: ""; + position: absolute; + top: 1px; + left: 1px; + border-radius: 100%; + -webkit-transition: all .3s; + transition: all .3s; + width: 16px; + height: 16px; + background-color: #FFF +} + +.el-switch.is-checked .el-switch__core { + border-color: #409EFF; + background-color: #409EFF +} + +.el-switch.is-checked .el-switch__core::after { + left: 100%; + margin-left: -17px +} + +.el-switch.is-disabled { + opacity: .6 +} + +.el-switch--wide .el-switch__label.el-switch__label--left span { + left: 10px +} + +.el-switch--wide .el-switch__label.el-switch__label--right span { + right: 10px +} + +.el-switch .label-fade-enter, .el-switch .label-fade-leave-active { + opacity: 0 +} + +.el-select-dropdown { + position: absolute; + z-index: 1001; + border: 1px solid #E4E7ED; + border-radius: 4px; + background-color: #FFF; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 5px 0 +} + +.el-select-dropdown.is-multiple .el-select-dropdown__item { + padding-right: 40px +} + +.el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #409EFF; + background-color: #FFF +} + +.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: #F5F7FA +} + +.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 20px; + font-family: element-icons; + content: "\e6da"; + font-size: 12px; + font-weight: 700; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0 +} + +.el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px +} + +.el-select-dropdown__wrap { + max-height: 274px +} + +.el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-select-dropdown__item { + font-size: 14px; + padding: 0 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #606266; + height: 34px; + line-height: 34px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.el-select-dropdown__item.is-disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-select-dropdown__item.is-disabled:hover { + background-color: #FFF +} + +.el-select-dropdown__item.hover, .el-select-dropdown__item:hover { + background-color: #F5F7FA +} + +.el-select-dropdown__item.selected { + color: #409EFF; + font-weight: 700 +} + +.el-select-group { + margin: 0; + padding: 0 +} + +.el-select-group__wrap { + position: relative; + list-style: none; + margin: 0; + padding: 0 +} + +.el-select-group__wrap:not(:last-of-type) { + padding-bottom: 24px +} + +.el-select-group__wrap:not(:last-of-type)::after { + content: ''; + position: absolute; + display: block; + left: 20px; + right: 20px; + bottom: 12px; + height: 1px; + background: #E4E7ED +} + +.el-select-group__title { + padding-left: 20px; + font-size: 12px; + color: #909399; + line-height: 30px +} + +.el-select-group .el-select-dropdown__item { + padding-left: 20px +} + +.el-select { + display: inline-block; + position: relative +} + +.el-select .el-select__tags > span { + display: contents +} + +.el-select:hover .el-input__inner { + border-color: #C0C4CC +} + +.el-select .el-input__inner { + cursor: pointer; + padding-right: 35px +} + +.el-select .el-input__inner:focus { + border-color: #409EFF +} + +.el-select .el-input .el-select__caret { + color: #C0C4CC; + font-size: 14px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + cursor: pointer +} + +.el-select .el-input .el-select__caret.is-reverse { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) +} + +.el-select .el-input .el-select__caret.is-show-close { + font-size: 14px; + text-align: center; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + border-radius: 100%; + color: #C0C4CC; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.el-select .el-input .el-select__caret.is-show-close:hover { + color: #909399 +} + +.el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed +} + +.el-select .el-input.is-disabled .el-input__inner:hover { + border-color: #E4E7ED +} + +.el-range-editor.is-active, .el-range-editor.is-active:hover, .el-select .el-input.is-focus .el-input__inner { + border-color: #409EFF +} + +.el-select > .el-input { + display: block +} + +.el-select__input { + border: none; + outline: 0; + padding: 0; + margin-left: 15px; + color: #666; + font-size: 14px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent +} + +.el-select__input.is-mini { + height: 14px +} + +.el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: #C0C4CC; + line-height: 18px; + font-size: 14px +} + +.el-select__close:hover { + color: #909399 +} + +.el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap +} + +.el-select__tags-text { + overflow: hidden; + text-overflow: ellipsis +} + +.el-select .el-tag { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-color: transparent; + margin: 2px 0 2px 6px; + background-color: #f0f2f5; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + max-width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-select .el-tag__close.el-icon-close { + background-color: #C0C4CC; + top: 0; + color: #FFF; + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.el-select .el-tag__close.el-icon-close:hover { + background-color: #909399 +} + +.el-table, .el-table__expanded-cell { + background-color: #FFF +} + +.el-select .el-tag__close.el-icon-close::before { + display: block; + -webkit-transform: translate(0, .5px); + transform: translate(0, .5px) +} + +.el-table { + position: relative; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; + max-width: 100%; + font-size: 14px; + color: #606266 +} + +.el-table__empty-block { + min-height: 60px; + text-align: center; + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-table__empty-text { + line-height: 60px; + width: 50%; + color: #909399 +} + +.el-table__expand-column .cell { + padding: 0; + text-align: center +} + +.el-table__expand-icon { + position: relative; + cursor: pointer; + color: #666; + font-size: 12px; + -webkit-transition: -webkit-transform .2s ease-in-out; + transition: -webkit-transform .2s ease-in-out; + transition: transform .2s ease-in-out; + transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out; + height: 20px +} + +.el-table__expand-icon--expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.el-table__expand-icon > .el-icon { + position: absolute; + left: 50%; + top: 50%; + margin-left: -5px; + margin-top: -5px +} + +.el-table__expanded-cell[class*=cell] { + padding: 20px 50px +} + +.el-table__expanded-cell:hover { + background-color: transparent !important +} + +.el-table__placeholder { + display: inline-block; + width: 20px +} + +.el-table__append-wrapper { + overflow: hidden +} + +.el-table--fit { + border-right: 0; + border-bottom: 0 +} + +.el-table--fit .el-table__cell.gutter { + border-right-width: 1px +} + +.el-table--scrollable-x .el-table__body-wrapper { + overflow-x: auto +} + +.el-table--scrollable-y .el-table__body-wrapper { + overflow-y: auto +} + +.el-table thead { + color: #909399; + font-weight: 500 +} + +.el-table thead.is-group th.el-table__cell { + background: #F5F7FA +} + +.el-table .el-table__cell { + padding: 12px 0; + min-width: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-overflow: ellipsis; + vertical-align: middle; + position: relative; + text-align: left +} + +.el-table .el-table__cell.is-center { + text-align: center +} + +.el-table .el-table__cell.is-right { + text-align: right +} + +.el-table .el-table__cell.gutter { + width: 15px; + border-right-width: 0; + border-bottom-width: 0; + padding: 0 +} + +.el-table .el-table__cell.is-hidden > * { + visibility: hidden +} + +.el-table--medium .el-table__cell { + padding: 10px 0 +} + +.el-table--small { + font-size: 12px +} + +.el-table--small .el-table__cell { + padding: 8px 0 +} + +.el-table--mini { + font-size: 12px +} + +.el-table--mini .el-table__cell { + padding: 6px 0 +} + +.el-table tr { + background-color: #FFF +} + +.el-table tr input[type=checkbox] { + margin: 0 +} + +.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf { + border-bottom: 1px solid #EBEEF5 +} + +.el-table th.el-table__cell.is-sortable { + cursor: pointer +} + +.el-table th.el-table__cell { + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #FFF +} + +.el-table th.el-table__cell > .cell { + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + position: relative; + vertical-align: middle; + padding-left: 10px; + padding-right: 10px; + width: 100% +} + +.el-table th.el-table__cell > .cell.highlight { + color: #409EFF +} + +.el-table th.el-table__cell.required > div::before { + display: inline-block; + content: ""; + width: 8px; + height: 8px; + border-radius: 50%; + background: #ff4d51; + margin-right: 5px; + vertical-align: middle +} + +.el-table td.el-table__cell div { + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-date-table td, .el-table .cell, .el-table-filter { + -webkit-box-sizing: border-box +} + +.el-table td.el-table__cell.gutter { + width: 0 +} + +.el-table .cell { + box-sizing: border-box; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; + word-break: break-all; + line-height: 23px; + padding-left: 10px; + padding-right: 10px +} + +.el-table .cell.el-tooltip { + white-space: nowrap; + min-width: 50px +} + +.el-table--border, .el-table--group { + border: 1px solid #EBEEF5 +} + +.el-table--border::after, .el-table--group::after, .el-table::before { + content: ''; + position: absolute; + background-color: #EBEEF5; + z-index: 1 +} + +.el-table--border::after, .el-table--group::after { + top: 0; + right: 0; + width: 1px; + height: 100% +} + +.el-table::before { + left: 0; + bottom: 0; + width: 100%; + height: 1px +} + +.el-table--border { + border-right: none; + border-bottom: none +} + +.el-table--border.el-loading-parent--relative { + border-color: transparent +} + +.el-table--border .el-table__cell, .el-table__body-wrapper .el-table--border.is-scrolling-left ~ .el-table__fixed { + border-right: 1px solid #EBEEF5 +} + +.el-table--border .el-table__cell:first-child .cell { + padding-left: 10px +} + +.el-table--border th.el-table__cell.gutter:last-of-type { + border-bottom: 1px solid #EBEEF5; + border-bottom-width: 1px +} + +.el-table--border th.el-table__cell, .el-table__fixed-right-patch { + border-bottom: 1px solid #EBEEF5 +} + +.el-table--hidden { + visibility: hidden +} + +.el-table__fixed, .el-table__fixed-right { + position: absolute; + top: 0; + left: 0; + overflow-x: hidden; + overflow-y: hidden; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .12); + box-shadow: 0 0 10px rgba(0, 0, 0, .12) +} + +.el-table__fixed-right::before, .el-table__fixed::before { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: #EBEEF5; + z-index: 4 +} + +.el-table__fixed-right-patch { + position: absolute; + top: -1px; + right: 0; + background-color: #FFF +} + +.el-table__fixed-right { + top: 0; + left: auto; + right: 0 +} + +.el-table__fixed-right .el-table__fixed-body-wrapper, .el-table__fixed-right .el-table__fixed-footer-wrapper, .el-table__fixed-right .el-table__fixed-header-wrapper { + left: auto; + right: 0 +} + +.el-table__fixed-header-wrapper { + position: absolute; + left: 0; + top: 0; + z-index: 3 +} + +.el-table__fixed-footer-wrapper { + position: absolute; + left: 0; + bottom: 0; + z-index: 3 +} + +.el-table__fixed-footer-wrapper tbody td.el-table__cell { + border-top: 1px solid #EBEEF5; + background-color: #F5F7FA; + color: #606266 +} + +.el-table__fixed-body-wrapper { + position: absolute; + left: 0; + top: 37px; + overflow: hidden; + z-index: 3 +} + +.el-table__body-wrapper, .el-table__footer-wrapper, .el-table__header-wrapper { + width: 100% +} + +.el-table__footer-wrapper { + margin-top: -1px +} + +.el-table__footer-wrapper td.el-table__cell { + border-top: 1px solid #EBEEF5 +} + +.el-table__body, .el-table__footer, .el-table__header { + table-layout: fixed; + border-collapse: separate +} + +.el-table__footer-wrapper, .el-table__header-wrapper { + overflow: hidden +} + +.el-table__footer-wrapper tbody td.el-table__cell, .el-table__header-wrapper tbody td.el-table__cell { + background-color: #F5F7FA; + color: #606266 +} + +.el-table__body-wrapper { + overflow: hidden; + position: relative +} + +.el-table__body-wrapper.is-scrolling-left ~ .el-table__fixed, .el-table__body-wrapper.is-scrolling-none ~ .el-table__fixed, .el-table__body-wrapper.is-scrolling-none ~ .el-table__fixed-right, .el-table__body-wrapper.is-scrolling-right ~ .el-table__fixed-right { + -webkit-box-shadow: none; + box-shadow: none +} + +.el-table__body-wrapper .el-table--border.is-scrolling-right ~ .el-table__fixed-right { + border-left: 1px solid #EBEEF5 +} + +.el-table .caret-wrapper { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 34px; + width: 24px; + vertical-align: middle; + cursor: pointer; + overflow: initial; + position: relative +} + +.el-table .sort-caret { + width: 0; + height: 0; + border: 5px solid transparent; + position: absolute; + left: 7px +} + +.el-table .sort-caret.ascending { + border-bottom-color: #C0C4CC; + top: 5px +} + +.el-table .sort-caret.descending { + border-top-color: #C0C4CC; + bottom: 7px +} + +.el-table .ascending .sort-caret.ascending { + border-bottom-color: #409EFF +} + +.el-table .descending .sort-caret.descending { + border-top-color: #409EFF +} + +.el-table .hidden-columns { + visibility: hidden; + position: absolute; + z-index: -1 +} + +.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell { + background: #FAFAFA +} + +.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell { + background-color: #ecf5ff +} + +.el-table__body tr.hover-row.current-row > td.el-table__cell, .el-table__body tr.hover-row.el-table__row--striped.current-row > td.el-table__cell, .el-table__body tr.hover-row.el-table__row--striped > td.el-table__cell, .el-table__body tr.hover-row > td.el-table__cell { + background-color: #F5F7FA +} + +.el-table__body tr.current-row > td.el-table__cell { + background-color: #ecf5ff +} + +.el-table__column-resize-proxy { + position: absolute; + left: 200px; + top: 0; + bottom: 0; + width: 0; + border-left: 1px solid #EBEEF5; + z-index: 10 +} + +.el-table__column-filter-trigger { + display: inline-block; + line-height: 34px; + cursor: pointer +} + +.el-table__column-filter-trigger i { + color: #909399; + font-size: 12px; + -webkit-transform: scale(.75); + transform: scale(.75) +} + +.el-table--enable-row-transition .el-table__body td.el-table__cell { + -webkit-transition: background-color .25s ease; + transition: background-color .25s ease +} + +.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell { + background-color: #F5F7FA +} + +.el-table--fluid-height .el-table__fixed, .el-table--fluid-height .el-table__fixed-right { + bottom: 0; + overflow: hidden +} + +.el-table [class*=el-table__row--level] .el-table__expand-icon { + display: inline-block; + width: 20px; + line-height: 20px; + height: 20px; + text-align: center; + margin-right: 3px +} + +.el-table-column--selection .cell { + padding-left: 14px; + padding-right: 14px +} + +.el-table-filter { + border: 1px solid #EBEEF5; + border-radius: 2px; + background-color: #FFF; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-sizing: border-box; + margin: 2px 0 +} + +.el-table-filter__list { + padding: 5px 0; + margin: 0; + list-style: none; + min-width: 100px +} + +.el-table-filter__list-item { + line-height: 36px; + padding: 0 10px; + cursor: pointer; + font-size: 14px +} + +.el-table-filter__list-item:hover { + background-color: #ecf5ff; + color: #66b1ff +} + +.el-table-filter__list-item.is-active { + background-color: #409EFF; + color: #FFF +} + +.el-table-filter__content { + min-width: 100px +} + +.el-table-filter__bottom { + border-top: 1px solid #EBEEF5; + padding: 8px +} + +.el-table-filter__bottom button { + background: 0 0; + border: none; + color: #606266; + cursor: pointer; + font-size: 13px; + padding: 0 3px +} + +.el-date-table td.in-range div, .el-date-table td.in-range div:hover, .el-date-table.is-week-mode .el-date-table__row.current div, .el-date-table.is-week-mode .el-date-table__row:hover div { + background-color: #F2F6FC +} + +.el-table-filter__bottom button:hover { + color: #409EFF +} + +.el-table-filter__bottom button:focus { + outline: 0 +} + +.el-table-filter__bottom button.is-disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-table-filter__wrap { + max-height: 280px +} + +.el-table-filter__checkbox-group { + padding: 10px +} + +.el-table-filter__checkbox-group label.el-checkbox { + display: block; + margin-right: 5px; + margin-bottom: 8px; + margin-left: 5px +} + +.el-table-filter__checkbox-group .el-checkbox:last-child { + margin-bottom: 0 +} + +.el-date-table { + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover { + color: #606266 +} + +.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.el-date-table td { + width: 32px; + height: 30px; + padding: 4px 0; + box-sizing: border-box; + text-align: center; + cursor: pointer; + position: relative +} + +.el-date-table td div { + height: 30px; + padding: 3px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-date-table td span { + width: 24px; + height: 24px; + display: block; + margin: 0 auto; + line-height: 24px; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + border-radius: 50% +} + +.el-date-table td.next-month, .el-date-table td.prev-month { + color: #C0C4CC +} + +.el-date-table td.today { + position: relative +} + +.el-date-table td.today span { + color: #409EFF; + font-weight: 700 +} + +.el-date-table td.today.end-date span, .el-date-table td.today.start-date span { + color: #FFF +} + +.el-date-table td.available:hover { + color: #409EFF +} + +.el-date-table td.current:not(.disabled) span { + color: #FFF; + background-color: #409EFF +} + +.el-date-table td.end-date div, .el-date-table td.start-date div { + color: #FFF +} + +.el-date-table td.end-date span, .el-date-table td.start-date span { + background-color: #409EFF +} + +.el-date-table td.start-date div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.el-date-table td.end-date div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.el-date-table td.disabled div { + background-color: #F5F7FA; + opacity: 1; + cursor: not-allowed; + color: #C0C4CC +} + +.el-date-table td.selected div { + margin-left: 5px; + margin-right: 5px; + background-color: #F2F6FC; + border-radius: 15px +} + +.el-date-table td.selected div:hover { + background-color: #F2F6FC +} + +.el-date-table td.selected span { + background-color: #409EFF; + color: #FFF; + border-radius: 15px +} + +.el-date-table td.week { + font-size: 80%; + color: #606266 +} + +.el-month-table, .el-year-table { + font-size: 12px; + border-collapse: collapse +} + +.el-date-table th { + padding: 5px; + color: #606266; + font-weight: 400; + border-bottom: solid 1px #EBEEF5 +} + +.el-month-table { + margin: -1px +} + +.el-month-table td { + text-align: center; + padding: 8px 0; + cursor: pointer +} + +.el-month-table td div { + height: 48px; + padding: 6px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-month-table td.today .cell { + color: #409EFF; + font-weight: 700 +} + +.el-month-table td.today.end-date .cell, .el-month-table td.today.start-date .cell { + color: #FFF +} + +.el-month-table td.disabled .cell { + background-color: #F5F7FA; + cursor: not-allowed; + color: #C0C4CC +} + +.el-month-table td.disabled .cell:hover { + color: #C0C4CC +} + +.el-month-table td .cell { + width: 60px; + height: 36px; + display: block; + line-height: 36px; + color: #606266; + margin: 0 auto; + border-radius: 18px +} + +.el-month-table td .cell:hover { + color: #409EFF +} + +.el-month-table td.in-range div, .el-month-table td.in-range div:hover { + background-color: #F2F6FC +} + +.el-month-table td.end-date div, .el-month-table td.start-date div { + color: #FFF +} + +.el-month-table td.end-date .cell, .el-month-table td.start-date .cell { + color: #FFF; + background-color: #409EFF +} + +.el-month-table td.start-date div { + border-top-left-radius: 24px; + border-bottom-left-radius: 24px +} + +.el-month-table td.end-date div { + border-top-right-radius: 24px; + border-bottom-right-radius: 24px +} + +.el-month-table td.current:not(.disabled) .cell { + color: #409EFF +} + +.el-year-table { + margin: -1px +} + +.el-year-table .el-icon { + color: #303133 +} + +.el-year-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer +} + +.el-year-table td.today .cell { + color: #409EFF; + font-weight: 700 +} + +.el-year-table td.disabled .cell { + background-color: #F5F7FA; + cursor: not-allowed; + color: #C0C4CC +} + +.el-year-table td.disabled .cell:hover { + color: #C0C4CC +} + +.el-year-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: #606266; + margin: 0 auto +} + +.el-year-table td .cell:hover, .el-year-table td.current:not(.disabled) .cell { + color: #409EFF +} + +.el-date-range-picker { + width: 646px +} + +.el-date-range-picker.has-sidebar { + width: 756px +} + +.el-date-range-picker table { + table-layout: fixed; + width: 100% +} + +.el-date-range-picker .el-picker-panel__body { + min-width: 513px +} + +.el-date-range-picker .el-picker-panel__content { + margin: 0 +} + +.el-date-range-picker__header { + position: relative; + text-align: center; + height: 28px +} + +.el-date-range-picker__header [class*=arrow-left] { + float: left +} + +.el-date-range-picker__header [class*=arrow-right] { + float: right +} + +.el-date-range-picker__header div { + font-size: 16px; + font-weight: 500; + margin-right: 50px +} + +.el-date-range-picker__content { + float: left; + width: 50%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 16px +} + +.el-date-range-picker__content.is-left { + border-right: 1px solid #e4e4e4 +} + +.el-date-range-picker__content .el-date-range-picker__header div { + margin-left: 50px; + margin-right: 50px +} + +.el-date-range-picker__editors-wrap { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: table-cell +} + +.el-date-range-picker__editors-wrap.is-right { + text-align: right +} + +.el-date-range-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-date-range-picker__time-header > .el-icon-arrow-right { + font-size: 20px; + vertical-align: middle; + display: table-cell; + color: #303133 +} + +.el-date-range-picker__time-picker-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.el-date-range-picker__time-picker-wrap .el-picker-panel { + position: absolute; + top: 13px; + right: 0; + z-index: 1; + background: #FFF +} + +.el-date-picker { + width: 322px +} + +.el-date-picker.has-sidebar.has-time { + width: 434px +} + +.el-date-picker.has-sidebar { + width: 438px +} + +.el-date-picker.has-time .el-picker-panel__body-wrapper { + position: relative +} + +.el-date-picker .el-picker-panel__content { + width: 292px +} + +.el-date-picker table { + table-layout: fixed; + width: 100% +} + +.el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-date-picker__header { + margin: 12px; + text-align: center +} + +.el-date-picker__header--bordered { + margin-bottom: 0; + padding-bottom: 12px; + border-bottom: solid 1px #EBEEF5 +} + +.el-date-picker__header--bordered + .el-picker-panel__content { + margin-top: 0 +} + +.el-date-picker__header-label { + font-size: 16px; + font-weight: 500; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; + color: #606266 +} + +.el-date-picker__header-label.active, .el-date-picker__header-label:hover { + color: #409EFF +} + +.el-date-picker__prev-btn { + float: left +} + +.el-date-picker__next-btn { + float: right +} + +.el-date-picker__time-wrap { + padding: 10px; + text-align: center +} + +.el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px +} + +.time-select { + margin: 5px 0; + min-width: 0 +} + +.time-select .el-picker-panel__content { + max-height: 200px; + margin: 0 +} + +.time-select-item { + padding: 8px 10px; + font-size: 14px; + line-height: 20px +} + +.time-select-item.selected:not(.disabled) { + color: #409EFF; + font-weight: 700 +} + +.time-select-item.disabled { + color: #E4E7ED; + cursor: not-allowed +} + +.time-select-item:hover { + background-color: #F5F7FA; + font-weight: 700; + cursor: pointer +} + +.el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.el-date-editor.el-input, .el-date-editor.el-input__inner { + width: 220px +} + +.el-date-editor--monthrange.el-input, .el-date-editor--monthrange.el-input__inner { + width: 300px +} + +.el-date-editor--daterange.el-input, .el-date-editor--daterange.el-input__inner, .el-date-editor--timerange.el-input, .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.el-date-editor--datetimerange.el-input, .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.el-date-editor--dates .el-input__inner { + text-overflow: ellipsis; + white-space: nowrap +} + +.el-date-editor .el-icon-circle-close { + cursor: pointer +} + +.el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #C0C4CC; + float: left; + line-height: 32px +} + +.el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #606266 +} + +.el-date-editor .el-range-input::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-date-editor .el-range-input:-ms-input-placeholder { + color: #C0C4CC +} + +.el-date-editor .el-range-input::-ms-input-placeholder { + color: #C0C4CC +} + +.el-date-editor .el-range-input::placeholder { + color: #C0C4CC +} + +.el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #303133 +} + +.el-date-editor .el-range__close-icon { + font-size: 14px; + color: #C0C4CC; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.el-range-editor.el-input__inner { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 3px 10px +} + +.el-range-editor .el-range-input { + line-height: 1 +} + +.el-range-editor--medium.el-input__inner { + height: 36px +} + +.el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.el-range-editor--medium .el-range-input { + font-size: 14px +} + +.el-range-editor--medium .el-range__close-icon, .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.el-range-editor--small.el-input__inner { + height: 32px +} + +.el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.el-range-editor--small .el-range-input { + font-size: 13px +} + +.el-range-editor--small .el-range__close-icon, .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.el-range-editor--mini.el-input__inner { + height: 28px +} + +.el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.el-range-editor--mini .el-range-input { + font-size: 12px +} + +.el-range-editor--mini .el-range__close-icon, .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.el-range-editor.is-disabled { + background-color: #F5F7FA; + border-color: #E4E7ED; + color: #C0C4CC; + cursor: not-allowed +} + +.el-range-editor.is-disabled:focus, .el-range-editor.is-disabled:hover { + border-color: #E4E7ED +} + +.el-range-editor.is-disabled input { + background-color: #F5F7FA; + color: #C0C4CC; + cursor: not-allowed +} + +.el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-range-editor.is-disabled input:-ms-input-placeholder { + color: #C0C4CC +} + +.el-range-editor.is-disabled input::-ms-input-placeholder { + color: #C0C4CC +} + +.el-range-editor.is-disabled input::placeholder { + color: #C0C4CC +} + +.el-range-editor.is-disabled .el-range-separator { + color: #C0C4CC +} + +.el-picker-panel { + color: #606266; + border: 1px solid #E4E7ED; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + background: #FFF; + border-radius: 4px; + line-height: 30px; + margin: 5px 0 +} + +.el-picker-panel__body-wrapper::after, .el-picker-panel__body::after { + content: ""; + display: table; + clear: both +} + +.el-picker-panel__content { + position: relative; + margin: 15px +} + +.el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #FFF; + position: relative; + font-size: 0 +} + +.el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: #606266; + padding-left: 12px; + text-align: left; + outline: 0; + cursor: pointer +} + +.el-picker-panel__shortcut:hover { + color: #409EFF +} + +.el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #409EFF +} + +.el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.el-picker-panel__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.el-picker-panel__icon-btn { + font-size: 12px; + color: #303133; + border: 0; + background: 0 0; + cursor: pointer; + outline: 0; + margin-top: 8px +} + +.el-picker-panel__icon-btn:hover { + color: #409EFF +} + +.el-picker-panel__icon-btn.is-disabled { + color: #bbb +} + +.el-picker-panel__icon-btn.is-disabled:hover { + cursor: not-allowed +} + +.el-picker-panel__link-btn { + vertical-align: middle +} + +.el-picker-panel [slot=sidebar], .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + background-color: #FFF; + overflow: auto +} + +.el-picker-panel [slot=sidebar] + .el-picker-panel__body, .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px +} + +.el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33.3% +} + +.el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative +} + +.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px +} + +.el-time-spinner__input.el-input .el-input__inner, .el-time-spinner__list { + padding: 0; + text-align: center +} + +.el-time-spinner__wrapper.is-arrow { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden +} + +.el-time-spinner__wrapper.is-arrow .el-time-spinner__list { + -webkit-transform: translateY(-32px); + transform: translateY(-32px) +} + +.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #FFF; + cursor: default +} + +.el-time-spinner__arrow { + font-size: 12px; + color: #909399; + position: absolute; + left: 0; + width: 100%; + z-index: 1; + text-align: center; + height: 30px; + line-height: 30px; + cursor: pointer +} + +.el-time-spinner__arrow:hover { + color: #409EFF +} + +.el-time-spinner__arrow.el-icon-arrow-up { + top: 10px +} + +.el-time-spinner__arrow.el-icon-arrow-down { + bottom: 10px +} + +.el-time-spinner__input.el-input { + width: 70% +} + +.el-time-spinner__list { + margin: 0; + list-style: none +} + +.el-time-spinner__list::after, .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px +} + +.el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; + color: #606266 +} + +.el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #F5F7FA; + cursor: pointer +} + +.el-time-spinner__item.active:not(.disabled) { + color: #303133; + font-weight: 700 +} + +.el-time-spinner__item.disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-time-panel { + margin: 5px 0; + border: 1px solid #E4E7ED; + background-color: #FFF; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: content-box; + box-sizing: content-box +} + +.el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden +} + +.el-time-panel__content::after, .el-time-panel__content::before { + content: ""; + top: 50%; + position: absolute; + margin-top: -15px; + height: 32px; + z-index: -1; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + text-align: left; + border-top: 1px solid #E4E7ED; + border-bottom: 1px solid #E4E7ED +} + +.el-time-panel__content::after { + left: 50%; + margin-left: 12%; + margin-right: 12% +} + +.el-time-panel__content::before { + padding-left: 50%; + margin-right: 12%; + margin-left: 12% +} + +.el-time-panel__content.has-seconds::after { + left: calc(100% / 3 * 2) +} + +.el-time-panel__content.has-seconds::before { + padding-left: calc(100% / 3) +} + +.el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px; + color: #303133 +} + +.el-time-panel__btn.confirm { + font-weight: 800; + color: #409EFF +} + +.el-time-range-picker { + width: 354px; + overflow: visible +} + +.el-time-range-picker__content { + position: relative; + text-align: center; + padding: 10px +} + +.el-time-range-picker__cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 4px 7px 7px; + width: 50%; + display: inline-block +} + +.el-time-range-picker__header { + margin-bottom: 5px; + text-align: center; + font-size: 14px +} + +.el-time-range-picker__body { + border-radius: 2px; + border: 1px solid #E4E7ED +} + +.el-popover { + position: absolute; + background: #FFF; + min-width: 150px; + border-radius: 4px; + border: 1px solid #EBEEF5; + padding: 12px; + z-index: 2000; + color: #606266; + line-height: 1.4; + text-align: justify; + font-size: 14px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + word-break: break-all +} + +.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover, .el-cascader__dropdown, .el-color-picker__panel, .el-message-box, .el-notification { + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-popover--plain { + padding: 18px 20px +} + +.el-popover__title { + color: #303133; + font-size: 16px; + line-height: 1; + margin-bottom: 12px +} + +.el-popover:focus, .el-popover:focus:active, .el-popover__reference:focus:hover, .el-popover__reference:focus:not(.focusing) { + outline-width: 0 +} + +.v-modal-enter { + -webkit-animation: v-modal-in .2s ease; + animation: v-modal-in .2s ease +} + +.v-modal-leave { + -webkit-animation: v-modal-out .2s ease forwards; + animation: v-modal-out .2s ease forwards +} + +@keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +.v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .5; + background: #000 +} + +.el-popup-parent--hidden { + overflow: hidden +} + +.el-message-box { + display: inline-block; + width: 420px; + padding-bottom: 10px; + vertical-align: middle; + background-color: #FFF; + border-radius: 4px; + border: 1px solid #EBEEF5; + font-size: 18px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + text-align: left; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden +} + +.el-message-box__wrapper { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center +} + +.el-message-box__wrapper::after { + content: ""; + display: inline-block; + height: 100%; + width: 0; + vertical-align: middle +} + +.el-message-box__header { + position: relative; + padding: 15px 15px 10px +} + +.el-message-box__title { + padding-left: 0; + margin-bottom: 0; + font-size: 18px; + line-height: 1; + color: #303133 +} + +.el-message-box__headerbtn { + position: absolute; + top: 15px; + right: 15px; + padding: 0; + border: none; + outline: 0; + background: 0 0; + font-size: 16px; + cursor: pointer +} + +.el-form-item.is-error .el-input__inner, .el-form-item.is-error .el-input__inner:focus, .el-form-item.is-error .el-textarea__inner, .el-form-item.is-error .el-textarea__inner:focus, .el-message-box__input input.invalid, .el-message-box__input input.invalid:focus { + border-color: #F56C6C +} + +.el-message-box__headerbtn .el-message-box__close { + color: #909399 +} + +.el-message-box__headerbtn:focus .el-message-box__close, .el-message-box__headerbtn:hover .el-message-box__close { + color: #409EFF +} + +.el-message-box__content { + padding: 10px 15px; + color: #606266; + font-size: 14px +} + +.el-message-box__container { + position: relative +} + +.el-message-box__input { + padding-top: 15px +} + +.el-message-box__status { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + font-size: 24px !important +} + +.el-message-box__status::before { + padding-left: 1px +} + +.el-message-box__status + .el-message-box__message { + padding-left: 36px; + padding-right: 12px +} + +.el-message-box__status.el-icon-success { + color: #67C23A +} + +.el-message-box__status.el-icon-info { + color: #909399 +} + +.el-message-box__status.el-icon-warning { + color: #E6A23C +} + +.el-message-box__status.el-icon-error { + color: #F56C6C +} + +.el-message-box__message { + margin: 0 +} + +.el-message-box__message p { + margin: 0; + line-height: 24px +} + +.el-message-box__errormsg { + color: #F56C6C; + font-size: 12px; + min-height: 18px; + margin-top: 2px +} + +.el-message-box__btns { + padding: 5px 15px 0; + text-align: right +} + +.el-message-box__btns button:nth-child(2) { + margin-left: 10px +} + +.el-message-box__btns-reverse { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse +} + +.el-message-box--center { + padding-bottom: 30px +} + +.el-message-box--center .el-message-box__header { + padding-top: 30px +} + +.el-message-box--center .el-message-box__title { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.el-message-box--center .el-message-box__status { + position: relative; + top: auto; + padding-right: 5px; + text-align: center; + -webkit-transform: translateY(-1px); + transform: translateY(-1px) +} + +.el-message-box--center .el-message-box__message { + margin-left: 0 +} + +.el-message-box--center .el-message-box__btns, .el-message-box--center .el-message-box__content { + text-align: center +} + +.el-message-box--center .el-message-box__content { + padding-left: 27px; + padding-right: 27px +} + +.msgbox-fade-enter-active { + -webkit-animation: msgbox-fade-in .3s; + animation: msgbox-fade-in .3s +} + +.msgbox-fade-leave-active { + -webkit-animation: msgbox-fade-out .3s; + animation: msgbox-fade-out .3s +} + +@-webkit-keyframes msgbox-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes msgbox-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@-webkit-keyframes msgbox-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +@keyframes msgbox-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +.el-breadcrumb { + font-size: 14px; + line-height: 1 +} + +.el-breadcrumb::after, .el-breadcrumb::before { + display: table; + content: "" +} + +.el-breadcrumb::after { + clear: both +} + +.el-breadcrumb__separator { + margin: 0 9px; + font-weight: 700; + color: #C0C4CC +} + +.el-breadcrumb__separator[class*=icon] { + margin: 0 6px; + font-weight: 400 +} + +.el-breadcrumb__item { + float: left +} + +.el-breadcrumb__inner { + color: #606266 +} + +.el-breadcrumb__inner a, .el-breadcrumb__inner.is-link { + font-weight: 700; + text-decoration: none; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1); + color: #303133 +} + +.el-breadcrumb__inner a:hover, .el-breadcrumb__inner.is-link:hover { + color: #409EFF; + cursor: pointer +} + +.el-breadcrumb__item:last-child .el-breadcrumb__inner, .el-breadcrumb__item:last-child .el-breadcrumb__inner a, .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover, .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover { + font-weight: 400; + color: #606266; + cursor: text +} + +.el-form--label-left .el-form-item__label { + text-align: left +} + +.el-form--label-top .el-form-item__label { + float: none; + display: inline-block; + text-align: left; + padding: 0 0 10px +} + +.el-form--inline .el-form-item { + display: inline-block; + margin-right: 10px; + vertical-align: top +} + +.el-form--inline .el-form-item__label { + float: none; + display: inline-block +} + +.el-form--inline .el-form-item__content { + display: inline-block; + vertical-align: top +} + +.el-form--inline.el-form--label-top .el-form-item__content { + display: block +} + +.el-form-item { + margin-bottom: 22px +} + +.el-form-item::after, .el-form-item::before { + display: table; + content: "" +} + +.el-form-item::after { + clear: both +} + +.el-form-item .el-form-item { + margin-bottom: 0 +} + +.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item { + margin-bottom: 18px +} + +.el-form-item .el-input__validateIcon { + display: none +} + +.el-form-item--medium .el-form-item__content, .el-form-item--medium .el-form-item__label { + line-height: 36px +} + +.el-form-item--small .el-form-item__content, .el-form-item--small .el-form-item__label { + line-height: 32px +} + +.el-form-item--small .el-form-item__error { + padding-top: 2px +} + +.el-form-item--mini .el-form-item__content, .el-form-item--mini .el-form-item__label { + line-height: 28px +} + +.el-form-item--mini .el-form-item__error { + padding-top: 1px +} + +.el-form-item__label-wrap { + float: left +} + +.el-form-item__label-wrap .el-form-item__label { + display: inline-block; + float: none +} + +.el-form-item__label { + text-align: right; + vertical-align: middle; + float: left; + font-size: 14px; + color: #606266; + line-height: 40px; + padding: 0 12px 0 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-form-item__content { + line-height: 40px; + position: relative; + font-size: 14px +} + +.el-form-item__content::after, .el-form-item__content::before { + display: table; + content: "" +} + +.el-form-item__content::after { + clear: both +} + +.el-form-item__content .el-input-group { + vertical-align: top +} + +.el-form-item__error { + color: #F56C6C; + font-size: 12px; + line-height: 1; + padding-top: 4px; + position: absolute; + top: 100%; + left: 0 +} + +.el-form-item__error--inline { + position: relative; + top: auto; + left: auto; + display: inline-block; + margin-left: 10px +} + +.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before { + content: '*'; + color: #F56C6C; + margin-right: 4px +} + +.el-form-item.is-error .el-input-group__append .el-input__inner, .el-form-item.is-error .el-input-group__prepend .el-input__inner { + border-color: transparent +} + +.el-form-item.is-error .el-input__validateIcon { + color: #F56C6C +} + +.el-form-item--feedback .el-input__validateIcon { + display: inline-block +} + +.el-tabs__header { + padding: 0; + position: relative; + margin: 0 0 15px +} + +.el-tabs__active-bar { + position: absolute; + bottom: 0; + left: 0; + height: 2px; + background-color: #409EFF; + z-index: 1; + -webkit-transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1), -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + list-style: none +} + +.el-tabs__new-tab { + float: right; + border: 1px solid #d3dce6; + height: 18px; + width: 18px; + line-height: 18px; + margin: 12px 0 9px 10px; + border-radius: 3px; + text-align: center; + font-size: 12px; + color: #d3dce6; + cursor: pointer; + -webkit-transition: all .15s; + transition: all .15s +} + +.el-tabs__new-tab .el-icon-plus { + -webkit-transform: scale(.8, .8); + transform: scale(.8, .8) +} + +.el-tabs__new-tab:hover { + color: #409EFF +} + +.el-tabs__nav-wrap { + overflow: hidden; + margin-bottom: -1px; + position: relative +} + +.el-tabs__nav-wrap::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #E4E7ED; + z-index: 1 +} + +.el-tabs__nav-wrap.is-scrollable { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-tabs__nav-scroll { + overflow: hidden +} + +.el-tabs__nav-next, .el-tabs__nav-prev { + position: absolute; + cursor: pointer; + line-height: 44px; + font-size: 12px; + color: #909399 +} + +.el-tabs__nav-next { + right: 0 +} + +.el-tabs__nav-prev { + left: 0 +} + +.el-tabs__nav { + white-space: nowrap; + position: relative; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + float: left; + z-index: 2 +} + +.el-tabs__nav.is-stretch { + min-width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.el-tabs__nav.is-stretch > * { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: center +} + +.el-tabs__item { + padding: 0 20px; + height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 500; + color: #303133; + position: relative +} + +.el-tabs__item:focus, .el-tabs__item:focus:active { + outline: 0 +} + +.el-tabs__item:focus.is-active.is-focus:not(:active) { + -webkit-box-shadow: 0 0 2px 2px #409EFF inset; + box-shadow: 0 0 2px 2px #409EFF inset; + border-radius: 3px +} + +.el-tabs__item .el-icon-close { + border-radius: 50%; + text-align: center; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + margin-left: 5px +} + +.el-tabs__item .el-icon-close:before { + -webkit-transform: scale(.9); + transform: scale(.9); + display: inline-block +} + +.el-tabs--card > .el-tabs__header .el-tabs__active-bar, .el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left, .el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right { + display: none +} + +.el-tabs__item .el-icon-close:hover { + background-color: #C0C4CC; + color: #FFF +} + +.el-tabs__item.is-active { + color: #409EFF +} + +.el-tabs__item:hover { + color: #409EFF; + cursor: pointer +} + +.el-tabs__item.is-disabled { + color: #C0C4CC; + cursor: default +} + +.el-tabs__content { + overflow: hidden; + position: relative +} + +.el-tabs--card > .el-tabs__header { + border-bottom: 1px solid #E4E7ED +} + +.el-tabs--card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.el-tabs--card > .el-tabs__header .el-tabs__nav { + border: 1px solid #E4E7ED; + border-bottom: none; + border-radius: 4px 4px 0 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close { + position: relative; + font-size: 12px; + width: 0; + height: 14px; + vertical-align: middle; + line-height: 15px; + overflow: hidden; + top: -1px; + right: -2px; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50% +} + +.el-tabs--card > .el-tabs__header .el-tabs__item { + border-bottom: 1px solid transparent; + border-left: 1px solid #E4E7ED; + -webkit-transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1); + transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1) +} + +.el-tabs--card > .el-tabs__header .el-tabs__item:first-child { + border-left: none +} + +.el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover { + padding-left: 13px; + padding-right: 13px +} + +.el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close { + width: 14px +} + +.el-tabs--card > .el-tabs__header .el-tabs__item.is-active { + border-bottom-color: #FFF +} + +.el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable { + padding-left: 20px; + padding-right: 20px +} + +.el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close { + width: 14px +} + +.el-tabs--border-card { + background: #FFF; + border: 1px solid #DCDFE6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04) +} + +.el-tabs--border-card > .el-tabs__content { + padding: 15px +} + +.el-tabs--border-card > .el-tabs__header { + background-color: #F5F7FA; + border-bottom: 1px solid #E4E7ED; + margin: 0 +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__item { + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + border: 1px solid transparent; + margin-top: -1px; + color: #909399 +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__item + .el-tabs__item, .el-tabs--border-card > .el-tabs__header .el-tabs__item:first-child { + margin-left: -1px +} + +.el-col-offset-0, .el-tabs--border-card > .el-tabs__header .is-scrollable .el-tabs__item:first-child { + margin-left: 0 +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { + color: #409EFF; + background-color: #FFF; + border-right-color: #DCDFE6; + border-left-color: #DCDFE6 +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__item:not(.is-disabled):hover { + color: #409EFF +} + +.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-disabled { + color: #C0C4CC +} + +.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2), .el-tabs--bottom .el-tabs__item.is-top:nth-child(2), .el-tabs--top .el-tabs__item.is-bottom:nth-child(2), .el-tabs--top .el-tabs__item.is-top:nth-child(2) { + padding-left: 0 +} + +.el-tabs--bottom .el-tabs__item.is-bottom:last-child, .el-tabs--bottom .el-tabs__item.is-top:last-child, .el-tabs--top .el-tabs__item.is-bottom:last-child, .el-tabs--top .el-tabs__item.is-top:last-child { + padding-right: 0 +} + +.el-cascader-menu:last-child .el-cascader-node, .el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:last-child { + padding-right: 20px +} + +.el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2) { + padding-left: 20px +} + +.el-tabs--bottom .el-tabs__header.is-bottom { + margin-bottom: 0; + margin-top: 10px +} + +.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom { + border-bottom: 0; + border-top: 1px solid #DCDFE6 +} + +.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom { + margin-top: -1px; + margin-bottom: 0 +} + +.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active) { + border: 1px solid transparent +} + +.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom { + margin: 0 -1px -1px +} + +.el-tabs--left, .el-tabs--right { + overflow: hidden +} + +.el-tabs--left .el-tabs__header.is-left, .el-tabs--left .el-tabs__header.is-right, .el-tabs--left .el-tabs__nav-scroll, .el-tabs--left .el-tabs__nav-wrap.is-left, .el-tabs--left .el-tabs__nav-wrap.is-right, .el-tabs--right .el-tabs__header.is-left, .el-tabs--right .el-tabs__header.is-right, .el-tabs--right .el-tabs__nav-scroll, .el-tabs--right .el-tabs__nav-wrap.is-left, .el-tabs--right .el-tabs__nav-wrap.is-right { + height: 100% +} + +.el-tabs--left .el-tabs__active-bar.is-left, .el-tabs--left .el-tabs__active-bar.is-right, .el-tabs--right .el-tabs__active-bar.is-left, .el-tabs--right .el-tabs__active-bar.is-right { + top: 0; + bottom: auto; + width: 2px; + height: auto +} + +.el-tabs--left .el-tabs__nav-wrap.is-left, .el-tabs--left .el-tabs__nav-wrap.is-right, .el-tabs--right .el-tabs__nav-wrap.is-left, .el-tabs--right .el-tabs__nav-wrap.is-right { + margin-bottom: 0 +} + +.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev { + height: 30px; + line-height: 30px; + width: 100%; + text-align: center; + cursor: pointer +} + +.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next i, .el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev i, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next i, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev i, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next i, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev i, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next i, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev i { + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg) +} + +.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-prev, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-prev { + left: auto; + top: 0 +} + +.el-tabs--left .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--left .el-tabs__nav-wrap.is-right > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-left > .el-tabs__nav-next, .el-tabs--right .el-tabs__nav-wrap.is-right > .el-tabs__nav-next { + right: auto; + bottom: 0 +} + +.el-tabs--left .el-tabs__active-bar.is-left, .el-tabs--left .el-tabs__nav-wrap.is-left::after { + right: 0; + left: auto +} + +.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable, .el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable, .el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable, .el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable { + padding: 30px 0 +} + +.el-tabs--left .el-tabs__nav-wrap.is-left::after, .el-tabs--left .el-tabs__nav-wrap.is-right::after, .el-tabs--right .el-tabs__nav-wrap.is-left::after, .el-tabs--right .el-tabs__nav-wrap.is-right::after { + height: 100%; + width: 2px; + bottom: auto; + top: 0 +} + +.el-tabs--left .el-tabs__nav.is-left, .el-tabs--left .el-tabs__nav.is-right, .el-tabs--right .el-tabs__nav.is-left, .el-tabs--right .el-tabs__nav.is-right { + float: none +} + +.el-tabs--left .el-tabs__item.is-left, .el-tabs--left .el-tabs__item.is-right, .el-tabs--right .el-tabs__item.is-left, .el-tabs--right .el-tabs__item.is-right { + display: block +} + +.el-tabs--left .el-tabs__header.is-left { + float: left; + margin-bottom: 0; + margin-right: 10px +} + +.el-button-group > .el-button:not(:last-child), .el-tabs--left .el-tabs__nav-wrap.is-left { + margin-right: -1px +} + +.el-tabs--left .el-tabs__item.is-left { + text-align: right +} + +.el-tabs--left.el-tabs--card .el-tabs__item.is-left { + border-left: none; + border-right: 1px solid #E4E7ED; + border-bottom: none; + border-top: 1px solid #E4E7ED; + text-align: left +} + +.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child { + border-right: 1px solid #E4E7ED; + border-top: none +} + +.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active { + border: 1px solid #E4E7ED; + border-right-color: #fff; + border-left: none; + border-bottom: none +} + +.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child { + border-top: none +} + +.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child { + border-bottom: none +} + +.el-tabs--left.el-tabs--card .el-tabs__nav { + border-radius: 4px 0 0 4px; + border-bottom: 1px solid #E4E7ED; + border-right: none +} + +.el-tabs--left.el-tabs--card .el-tabs__new-tab { + float: none +} + +.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left { + border-right: 1px solid #dfe4ed +} + +.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left { + border: 1px solid transparent; + margin: -1px 0 -1px -1px +} + +.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active { + border-color: #d1dbe5 transparent +} + +.el-tabs--right .el-tabs__header.is-right { + float: right; + margin-bottom: 0; + margin-left: 10px +} + +.el-tabs--right .el-tabs__nav-wrap.is-right { + margin-left: -1px +} + +.el-tabs--right .el-tabs__nav-wrap.is-right::after { + left: 0; + right: auto +} + +.el-tabs--right .el-tabs__active-bar.is-right { + left: 0 +} + +.el-tabs--right.el-tabs--card .el-tabs__item.is-right { + border-bottom: none; + border-top: 1px solid #E4E7ED +} + +.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child { + border-left: 1px solid #E4E7ED; + border-top: none +} + +.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active { + border: 1px solid #E4E7ED; + border-left-color: #fff; + border-right: none; + border-bottom: none +} + +.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child { + border-top: none +} + +.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child { + border-bottom: none +} + +.el-tabs--right.el-tabs--card .el-tabs__nav { + border-radius: 0 4px 4px 0; + border-bottom: 1px solid #E4E7ED; + border-left: none +} + +.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right { + border-left: 1px solid #dfe4ed +} + +.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right { + border: 1px solid transparent; + margin: -1px -1px -1px 0 +} + +.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active { + border-color: #d1dbe5 transparent +} + +.slideInLeft-transition, .slideInRight-transition { + display: inline-block +} + +.slideInRight-enter { + -webkit-animation: slideInRight-enter .3s; + animation: slideInRight-enter .3s +} + +.slideInRight-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInRight-leave .3s; + animation: slideInRight-leave .3s +} + +.slideInLeft-enter { + -webkit-animation: slideInLeft-enter .3s; + animation: slideInLeft-enter .3s +} + +.slideInLeft-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInLeft-leave .3s; + animation: slideInLeft-leave .3s +} + +@-webkit-keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@-webkit-keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +@keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +.el-tree { + position: relative; + cursor: default; + background: #FFF; + color: #606266 +} + +.el-tree__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100% +} + +.el-tree__empty-text { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #909399; + font-size: 14px +} + +.el-tree__drop-indicator { + position: absolute; + left: 0; + right: 0; + height: 1px; + background-color: #409EFF +} + +.el-tree-node { + white-space: nowrap; + outline: 0 +} + +.el-tree-node:focus > .el-tree-node__content { + background-color: #F5F7FA +} + +.el-tree-node.is-drop-inner > .el-tree-node__content .el-tree-node__label { + background-color: #409EFF; + color: #fff +} + +.el-tree-node__content:hover, .el-upload-list__item:hover { + background-color: #F5F7FA +} + +.el-tree-node__content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 26px; + cursor: pointer +} + +.el-tree-node__content > .el-tree-node__expand-icon { + padding: 6px +} + +.el-tree-node__content > label.el-checkbox { + margin-right: 8px +} + +.el-tree.is-dragging .el-tree-node__content { + cursor: move +} + +.el-tree.is-dragging .el-tree-node__content * { + pointer-events: none +} + +.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content { + cursor: not-allowed +} + +.el-tree-node__expand-icon { + cursor: pointer; + color: #C0C4CC; + font-size: 12px; + -webkit-transform: rotate(0); + transform: rotate(0); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out +} + +.el-tree-node__expand-icon.expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.el-tree-node__expand-icon.is-leaf { + color: transparent; + cursor: default +} + +.el-tree-node__label { + font-size: 14px +} + +.el-tree-node__loading-icon { + margin-right: 8px; + font-size: 14px; + color: #C0C4CC +} + +.el-tree-node > .el-tree-node__children { + overflow: hidden; + background-color: transparent +} + +.el-tree-node.is-expanded > .el-tree-node__children { + display: block +} + +.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: #f0f7ff +} + +.el-alert { + width: 100%; + padding: 8px 16px; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + position: relative; + background-color: #FFF; + overflow: hidden; + opacity: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: opacity .2s; + transition: opacity .2s +} + +.el-alert.is-light .el-alert__closebtn { + color: #C0C4CC +} + +.el-alert.is-dark .el-alert__closebtn, .el-alert.is-dark .el-alert__description { + color: #FFF +} + +.el-alert.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.el-alert--success.is-light { + background-color: #f0f9eb; + color: #67C23A +} + +.el-alert--success.is-light .el-alert__description { + color: #67C23A +} + +.el-alert--success.is-dark { + background-color: #67C23A; + color: #FFF +} + +.el-alert--info.is-light { + background-color: #f4f4f5; + color: #909399 +} + +.el-alert--info.is-dark { + background-color: #909399; + color: #FFF +} + +.el-alert--info .el-alert__description { + color: #909399 +} + +.el-alert--warning.is-light { + background-color: #fdf6ec; + color: #E6A23C +} + +.el-alert--warning.is-light .el-alert__description { + color: #E6A23C +} + +.el-alert--warning.is-dark { + background-color: #E6A23C; + color: #FFF +} + +.el-alert--error.is-light { + background-color: #fef0f0; + color: #F56C6C +} + +.el-alert--error.is-light .el-alert__description { + color: #F56C6C +} + +.el-alert--error.is-dark { + background-color: #F56C6C; + color: #FFF +} + +.el-alert__content { + display: table-cell; + padding: 0 8px +} + +.el-alert__icon { + font-size: 16px; + width: 16px +} + +.el-alert__icon.is-big { + font-size: 28px; + width: 28px +} + +.el-alert__title { + font-size: 13px; + line-height: 18px +} + +.el-alert__title.is-bold { + font-weight: 700 +} + +.el-alert .el-alert__description { + font-size: 12px; + margin: 5px 0 0 +} + +.el-alert__closebtn { + font-size: 12px; + opacity: 1; + position: absolute; + top: 12px; + right: 15px; + cursor: pointer +} + +.el-alert-fade-enter, .el-alert-fade-leave-active, .el-loading-fade-enter, .el-loading-fade-leave-active, .el-notification-fade-leave-active, .el-upload iframe { + opacity: 0 +} + +.el-carousel__arrow--right, .el-notification.right { + right: 16px +} + +.el-alert__closebtn.is-customed { + font-style: normal; + font-size: 13px; + top: 9px +} + +.el-notification { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 330px; + padding: 14px 26px 14px 13px; + border-radius: 8px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #EBEEF5; + position: fixed; + background-color: #FFF; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s; + transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + overflow: hidden +} + +.el-notification.left { + left: 16px +} + +.el-notification__group { + margin-left: 13px; + margin-right: 8px +} + +.el-notification__title { + font-weight: 700; + font-size: 16px; + color: #303133; + margin: 0 +} + +.el-notification__content { + font-size: 14px; + line-height: 21px; + margin: 6px 0 0; + color: #606266; + text-align: justify +} + +.el-notification__content p { + margin: 0 +} + +.el-notification__icon { + height: 24px; + width: 24px; + font-size: 24px +} + +.el-notification__closeBtn { + position: absolute; + top: 18px; + right: 15px; + cursor: pointer; + color: #909399; + font-size: 16px +} + +.el-notification__closeBtn:hover { + color: #606266 +} + +.el-notification .el-icon-success { + color: #67C23A +} + +.el-notification .el-icon-error { + color: #F56C6C +} + +.el-notification .el-icon-info { + color: #909399 +} + +.el-notification .el-icon-warning { + color: #E6A23C +} + +.el-notification-fade-enter.right { + right: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +.el-notification-fade-enter.left { + left: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +.el-input-number { + position: relative; + display: inline-block; + width: 180px; + line-height: 38px +} + +.el-input-number .el-input { + display: block +} + +.el-input-number .el-input__inner { + -webkit-appearance: none; + padding-left: 50px; + padding-right: 50px; + text-align: center +} + +.el-input-number__decrease, .el-input-number__increase { + position: absolute; + z-index: 1; + top: 1px; + width: 40px; + height: auto; + text-align: center; + background: #F5F7FA; + color: #606266; + cursor: pointer; + font-size: 13px +} + +.el-input-number__decrease:hover, .el-input-number__increase:hover { + color: #409EFF +} + +.el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #409EFF +} + +.el-input-number__decrease.is-disabled, .el-input-number__increase.is-disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-input-number__increase { + right: 1px; + border-radius: 0 4px 4px 0; + border-left: 1px solid #DCDFE6 +} + +.el-input-number__decrease { + left: 1px; + border-radius: 4px 0 0 4px; + border-right: 1px solid #DCDFE6 +} + +.el-input-number.is-disabled .el-input-number__decrease, .el-input-number.is-disabled .el-input-number__increase { + border-color: #E4E7ED; + color: #E4E7ED +} + +.el-input-number.is-disabled .el-input-number__decrease:hover, .el-input-number.is-disabled .el-input-number__increase:hover { + color: #E4E7ED; + cursor: not-allowed +} + +.el-input-number--medium { + width: 200px; + line-height: 34px +} + +.el-input-number--medium .el-input-number__decrease, .el-input-number--medium .el-input-number__increase { + width: 36px; + font-size: 14px +} + +.el-input-number--medium .el-input__inner { + padding-left: 43px; + padding-right: 43px +} + +.el-input-number--small { + width: 130px; + line-height: 30px +} + +.el-input-number--small .el-input-number__decrease, .el-input-number--small .el-input-number__increase { + width: 32px; + font-size: 13px +} + +.el-input-number--small .el-input-number__decrease [class*=el-icon], .el-input-number--small .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.9); + transform: scale(.9) +} + +.el-input-number--small .el-input__inner { + padding-left: 39px; + padding-right: 39px +} + +.el-input-number--mini { + width: 130px; + line-height: 26px +} + +.el-input-number--mini .el-input-number__decrease, .el-input-number--mini .el-input-number__increase { + width: 28px; + font-size: 12px +} + +.el-input-number--mini .el-input-number__decrease [class*=el-icon], .el-input-number--mini .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.el-input-number--mini .el-input__inner { + padding-left: 35px; + padding-right: 35px +} + +.el-input-number.is-without-controls .el-input__inner { + padding-left: 15px; + padding-right: 15px +} + +.el-input-number.is-controls-right .el-input__inner { + padding-left: 15px; + padding-right: 50px +} + +.el-input-number.is-controls-right .el-input-number__decrease, .el-input-number.is-controls-right .el-input-number__increase { + height: auto; + line-height: 19px +} + +.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.el-input-number.is-controls-right .el-input-number__increase { + border-radius: 0 4px 0 0; + border-bottom: 1px solid #DCDFE6 +} + +.el-input-number.is-controls-right .el-input-number__decrease { + right: 1px; + bottom: 1px; + top: auto; + left: auto; + border-right: none; + border-left: 1px solid #DCDFE6; + border-radius: 0 0 4px +} + +.el-input-number.is-controls-right[class*=medium] [class*=decrease], .el-input-number.is-controls-right[class*=medium] [class*=increase] { + line-height: 17px +} + +.el-input-number.is-controls-right[class*=small] [class*=decrease], .el-input-number.is-controls-right[class*=small] [class*=increase] { + line-height: 15px +} + +.el-input-number.is-controls-right[class*=mini] [class*=decrease], .el-input-number.is-controls-right[class*=mini] [class*=increase] { + line-height: 13px +} + +.el-tooltip:focus:hover, .el-tooltip:focus:not(.focusing) { + outline-width: 0 +} + +.el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2; + min-width: 10px; + word-wrap: break-word +} + +.el-tooltip__popper .popper__arrow, .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.el-tooltip__popper .popper__arrow { + border-width: 6px +} + +.el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px +} + +.el-button-group::after, .el-button-group::before, .el-color-dropdown__main-wrapper::after, .el-link.is-underline:hover:after, .el-page-header__left::after, .el-progress-bar__inner::after, .el-row::after, .el-row::before, .el-slider::after, .el-slider::before, .el-slider__button-wrapper::after, .el-transfer-panel .el-transfer-panel__footer::after, .el-upload-cover::after, .el-upload-list--picture-card .el-upload-list__item-actions::after { + content: "" +} + +.el-tooltip__popper[x-placement^=top] { + margin-bottom: 12px +} + +.el-tooltip__popper[x-placement^=top] .popper__arrow { + bottom: -6px; + border-top-color: #303133; + border-bottom-width: 0 +} + +.el-tooltip__popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: #303133; + border-bottom-width: 0 +} + +.el-tooltip__popper[x-placement^=bottom] { + margin-top: 12px +} + +.el-tooltip__popper[x-placement^=bottom] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: #303133 +} + +.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: #303133 +} + +.el-tooltip__popper[x-placement^=right] { + margin-left: 12px +} + +.el-tooltip__popper[x-placement^=right] .popper__arrow { + left: -6px; + border-right-color: #303133; + border-left-width: 0 +} + +.el-tooltip__popper[x-placement^=right] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: #303133; + border-left-width: 0 +} + +.el-tooltip__popper[x-placement^=left] { + margin-right: 12px +} + +.el-tooltip__popper[x-placement^=left] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: #303133 +} + +.el-tooltip__popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: #303133 +} + +.el-tooltip__popper.is-dark { + background: #303133; + color: #FFF +} + +.el-tooltip__popper.is-light { + background: #FFF; + border: 1px solid #303133 +} + +.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { + border-top-color: #303133 +} + +.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after { + border-top-color: #FFF +} + +.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow { + border-bottom-color: #303133 +} + +.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after { + border-bottom-color: #FFF +} + +.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow { + border-left-color: #303133 +} + +.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after { + border-left-color: #FFF +} + +.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow { + border-right-color: #303133 +} + +.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after { + border-right-color: #FFF +} + +.el-slider::after, .el-slider::before { + display: table +} + +.el-slider__button-wrapper .el-tooltip, .el-slider__button-wrapper::after { + display: inline-block; + vertical-align: middle +} + +.el-slider::after { + clear: both +} + +.el-slider__runway { + width: 100%; + height: 6px; + margin: 16px 0; + background-color: #E4E7ED; + border-radius: 3px; + position: relative; + cursor: pointer; + vertical-align: middle +} + +.el-slider__runway.show-input { + margin-right: 160px; + width: auto +} + +.el-slider__runway.disabled { + cursor: default +} + +.el-slider__runway.disabled .el-slider__bar { + background-color: #C0C4CC +} + +.el-slider__runway.disabled .el-slider__button { + border-color: #C0C4CC +} + +.el-slider__runway.disabled .el-slider__button-wrapper.dragging, .el-slider__runway.disabled .el-slider__button-wrapper.hover, .el-slider__runway.disabled .el-slider__button-wrapper:hover { + cursor: not-allowed +} + +.el-slider__runway.disabled .el-slider__button.dragging, .el-slider__runway.disabled .el-slider__button.hover, .el-slider__runway.disabled .el-slider__button:hover { + -webkit-transform: scale(1); + transform: scale(1); + cursor: not-allowed +} + +.el-slider__button-wrapper, .el-slider__stop { + -webkit-transform: translateX(-50%); + position: absolute +} + +.el-slider__input { + float: right; + margin-top: 3px; + width: 130px +} + +.el-slider__input.el-input-number--mini { + margin-top: 5px +} + +.el-slider__input.el-input-number--medium { + margin-top: 0 +} + +.el-slider__input.el-input-number--large { + margin-top: -2px +} + +.el-slider__bar { + height: 6px; + background-color: #409EFF; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + position: absolute +} + +.el-slider__button-wrapper { + height: 36px; + width: 36px; + z-index: 1001; + top: -15px; + transform: translateX(-50%); + background-color: transparent; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + line-height: normal +} + +.el-image-viewer__btn, .el-slider__button, .el-step__icon-inner { + -moz-user-select: none; + -ms-user-select: none +} + +.el-slider__button-wrapper::after { + height: 100% +} + +.el-slider__button-wrapper.hover, .el-slider__button-wrapper:hover { + cursor: -webkit-grab; + cursor: grab +} + +.el-slider__button-wrapper.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.el-slider__button { + width: 16px; + height: 16px; + border: 2px solid #409EFF; + background-color: #FFF; + border-radius: 50%; + -webkit-transition: .2s; + transition: .2s; + -webkit-user-select: none; + user-select: none +} + +.el-slider__button.dragging, .el-slider__button.hover, .el-slider__button:hover { + -webkit-transform: scale(1.2); + transform: scale(1.2) +} + +.el-slider__button.hover, .el-slider__button:hover { + cursor: -webkit-grab; + cursor: grab +} + +.el-slider__button.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.el-slider__stop { + height: 6px; + width: 6px; + border-radius: 100%; + background-color: #FFF; + transform: translateX(-50%) +} + +.el-slider__marks { + top: 0; + left: 12px; + width: 18px; + height: 100% +} + +.el-slider__marks-text { + position: absolute; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + font-size: 14px; + color: #909399; + margin-top: 15px +} + +.el-slider.is-vertical { + position: relative +} + +.el-slider.is-vertical .el-slider__runway { + width: 6px; + height: 100%; + margin: 0 16px +} + +.el-slider.is-vertical .el-slider__bar { + width: 6px; + height: auto; + border-radius: 0 0 3px 3px +} + +.el-slider.is-vertical .el-slider__button-wrapper { + top: auto; + left: -15px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.el-slider.is-vertical .el-slider__stop { + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.el-slider.is-vertical.el-slider--with-input { + padding-bottom: 58px +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input { + overflow: visible; + float: none; + position: absolute; + bottom: 22px; + width: 36px; + margin-top: 15px +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner { + text-align: center; + padding-left: 5px; + padding-right: 5px +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + top: 32px; + margin-top: -1px; + border: 1px solid #DCDFE6; + line-height: 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease { + width: 18px; + right: 18px; + border-bottom-left-radius: 4px +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + width: 19px; + border-bottom-right-radius: 4px +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase ~ .el-input .el-input__inner { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0 +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase { + border-color: #C0C4CC +} + +.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease, .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase { + border-color: #409EFF +} + +.el-slider.is-vertical .el-slider__marks-text { + margin-top: 0; + left: 15px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.el-loading-parent--relative { + position: relative !important +} + +.el-loading-parent--hidden { + overflow: hidden !important +} + +.el-loading-mask { + position: absolute; + z-index: 2000; + background-color: rgba(255, 255, 255, .9); + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.el-loading-mask.is-fullscreen { + position: fixed +} + +.el-loading-mask.is-fullscreen .el-loading-spinner { + margin-top: -25px +} + +.el-loading-mask.is-fullscreen .el-loading-spinner .circular { + height: 50px; + width: 50px +} + +.el-loading-spinner { + top: 50%; + margin-top: -21px; + width: 100%; + text-align: center; + position: absolute +} + +.el-col-pull-0, .el-col-pull-1, .el-col-pull-10, .el-col-pull-11, .el-col-pull-12, .el-col-pull-13, .el-col-pull-14, .el-col-pull-15, .el-col-pull-16, .el-col-pull-17, .el-col-pull-18, .el-col-pull-19, .el-col-pull-2, .el-col-pull-20, .el-col-pull-21, .el-col-pull-22, .el-col-pull-23, .el-col-pull-24, .el-col-pull-3, .el-col-pull-4, .el-col-pull-5, .el-col-pull-6, .el-col-pull-7, .el-col-pull-8, .el-col-pull-9, .el-col-push-0, .el-col-push-1, .el-col-push-10, .el-col-push-11, .el-col-push-12, .el-col-push-13, .el-col-push-14, .el-col-push-15, .el-col-push-16, .el-col-push-17, .el-col-push-18, .el-col-push-19, .el-col-push-2, .el-col-push-20, .el-col-push-21, .el-col-push-22, .el-col-push-23, .el-col-push-24, .el-col-push-3, .el-col-push-4, .el-col-push-5, .el-col-push-6, .el-col-push-7, .el-col-push-8, .el-col-push-9, .el-row, .el-upload-dragger, .el-upload-list__item { + position: relative +} + +.el-loading-spinner .el-loading-text { + color: #409EFF; + margin: 3px 0; + font-size: 14px +} + +.el-loading-spinner .circular { + height: 42px; + width: 42px; + -webkit-animation: loading-rotate 2s linear infinite; + animation: loading-rotate 2s linear infinite +} + +.el-loading-spinner .path { + -webkit-animation: loading-dash 1.5s ease-in-out infinite; + animation: loading-dash 1.5s ease-in-out infinite; + stroke-dasharray: 90, 150; + stroke-dashoffset: 0; + stroke-width: 2; + stroke: #409EFF; + stroke-linecap: round +} + +.el-loading-spinner i { + color: #409EFF +} + +@-webkit-keyframes loading-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes loading-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@-webkit-keyframes loading-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -40px + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -120px + } +} + +@keyframes loading-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -40px + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -120px + } +} + +.el-row { + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-row::after, .el-row::before { + display: table +} + +.el-row::after { + clear: both +} + +.el-row--flex { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.el-col-0, .el-row--flex:after, .el-row--flex:before { + display: none +} + +.el-row--flex.is-justify-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.el-row--flex.is-justify-end { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end +} + +.el-row--flex.is-justify-space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between +} + +.el-row--flex.is-justify-space-around { + -ms-flex-pack: distribute; + justify-content: space-around +} + +.el-row--flex.is-align-top { + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start +} + +.el-row--flex.is-align-middle { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-row--flex.is-align-bottom { + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end +} + +[class*=el-col-] { + float: left; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-col-0 { + width: 0% +} + +.el-col-pull-0 { + right: 0 +} + +.el-col-push-0 { + left: 0 +} + +.el-col-1 { + width: 4.16667% +} + +.el-col-offset-1 { + margin-left: 4.16667% +} + +.el-col-pull-1 { + right: 4.16667% +} + +.el-col-push-1 { + left: 4.16667% +} + +.el-col-2 { + width: 8.33333% +} + +.el-col-offset-2 { + margin-left: 8.33333% +} + +.el-col-pull-2 { + right: 8.33333% +} + +.el-col-push-2 { + left: 8.33333% +} + +.el-col-3 { + width: 12.5% +} + +.el-col-offset-3 { + margin-left: 12.5% +} + +.el-col-pull-3 { + right: 12.5% +} + +.el-col-push-3 { + left: 12.5% +} + +.el-col-4 { + width: 16.66667% +} + +.el-col-offset-4 { + margin-left: 16.66667% +} + +.el-col-pull-4 { + right: 16.66667% +} + +.el-col-push-4 { + left: 16.66667% +} + +.el-col-5 { + width: 20.83333% +} + +.el-col-offset-5 { + margin-left: 20.83333% +} + +.el-col-pull-5 { + right: 20.83333% +} + +.el-col-push-5 { + left: 20.83333% +} + +.el-col-6 { + width: 25% +} + +.el-col-offset-6 { + margin-left: 25% +} + +.el-col-pull-6 { + right: 25% +} + +.el-col-push-6 { + left: 25% +} + +.el-col-7 { + width: 29.16667% +} + +.el-col-offset-7 { + margin-left: 29.16667% +} + +.el-col-pull-7 { + right: 29.16667% +} + +.el-col-push-7 { + left: 29.16667% +} + +.el-col-8 { + width: 33.33333% +} + +.el-col-offset-8 { + margin-left: 33.33333% +} + +.el-col-pull-8 { + right: 33.33333% +} + +.el-col-push-8 { + left: 33.33333% +} + +.el-col-9 { + width: 37.5% +} + +.el-col-offset-9 { + margin-left: 37.5% +} + +.el-col-pull-9 { + right: 37.5% +} + +.el-col-push-9 { + left: 37.5% +} + +.el-col-10 { + width: 41.66667% +} + +.el-col-offset-10 { + margin-left: 41.66667% +} + +.el-col-pull-10 { + right: 41.66667% +} + +.el-col-push-10 { + left: 41.66667% +} + +.el-col-11 { + width: 45.83333% +} + +.el-col-offset-11 { + margin-left: 45.83333% +} + +.el-col-pull-11 { + right: 45.83333% +} + +.el-col-push-11 { + left: 45.83333% +} + +.el-col-12 { + width: 50% +} + +.el-col-offset-12 { + margin-left: 50% +} + +.el-col-pull-12 { + right: 50% +} + +.el-col-push-12 { + left: 50% +} + +.el-col-13 { + width: 54.16667% +} + +.el-col-offset-13 { + margin-left: 54.16667% +} + +.el-col-pull-13 { + right: 54.16667% +} + +.el-col-push-13 { + left: 54.16667% +} + +.el-col-14 { + width: 58.33333% +} + +.el-col-offset-14 { + margin-left: 58.33333% +} + +.el-col-pull-14 { + right: 58.33333% +} + +.el-col-push-14 { + left: 58.33333% +} + +.el-col-15 { + width: 62.5% +} + +.el-col-offset-15 { + margin-left: 62.5% +} + +.el-col-pull-15 { + right: 62.5% +} + +.el-col-push-15 { + left: 62.5% +} + +.el-col-16 { + width: 66.66667% +} + +.el-col-offset-16 { + margin-left: 66.66667% +} + +.el-col-pull-16 { + right: 66.66667% +} + +.el-col-push-16 { + left: 66.66667% +} + +.el-col-17 { + width: 70.83333% +} + +.el-col-offset-17 { + margin-left: 70.83333% +} + +.el-col-pull-17 { + right: 70.83333% +} + +.el-col-push-17 { + left: 70.83333% +} + +.el-col-18 { + width: 75% +} + +.el-col-offset-18 { + margin-left: 75% +} + +.el-col-pull-18 { + right: 75% +} + +.el-col-push-18 { + left: 75% +} + +.el-col-19 { + width: 79.16667% +} + +.el-col-offset-19 { + margin-left: 79.16667% +} + +.el-col-pull-19 { + right: 79.16667% +} + +.el-col-push-19 { + left: 79.16667% +} + +.el-col-20 { + width: 83.33333% +} + +.el-col-offset-20 { + margin-left: 83.33333% +} + +.el-col-pull-20 { + right: 83.33333% +} + +.el-col-push-20 { + left: 83.33333% +} + +.el-col-21 { + width: 87.5% +} + +.el-col-offset-21 { + margin-left: 87.5% +} + +.el-col-pull-21 { + right: 87.5% +} + +.el-col-push-21 { + left: 87.5% +} + +.el-col-22 { + width: 91.66667% +} + +.el-col-offset-22 { + margin-left: 91.66667% +} + +.el-col-pull-22 { + right: 91.66667% +} + +.el-col-push-22 { + left: 91.66667% +} + +.el-col-23 { + width: 95.83333% +} + +.el-col-offset-23 { + margin-left: 95.83333% +} + +.el-col-pull-23 { + right: 95.83333% +} + +.el-col-push-23 { + left: 95.83333% +} + +.el-col-24 { + width: 100% +} + +.el-col-offset-24 { + margin-left: 100% +} + +.el-col-pull-24 { + right: 100% +} + +.el-col-push-24 { + left: 100% +} + +@media only screen and (max-width: 767px) { + .el-col-xs-0 { + display: none; + width: 0% + } + + .el-col-xs-offset-0 { + margin-left: 0 + } + + .el-col-xs-pull-0 { + position: relative; + right: 0 + } + + .el-col-xs-push-0 { + position: relative; + left: 0 + } + + .el-col-xs-1 { + width: 4.16667% + } + + .el-col-xs-offset-1 { + margin-left: 4.16667% + } + + .el-col-xs-pull-1 { + position: relative; + right: 4.16667% + } + + .el-col-xs-push-1 { + position: relative; + left: 4.16667% + } + + .el-col-xs-2 { + width: 8.33333% + } + + .el-col-xs-offset-2 { + margin-left: 8.33333% + } + + .el-col-xs-pull-2 { + position: relative; + right: 8.33333% + } + + .el-col-xs-push-2 { + position: relative; + left: 8.33333% + } + + .el-col-xs-3 { + width: 12.5% + } + + .el-col-xs-offset-3 { + margin-left: 12.5% + } + + .el-col-xs-pull-3 { + position: relative; + right: 12.5% + } + + .el-col-xs-push-3 { + position: relative; + left: 12.5% + } + + .el-col-xs-4 { + width: 16.66667% + } + + .el-col-xs-offset-4 { + margin-left: 16.66667% + } + + .el-col-xs-pull-4 { + position: relative; + right: 16.66667% + } + + .el-col-xs-push-4 { + position: relative; + left: 16.66667% + } + + .el-col-xs-5 { + width: 20.83333% + } + + .el-col-xs-offset-5 { + margin-left: 20.83333% + } + + .el-col-xs-pull-5 { + position: relative; + right: 20.83333% + } + + .el-col-xs-push-5 { + position: relative; + left: 20.83333% + } + + .el-col-xs-6 { + width: 25% + } + + .el-col-xs-offset-6 { + margin-left: 25% + } + + .el-col-xs-pull-6 { + position: relative; + right: 25% + } + + .el-col-xs-push-6 { + position: relative; + left: 25% + } + + .el-col-xs-7 { + width: 29.16667% + } + + .el-col-xs-offset-7 { + margin-left: 29.16667% + } + + .el-col-xs-pull-7 { + position: relative; + right: 29.16667% + } + + .el-col-xs-push-7 { + position: relative; + left: 29.16667% + } + + .el-col-xs-8 { + width: 33.33333% + } + + .el-col-xs-offset-8 { + margin-left: 33.33333% + } + + .el-col-xs-pull-8 { + position: relative; + right: 33.33333% + } + + .el-col-xs-push-8 { + position: relative; + left: 33.33333% + } + + .el-col-xs-9 { + width: 37.5% + } + + .el-col-xs-offset-9 { + margin-left: 37.5% + } + + .el-col-xs-pull-9 { + position: relative; + right: 37.5% + } + + .el-col-xs-push-9 { + position: relative; + left: 37.5% + } + + .el-col-xs-10 { + width: 41.66667% + } + + .el-col-xs-offset-10 { + margin-left: 41.66667% + } + + .el-col-xs-pull-10 { + position: relative; + right: 41.66667% + } + + .el-col-xs-push-10 { + position: relative; + left: 41.66667% + } + + .el-col-xs-11 { + width: 45.83333% + } + + .el-col-xs-offset-11 { + margin-left: 45.83333% + } + + .el-col-xs-pull-11 { + position: relative; + right: 45.83333% + } + + .el-col-xs-push-11 { + position: relative; + left: 45.83333% + } + + .el-col-xs-12 { + width: 50% + } + + .el-col-xs-offset-12 { + margin-left: 50% + } + + .el-col-xs-pull-12 { + position: relative; + right: 50% + } + + .el-col-xs-push-12 { + position: relative; + left: 50% + } + + .el-col-xs-13 { + width: 54.16667% + } + + .el-col-xs-offset-13 { + margin-left: 54.16667% + } + + .el-col-xs-pull-13 { + position: relative; + right: 54.16667% + } + + .el-col-xs-push-13 { + position: relative; + left: 54.16667% + } + + .el-col-xs-14 { + width: 58.33333% + } + + .el-col-xs-offset-14 { + margin-left: 58.33333% + } + + .el-col-xs-pull-14 { + position: relative; + right: 58.33333% + } + + .el-col-xs-push-14 { + position: relative; + left: 58.33333% + } + + .el-col-xs-15 { + width: 62.5% + } + + .el-col-xs-offset-15 { + margin-left: 62.5% + } + + .el-col-xs-pull-15 { + position: relative; + right: 62.5% + } + + .el-col-xs-push-15 { + position: relative; + left: 62.5% + } + + .el-col-xs-16 { + width: 66.66667% + } + + .el-col-xs-offset-16 { + margin-left: 66.66667% + } + + .el-col-xs-pull-16 { + position: relative; + right: 66.66667% + } + + .el-col-xs-push-16 { + position: relative; + left: 66.66667% + } + + .el-col-xs-17 { + width: 70.83333% + } + + .el-col-xs-offset-17 { + margin-left: 70.83333% + } + + .el-col-xs-pull-17 { + position: relative; + right: 70.83333% + } + + .el-col-xs-push-17 { + position: relative; + left: 70.83333% + } + + .el-col-xs-18 { + width: 75% + } + + .el-col-xs-offset-18 { + margin-left: 75% + } + + .el-col-xs-pull-18 { + position: relative; + right: 75% + } + + .el-col-xs-push-18 { + position: relative; + left: 75% + } + + .el-col-xs-19 { + width: 79.16667% + } + + .el-col-xs-offset-19 { + margin-left: 79.16667% + } + + .el-col-xs-pull-19 { + position: relative; + right: 79.16667% + } + + .el-col-xs-push-19 { + position: relative; + left: 79.16667% + } + + .el-col-xs-20 { + width: 83.33333% + } + + .el-col-xs-offset-20 { + margin-left: 83.33333% + } + + .el-col-xs-pull-20 { + position: relative; + right: 83.33333% + } + + .el-col-xs-push-20 { + position: relative; + left: 83.33333% + } + + .el-col-xs-21 { + width: 87.5% + } + + .el-col-xs-offset-21 { + margin-left: 87.5% + } + + .el-col-xs-pull-21 { + position: relative; + right: 87.5% + } + + .el-col-xs-push-21 { + position: relative; + left: 87.5% + } + + .el-col-xs-22 { + width: 91.66667% + } + + .el-col-xs-offset-22 { + margin-left: 91.66667% + } + + .el-col-xs-pull-22 { + position: relative; + right: 91.66667% + } + + .el-col-xs-push-22 { + position: relative; + left: 91.66667% + } + + .el-col-xs-23 { + width: 95.83333% + } + + .el-col-xs-offset-23 { + margin-left: 95.83333% + } + + .el-col-xs-pull-23 { + position: relative; + right: 95.83333% + } + + .el-col-xs-push-23 { + position: relative; + left: 95.83333% + } + + .el-col-xs-24 { + width: 100% + } + + .el-col-xs-offset-24 { + margin-left: 100% + } + + .el-col-xs-pull-24 { + position: relative; + right: 100% + } + + .el-col-xs-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 768px) { + .el-col-sm-0 { + display: none; + width: 0% + } + + .el-col-sm-offset-0 { + margin-left: 0 + } + + .el-col-sm-pull-0 { + position: relative; + right: 0 + } + + .el-col-sm-push-0 { + position: relative; + left: 0 + } + + .el-col-sm-1 { + width: 4.16667% + } + + .el-col-sm-offset-1 { + margin-left: 4.16667% + } + + .el-col-sm-pull-1 { + position: relative; + right: 4.16667% + } + + .el-col-sm-push-1 { + position: relative; + left: 4.16667% + } + + .el-col-sm-2 { + width: 8.33333% + } + + .el-col-sm-offset-2 { + margin-left: 8.33333% + } + + .el-col-sm-pull-2 { + position: relative; + right: 8.33333% + } + + .el-col-sm-push-2 { + position: relative; + left: 8.33333% + } + + .el-col-sm-3 { + width: 12.5% + } + + .el-col-sm-offset-3 { + margin-left: 12.5% + } + + .el-col-sm-pull-3 { + position: relative; + right: 12.5% + } + + .el-col-sm-push-3 { + position: relative; + left: 12.5% + } + + .el-col-sm-4 { + width: 16.66667% + } + + .el-col-sm-offset-4 { + margin-left: 16.66667% + } + + .el-col-sm-pull-4 { + position: relative; + right: 16.66667% + } + + .el-col-sm-push-4 { + position: relative; + left: 16.66667% + } + + .el-col-sm-5 { + width: 20.83333% + } + + .el-col-sm-offset-5 { + margin-left: 20.83333% + } + + .el-col-sm-pull-5 { + position: relative; + right: 20.83333% + } + + .el-col-sm-push-5 { + position: relative; + left: 20.83333% + } + + .el-col-sm-6 { + width: 25% + } + + .el-col-sm-offset-6 { + margin-left: 25% + } + + .el-col-sm-pull-6 { + position: relative; + right: 25% + } + + .el-col-sm-push-6 { + position: relative; + left: 25% + } + + .el-col-sm-7 { + width: 29.16667% + } + + .el-col-sm-offset-7 { + margin-left: 29.16667% + } + + .el-col-sm-pull-7 { + position: relative; + right: 29.16667% + } + + .el-col-sm-push-7 { + position: relative; + left: 29.16667% + } + + .el-col-sm-8 { + width: 33.33333% + } + + .el-col-sm-offset-8 { + margin-left: 33.33333% + } + + .el-col-sm-pull-8 { + position: relative; + right: 33.33333% + } + + .el-col-sm-push-8 { + position: relative; + left: 33.33333% + } + + .el-col-sm-9 { + width: 37.5% + } + + .el-col-sm-offset-9 { + margin-left: 37.5% + } + + .el-col-sm-pull-9 { + position: relative; + right: 37.5% + } + + .el-col-sm-push-9 { + position: relative; + left: 37.5% + } + + .el-col-sm-10 { + width: 41.66667% + } + + .el-col-sm-offset-10 { + margin-left: 41.66667% + } + + .el-col-sm-pull-10 { + position: relative; + right: 41.66667% + } + + .el-col-sm-push-10 { + position: relative; + left: 41.66667% + } + + .el-col-sm-11 { + width: 45.83333% + } + + .el-col-sm-offset-11 { + margin-left: 45.83333% + } + + .el-col-sm-pull-11 { + position: relative; + right: 45.83333% + } + + .el-col-sm-push-11 { + position: relative; + left: 45.83333% + } + + .el-col-sm-12 { + width: 50% + } + + .el-col-sm-offset-12 { + margin-left: 50% + } + + .el-col-sm-pull-12 { + position: relative; + right: 50% + } + + .el-col-sm-push-12 { + position: relative; + left: 50% + } + + .el-col-sm-13 { + width: 54.16667% + } + + .el-col-sm-offset-13 { + margin-left: 54.16667% + } + + .el-col-sm-pull-13 { + position: relative; + right: 54.16667% + } + + .el-col-sm-push-13 { + position: relative; + left: 54.16667% + } + + .el-col-sm-14 { + width: 58.33333% + } + + .el-col-sm-offset-14 { + margin-left: 58.33333% + } + + .el-col-sm-pull-14 { + position: relative; + right: 58.33333% + } + + .el-col-sm-push-14 { + position: relative; + left: 58.33333% + } + + .el-col-sm-15 { + width: 62.5% + } + + .el-col-sm-offset-15 { + margin-left: 62.5% + } + + .el-col-sm-pull-15 { + position: relative; + right: 62.5% + } + + .el-col-sm-push-15 { + position: relative; + left: 62.5% + } + + .el-col-sm-16 { + width: 66.66667% + } + + .el-col-sm-offset-16 { + margin-left: 66.66667% + } + + .el-col-sm-pull-16 { + position: relative; + right: 66.66667% + } + + .el-col-sm-push-16 { + position: relative; + left: 66.66667% + } + + .el-col-sm-17 { + width: 70.83333% + } + + .el-col-sm-offset-17 { + margin-left: 70.83333% + } + + .el-col-sm-pull-17 { + position: relative; + right: 70.83333% + } + + .el-col-sm-push-17 { + position: relative; + left: 70.83333% + } + + .el-col-sm-18 { + width: 75% + } + + .el-col-sm-offset-18 { + margin-left: 75% + } + + .el-col-sm-pull-18 { + position: relative; + right: 75% + } + + .el-col-sm-push-18 { + position: relative; + left: 75% + } + + .el-col-sm-19 { + width: 79.16667% + } + + .el-col-sm-offset-19 { + margin-left: 79.16667% + } + + .el-col-sm-pull-19 { + position: relative; + right: 79.16667% + } + + .el-col-sm-push-19 { + position: relative; + left: 79.16667% + } + + .el-col-sm-20 { + width: 83.33333% + } + + .el-col-sm-offset-20 { + margin-left: 83.33333% + } + + .el-col-sm-pull-20 { + position: relative; + right: 83.33333% + } + + .el-col-sm-push-20 { + position: relative; + left: 83.33333% + } + + .el-col-sm-21 { + width: 87.5% + } + + .el-col-sm-offset-21 { + margin-left: 87.5% + } + + .el-col-sm-pull-21 { + position: relative; + right: 87.5% + } + + .el-col-sm-push-21 { + position: relative; + left: 87.5% + } + + .el-col-sm-22 { + width: 91.66667% + } + + .el-col-sm-offset-22 { + margin-left: 91.66667% + } + + .el-col-sm-pull-22 { + position: relative; + right: 91.66667% + } + + .el-col-sm-push-22 { + position: relative; + left: 91.66667% + } + + .el-col-sm-23 { + width: 95.83333% + } + + .el-col-sm-offset-23 { + margin-left: 95.83333% + } + + .el-col-sm-pull-23 { + position: relative; + right: 95.83333% + } + + .el-col-sm-push-23 { + position: relative; + left: 95.83333% + } + + .el-col-sm-24 { + width: 100% + } + + .el-col-sm-offset-24 { + margin-left: 100% + } + + .el-col-sm-pull-24 { + position: relative; + right: 100% + } + + .el-col-sm-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 992px) { + .el-col-md-0 { + display: none; + width: 0% + } + + .el-col-md-offset-0 { + margin-left: 0 + } + + .el-col-md-pull-0 { + position: relative; + right: 0 + } + + .el-col-md-push-0 { + position: relative; + left: 0 + } + + .el-col-md-1 { + width: 4.16667% + } + + .el-col-md-offset-1 { + margin-left: 4.16667% + } + + .el-col-md-pull-1 { + position: relative; + right: 4.16667% + } + + .el-col-md-push-1 { + position: relative; + left: 4.16667% + } + + .el-col-md-2 { + width: 8.33333% + } + + .el-col-md-offset-2 { + margin-left: 8.33333% + } + + .el-col-md-pull-2 { + position: relative; + right: 8.33333% + } + + .el-col-md-push-2 { + position: relative; + left: 8.33333% + } + + .el-col-md-3 { + width: 12.5% + } + + .el-col-md-offset-3 { + margin-left: 12.5% + } + + .el-col-md-pull-3 { + position: relative; + right: 12.5% + } + + .el-col-md-push-3 { + position: relative; + left: 12.5% + } + + .el-col-md-4 { + width: 16.66667% + } + + .el-col-md-offset-4 { + margin-left: 16.66667% + } + + .el-col-md-pull-4 { + position: relative; + right: 16.66667% + } + + .el-col-md-push-4 { + position: relative; + left: 16.66667% + } + + .el-col-md-5 { + width: 20.83333% + } + + .el-col-md-offset-5 { + margin-left: 20.83333% + } + + .el-col-md-pull-5 { + position: relative; + right: 20.83333% + } + + .el-col-md-push-5 { + position: relative; + left: 20.83333% + } + + .el-col-md-6 { + width: 25% + } + + .el-col-md-offset-6 { + margin-left: 25% + } + + .el-col-md-pull-6 { + position: relative; + right: 25% + } + + .el-col-md-push-6 { + position: relative; + left: 25% + } + + .el-col-md-7 { + width: 29.16667% + } + + .el-col-md-offset-7 { + margin-left: 29.16667% + } + + .el-col-md-pull-7 { + position: relative; + right: 29.16667% + } + + .el-col-md-push-7 { + position: relative; + left: 29.16667% + } + + .el-col-md-8 { + width: 33.33333% + } + + .el-col-md-offset-8 { + margin-left: 33.33333% + } + + .el-col-md-pull-8 { + position: relative; + right: 33.33333% + } + + .el-col-md-push-8 { + position: relative; + left: 33.33333% + } + + .el-col-md-9 { + width: 37.5% + } + + .el-col-md-offset-9 { + margin-left: 37.5% + } + + .el-col-md-pull-9 { + position: relative; + right: 37.5% + } + + .el-col-md-push-9 { + position: relative; + left: 37.5% + } + + .el-col-md-10 { + width: 41.66667% + } + + .el-col-md-offset-10 { + margin-left: 41.66667% + } + + .el-col-md-pull-10 { + position: relative; + right: 41.66667% + } + + .el-col-md-push-10 { + position: relative; + left: 41.66667% + } + + .el-col-md-11 { + width: 45.83333% + } + + .el-col-md-offset-11 { + margin-left: 45.83333% + } + + .el-col-md-pull-11 { + position: relative; + right: 45.83333% + } + + .el-col-md-push-11 { + position: relative; + left: 45.83333% + } + + .el-col-md-12 { + width: 50% + } + + .el-col-md-offset-12 { + margin-left: 50% + } + + .el-col-md-pull-12 { + position: relative; + right: 50% + } + + .el-col-md-push-12 { + position: relative; + left: 50% + } + + .el-col-md-13 { + width: 54.16667% + } + + .el-col-md-offset-13 { + margin-left: 54.16667% + } + + .el-col-md-pull-13 { + position: relative; + right: 54.16667% + } + + .el-col-md-push-13 { + position: relative; + left: 54.16667% + } + + .el-col-md-14 { + width: 58.33333% + } + + .el-col-md-offset-14 { + margin-left: 58.33333% + } + + .el-col-md-pull-14 { + position: relative; + right: 58.33333% + } + + .el-col-md-push-14 { + position: relative; + left: 58.33333% + } + + .el-col-md-15 { + width: 62.5% + } + + .el-col-md-offset-15 { + margin-left: 62.5% + } + + .el-col-md-pull-15 { + position: relative; + right: 62.5% + } + + .el-col-md-push-15 { + position: relative; + left: 62.5% + } + + .el-col-md-16 { + width: 66.66667% + } + + .el-col-md-offset-16 { + margin-left: 66.66667% + } + + .el-col-md-pull-16 { + position: relative; + right: 66.66667% + } + + .el-col-md-push-16 { + position: relative; + left: 66.66667% + } + + .el-col-md-17 { + width: 70.83333% + } + + .el-col-md-offset-17 { + margin-left: 70.83333% + } + + .el-col-md-pull-17 { + position: relative; + right: 70.83333% + } + + .el-col-md-push-17 { + position: relative; + left: 70.83333% + } + + .el-col-md-18 { + width: 75% + } + + .el-col-md-offset-18 { + margin-left: 75% + } + + .el-col-md-pull-18 { + position: relative; + right: 75% + } + + .el-col-md-push-18 { + position: relative; + left: 75% + } + + .el-col-md-19 { + width: 79.16667% + } + + .el-col-md-offset-19 { + margin-left: 79.16667% + } + + .el-col-md-pull-19 { + position: relative; + right: 79.16667% + } + + .el-col-md-push-19 { + position: relative; + left: 79.16667% + } + + .el-col-md-20 { + width: 83.33333% + } + + .el-col-md-offset-20 { + margin-left: 83.33333% + } + + .el-col-md-pull-20 { + position: relative; + right: 83.33333% + } + + .el-col-md-push-20 { + position: relative; + left: 83.33333% + } + + .el-col-md-21 { + width: 87.5% + } + + .el-col-md-offset-21 { + margin-left: 87.5% + } + + .el-col-md-pull-21 { + position: relative; + right: 87.5% + } + + .el-col-md-push-21 { + position: relative; + left: 87.5% + } + + .el-col-md-22 { + width: 91.66667% + } + + .el-col-md-offset-22 { + margin-left: 91.66667% + } + + .el-col-md-pull-22 { + position: relative; + right: 91.66667% + } + + .el-col-md-push-22 { + position: relative; + left: 91.66667% + } + + .el-col-md-23 { + width: 95.83333% + } + + .el-col-md-offset-23 { + margin-left: 95.83333% + } + + .el-col-md-pull-23 { + position: relative; + right: 95.83333% + } + + .el-col-md-push-23 { + position: relative; + left: 95.83333% + } + + .el-col-md-24 { + width: 100% + } + + .el-col-md-offset-24 { + margin-left: 100% + } + + .el-col-md-pull-24 { + position: relative; + right: 100% + } + + .el-col-md-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1200px) { + .el-col-lg-0 { + display: none; + width: 0% + } + + .el-col-lg-offset-0 { + margin-left: 0 + } + + .el-col-lg-pull-0 { + position: relative; + right: 0 + } + + .el-col-lg-push-0 { + position: relative; + left: 0 + } + + .el-col-lg-1 { + width: 4.16667% + } + + .el-col-lg-offset-1 { + margin-left: 4.16667% + } + + .el-col-lg-pull-1 { + position: relative; + right: 4.16667% + } + + .el-col-lg-push-1 { + position: relative; + left: 4.16667% + } + + .el-col-lg-2 { + width: 8.33333% + } + + .el-col-lg-offset-2 { + margin-left: 8.33333% + } + + .el-col-lg-pull-2 { + position: relative; + right: 8.33333% + } + + .el-col-lg-push-2 { + position: relative; + left: 8.33333% + } + + .el-col-lg-3 { + width: 12.5% + } + + .el-col-lg-offset-3 { + margin-left: 12.5% + } + + .el-col-lg-pull-3 { + position: relative; + right: 12.5% + } + + .el-col-lg-push-3 { + position: relative; + left: 12.5% + } + + .el-col-lg-4 { + width: 16.66667% + } + + .el-col-lg-offset-4 { + margin-left: 16.66667% + } + + .el-col-lg-pull-4 { + position: relative; + right: 16.66667% + } + + .el-col-lg-push-4 { + position: relative; + left: 16.66667% + } + + .el-col-lg-5 { + width: 20.83333% + } + + .el-col-lg-offset-5 { + margin-left: 20.83333% + } + + .el-col-lg-pull-5 { + position: relative; + right: 20.83333% + } + + .el-col-lg-push-5 { + position: relative; + left: 20.83333% + } + + .el-col-lg-6 { + width: 25% + } + + .el-col-lg-offset-6 { + margin-left: 25% + } + + .el-col-lg-pull-6 { + position: relative; + right: 25% + } + + .el-col-lg-push-6 { + position: relative; + left: 25% + } + + .el-col-lg-7 { + width: 29.16667% + } + + .el-col-lg-offset-7 { + margin-left: 29.16667% + } + + .el-col-lg-pull-7 { + position: relative; + right: 29.16667% + } + + .el-col-lg-push-7 { + position: relative; + left: 29.16667% + } + + .el-col-lg-8 { + width: 33.33333% + } + + .el-col-lg-offset-8 { + margin-left: 33.33333% + } + + .el-col-lg-pull-8 { + position: relative; + right: 33.33333% + } + + .el-col-lg-push-8 { + position: relative; + left: 33.33333% + } + + .el-col-lg-9 { + width: 37.5% + } + + .el-col-lg-offset-9 { + margin-left: 37.5% + } + + .el-col-lg-pull-9 { + position: relative; + right: 37.5% + } + + .el-col-lg-push-9 { + position: relative; + left: 37.5% + } + + .el-col-lg-10 { + width: 41.66667% + } + + .el-col-lg-offset-10 { + margin-left: 41.66667% + } + + .el-col-lg-pull-10 { + position: relative; + right: 41.66667% + } + + .el-col-lg-push-10 { + position: relative; + left: 41.66667% + } + + .el-col-lg-11 { + width: 45.83333% + } + + .el-col-lg-offset-11 { + margin-left: 45.83333% + } + + .el-col-lg-pull-11 { + position: relative; + right: 45.83333% + } + + .el-col-lg-push-11 { + position: relative; + left: 45.83333% + } + + .el-col-lg-12 { + width: 50% + } + + .el-col-lg-offset-12 { + margin-left: 50% + } + + .el-col-lg-pull-12 { + position: relative; + right: 50% + } + + .el-col-lg-push-12 { + position: relative; + left: 50% + } + + .el-col-lg-13 { + width: 54.16667% + } + + .el-col-lg-offset-13 { + margin-left: 54.16667% + } + + .el-col-lg-pull-13 { + position: relative; + right: 54.16667% + } + + .el-col-lg-push-13 { + position: relative; + left: 54.16667% + } + + .el-col-lg-14 { + width: 58.33333% + } + + .el-col-lg-offset-14 { + margin-left: 58.33333% + } + + .el-col-lg-pull-14 { + position: relative; + right: 58.33333% + } + + .el-col-lg-push-14 { + position: relative; + left: 58.33333% + } + + .el-col-lg-15 { + width: 62.5% + } + + .el-col-lg-offset-15 { + margin-left: 62.5% + } + + .el-col-lg-pull-15 { + position: relative; + right: 62.5% + } + + .el-col-lg-push-15 { + position: relative; + left: 62.5% + } + + .el-col-lg-16 { + width: 66.66667% + } + + .el-col-lg-offset-16 { + margin-left: 66.66667% + } + + .el-col-lg-pull-16 { + position: relative; + right: 66.66667% + } + + .el-col-lg-push-16 { + position: relative; + left: 66.66667% + } + + .el-col-lg-17 { + width: 70.83333% + } + + .el-col-lg-offset-17 { + margin-left: 70.83333% + } + + .el-col-lg-pull-17 { + position: relative; + right: 70.83333% + } + + .el-col-lg-push-17 { + position: relative; + left: 70.83333% + } + + .el-col-lg-18 { + width: 75% + } + + .el-col-lg-offset-18 { + margin-left: 75% + } + + .el-col-lg-pull-18 { + position: relative; + right: 75% + } + + .el-col-lg-push-18 { + position: relative; + left: 75% + } + + .el-col-lg-19 { + width: 79.16667% + } + + .el-col-lg-offset-19 { + margin-left: 79.16667% + } + + .el-col-lg-pull-19 { + position: relative; + right: 79.16667% + } + + .el-col-lg-push-19 { + position: relative; + left: 79.16667% + } + + .el-col-lg-20 { + width: 83.33333% + } + + .el-col-lg-offset-20 { + margin-left: 83.33333% + } + + .el-col-lg-pull-20 { + position: relative; + right: 83.33333% + } + + .el-col-lg-push-20 { + position: relative; + left: 83.33333% + } + + .el-col-lg-21 { + width: 87.5% + } + + .el-col-lg-offset-21 { + margin-left: 87.5% + } + + .el-col-lg-pull-21 { + position: relative; + right: 87.5% + } + + .el-col-lg-push-21 { + position: relative; + left: 87.5% + } + + .el-col-lg-22 { + width: 91.66667% + } + + .el-col-lg-offset-22 { + margin-left: 91.66667% + } + + .el-col-lg-pull-22 { + position: relative; + right: 91.66667% + } + + .el-col-lg-push-22 { + position: relative; + left: 91.66667% + } + + .el-col-lg-23 { + width: 95.83333% + } + + .el-col-lg-offset-23 { + margin-left: 95.83333% + } + + .el-col-lg-pull-23 { + position: relative; + right: 95.83333% + } + + .el-col-lg-push-23 { + position: relative; + left: 95.83333% + } + + .el-col-lg-24 { + width: 100% + } + + .el-col-lg-offset-24 { + margin-left: 100% + } + + .el-col-lg-pull-24 { + position: relative; + right: 100% + } + + .el-col-lg-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1920px) { + .el-col-xl-0 { + display: none; + width: 0% + } + + .el-col-xl-offset-0 { + margin-left: 0 + } + + .el-col-xl-pull-0 { + position: relative; + right: 0 + } + + .el-col-xl-push-0 { + position: relative; + left: 0 + } + + .el-col-xl-1 { + width: 4.16667% + } + + .el-col-xl-offset-1 { + margin-left: 4.16667% + } + + .el-col-xl-pull-1 { + position: relative; + right: 4.16667% + } + + .el-col-xl-push-1 { + position: relative; + left: 4.16667% + } + + .el-col-xl-2 { + width: 8.33333% + } + + .el-col-xl-offset-2 { + margin-left: 8.33333% + } + + .el-col-xl-pull-2 { + position: relative; + right: 8.33333% + } + + .el-col-xl-push-2 { + position: relative; + left: 8.33333% + } + + .el-col-xl-3 { + width: 12.5% + } + + .el-col-xl-offset-3 { + margin-left: 12.5% + } + + .el-col-xl-pull-3 { + position: relative; + right: 12.5% + } + + .el-col-xl-push-3 { + position: relative; + left: 12.5% + } + + .el-col-xl-4 { + width: 16.66667% + } + + .el-col-xl-offset-4 { + margin-left: 16.66667% + } + + .el-col-xl-pull-4 { + position: relative; + right: 16.66667% + } + + .el-col-xl-push-4 { + position: relative; + left: 16.66667% + } + + .el-col-xl-5 { + width: 20.83333% + } + + .el-col-xl-offset-5 { + margin-left: 20.83333% + } + + .el-col-xl-pull-5 { + position: relative; + right: 20.83333% + } + + .el-col-xl-push-5 { + position: relative; + left: 20.83333% + } + + .el-col-xl-6 { + width: 25% + } + + .el-col-xl-offset-6 { + margin-left: 25% + } + + .el-col-xl-pull-6 { + position: relative; + right: 25% + } + + .el-col-xl-push-6 { + position: relative; + left: 25% + } + + .el-col-xl-7 { + width: 29.16667% + } + + .el-col-xl-offset-7 { + margin-left: 29.16667% + } + + .el-col-xl-pull-7 { + position: relative; + right: 29.16667% + } + + .el-col-xl-push-7 { + position: relative; + left: 29.16667% + } + + .el-col-xl-8 { + width: 33.33333% + } + + .el-col-xl-offset-8 { + margin-left: 33.33333% + } + + .el-col-xl-pull-8 { + position: relative; + right: 33.33333% + } + + .el-col-xl-push-8 { + position: relative; + left: 33.33333% + } + + .el-col-xl-9 { + width: 37.5% + } + + .el-col-xl-offset-9 { + margin-left: 37.5% + } + + .el-col-xl-pull-9 { + position: relative; + right: 37.5% + } + + .el-col-xl-push-9 { + position: relative; + left: 37.5% + } + + .el-col-xl-10 { + width: 41.66667% + } + + .el-col-xl-offset-10 { + margin-left: 41.66667% + } + + .el-col-xl-pull-10 { + position: relative; + right: 41.66667% + } + + .el-col-xl-push-10 { + position: relative; + left: 41.66667% + } + + .el-col-xl-11 { + width: 45.83333% + } + + .el-col-xl-offset-11 { + margin-left: 45.83333% + } + + .el-col-xl-pull-11 { + position: relative; + right: 45.83333% + } + + .el-col-xl-push-11 { + position: relative; + left: 45.83333% + } + + .el-col-xl-12 { + width: 50% + } + + .el-col-xl-offset-12 { + margin-left: 50% + } + + .el-col-xl-pull-12 { + position: relative; + right: 50% + } + + .el-col-xl-push-12 { + position: relative; + left: 50% + } + + .el-col-xl-13 { + width: 54.16667% + } + + .el-col-xl-offset-13 { + margin-left: 54.16667% + } + + .el-col-xl-pull-13 { + position: relative; + right: 54.16667% + } + + .el-col-xl-push-13 { + position: relative; + left: 54.16667% + } + + .el-col-xl-14 { + width: 58.33333% + } + + .el-col-xl-offset-14 { + margin-left: 58.33333% + } + + .el-col-xl-pull-14 { + position: relative; + right: 58.33333% + } + + .el-col-xl-push-14 { + position: relative; + left: 58.33333% + } + + .el-col-xl-15 { + width: 62.5% + } + + .el-col-xl-offset-15 { + margin-left: 62.5% + } + + .el-col-xl-pull-15 { + position: relative; + right: 62.5% + } + + .el-col-xl-push-15 { + position: relative; + left: 62.5% + } + + .el-col-xl-16 { + width: 66.66667% + } + + .el-col-xl-offset-16 { + margin-left: 66.66667% + } + + .el-col-xl-pull-16 { + position: relative; + right: 66.66667% + } + + .el-col-xl-push-16 { + position: relative; + left: 66.66667% + } + + .el-col-xl-17 { + width: 70.83333% + } + + .el-col-xl-offset-17 { + margin-left: 70.83333% + } + + .el-col-xl-pull-17 { + position: relative; + right: 70.83333% + } + + .el-col-xl-push-17 { + position: relative; + left: 70.83333% + } + + .el-col-xl-18 { + width: 75% + } + + .el-col-xl-offset-18 { + margin-left: 75% + } + + .el-col-xl-pull-18 { + position: relative; + right: 75% + } + + .el-col-xl-push-18 { + position: relative; + left: 75% + } + + .el-col-xl-19 { + width: 79.16667% + } + + .el-col-xl-offset-19 { + margin-left: 79.16667% + } + + .el-col-xl-pull-19 { + position: relative; + right: 79.16667% + } + + .el-col-xl-push-19 { + position: relative; + left: 79.16667% + } + + .el-col-xl-20 { + width: 83.33333% + } + + .el-col-xl-offset-20 { + margin-left: 83.33333% + } + + .el-col-xl-pull-20 { + position: relative; + right: 83.33333% + } + + .el-col-xl-push-20 { + position: relative; + left: 83.33333% + } + + .el-col-xl-21 { + width: 87.5% + } + + .el-col-xl-offset-21 { + margin-left: 87.5% + } + + .el-col-xl-pull-21 { + position: relative; + right: 87.5% + } + + .el-col-xl-push-21 { + position: relative; + left: 87.5% + } + + .el-col-xl-22 { + width: 91.66667% + } + + .el-col-xl-offset-22 { + margin-left: 91.66667% + } + + .el-col-xl-pull-22 { + position: relative; + right: 91.66667% + } + + .el-col-xl-push-22 { + position: relative; + left: 91.66667% + } + + .el-col-xl-23 { + width: 95.83333% + } + + .el-col-xl-offset-23 { + margin-left: 95.83333% + } + + .el-col-xl-pull-23 { + position: relative; + right: 95.83333% + } + + .el-col-xl-push-23 { + position: relative; + left: 95.83333% + } + + .el-col-xl-24 { + width: 100% + } + + .el-col-xl-offset-24 { + margin-left: 100% + } + + .el-col-xl-pull-24 { + position: relative; + right: 100% + } + + .el-col-xl-push-24 { + position: relative; + left: 100% + } +} + +@-webkit-keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.el-upload { + display: inline-block; + text-align: center; + cursor: pointer; + outline: 0 +} + +.el-upload__input { + display: none +} + +.el-upload__tip { + font-size: 12px; + color: #606266; + margin-top: 7px +} + +.el-upload iframe { + position: absolute; + z-index: -1; + top: 0; + left: 0; + filter: alpha(opacity=0) +} + +.el-upload--picture-card { + background-color: #fbfdff; + border: 1px dashed #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + cursor: pointer; + line-height: 146px; + vertical-align: top +} + +.el-upload--picture-card i { + font-size: 28px; + color: #8c939d +} + +.el-upload--picture-card:hover, .el-upload:focus { + border-color: #409EFF; + color: #409EFF +} + +.el-upload:focus .el-upload-dragger { + border-color: #409EFF +} + +.el-upload-dragger { + background-color: #fff; + border: 1px dashed #d9d9d9; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 360px; + height: 180px; + text-align: center; + cursor: pointer; + overflow: hidden +} + +.el-upload-dragger .el-icon-upload { + font-size: 67px; + color: #C0C4CC; + margin: 40px 0 16px; + line-height: 50px +} + +.el-upload-dragger + .el-upload__tip { + text-align: center +} + +.el-upload-dragger ~ .el-upload__files { + border-top: 1px solid #DCDFE6; + margin-top: 7px; + padding-top: 5px +} + +.el-upload-dragger .el-upload__text { + color: #606266; + font-size: 14px; + text-align: center +} + +.el-upload-dragger .el-upload__text em { + color: #409EFF; + font-style: normal +} + +.el-upload-dragger:hover { + border-color: #409EFF +} + +.el-upload-dragger.is-dragover { + background-color: rgba(32, 159, 255, .06); + border: 2px dashed #409EFF +} + +.el-upload-list { + margin: 0; + padding: 0; + list-style: none +} + +.el-upload-list__item { + -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); + transition: all .5s cubic-bezier(.55, 0, .1, 1); + font-size: 14px; + color: #606266; + line-height: 1.8; + margin-top: 5px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + width: 100% +} + +.el-upload-list__item .el-progress { + position: absolute; + top: 20px; + width: 100% +} + +.el-upload-list__item .el-progress__text { + position: absolute; + right: 0; + top: -13px +} + +.el-upload-list__item .el-progress-bar { + margin-right: 0; + padding-right: 0 +} + +.el-upload-list__item:first-child { + margin-top: 10px +} + +.el-upload-list__item .el-icon-upload-success { + color: #67C23A +} + +.el-upload-list__item .el-icon-close { + display: none; + position: absolute; + top: 5px; + right: 5px; + cursor: pointer; + opacity: .75; + color: #606266 +} + +.el-upload-list__item .el-icon-close:hover { + opacity: 1 +} + +.el-upload-list__item .el-icon-close-tip { + display: none; + position: absolute; + top: 5px; + right: 5px; + font-size: 12px; + cursor: pointer; + opacity: 1; + color: #409EFF +} + +.el-upload-list__item:hover .el-icon-close { + display: inline-block +} + +.el-upload-list__item:hover .el-progress__text { + display: none +} + +.el-upload-list__item.is-success .el-upload-list__item-status-label { + display: block +} + +.el-upload-list__item.is-success .el-upload-list__item-name:focus, .el-upload-list__item.is-success .el-upload-list__item-name:hover { + color: #409EFF; + cursor: pointer +} + +.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip { + display: inline-block +} + +.el-upload-list__item.is-success:active, .el-upload-list__item.is-success:not(.focusing):focus { + outline-width: 0 +} + +.el-upload-list__item.is-success:active .el-icon-close-tip, .el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .el-upload-list__item.is-success:hover .el-upload-list__item-status-label, .el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip { + display: none +} + +.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label { + display: block +} + +.el-upload-list__item-name { + color: #606266; + display: block; + margin-right: 40px; + overflow: hidden; + padding-left: 4px; + text-overflow: ellipsis; + -webkit-transition: color .3s; + transition: color .3s; + white-space: nowrap +} + +.el-upload-list__item-name [class^=el-icon] { + height: 100%; + margin-right: 7px; + color: #909399; + line-height: inherit +} + +.el-upload-list__item-status-label { + position: absolute; + right: 5px; + top: 0; + line-height: inherit; + display: none +} + +.el-upload-list__item-delete { + position: absolute; + right: 10px; + top: 0; + font-size: 12px; + color: #606266; + display: none +} + +.el-upload-list__item-delete:hover { + color: #409EFF +} + +.el-upload-list--picture-card { + margin: 0; + display: inline; + vertical-align: top +} + +.el-upload-list--picture-card .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + margin: 0 8px 8px 0; + display: inline-block +} + +.el-upload-list--picture-card .el-upload-list__item .el-icon-check, .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check { + color: #FFF +} + +.el-upload-list--picture-card .el-upload-list__item .el-icon-close, .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label { + display: none +} + +.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text { + display: block +} + +.el-upload-list--picture-card .el-upload-list__item-name { + display: none +} + +.el-upload-list--picture-card .el-upload-list__item-thumbnail { + width: 100%; + height: 100% +} + +.el-upload-list--picture-card .el-upload-list__item-status-label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.el-upload-list--picture-card .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.el-upload-list--picture-card .el-upload-list__item-actions { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.el-upload-list--picture-card .el-upload-list__item-actions::after { + display: inline-block; + height: 100%; + vertical-align: middle +} + +.el-upload-list--picture-card .el-upload-list__item-actions span { + display: none; + cursor: pointer +} + +.el-upload-list--picture-card .el-upload-list__item-actions span + span { + margin-left: 15px +} + +.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete { + position: static; + font-size: inherit; + color: inherit +} + +.el-upload-list--picture-card .el-upload-list__item-actions:hover { + opacity: 1 +} + +.el-upload-list--picture-card .el-upload-list__item-actions:hover span { + display: inline-block +} + +.el-upload-list--picture-card .el-progress { + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + bottom: auto; + width: 126px +} + +.el-upload-list--picture-card .el-progress .el-progress__text { + top: 50% +} + +.el-upload-list--picture .el-upload-list__item { + overflow: hidden; + z-index: 0; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-top: 10px; + padding: 10px 10px 10px 90px; + height: 92px +} + +.el-upload-list--picture .el-upload-list__item .el-icon-check, .el-upload-list--picture .el-upload-list__item .el-icon-circle-check { + color: #FFF +} + +.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label { + background: 0 0; + -webkit-box-shadow: none; + box-shadow: none; + top: -2px; + right: -12px +} + +.el-upload-list--picture .el-upload-list__item:hover .el-progress__text { + display: block +} + +.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name { + line-height: 70px; + margin-top: 0 +} + +.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i { + display: none +} + +.el-upload-list--picture .el-upload-list__item-thumbnail { + vertical-align: middle; + display: inline-block; + width: 70px; + height: 70px; + float: left; + position: relative; + z-index: 1; + margin-left: -80px; + background-color: #FFF +} + +.el-upload-list--picture .el-upload-list__item-name { + display: block; + margin-top: 20px +} + +.el-upload-list--picture .el-upload-list__item-name i { + font-size: 70px; + line-height: 1; + position: absolute; + left: 9px; + top: 10px +} + +.el-upload-list--picture .el-upload-list__item-status-label { + position: absolute; + right: -17px; + top: -7px; + width: 46px; + height: 26px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 1px 1px #ccc; + box-shadow: 0 1px 1px #ccc +} + +.el-upload-list--picture .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 12px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.el-upload-list--picture .el-progress { + position: relative; + top: -7px +} + +.el-upload-cover { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 10; + cursor: default +} + +.el-upload-cover::after { + display: inline-block; + height: 100%; + vertical-align: middle +} + +.el-upload-cover img { + display: block; + width: 100%; + height: 100% +} + +.el-upload-cover__label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.el-upload-cover__label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + color: #fff +} + +.el-upload-cover__progress { + display: inline-block; + vertical-align: middle; + position: static; + width: 243px +} + +.el-upload-cover__progress + .el-upload__inner { + opacity: 0 +} + +.el-upload-cover__content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.el-upload-cover__interact { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, .72); + text-align: center +} + +.el-upload-cover__interact .btn { + display: inline-block; + color: #FFF; + font-size: 14px; + cursor: pointer; + vertical-align: middle; + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + margin-top: 60px +} + +.el-upload-cover__interact .btn span { + opacity: 0; + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear +} + +.el-upload-cover__interact .btn:not(:first-child) { + margin-left: 35px +} + +.el-upload-cover__interact .btn:hover { + -webkit-transform: translateY(-13px); + transform: translateY(-13px) +} + +.el-upload-cover__interact .btn:hover span { + opacity: 1 +} + +.el-upload-cover__interact .btn i { + color: #FFF; + display: block; + font-size: 24px; + line-height: inherit; + margin: 0 auto 5px +} + +.el-upload-cover__title { + position: absolute; + bottom: 0; + left: 0; + background-color: #FFF; + height: 36px; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 400; + text-align: left; + padding: 0 10px; + margin: 0; + line-height: 36px; + font-size: 14px; + color: #303133 +} + +.el-upload-cover + .el-upload__inner { + opacity: 0; + position: relative; + z-index: 1 +} + +.el-progress { + position: relative; + line-height: 1 +} + +.el-progress__text { + font-size: 14px; + color: #606266; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1 +} + +.el-progress__text i { + vertical-align: middle; + display: block +} + +.el-progress--circle, .el-progress--dashboard { + display: inline-block +} + +.el-progress--circle .el-progress__text, .el-progress--dashboard .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%) +} + +.el-progress--circle .el-progress__text i, .el-progress--dashboard .el-progress__text i { + vertical-align: middle; + display: inline-block +} + +.el-progress--without-text .el-progress__text { + display: none +} + +.el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block +} + +.el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0 +} + +.el-progress.is-success .el-progress-bar__inner { + background-color: #67C23A +} + +.el-progress.is-success .el-progress__text { + color: #67C23A +} + +.el-progress.is-warning .el-progress-bar__inner { + background-color: #E6A23C +} + +.el-badge__content, .el-progress.is-exception .el-progress-bar__inner { + background-color: #F56C6C +} + +.el-progress.is-warning .el-progress__text { + color: #E6A23C +} + +.el-progress.is-exception .el-progress__text { + color: #F56C6C +} + +.el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-card__header, .el-message, .el-step__icon { + -webkit-box-sizing: border-box +} + +.el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: #EBEEF5; + overflow: hidden; + position: relative; + vertical-align: middle +} + +.el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #409EFF; + text-align: right; + border-radius: 100px; + line-height: 1; + white-space: nowrap; + -webkit-transition: width .6s ease; + transition: width .6s ease +} + +.el-progress-bar__inner::after { + display: inline-block; + height: 100%; + vertical-align: middle +} + +.el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #FFF; + font-size: 12px; + margin: 0 5px +} + +@keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.el-time-spinner { + width: 100%; + white-space: nowrap +} + +.el-spinner { + display: inline-block; + vertical-align: middle +} + +.el-spinner-inner { + -webkit-animation: rotate 2s linear infinite; + animation: rotate 2s linear infinite; + width: 50px; + height: 50px +} + +.el-spinner-inner .path { + stroke: #ececec; + stroke-linecap: round; + -webkit-animation: dash 1.5s ease-in-out infinite; + animation: dash 1.5s ease-in-out infinite +} + +@-webkit-keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@-webkit-keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +.el-message { + min-width: 380px; + box-sizing: border-box; + border-radius: 4px; + border-width: 1px; + border-style: solid; + border-color: #EBEEF5; + position: fixed; + left: 50%; + top: 20px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + background-color: #edf2fc; + -webkit-transition: opacity .3s, top .4s, -webkit-transform .4s; + transition: opacity .3s, top .4s, -webkit-transform .4s; + transition: opacity .3s, transform .4s, top .4s; + transition: opacity .3s, transform .4s, top .4s, -webkit-transform .4s; + overflow: hidden; + padding: 15px 15px 15px 20px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-message.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.el-message.is-closable .el-message__content { + padding-right: 16px +} + +.el-message p { + margin: 0 +} + +.el-message--info .el-message__content { + color: #909399 +} + +.el-message--success { + background-color: #f0f9eb; + border-color: #e1f3d8 +} + +.el-message--success .el-message__content { + color: #67C23A +} + +.el-message--warning { + background-color: #fdf6ec; + border-color: #faecd8 +} + +.el-message--warning .el-message__content { + color: #E6A23C +} + +.el-message--error { + background-color: #fef0f0; + border-color: #fde2e2 +} + +.el-message--error .el-message__content { + color: #F56C6C +} + +.el-message__icon { + margin-right: 10px +} + +.el-message__content { + padding: 0; + font-size: 14px; + line-height: 1 +} + +.el-message__content:focus { + outline-width: 0 +} + +.el-message__closeBtn { + position: absolute; + top: 50%; + right: 15px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + cursor: pointer; + color: #C0C4CC; + font-size: 16px +} + +.el-message__closeBtn:focus { + outline-width: 0 +} + +.el-message__closeBtn:hover { + color: #909399 +} + +.el-message .el-icon-success { + color: #67C23A +} + +.el-message .el-icon-error { + color: #F56C6C +} + +.el-message .el-icon-info { + color: #909399 +} + +.el-message .el-icon-warning { + color: #E6A23C +} + +.el-message-fade-enter, .el-message-fade-leave-active { + opacity: 0; + -webkit-transform: translate(-50%, -100%); + transform: translate(-50%, -100%) +} + +.el-badge { + position: relative; + vertical-align: middle; + display: inline-block +} + +.el-badge__content { + border-radius: 10px; + color: #FFF; + display: inline-block; + font-size: 12px; + height: 18px; + line-height: 18px; + padding: 0 6px; + text-align: center; + white-space: nowrap; + border: 1px solid #FFF +} + +.el-badge__content.is-fixed { + position: absolute; + top: 0; + right: 10px; + -webkit-transform: translateY(-50%) translateX(100%); + transform: translateY(-50%) translateX(100%) +} + +.el-rate__icon, .el-rate__item { + position: relative; + display: inline-block +} + +.el-badge__content.is-fixed.is-dot { + right: 5px +} + +.el-badge__content.is-dot { + height: 8px; + width: 8px; + padding: 0; + right: 0; + border-radius: 50% +} + +.el-badge__content--primary { + background-color: #409EFF +} + +.el-badge__content--success { + background-color: #67C23A +} + +.el-badge__content--warning { + background-color: #E6A23C +} + +.el-badge__content--info { + background-color: #909399 +} + +.el-badge__content--danger { + background-color: #F56C6C +} + +.el-card { + border-radius: 4px; + border: 1px solid #EBEEF5; + background-color: #FFF; + overflow: hidden; + color: #303133; + -webkit-transition: .3s; + transition: .3s +} + +.el-card.is-always-shadow, .el-card.is-hover-shadow:focus, .el-card.is-hover-shadow:hover { + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-card__header { + padding: 18px 20px; + border-bottom: 1px solid #EBEEF5; + box-sizing: border-box +} + +.el-card__body, .el-main { + padding: 20px +} + +.el-rate { + height: 20px; + line-height: 1 +} + +.el-rate:active, .el-rate:focus { + outline-width: 0 +} + +.el-rate__item { + font-size: 0; + vertical-align: middle +} + +.el-rate__icon { + font-size: 18px; + margin-right: 6px; + color: #C0C4CC; + -webkit-transition: .3s; + transition: .3s +} + +.el-rate__decimal, .el-rate__icon .path2 { + position: absolute; + top: 0; + left: 0 +} + +.el-rate__icon.hover { + -webkit-transform: scale(1.15); + transform: scale(1.15) +} + +.el-rate__decimal { + display: inline-block; + overflow: hidden +} + +.el-step.is-vertical, .el-steps { + display: -webkit-box; + display: -ms-flexbox +} + +.el-rate__text { + font-size: 14px; + vertical-align: middle +} + +.el-steps { + display: flex +} + +.el-steps--simple { + padding: 13px 8%; + border-radius: 4px; + background: #F5F7FA +} + +.el-steps--horizontal { + white-space: nowrap +} + +.el-steps--vertical { + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column +} + +.el-step { + position: relative; + -ms-flex-negative: 1; + flex-shrink: 1 +} + +.el-step:last-of-type .el-step__line { + display: none +} + +.el-step:last-of-type.is-flex { + -ms-flex-preferred-size: auto !important; + flex-basis: auto !important; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0 +} + +.el-step:last-of-type .el-step__description, .el-step:last-of-type .el-step__main { + padding-right: 0 +} + +.el-step__head { + position: relative; + width: 100% +} + +.el-step__head.is-process { + color: #303133; + border-color: #303133 +} + +.el-step__head.is-wait { + color: #C0C4CC; + border-color: #C0C4CC +} + +.el-step__head.is-success { + color: #67C23A; + border-color: #67C23A +} + +.el-step__head.is-error { + color: #F56C6C; + border-color: #F56C6C +} + +.el-step__head.is-finish { + color: #409EFF; + border-color: #409EFF +} + +.el-step__icon { + position: relative; + z-index: 1; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 24px; + height: 24px; + font-size: 14px; + box-sizing: border-box; + background: #FFF; + -webkit-transition: .15s ease-out; + transition: .15s ease-out +} + +.el-step.is-horizontal, .el-step__icon-inner { + display: inline-block +} + +.el-step__icon.is-text { + border-radius: 50%; + border: 2px solid; + border-color: inherit +} + +.el-step__icon.is-icon { + width: 40px +} + +.el-step__icon-inner { + -webkit-user-select: none; + user-select: none; + text-align: center; + font-weight: 700; + line-height: 1; + color: inherit +} + +.el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 25px; + font-weight: 400 +} + +.el-step__icon-inner.is-status { + -webkit-transform: translateY(1px); + transform: translateY(1px) +} + +.el-step__line { + position: absolute; + border-color: inherit; + background-color: #C0C4CC +} + +.el-step__line-inner { + display: block; + border-width: 1px; + border-style: solid; + border-color: inherit; + -webkit-transition: .15s ease-out; + transition: .15s ease-out; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 0; + height: 0 +} + +.el-step__main { + white-space: normal; + text-align: left +} + +.el-step__title { + font-size: 16px; + line-height: 38px +} + +.el-step__title.is-process { + font-weight: 700; + color: #303133 +} + +.el-step__title.is-wait { + color: #C0C4CC +} + +.el-step__title.is-success { + color: #67C23A +} + +.el-step__title.is-error { + color: #F56C6C +} + +.el-step__title.is-finish { + color: #409EFF +} + +.el-step__description { + padding-right: 10%; + margin-top: -5px; + font-size: 12px; + line-height: 20px; + font-weight: 400 +} + +.el-step__description.is-process { + color: #303133 +} + +.el-step__description.is-wait { + color: #C0C4CC +} + +.el-step__description.is-success { + color: #67C23A +} + +.el-step__description.is-error { + color: #F56C6C +} + +.el-step__description.is-finish { + color: #409EFF +} + +.el-step.is-horizontal .el-step__line { + height: 2px; + top: 11px; + left: 0; + right: 0 +} + +.el-step.is-vertical { + display: flex +} + +.el-step.is-vertical .el-step__head { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + width: 24px +} + +.el-step.is-vertical .el-step__main { + padding-left: 10px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.el-step.is-vertical .el-step__title { + line-height: 24px; + padding-bottom: 8px +} + +.el-step.is-vertical .el-step__line { + width: 2px; + top: 0; + bottom: 0; + left: 11px +} + +.el-step.is-vertical .el-step__icon.is-icon { + width: 24px +} + +.el-step.is-center .el-step__head, .el-step.is-center .el-step__main { + text-align: center +} + +.el-step.is-center .el-step__description { + padding-left: 20%; + padding-right: 20% +} + +.el-step.is-center .el-step__line { + left: 50%; + right: -50% +} + +.el-step.is-simple { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-step.is-simple .el-step__head { + width: auto; + font-size: 0; + padding-right: 10px +} + +.el-step.is-simple .el-step__icon { + background: 0 0; + width: 16px; + height: 16px; + font-size: 12px +} + +.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 18px +} + +.el-step.is-simple .el-step__icon-inner.is-status { + -webkit-transform: scale(.8) translateY(1px); + transform: scale(.8) translateY(1px) +} + +.el-step.is-simple .el-step__main { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.el-step.is-simple .el-step__title { + font-size: 16px; + line-height: 20px +} + +.el-step.is-simple:not(:last-of-type) .el-step__title { + max-width: 50%; + word-break: break-all +} + +.el-step.is-simple .el-step__arrow { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.el-step.is-simple .el-step__arrow::after, .el-step.is-simple .el-step__arrow::before { + content: ''; + display: inline-block; + position: absolute; + height: 15px; + width: 1px; + background: #C0C4CC +} + +.el-step.is-simple .el-step__arrow::before { + -webkit-transform: rotate(-45deg) translateY(-4px); + transform: rotate(-45deg) translateY(-4px); + -webkit-transform-origin: 0 0; + transform-origin: 0 0 +} + +.el-step.is-simple .el-step__arrow::after { + -webkit-transform: rotate(45deg) translateY(4px); + transform: rotate(45deg) translateY(4px); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +.el-step.is-simple:last-of-type .el-step__arrow { + display: none +} + +.el-carousel { + position: relative +} + +.el-carousel--horizontal { + overflow-x: hidden +} + +.el-carousel--vertical { + overflow-y: hidden +} + +.el-carousel__container { + position: relative; + height: 300px +} + +.el-carousel__arrow { + border: none; + outline: 0; + padding: 0; + margin: 0; + height: 36px; + width: 36px; + cursor: pointer; + -webkit-transition: .3s; + transition: .3s; + border-radius: 50%; + background-color: rgba(31, 45, 61, .11); + color: #FFF; + position: absolute; + top: 50%; + z-index: 10; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + text-align: center; + font-size: 12px +} + +.el-carousel__arrow--left { + left: 16px +} + +.el-carousel__arrow:hover { + background-color: rgba(31, 45, 61, .23) +} + +.el-carousel__arrow i { + cursor: pointer +} + +.el-carousel__indicators { + position: absolute; + list-style: none; + margin: 0; + padding: 0; + z-index: 2 +} + +.el-carousel__indicators--horizontal { + bottom: 0; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.el-carousel__indicators--vertical { + right: 0; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.el-carousel__indicators--outside { + bottom: 26px; + text-align: center; + position: static; + -webkit-transform: none; + transform: none +} + +.el-carousel__indicators--outside .el-carousel__indicator:hover button { + opacity: .64 +} + +.el-carousel__indicators--outside button { + background-color: #C0C4CC; + opacity: .24 +} + +.el-carousel__indicators--labels { + left: 0; + right: 0; + -webkit-transform: none; + transform: none; + text-align: center +} + +.el-carousel__indicators--labels .el-carousel__button { + height: auto; + width: auto; + padding: 2px 18px; + font-size: 12px +} + +.el-carousel__indicators--labels .el-carousel__indicator { + padding: 6px 4px +} + +.el-carousel__indicator { + background-color: transparent; + cursor: pointer +} + +.el-carousel__indicator:hover button { + opacity: .72 +} + +.el-carousel__indicator--horizontal { + display: inline-block; + padding: 12px 4px +} + +.el-carousel__indicator--vertical { + padding: 4px 12px +} + +.el-carousel__indicator--vertical .el-carousel__button { + width: 2px; + height: 15px +} + +.el-carousel__indicator.is-active button { + opacity: 1 +} + +.el-carousel__button { + display: block; + opacity: .48; + width: 30px; + height: 2px; + background-color: #FFF; + border: none; + outline: 0; + padding: 0; + margin: 0; + cursor: pointer; + -webkit-transition: .3s; + transition: .3s +} + +.el-carousel__item, .el-carousel__mask { + height: 100%; + position: absolute; + top: 0; + left: 0 +} + +.carousel-arrow-left-enter, .carousel-arrow-left-leave-active { + -webkit-transform: translateY(-50%) translateX(-10px); + transform: translateY(-50%) translateX(-10px); + opacity: 0 +} + +.carousel-arrow-right-enter, .carousel-arrow-right-leave-active { + -webkit-transform: translateY(-50%) translateX(10px); + transform: translateY(-50%) translateX(10px); + opacity: 0 +} + +.el-carousel__item { + width: 100%; + display: inline-block; + overflow: hidden; + z-index: 0 +} + +.el-carousel__item.is-active { + z-index: 2 +} + +.el-carousel__item.is-animating { + -webkit-transition: -webkit-transform .4s ease-in-out; + transition: -webkit-transform .4s ease-in-out; + transition: transform .4s ease-in-out; + transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out +} + +.el-carousel__item--card { + width: 50%; + -webkit-transition: -webkit-transform .4s ease-in-out; + transition: -webkit-transform .4s ease-in-out; + transition: transform .4s ease-in-out; + transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out +} + +.el-carousel__item--card.is-in-stage { + cursor: pointer; + z-index: 1 +} + +.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask, .el-carousel__item--card.is-in-stage:hover .el-carousel__mask { + opacity: .12 +} + +.el-carousel__item--card.is-active { + z-index: 2 +} + +.el-carousel__mask { + width: 100%; + background-color: #FFF; + opacity: .24; + -webkit-transition: .2s; + transition: .2s +} + +.fade-in-linear-enter-active, .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.fade-in-linear-enter, .fade-in-linear-leave, .fade-in-linear-leave-active { + opacity: 0 +} + +.el-fade-in-linear-enter-active, .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.el-fade-in-linear-enter, .el-fade-in-linear-leave, .el-fade-in-linear-leave-active { + opacity: 0 +} + +.el-fade-in-enter-active, .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.el-fade-in-enter, .el-fade-in-leave-active { + opacity: 0 +} + +.el-zoom-in-center-enter-active, .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.el-zoom-in-center-enter, .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.el-zoom-in-top-enter-active, .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + -webkit-transform-origin: center top; + transform-origin: center top +} + +.el-zoom-in-top-enter, .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.el-zoom-in-bottom-enter-active, .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.el-zoom-in-bottom-enter, .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.el-zoom-in-left-enter-active, .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1); + transition: transform .3s cubic-bezier(.23, 1, .32, 1), opacity .3s cubic-bezier(.23, 1, .32, 1), -webkit-transform .3s cubic-bezier(.23, 1, .32, 1); + -webkit-transform-origin: top left; + transform-origin: top left +} + +.el-zoom-in-left-enter, .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.el-list-enter-active, .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.el-list-enter, .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.el-collapse { + border-top: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5 +} + +.el-collapse-item.is-disabled .el-collapse-item__header { + color: #bbb; + cursor: not-allowed +} + +.el-collapse-item__header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 48px; + line-height: 48px; + background-color: #FFF; + color: #303133; + cursor: pointer; + border-bottom: 1px solid #EBEEF5; + font-size: 13px; + font-weight: 500; + -webkit-transition: border-bottom-color .3s; + transition: border-bottom-color .3s; + outline: 0 +} + +.el-collapse-item__arrow { + margin: 0 8px 0 auto; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-weight: 300 +} + +.el-collapse-item__arrow.is-active { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.el-collapse-item__header.focusing:focus:not(:hover) { + color: #409EFF +} + +.el-collapse-item__header.is-active { + border-bottom-color: transparent +} + +.el-collapse-item__wrap { + will-change: height; + background-color: #FFF; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-bottom: 1px solid #EBEEF5 +} + +.el-cascader__search-input, .el-cascader__tags, .el-tag { + -webkit-box-sizing: border-box +} + +.el-collapse-item__content { + padding-bottom: 25px; + font-size: 13px; + color: #303133; + line-height: 1.769230769230769 +} + +.el-collapse-item:last-child { + margin-bottom: -1px +} + +.el-popper .popper__arrow, .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.el-cascader, .el-tag { + display: inline-block +} + +.el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #EBEEF5; + border-bottom-width: 0 +} + +.el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #FFF; + border-bottom-width: 0 +} + +.el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #EBEEF5 +} + +.el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #FFF +} + +.el-popper[x-placement^=right] { + margin-left: 12px +} + +.el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #EBEEF5; + border-left-width: 0 +} + +.el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #FFF; + border-left-width: 0 +} + +.el-popper[x-placement^=left] { + margin-right: 12px +} + +.el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #EBEEF5 +} + +.el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #FFF +} + +.el-tag { + background-color: #ecf5ff; + border-color: #d9ecff; + height: 32px; + padding: 0 10px; + line-height: 30px; + font-size: 12px; + color: #409EFF; + border-width: 1px; + border-style: solid; + border-radius: 4px; + box-sizing: border-box; + white-space: nowrap +} + +.el-tag.is-hit { + border-color: #409EFF +} + +.el-tag .el-tag__close { + color: #409eff +} + +.el-tag .el-tag__close:hover { + color: #FFF; + background-color: #409eff +} + +.el-tag.el-tag--info { + background-color: #f4f4f5; + border-color: #e9e9eb; + color: #909399 +} + +.el-tag.el-tag--info.is-hit { + border-color: #909399 +} + +.el-tag.el-tag--info .el-tag__close { + color: #909399 +} + +.el-tag.el-tag--info .el-tag__close:hover { + color: #FFF; + background-color: #909399 +} + +.el-tag.el-tag--success { + background-color: #f0f9eb; + border-color: #e1f3d8; + color: #67c23a +} + +.el-tag.el-tag--success.is-hit { + border-color: #67C23A +} + +.el-tag.el-tag--success .el-tag__close { + color: #67c23a +} + +.el-tag.el-tag--success .el-tag__close:hover { + color: #FFF; + background-color: #67c23a +} + +.el-tag.el-tag--warning { + background-color: #fdf6ec; + border-color: #faecd8; + color: #e6a23c +} + +.el-tag.el-tag--warning.is-hit { + border-color: #E6A23C +} + +.el-tag.el-tag--warning .el-tag__close { + color: #e6a23c +} + +.el-tag.el-tag--warning .el-tag__close:hover { + color: #FFF; + background-color: #e6a23c +} + +.el-tag.el-tag--danger { + background-color: #fef0f0; + border-color: #fde2e2; + color: #f56c6c +} + +.el-tag.el-tag--danger.is-hit { + border-color: #F56C6C +} + +.el-tag.el-tag--danger .el-tag__close { + color: #f56c6c +} + +.el-tag.el-tag--danger .el-tag__close:hover { + color: #FFF; + background-color: #f56c6c +} + +.el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 16px; + width: 16px; + line-height: 16px; + vertical-align: middle; + top: -1px; + right: -5px +} + +.el-tag .el-icon-close::before { + display: block +} + +.el-tag--dark { + background-color: #409eff; + border-color: #409eff; + color: #fff +} + +.el-tag--dark.is-hit { + border-color: #409EFF +} + +.el-tag--dark .el-tag__close { + color: #fff +} + +.el-tag--dark .el-tag__close:hover { + color: #FFF; + background-color: #66b1ff +} + +.el-tag--dark.el-tag--info { + background-color: #909399; + border-color: #909399; + color: #fff +} + +.el-tag--dark.el-tag--info.is-hit { + border-color: #909399 +} + +.el-tag--dark.el-tag--info .el-tag__close { + color: #fff +} + +.el-tag--dark.el-tag--info .el-tag__close:hover { + color: #FFF; + background-color: #a6a9ad +} + +.el-tag--dark.el-tag--success { + background-color: #67c23a; + border-color: #67c23a; + color: #fff +} + +.el-tag--dark.el-tag--success.is-hit { + border-color: #67C23A +} + +.el-tag--dark.el-tag--success .el-tag__close { + color: #fff +} + +.el-tag--dark.el-tag--success .el-tag__close:hover { + color: #FFF; + background-color: #85ce61 +} + +.el-tag--dark.el-tag--warning { + background-color: #e6a23c; + border-color: #e6a23c; + color: #fff +} + +.el-tag--dark.el-tag--warning.is-hit { + border-color: #E6A23C +} + +.el-tag--dark.el-tag--warning .el-tag__close { + color: #fff +} + +.el-tag--dark.el-tag--warning .el-tag__close:hover { + color: #FFF; + background-color: #ebb563 +} + +.el-tag--dark.el-tag--danger { + background-color: #f56c6c; + border-color: #f56c6c; + color: #fff +} + +.el-tag--dark.el-tag--danger.is-hit { + border-color: #F56C6C +} + +.el-tag--dark.el-tag--danger .el-tag__close { + color: #fff +} + +.el-tag--dark.el-tag--danger .el-tag__close:hover { + color: #FFF; + background-color: #f78989 +} + +.el-tag--plain { + background-color: #fff; + border-color: #b3d8ff; + color: #409eff +} + +.el-tag--plain.is-hit { + border-color: #409EFF +} + +.el-tag--plain .el-tag__close { + color: #409eff +} + +.el-tag--plain .el-tag__close:hover { + color: #FFF; + background-color: #409eff +} + +.el-tag--plain.el-tag--info { + background-color: #fff; + border-color: #d3d4d6; + color: #909399 +} + +.el-tag--plain.el-tag--info.is-hit { + border-color: #909399 +} + +.el-tag--plain.el-tag--info .el-tag__close { + color: #909399 +} + +.el-tag--plain.el-tag--info .el-tag__close:hover { + color: #FFF; + background-color: #909399 +} + +.el-tag--plain.el-tag--success { + background-color: #fff; + border-color: #c2e7b0; + color: #67c23a +} + +.el-tag--plain.el-tag--success.is-hit { + border-color: #67C23A +} + +.el-tag--plain.el-tag--success .el-tag__close { + color: #67c23a +} + +.el-tag--plain.el-tag--success .el-tag__close:hover { + color: #FFF; + background-color: #67c23a +} + +.el-tag--plain.el-tag--warning { + background-color: #fff; + border-color: #f5dab1; + color: #e6a23c +} + +.el-tag--plain.el-tag--warning.is-hit { + border-color: #E6A23C +} + +.el-tag--plain.el-tag--warning .el-tag__close { + color: #e6a23c +} + +.el-tag--plain.el-tag--warning .el-tag__close:hover { + color: #FFF; + background-color: #e6a23c +} + +.el-tag--plain.el-tag--danger { + background-color: #fff; + border-color: #fbc4c4; + color: #f56c6c +} + +.el-tag--plain.el-tag--danger.is-hit { + border-color: #F56C6C +} + +.el-tag--plain.el-tag--danger .el-tag__close { + color: #f56c6c +} + +.el-tag--plain.el-tag--danger .el-tag__close:hover { + color: #FFF; + background-color: #f56c6c +} + +.el-tag--medium { + height: 28px; + line-height: 26px +} + +.el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.el-cascader { + position: relative; + font-size: 14px; + line-height: 40px +} + +.el-cascader:not(.is-disabled):hover .el-input__inner { + cursor: pointer; + border-color: #C0C4CC +} + +.el-cascader .el-input .el-input__inner:focus, .el-cascader .el-input.is-focus .el-input__inner { + border-color: #409EFF +} + +.el-cascader .el-input { + cursor: pointer +} + +.el-cascader .el-input .el-input__inner { + text-overflow: ellipsis +} + +.el-cascader .el-input .el-icon-arrow-down { + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 14px +} + +.el-cascader .el-input .el-icon-arrow-down.is-reverse { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.el-cascader .el-input .el-icon-circle-close:hover { + color: #909399 +} + +.el-cascader--medium { + font-size: 14px; + line-height: 36px +} + +.el-cascader--small { + font-size: 13px; + line-height: 32px +} + +.el-cascader--mini { + font-size: 12px; + line-height: 28px +} + +.el-cascader.is-disabled .el-cascader__label { + z-index: 2; + color: #C0C4CC +} + +.el-cascader__dropdown { + margin: 5px 0; + font-size: 14px; + background: #FFF; + border: 1px solid #E4E7ED; + border-radius: 4px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-cascader__tags { + position: absolute; + left: 0; + right: 30px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + line-height: normal; + text-align: left; + box-sizing: border-box +} + +.el-cascader__tags .el-tag { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + max-width: 100%; + margin: 2px 0 2px 6px; + text-overflow: ellipsis; + background: #f0f2f5 +} + +.el-cascader__tags .el-tag:not(.is-hit) { + border-color: transparent +} + +.el-cascader__tags .el-tag > span { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + text-overflow: ellipsis +} + +.el-cascader__tags .el-tag .el-icon-close { + -webkit-box-flex: 0; + -ms-flex: none; + flex: none; + background-color: #C0C4CC; + color: #FFF +} + +.el-cascader__tags .el-tag .el-icon-close:hover { + background-color: #909399 +} + +.el-cascader__suggestion-panel { + border-radius: 4px +} + +.el-cascader__suggestion-list { + max-height: 204px; + margin: 0; + padding: 6px 0; + font-size: 14px; + color: #606266; + text-align: center +} + +.el-cascader__suggestion-item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 34px; + padding: 0 15px; + text-align: left; + outline: 0; + cursor: pointer +} + +.el-cascader__suggestion-item:focus, .el-cascader__suggestion-item:hover { + background: #F5F7FA +} + +.el-cascader__suggestion-item.is-checked { + color: #409EFF; + font-weight: 700 +} + +.el-cascader__suggestion-item > span { + margin-right: 10px +} + +.el-cascader__empty-text { + margin: 10px 0; + color: #C0C4CC +} + +.el-cascader__search-input { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + height: 24px; + min-width: 60px; + margin: 2px 0 2px 15px; + padding: 0; + color: #606266; + border: none; + outline: 0; + box-sizing: border-box +} + +.el-cascader__search-input::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-cascader__search-input:-ms-input-placeholder { + color: #C0C4CC +} + +.el-cascader__search-input::-ms-input-placeholder { + color: #C0C4CC +} + +.el-cascader__search-input::placeholder { + color: #C0C4CC +} + +.el-color-predefine { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 12px; + margin-top: 8px; + width: 280px +} + +.el-color-predefine__colors { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -ms-flex-wrap: wrap; + flex-wrap: wrap +} + +.el-color-predefine__color-selector { + margin: 0 0 8px 8px; + width: 20px; + height: 20px; + border-radius: 4px; + cursor: pointer +} + +.el-color-predefine__color-selector:nth-child(10n+1) { + margin-left: 0 +} + +.el-color-predefine__color-selector.selected { + -webkit-box-shadow: 0 0 3px 2px #409EFF; + box-shadow: 0 0 3px 2px #409EFF +} + +.el-color-predefine__color-selector > div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + border-radius: 3px +} + +.el-color-predefine__color-selector.is-alpha { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.el-color-hue-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background-color: red; + padding: 0 2px +} + +.el-color-hue-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to right, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%); + height: 100% +} + +.el-color-hue-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.el-color-hue-slider.is-vertical { + width: 12px; + height: 180px; + padding: 2px 0 +} + +.el-color-hue-slider.is-vertical .el-color-hue-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to bottom, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%) +} + +.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.el-color-svpanel { + position: relative; + width: 280px; + height: 180px +} + +.el-color-svpanel__black, .el-color-svpanel__white { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +.el-color-svpanel__white { + background: -webkit-gradient(linear, left top, right top, from(#fff), to(rgba(255, 255, 255, 0))); + background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0)) +} + +.el-color-svpanel__black { + background: -webkit-gradient(linear, left bottom, left top, from(#000), to(rgba(0, 0, 0, 0))); + background: linear-gradient(to top, #000, rgba(0, 0, 0, 0)) +} + +.el-color-svpanel__cursor { + position: absolute +} + +.el-color-svpanel__cursor > div { + cursor: head; + width: 4px; + height: 4px; + -webkit-box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + border-radius: 50%; + -webkit-transform: translate(-2px, -2px); + transform: translate(-2px, -2px) +} + +.el-color-alpha-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.el-color-alpha-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, #fff 100%); + height: 100% +} + +.el-color-alpha-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.el-color-alpha-slider.is-vertical { + width: 20px; + height: 180px +} + +.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0, #fff 100%) +} + +.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.el-color-dropdown { + width: 300px +} + +.el-color-dropdown__main-wrapper { + margin-bottom: 6px +} + +.el-color-dropdown__main-wrapper::after { + display: table; + clear: both +} + +.el-color-dropdown__btns { + margin-top: 6px; + text-align: right +} + +.el-color-dropdown__value { + float: left; + line-height: 26px; + font-size: 12px; + color: #000; + width: 160px +} + +.el-color-dropdown__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.el-color-dropdown__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.el-color-dropdown__btn:hover { + color: #409EFF; + border-color: #409EFF +} + +.el-color-dropdown__link-btn { + cursor: pointer; + color: #409EFF; + text-decoration: none; + padding: 15px; + font-size: 12px +} + +.el-color-dropdown__link-btn:hover { + color: tint(#409EFF, 20%) +} + +.el-color-picker { + display: inline-block; + position: relative; + line-height: normal; + height: 40px +} + +.el-color-picker.is-disabled .el-color-picker__trigger { + cursor: not-allowed +} + +.el-color-picker--medium { + height: 36px +} + +.el-color-picker--medium .el-color-picker__trigger { + height: 36px; + width: 36px +} + +.el-color-picker--medium .el-color-picker__mask { + height: 34px; + width: 34px +} + +.el-color-picker--small { + height: 32px +} + +.el-color-picker--small .el-color-picker__trigger { + height: 32px; + width: 32px +} + +.el-color-picker--small .el-color-picker__mask { + height: 30px; + width: 30px +} + +.el-color-picker--small .el-color-picker__empty, .el-color-picker--small .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.el-color-picker--mini { + height: 28px +} + +.el-color-picker--mini .el-color-picker__trigger { + height: 28px; + width: 28px +} + +.el-color-picker--mini .el-color-picker__mask { + height: 26px; + width: 26px +} + +.el-color-picker--mini .el-color-picker__empty, .el-color-picker--mini .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.el-color-picker__mask { + height: 38px; + width: 38px; + border-radius: 4px; + position: absolute; + top: 1px; + left: 1px; + z-index: 1; + cursor: not-allowed; + background-color: rgba(255, 255, 255, .7) +} + +.el-color-picker__trigger { + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 40px; + width: 40px; + padding: 4px; + border: 1px solid #e6e6e6; + border-radius: 4px; + font-size: 0; + position: relative; + cursor: pointer +} + +.el-color-picker__color { + position: relative; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #999; + border-radius: 2px; + width: 100%; + height: 100%; + text-align: center +} + +.el-color-picker__icon, .el-input, .el-textarea { + display: inline-block; + width: 100% +} + +.el-color-picker__color.is-alpha { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.el-color-picker__color-inner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0 +} + +.el-color-picker__empty { + font-size: 12px; + color: #999; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0) +} + +.el-color-picker__icon { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0); + color: #FFF; + text-align: center; + font-size: 12px +} + +.el-input__prefix, .el-input__suffix { + position: absolute; + top: 0; + text-align: center +} + +.el-color-picker__panel { + position: absolute; + z-index: 10; + padding: 6px; + -webkit-box-sizing: content-box; + box-sizing: content-box; + background-color: #FFF; + border: 1px solid #EBEEF5; + border-radius: 4px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.el-input__inner, .el-textarea__inner, .el-transfer-panel { + -webkit-box-sizing: border-box +} + +.el-textarea { + position: relative; + vertical-align: bottom; + font-size: 14px +} + +.el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: inherit; + color: #606266; + background-color: #FFF; + background-image: none; + border: 1px solid #DCDFE6; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.el-textarea__inner::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-textarea__inner:-ms-input-placeholder { + color: #C0C4CC +} + +.el-textarea__inner::-ms-input-placeholder { + color: #C0C4CC +} + +.el-textarea__inner::placeholder { + color: #C0C4CC +} + +.el-textarea__inner:hover { + border-color: #C0C4CC +} + +.el-textarea__inner:focus { + outline: 0; + border-color: #409EFF +} + +.el-textarea .el-input__count { + color: #909399; + background: #FFF; + position: absolute; + font-size: 12px; + bottom: 5px; + right: 10px +} + +.el-textarea.is-disabled .el-textarea__inner { + background-color: #F5F7FA; + border-color: #E4E7ED; + color: #C0C4CC; + cursor: not-allowed +} + +.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #C0C4CC +} + +.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #C0C4CC +} + +.el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #C0C4CC +} + +.el-textarea.is-exceed .el-textarea__inner { + border-color: #F56C6C +} + +.el-textarea.is-exceed .el-input__count { + color: #F56C6C +} + +.el-input { + position: relative; + font-size: 14px +} + +.el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.el-input::-webkit-scrollbar-corner { + background: #fff +} + +.el-input::-webkit-scrollbar-track { + background: #fff +} + +.el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.el-input .el-input__clear { + color: #C0C4CC; + font-size: 14px; + cursor: pointer; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.el-input .el-input__clear:hover { + color: #909399 +} + +.el-input .el-input__count { + height: 100%; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #909399; + font-size: 12px +} + +.el-input-group__append .el-button, .el-input-group__append .el-input, .el-input-group__prepend .el-button, .el-input-group__prepend .el-input, .el-input__inner { + font-size: inherit +} + +.el-input .el-input__count .el-input__count-inner { + background: #FFF; + line-height: initial; + display: inline-block; + padding: 0 5px +} + +.el-input__inner { + -webkit-appearance: none; + background-color: #FFF; + background-image: none; + border-radius: 4px; + border: 1px solid #DCDFE6; + box-sizing: border-box; + color: #606266; + display: inline-block; + height: 40px; + line-height: 40px; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.el-input__inner::-ms-reveal { + display: none +} + +.el-input__inner::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-input__inner:-ms-input-placeholder { + color: #C0C4CC +} + +.el-input__inner::-ms-input-placeholder { + color: #C0C4CC +} + +.el-input__inner::placeholder { + color: #C0C4CC +} + +.el-input__inner:hover { + border-color: #C0C4CC +} + +.el-input.is-active .el-input__inner, .el-input__inner:focus { + border-color: #409EFF; + outline: 0 +} + +.el-input__suffix { + height: 100%; + right: 5px; + transition: all .3s; + pointer-events: none +} + +.el-input__suffix-inner { + pointer-events: all +} + +.el-input__prefix { + height: 100%; + left: 5px; + transition: all .3s +} + +.el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.el-input__validateIcon { + pointer-events: none +} + +.el-input.is-disabled .el-input__inner { + background-color: #F5F7FA; + border-color: #E4E7ED; + color: #C0C4CC; + cursor: not-allowed +} + +.el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #C0C4CC +} + +.el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #C0C4CC +} + +.el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #C0C4CC +} + +.el-input.is-disabled .el-input__inner::placeholder { + color: #C0C4CC +} + +.el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.el-image-viewer__btn, .el-image__preview, .el-link, .el-transfer-panel__filter .el-icon-circle-close { + cursor: pointer +} + +.el-input.is-exceed .el-input__inner { + border-color: #F56C6C +} + +.el-input.is-exceed .el-input__suffix .el-input__count { + color: #F56C6C +} + +.el-input--suffix .el-input__inner { + padding-right: 30px +} + +.el-input--prefix .el-input__inner { + padding-left: 30px +} + +.el-input--medium { + font-size: 14px +} + +.el-input--medium .el-input__inner { + height: 36px; + line-height: 36px +} + +.el-input--medium .el-input__icon { + line-height: 36px +} + +.el-input--small { + font-size: 13px +} + +.el-input--small .el-input__inner { + height: 32px; + line-height: 32px +} + +.el-input--small .el-input__icon { + line-height: 32px +} + +.el-input--mini { + font-size: 12px +} + +.el-input--mini .el-input__inner { + height: 28px; + line-height: 28px +} + +.el-input--mini .el-input__icon { + line-height: 28px +} + +.el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; + border-spacing: 0 +} + +.el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.el-input-group__append, .el-input-group__prepend { + background-color: #F5F7FA; + color: #909399; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #DCDFE6; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.el-input-group--append .el-input__inner, .el-input-group__prepend { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.el-input-group__append:focus, .el-input-group__prepend:focus { + outline: 0 +} + +.el-input-group__append .el-button, .el-input-group__append .el-select, .el-input-group__prepend .el-button, .el-input-group__prepend .el-select { + display: inline-block; + margin: -10px -20px +} + +.el-input-group__append button.el-button, .el-input-group__append div.el-select .el-input__inner, .el-input-group__append div.el-select:hover .el-input__inner, .el-input-group__prepend button.el-button, .el-input-group__prepend div.el-select .el-input__inner, .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.el-input-group__prepend { + border-right: 0 +} + +.el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.el-input-group--append .el-select .el-input.is-focus .el-input__inner, .el-input-group--prepend .el-select .el-input.is-focus .el-input__inner { + border-color: transparent +} + +.el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.el-input__inner::-ms-clear { + display: none; + width: 0; + height: 0 +} + +.el-transfer { + font-size: 14px +} + +.el-transfer__buttons { + display: inline-block; + vertical-align: middle; + padding: 0 30px +} + +.el-transfer__button { + display: block; + margin: 0 auto; + padding: 10px; + border-radius: 50%; + color: #FFF; + background-color: #409EFF; + font-size: 0 +} + +.el-button-group > .el-button + .el-button, .el-transfer-panel__item + .el-transfer-panel__item, .el-transfer__button [class*=el-icon-] + span { + margin-left: 0 +} + +.el-divider__text, .el-image__error, .el-link, .el-timeline, .el-transfer__button i, .el-transfer__button span { + font-size: 14px +} + +.el-transfer__button.is-with-texts { + border-radius: 4px +} + +.el-transfer__button.is-disabled, .el-transfer__button.is-disabled:hover { + border: 1px solid #DCDFE6; + background-color: #F5F7FA; + color: #C0C4CC +} + +.el-transfer__button:first-child { + margin-bottom: 10px +} + +.el-transfer__button:nth-child(2) { + margin: 0 +} + +.el-transfer-panel { + border: 1px solid #EBEEF5; + border-radius: 4px; + overflow: hidden; + background: #FFF; + display: inline-block; + vertical-align: middle; + width: 200px; + max-height: 100%; + box-sizing: border-box; + position: relative +} + +.el-transfer-panel__body { + height: 246px +} + +.el-transfer-panel__body.is-with-footer { + padding-bottom: 40px +} + +.el-transfer-panel__list { + margin: 0; + padding: 6px 0; + list-style: none; + height: 246px; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-transfer-panel__list.is-filterable { + height: 194px; + padding-top: 0 +} + +.el-transfer-panel__item { + height: 30px; + line-height: 30px; + padding-left: 15px; + display: block !important +} + +.el-transfer-panel__item.el-checkbox { + color: #606266 +} + +.el-transfer-panel__item:hover { + color: #409EFF +} + +.el-transfer-panel__item.el-checkbox .el-checkbox__label { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-left: 24px; + line-height: 30px +} + +.el-transfer-panel__item .el-checkbox__input { + position: absolute; + top: 8px +} + +.el-transfer-panel__filter { + text-align: center; + margin: 15px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + width: auto +} + +.el-transfer-panel__filter .el-input__inner { + height: 32px; + width: 100%; + font-size: 12px; + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 16px; + padding-right: 10px; + padding-left: 30px +} + +.el-transfer-panel__filter .el-input__icon { + margin-left: 5px +} + +.el-transfer-panel .el-transfer-panel__header { + height: 40px; + line-height: 40px; + background: #F5F7FA; + margin: 0; + padding-left: 15px; + border-bottom: 1px solid #EBEEF5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #000 +} + +.el-container, .el-header { + -webkit-box-sizing: border-box +} + +.el-transfer-panel .el-transfer-panel__header .el-checkbox { + display: block; + line-height: 40px +} + +.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label { + font-size: 16px; + color: #303133; + font-weight: 400 +} + +.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span { + position: absolute; + right: 15px; + color: #909399; + font-size: 12px; + font-weight: 400 +} + +.el-transfer-panel .el-transfer-panel__footer { + height: 40px; + background: #FFF; + margin: 0; + padding: 0; + border-top: 1px solid #EBEEF5; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + z-index: 1 +} + +.el-transfer-panel .el-transfer-panel__footer::after { + display: inline-block; + height: 100%; + vertical-align: middle +} + +.el-container, .el-timeline-item__node { + display: -webkit-box; + display: -ms-flexbox +} + +.el-transfer-panel .el-transfer-panel__footer .el-checkbox { + padding-left: 20px; + color: #606266 +} + +.el-transfer-panel .el-transfer-panel__empty { + margin: 0; + height: 30px; + line-height: 30px; + padding: 6px 15px 0; + color: #909399; + text-align: center +} + +.el-transfer-panel .el-checkbox__label { + padding-left: 8px +} + +.el-transfer-panel .el-checkbox__inner { + height: 14px; + width: 14px; + border-radius: 3px +} + +.el-transfer-panel .el-checkbox__inner::after { + height: 6px; + width: 3px; + left: 4px +} + +.el-container { + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -ms-flex-preferred-size: auto; + flex-basis: auto; + box-sizing: border-box; + min-width: 0 +} + +.el-container.is-vertical, .el-drawer, .el-empty, .el-result { + -webkit-box-orient: vertical; + -webkit-box-direction: normal +} + +.el-container.is-vertical { + -ms-flex-direction: column; + flex-direction: column +} + +.el-header { + padding: 0 20px; + box-sizing: border-box; + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.el-aside { + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.el-main { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -ms-flex-preferred-size: auto; + flex-basis: auto; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.el-footer { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-flex-negative: 0; + flex-shrink: 0 +} + +.el-timeline { + margin: 0; + list-style: none +} + +.el-timeline .el-timeline-item:last-child .el-timeline-item__tail { + display: none +} + +.el-timeline-item { + position: relative; + padding-bottom: 20px +} + +.el-timeline-item__wrapper { + position: relative; + padding-left: 28px; + top: -3px +} + +.el-timeline-item__tail { + position: absolute; + left: 4px; + height: 100%; + border-left: 2px solid #E4E7ED +} + +.el-timeline-item__icon { + color: #FFF; + font-size: 13px +} + +.el-timeline-item__node { + position: absolute; + background-color: #E4E7ED; + border-radius: 50%; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-image__error, .el-timeline-item__dot { + display: -webkit-box; + display: -ms-flexbox +} + +.el-timeline-item__node--normal { + left: -1px; + width: 12px; + height: 12px +} + +.el-timeline-item__node--large { + left: -2px; + width: 14px; + height: 14px +} + +.el-timeline-item__node--primary { + background-color: #409EFF +} + +.el-timeline-item__node--success { + background-color: #67C23A +} + +.el-timeline-item__node--warning { + background-color: #E6A23C +} + +.el-timeline-item__node--danger { + background-color: #F56C6C +} + +.el-timeline-item__node--info { + background-color: #909399 +} + +.el-timeline-item__dot { + position: absolute; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-timeline-item__content { + color: #303133 +} + +.el-timeline-item__timestamp { + color: #909399; + line-height: 1; + font-size: 13px +} + +.el-timeline-item__timestamp.is-top { + margin-bottom: 8px; + padding-top: 4px +} + +.el-timeline-item__timestamp.is-bottom { + margin-top: 8px +} + +.el-link { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + vertical-align: middle; + position: relative; + text-decoration: none; + outline: 0; + padding: 0; + font-weight: 500 +} + +.el-link.is-underline:hover:after { + position: absolute; + left: 0; + right: 0; + height: 0; + bottom: 0; + border-bottom: 1px solid #409EFF +} + +.el-link.el-link--default:after, .el-link.el-link--primary.is-underline:hover:after, .el-link.el-link--primary:after { + border-color: #409EFF +} + +.el-link.is-disabled { + cursor: not-allowed +} + +.el-link [class*=el-icon-] + span { + margin-left: 5px +} + +.el-link.el-link--default { + color: #606266 +} + +.el-link.el-link--default:hover { + color: #409EFF +} + +.el-link.el-link--default.is-disabled { + color: #C0C4CC +} + +.el-link.el-link--primary { + color: #409EFF +} + +.el-link.el-link--primary:hover { + color: #66b1ff +} + +.el-link.el-link--primary.is-disabled { + color: #a0cfff +} + +.el-link.el-link--danger.is-underline:hover:after, .el-link.el-link--danger:after { + border-color: #F56C6C +} + +.el-link.el-link--danger { + color: #F56C6C +} + +.el-link.el-link--danger:hover { + color: #f78989 +} + +.el-link.el-link--danger.is-disabled { + color: #fab6b6 +} + +.el-link.el-link--success.is-underline:hover:after, .el-link.el-link--success:after { + border-color: #67C23A +} + +.el-link.el-link--success { + color: #67C23A +} + +.el-link.el-link--success:hover { + color: #85ce61 +} + +.el-link.el-link--success.is-disabled { + color: #b3e19d +} + +.el-link.el-link--warning.is-underline:hover:after, .el-link.el-link--warning:after { + border-color: #E6A23C +} + +.el-link.el-link--warning { + color: #E6A23C +} + +.el-link.el-link--warning:hover { + color: #ebb563 +} + +.el-link.el-link--warning.is-disabled { + color: #f3d19e +} + +.el-link.el-link--info.is-underline:hover:after, .el-link.el-link--info:after { + border-color: #909399 +} + +.el-link.el-link--info { + color: #909399 +} + +.el-link.el-link--info:hover { + color: #a6a9ad +} + +.el-link.el-link--info.is-disabled { + color: #c8c9cc +} + +.el-divider { + background-color: #DCDFE6; + position: relative +} + +.el-divider--horizontal { + display: block; + height: 1px; + width: 100%; + margin: 24px 0 +} + +.el-divider--vertical { + display: inline-block; + width: 1px; + height: 1em; + margin: 0 8px; + vertical-align: middle; + position: relative +} + +.el-divider__text { + position: absolute; + background-color: #FFF; + padding: 0 20px; + font-weight: 500; + color: #303133 +} + +.el-image__error, .el-image__placeholder { + background: #F5F7FA +} + +.el-divider__text.is-left { + left: 20px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.el-divider__text.is-center { + left: 50%; + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%) +} + +.el-divider__text.is-right { + right: 20px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.el-image__error, .el-image__inner, .el-image__placeholder { + width: 100%; + height: 100% +} + +.el-image { + position: relative; + display: inline-block; + overflow: hidden +} + +.el-image__inner { + vertical-align: top +} + +.el-image__inner--center { + position: relative; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + display: block +} + +.el-image__error { + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #C0C4CC; + vertical-align: middle +} + +.el-image-viewer__wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0 +} + +.el-image-viewer__btn { + position: absolute; + z-index: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + border-radius: 50%; + opacity: .8; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-user-select: none; + user-select: none +} + +.el-button, .el-checkbox, .el-checkbox-button__inner, .el-empty__image img, .el-radio { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none +} + +.el-image-viewer__close { + top: 40px; + right: 40px; + width: 40px; + height: 40px; + font-size: 24px; + color: #fff; + background-color: #606266 +} + +.el-image-viewer__canvas { + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-image-viewer__actions { + left: 50%; + bottom: 30px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + width: 282px; + height: 44px; + padding: 0 23px; + background-color: #606266; + border-color: #fff; + border-radius: 22px +} + +.el-image-viewer__actions__inner { + width: 100%; + height: 100%; + text-align: justify; + cursor: default; + font-size: 23px; + color: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: distribute; + justify-content: space-around +} + +.el-image-viewer__next, .el-image-viewer__prev { + width: 44px; + height: 44px; + font-size: 24px; + color: #fff; + background-color: #606266; + border-color: #fff; + top: 50% +} + +.el-image-viewer__prev { + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + left: 40px +} + +.el-image-viewer__next { + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: 40px; + text-indent: 2px +} + +.el-image-viewer__mask { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: .5; + background: #000 +} + +.viewer-fade-enter-active { + -webkit-animation: viewer-fade-in .3s; + animation: viewer-fade-in .3s +} + +.viewer-fade-leave-active { + -webkit-animation: viewer-fade-out .3s; + animation: viewer-fade-out .3s +} + +@-webkit-keyframes viewer-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes viewer-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@-webkit-keyframes viewer-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +@keyframes viewer-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +.el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #FFF; + border: 1px solid #DCDFE6; + color: #606266; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.el-button + .el-button, .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.el-button:focus, .el-button:hover { + color: #409EFF; + border-color: #c6e2ff; + background-color: #ecf5ff +} + +.el-button:active { + color: #3a8ee6; + border-color: #3a8ee6; + outline: 0 +} + +.el-button::-moz-focus-inner { + border: 0 +} + +.el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.el-button.is-plain:focus, .el-button.is-plain:hover { + background: #FFF; + border-color: #409EFF; + color: #409EFF +} + +.el-button.is-active, .el-button.is-plain:active { + color: #3a8ee6; + border-color: #3a8ee6 +} + +.el-button.is-plain:active { + background: #FFF; + outline: 0 +} + +.el-button.is-disabled, .el-button.is-disabled:focus, .el-button.is-disabled:hover { + color: #C0C4CC; + cursor: not-allowed; + background-image: none; + background-color: #FFF; + border-color: #EBEEF5 +} + +.el-button.is-disabled.el-button--text { + background-color: transparent +} + +.el-button.is-disabled.is-plain, .el-button.is-disabled.is-plain:focus, .el-button.is-disabled.is-plain:hover { + background-color: #FFF; + border-color: #EBEEF5; + color: #C0C4CC +} + +.el-button.is-loading { + position: relative; + pointer-events: none +} + +.el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.el-button.is-circle { + border-radius: 50%; + padding: 12px +} + +.el-button--primary { + color: #FFF; + background-color: #409EFF; + border-color: #409EFF +} + +.el-button--primary:focus, .el-button--primary:hover { + background: #66b1ff; + border-color: #66b1ff; + color: #FFF +} + +.el-button--primary.is-active, .el-button--primary:active { + background: #3a8ee6; + border-color: #3a8ee6; + color: #FFF +} + +.el-button--primary:active { + outline: 0 +} + +.el-button--primary.is-disabled, .el-button--primary.is-disabled:active, .el-button--primary.is-disabled:focus, .el-button--primary.is-disabled:hover { + color: #FFF; + background-color: #a0cfff; + border-color: #a0cfff +} + +.el-button--primary.is-plain { + color: #409EFF; + background: #ecf5ff; + border-color: #b3d8ff +} + +.el-button--primary.is-plain:focus, .el-button--primary.is-plain:hover { + background: #409EFF; + border-color: #409EFF; + color: #FFF +} + +.el-button--primary.is-plain:active { + background: #3a8ee6; + border-color: #3a8ee6; + color: #FFF; + outline: 0 +} + +.el-button--primary.is-plain.is-disabled, .el-button--primary.is-plain.is-disabled:active, .el-button--primary.is-plain.is-disabled:focus, .el-button--primary.is-plain.is-disabled:hover { + color: #8cc5ff; + background-color: #ecf5ff; + border-color: #d9ecff +} + +.el-button--success { + color: #FFF; + background-color: #67C23A; + border-color: #67C23A +} + +.el-button--success:focus, .el-button--success:hover { + background: #85ce61; + border-color: #85ce61; + color: #FFF +} + +.el-button--success.is-active, .el-button--success:active { + background: #5daf34; + border-color: #5daf34; + color: #FFF +} + +.el-button--success:active { + outline: 0 +} + +.el-button--success.is-disabled, .el-button--success.is-disabled:active, .el-button--success.is-disabled:focus, .el-button--success.is-disabled:hover { + color: #FFF; + background-color: #b3e19d; + border-color: #b3e19d +} + +.el-button--success.is-plain { + color: #67C23A; + background: #f0f9eb; + border-color: #c2e7b0 +} + +.el-button--success.is-plain:focus, .el-button--success.is-plain:hover { + background: #67C23A; + border-color: #67C23A; + color: #FFF +} + +.el-button--success.is-plain:active { + background: #5daf34; + border-color: #5daf34; + color: #FFF; + outline: 0 +} + +.el-button--success.is-plain.is-disabled, .el-button--success.is-plain.is-disabled:active, .el-button--success.is-plain.is-disabled:focus, .el-button--success.is-plain.is-disabled:hover { + color: #a4da89; + background-color: #f0f9eb; + border-color: #e1f3d8 +} + +.el-button--warning { + color: #FFF; + background-color: #E6A23C; + border-color: #E6A23C +} + +.el-button--warning:focus, .el-button--warning:hover { + background: #ebb563; + border-color: #ebb563; + color: #FFF +} + +.el-button--warning.is-active, .el-button--warning:active { + background: #cf9236; + border-color: #cf9236; + color: #FFF +} + +.el-button--warning:active { + outline: 0 +} + +.el-button--warning.is-disabled, .el-button--warning.is-disabled:active, .el-button--warning.is-disabled:focus, .el-button--warning.is-disabled:hover { + color: #FFF; + background-color: #f3d19e; + border-color: #f3d19e +} + +.el-button--warning.is-plain { + color: #E6A23C; + background: #fdf6ec; + border-color: #f5dab1 +} + +.el-button--warning.is-plain:focus, .el-button--warning.is-plain:hover { + background: #E6A23C; + border-color: #E6A23C; + color: #FFF +} + +.el-button--warning.is-plain:active { + background: #cf9236; + border-color: #cf9236; + color: #FFF; + outline: 0 +} + +.el-button--warning.is-plain.is-disabled, .el-button--warning.is-plain.is-disabled:active, .el-button--warning.is-plain.is-disabled:focus, .el-button--warning.is-plain.is-disabled:hover { + color: #f0c78a; + background-color: #fdf6ec; + border-color: #faecd8 +} + +.el-button--danger { + color: #FFF; + background-color: #F56C6C; + border-color: #F56C6C +} + +.el-button--danger:focus, .el-button--danger:hover { + background: #f78989; + border-color: #f78989; + color: #FFF +} + +.el-button--danger.is-active, .el-button--danger:active { + background: #dd6161; + border-color: #dd6161; + color: #FFF +} + +.el-button--danger:active { + outline: 0 +} + +.el-button--danger.is-disabled, .el-button--danger.is-disabled:active, .el-button--danger.is-disabled:focus, .el-button--danger.is-disabled:hover { + color: #FFF; + background-color: #fab6b6; + border-color: #fab6b6 +} + +.el-button--danger.is-plain { + color: #F56C6C; + background: #fef0f0; + border-color: #fbc4c4 +} + +.el-button--danger.is-plain:focus, .el-button--danger.is-plain:hover { + background: #F56C6C; + border-color: #F56C6C; + color: #FFF +} + +.el-button--danger.is-plain:active { + background: #dd6161; + border-color: #dd6161; + color: #FFF; + outline: 0 +} + +.el-button--danger.is-plain.is-disabled, .el-button--danger.is-plain.is-disabled:active, .el-button--danger.is-plain.is-disabled:focus, .el-button--danger.is-plain.is-disabled:hover { + color: #f9a7a7; + background-color: #fef0f0; + border-color: #fde2e2 +} + +.el-button--info { + color: #FFF; + background-color: #909399; + border-color: #909399 +} + +.el-button--info:focus, .el-button--info:hover { + background: #a6a9ad; + border-color: #a6a9ad; + color: #FFF +} + +.el-button--info.is-active, .el-button--info:active { + background: #82848a; + border-color: #82848a; + color: #FFF +} + +.el-button--info:active { + outline: 0 +} + +.el-button--info.is-disabled, .el-button--info.is-disabled:active, .el-button--info.is-disabled:focus, .el-button--info.is-disabled:hover { + color: #FFF; + background-color: #c8c9cc; + border-color: #c8c9cc +} + +.el-button--info.is-plain { + color: #909399; + background: #f4f4f5; + border-color: #d3d4d6 +} + +.el-button--info.is-plain:focus, .el-button--info.is-plain:hover { + background: #909399; + border-color: #909399; + color: #FFF +} + +.el-button--info.is-plain:active { + background: #82848a; + border-color: #82848a; + color: #FFF; + outline: 0 +} + +.el-button--info.is-plain.is-disabled, .el-button--info.is-plain.is-disabled:active, .el-button--info.is-plain.is-disabled:focus, .el-button--info.is-plain.is-disabled:hover { + color: #bcbec2; + background-color: #f4f4f5; + border-color: #e9e9eb +} + +.el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.el-button--medium.is-round { + padding: 10px 20px +} + +.el-button--medium.is-circle { + padding: 10px +} + +.el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.el-button--small.is-round { + padding: 9px 15px +} + +.el-button--small.is-circle { + padding: 9px +} + +.el-button--mini, .el-button--mini.is-round { + padding: 7px 15px +} + +.el-button--mini { + font-size: 12px; + border-radius: 3px +} + +.el-button--mini.is-circle { + padding: 7px +} + +.el-button--text { + border-color: transparent; + color: #409EFF; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.el-button--text:focus, .el-button--text:hover { + color: #66b1ff; + border-color: transparent; + background-color: transparent +} + +.el-button--text:active { + color: #3a8ee6; + border-color: transparent; + background-color: transparent +} + +.el-button--text.is-disabled, .el-button--text.is-disabled:focus, .el-button--text.is-disabled:hover { + border-color: transparent +} + +.el-button-group .el-button--danger:last-child, .el-button-group .el-button--danger:not(:first-child):not(:last-child), .el-button-group .el-button--info:last-child, .el-button-group .el-button--info:not(:first-child):not(:last-child), .el-button-group .el-button--primary:last-child, .el-button-group .el-button--primary:not(:first-child):not(:last-child), .el-button-group .el-button--success:last-child, .el-button-group .el-button--success:not(:first-child):not(:last-child), .el-button-group .el-button--warning:last-child, .el-button-group .el-button--warning:not(:first-child):not(:last-child), .el-button-group > .el-dropdown > .el-button { + border-left-color: rgba(255, 255, 255, .5) +} + +.el-button-group .el-button--danger:first-child, .el-button-group .el-button--danger:not(:first-child):not(:last-child), .el-button-group .el-button--info:first-child, .el-button-group .el-button--info:not(:first-child):not(:last-child), .el-button-group .el-button--primary:first-child, .el-button-group .el-button--primary:not(:first-child):not(:last-child), .el-button-group .el-button--success:first-child, .el-button-group .el-button--success:not(:first-child):not(:last-child), .el-button-group .el-button--warning:first-child, .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-right-color: rgba(255, 255, 255, .5) +} + +.el-button-group { + display: inline-block; + vertical-align: middle +} + +.el-button-group::after, .el-button-group::before { + display: table +} + +.el-button-group::after { + clear: both +} + +.el-button-group > .el-button { + float: left; + position: relative +} + +.el-button-group > .el-button.is-disabled { + z-index: 1 +} + +.el-button-group > .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.el-button-group > .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.el-button-group > .el-button:first-child:last-child { + border-radius: 4px +} + +.el-button-group > .el-button:first-child:last-child.is-round { + border-radius: 20px +} + +.el-button-group > .el-button:first-child:last-child.is-circle { + border-radius: 50% +} + +.el-button-group > .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.el-button-group > .el-button.is-active, .el-button-group > .el-button:not(.is-disabled):active, .el-button-group > .el-button:not(.is-disabled):focus, .el-button-group > .el-button:not(.is-disabled):hover { + z-index: 1 +} + +.el-button-group > .el-dropdown > .el-button { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.el-calendar { + background-color: #fff +} + +.el-calendar__header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 12px 20px; + border-bottom: 1px solid #EBEEF5 +} + +.el-backtop, .el-page-header { + display: -webkit-box; + display: -ms-flexbox +} + +.el-calendar__title { + color: #000; + -ms-flex-item-align: center; + align-self: center +} + +.el-calendar__body { + padding: 12px 20px 35px +} + +.el-calendar-table { + table-layout: fixed; + width: 100% +} + +.el-calendar-table thead th { + padding: 12px 0; + color: #606266; + font-weight: 400 +} + +.el-calendar-table:not(.is-range) td.next, .el-calendar-table:not(.is-range) td.prev { + color: #C0C4CC +} + +.el-backtop, .el-calendar-table td.is-today { + color: #409EFF +} + +.el-calendar-table td { + border-bottom: 1px solid #EBEEF5; + border-right: 1px solid #EBEEF5; + vertical-align: top; + -webkit-transition: background-color .2s ease; + transition: background-color .2s ease +} + +.el-calendar-table td.is-selected { + background-color: #F2F8FE +} + +.el-calendar-table tr:first-child td { + border-top: 1px solid #EBEEF5 +} + +.el-calendar-table tr td:first-child { + border-left: 1px solid #EBEEF5 +} + +.el-calendar-table tr.el-calendar-table__row--hide-border td { + border-top: none +} + +.el-calendar-table .el-calendar-day { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 8px; + height: 85px +} + +.el-calendar-table .el-calendar-day:hover { + cursor: pointer; + background-color: #F2F8FE +} + +.el-backtop { + position: fixed; + background-color: #FFF; + width: 40px; + height: 40px; + border-radius: 50%; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + font-size: 20px; + -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .12); + box-shadow: 0 0 6px rgba(0, 0, 0, .12); + cursor: pointer; + z-index: 5 +} + +.el-backtop:hover { + background-color: #F2F6FC +} + +.el-page-header { + display: flex; + line-height: 24px +} + +.el-page-header__left { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + cursor: pointer; + margin-right: 40px; + position: relative +} + +.el-page-header__left::after { + position: absolute; + width: 1px; + height: 16px; + right: -20px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + background-color: #DCDFE6 +} + +.el-checkbox, .el-checkbox__input { + display: inline-block; + position: relative; + white-space: nowrap +} + +.el-page-header__left .el-icon-back { + font-size: 18px; + margin-right: 6px; + -ms-flex-item-align: center; + align-self: center +} + +.el-page-header__title { + font-size: 14px; + font-weight: 500 +} + +.el-page-header__content { + font-size: 18px; + color: #303133 +} + +.el-checkbox { + color: #606266; + font-weight: 500; + font-size: 14px; + cursor: pointer; + user-select: none; + margin-right: 30px +} + +.el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #DCDFE6; + -webkit-box-sizing: border-box; + box-sizing: border-box; + line-height: normal; + height: 40px +} + +.el-checkbox.is-bordered.is-checked { + border-color: #409EFF +} + +.el-checkbox.is-bordered.is-disabled { + border-color: #EBEEF5; + cursor: not-allowed +} + +.el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px; + height: 36px +} + +.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.el-checkbox.is-bordered.el-checkbox--small { + padding: 5px 15px 5px 10px; + border-radius: 3px; + height: 32px +} + +.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.el-checkbox.is-bordered.el-checkbox--mini { + padding: 3px 15px 3px 10px; + border-radius: 3px; + height: 28px +} + +.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.el-checkbox__input { + cursor: pointer; + outline: 0; + line-height: 1; + vertical-align: middle +} + +.el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #DCDFE6; + cursor: not-allowed +} + +.el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #C0C4CC +} + +.el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #F2F6FC; + border-color: #DCDFE6 +} + +.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #C0C4CC +} + +.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #F2F6FC; + border-color: #DCDFE6 +} + +.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #C0C4CC; + border-color: #C0C4CC +} + +.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #409EFF; + border-color: #409EFF +} + +.el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #C0C4CC; + cursor: not-allowed +} + +.el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.el-checkbox__input.is-checked + .el-checkbox__label { + color: #409EFF +} + +.el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #409EFF +} + +.el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #FFF; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #DCDFE6; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #FFF; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.el-checkbox__inner:hover { + border-color: #409EFF +} + +.el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #FFF; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s ease-in .05s; + transition: -webkit-transform .15s ease-in .05s; + transition: transform .15s ease-in .05s; + transition: transform .15s ease-in .05s, -webkit-transform .15s ease-in .05s; + -webkit-transform-origin: center; + transform-origin: center +} + +.el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + z-index: -1 +} + +.el-checkbox-button, .el-checkbox-button__inner { + display: inline-block; + position: relative +} + +.el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.el-checkbox:last-of-type { + margin-right: 0 +} + +.el-checkbox-button__inner { + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #FFF; + border: 1px solid #DCDFE6; + border-left: 0; + color: #606266; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.el-checkbox-button__inner:hover { + color: #409EFF +} + +.el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + z-index: -1 +} + +.el-radio, .el-radio__inner, .el-radio__input { + position: relative; + display: inline-block +} + +.el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #FFF; + background-color: #409EFF; + border-color: #409EFF; + -webkit-box-shadow: -1px 0 0 0 #8cc5ff; + box-shadow: -1px 0 0 0 #8cc5ff +} + +.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner { + border-left-color: #409EFF +} + +.el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #C0C4CC; + cursor: not-allowed; + background-image: none; + background-color: #FFF; + border-color: #EBEEF5; + -webkit-box-shadow: none; + box-shadow: none +} + +.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner { + border-left-color: #EBEEF5 +} + +.el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #DCDFE6; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #409EFF +} + +.el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.el-checkbox-group { + font-size: 0 +} + +.el-avatar, .el-cascader-panel, .el-radio, .el-radio--medium.is-bordered .el-radio__label, .el-radio__label { + font-size: 14px +} + +.el-radio { + color: #606266; + font-weight: 500; + line-height: 1; + cursor: pointer; + white-space: nowrap; + outline: 0; + margin-right: 30px +} + +.el-cascader-node > .el-radio, .el-radio:last-child { + margin-right: 0 +} + +.el-radio.is-bordered { + padding: 12px 20px 0 10px; + border-radius: 4px; + border: 1px solid #DCDFE6; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 40px +} + +.el-cascader-menu, .el-cascader-menu__list, .el-radio__inner { + -webkit-box-sizing: border-box +} + +.el-radio.is-bordered.is-checked { + border-color: #409EFF +} + +.el-radio.is-bordered.is-disabled { + cursor: not-allowed; + border-color: #EBEEF5 +} + +.el-radio__input.is-disabled .el-radio__inner, .el-radio__input.is-disabled.is-checked .el-radio__inner { + background-color: #F5F7FA; + border-color: #E4E7ED +} + +.el-radio.is-bordered + .el-radio.is-bordered { + margin-left: 10px +} + +.el-radio--medium.is-bordered { + padding: 10px 20px 0 10px; + border-radius: 4px; + height: 36px +} + +.el-radio--mini.is-bordered .el-radio__label, .el-radio--small.is-bordered .el-radio__label { + font-size: 12px +} + +.el-radio--medium.is-bordered .el-radio__inner { + height: 14px; + width: 14px +} + +.el-radio--small.is-bordered { + padding: 8px 15px 0 10px; + border-radius: 3px; + height: 32px +} + +.el-radio--small.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.el-radio--mini.is-bordered { + padding: 6px 15px 0 10px; + border-radius: 3px; + height: 28px +} + +.el-radio--mini.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.el-radio__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + line-height: 1; + vertical-align: middle +} + +.el-radio__input.is-disabled .el-radio__inner { + cursor: not-allowed +} + +.el-radio__input.is-disabled .el-radio__inner::after { + cursor: not-allowed; + background-color: #F5F7FA +} + +.el-radio__input.is-disabled .el-radio__inner + .el-radio__label { + cursor: not-allowed +} + +.el-radio__input.is-disabled.is-checked .el-radio__inner::after { + background-color: #C0C4CC +} + +.el-radio__input.is-disabled + span.el-radio__label { + color: #C0C4CC; + cursor: not-allowed +} + +.el-radio__input.is-checked .el-radio__inner { + border-color: #409EFF; + background: #409EFF +} + +.el-radio__input.is-checked .el-radio__inner::after { + -webkit-transform: translate(-50%, -50%) scale(1); + transform: translate(-50%, -50%) scale(1) +} + +.el-radio__input.is-checked + .el-radio__label { + color: #409EFF +} + +.el-radio__input.is-focus .el-radio__inner { + border-color: #409EFF +} + +.el-radio__inner { + border: 1px solid #DCDFE6; + border-radius: 100%; + width: 14px; + height: 14px; + background-color: #FFF; + cursor: pointer; + box-sizing: border-box +} + +.el-radio__inner:hover { + border-color: #409EFF +} + +.el-radio__inner::after { + width: 4px; + height: 4px; + border-radius: 100%; + background-color: #FFF; + content: ""; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%) scale(0); + transform: translate(-50%, -50%) scale(0); + -webkit-transition: -webkit-transform .15s ease-in; + transition: -webkit-transform .15s ease-in; + transition: transform .15s ease-in; + transition: transform .15s ease-in, -webkit-transform .15s ease-in +} + +.el-radio__original { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0 +} + +.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner { + -webkit-box-shadow: 0 0 2px 2px #409EFF; + box-shadow: 0 0 2px 2px #409EFF +} + +.el-radio__label { + padding-left: 10px +} + +.el-scrollbar { + overflow: hidden; + position: relative +} + +.el-scrollbar:active > .el-scrollbar__bar, .el-scrollbar:focus > .el-scrollbar__bar, .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.el-scrollbar__wrap--hidden-default { + scrollbar-width: none +} + +.el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(144, 147, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.el-scrollbar__thumb:hover { + background-color: rgba(144, 147, 153, .5) +} + +.el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.el-cascader-panel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-radius: 4px +} + +.el-cascader-panel.is-bordered { + border: 1px solid #E4E7ED; + border-radius: 4px +} + +.el-cascader-menu { + min-width: 180px; + box-sizing: border-box; + color: #606266; + border-right: solid 1px #E4E7ED +} + +.el-cascader-menu:last-child { + border-right: none +} + +.el-cascader-menu__wrap { + height: 204px +} + +.el-cascader-menu__list { + position: relative; + min-height: 100%; + margin: 0; + padding: 6px 0; + list-style: none; + box-sizing: border-box +} + +.el-cascader-menu__hover-zone { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none +} + +.el-cascader-menu__empty-text { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + text-align: center; + color: #C0C4CC +} + +.el-cascader-node { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0 30px 0 20px; + height: 34px; + line-height: 34px; + outline: 0 +} + +.el-cascader-node.is-selectable.in-active-path { + color: #606266 +} + +.el-cascader-node.in-active-path, .el-cascader-node.is-active, .el-cascader-node.is-selectable.in-checked-path { + color: #409EFF; + font-weight: 700 +} + +.el-cascader-node:not(.is-disabled) { + cursor: pointer +} + +.el-cascader-node:not(.is-disabled):focus, .el-cascader-node:not(.is-disabled):hover { + background: #F5F7FA +} + +.el-cascader-node.is-disabled { + color: #C0C4CC; + cursor: not-allowed +} + +.el-cascader-node__prefix { + position: absolute; + left: 10px +} + +.el-cascader-node__postfix { + position: absolute; + right: 10px +} + +.el-cascader-node__label { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 0 10px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.el-cascader-node > .el-radio .el-radio__label { + padding-left: 0 +} + +.el-avatar { + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden; + color: #fff; + background: #C0C4CC; + width: 40px; + height: 40px; + line-height: 40px +} + +.el-drawer, .el-drawer__body > * { + -webkit-box-sizing: border-box +} + +.el-avatar > img { + display: block; + height: 100%; + vertical-align: middle +} + +.el-empty__image img, .el-empty__image svg { + vertical-align: top; + height: 100%; + width: 100% +} + +.el-avatar--circle { + border-radius: 50% +} + +.el-avatar--square { + border-radius: 4px +} + +.el-avatar--icon { + font-size: 18px +} + +.el-avatar--large { + width: 40px; + height: 40px; + line-height: 40px +} + +.el-avatar--medium { + width: 36px; + height: 36px; + line-height: 36px +} + +.el-avatar--small { + width: 28px; + height: 28px; + line-height: 28px +} + +@-webkit-keyframes el-drawer-fade-in { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +@keyframes el-drawer-fade-in { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +@-webkit-keyframes rtl-drawer-in { + 0% { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@keyframes rtl-drawer-in { + 0% { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@-webkit-keyframes rtl-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0) + } +} + +@keyframes rtl-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0) + } +} + +@-webkit-keyframes ltr-drawer-in { + 0% { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@keyframes ltr-drawer-in { + 0% { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@-webkit-keyframes ltr-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0) + } +} + +@keyframes ltr-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0) + } +} + +@-webkit-keyframes ttb-drawer-in { + 0% { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@keyframes ttb-drawer-in { + 0% { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@-webkit-keyframes ttb-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%) + } +} + +@keyframes ttb-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%) + } +} + +@-webkit-keyframes btt-drawer-in { + 0% { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@keyframes btt-drawer-in { + 0% { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%) + } + 100% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } +} + +@-webkit-keyframes btt-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%) + } +} + +@keyframes btt-drawer-out { + 0% { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) + } + 100% { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%) + } +} + +.el-drawer { + position: absolute; + box-sizing: border-box; + background-color: #FFF; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); + box-shadow: 0 8px 10px -5px rgba(0, 0, 0, .2), 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12); + overflow: hidden; + outline: 0 +} + +.el-drawer.rtl { + -webkit-animation: rtl-drawer-out .3s; + animation: rtl-drawer-out .3s; + right: 0 +} + +.el-drawer__open .el-drawer.rtl { + -webkit-animation: rtl-drawer-in .3s 1ms; + animation: rtl-drawer-in .3s 1ms +} + +.el-drawer.ltr { + -webkit-animation: ltr-drawer-out .3s; + animation: ltr-drawer-out .3s; + left: 0 +} + +.el-drawer__open .el-drawer.ltr { + -webkit-animation: ltr-drawer-in .3s 1ms; + animation: ltr-drawer-in .3s 1ms +} + +.el-drawer.ttb { + -webkit-animation: ttb-drawer-out .3s; + animation: ttb-drawer-out .3s; + top: 0 +} + +.el-drawer__open .el-drawer.ttb { + -webkit-animation: ttb-drawer-in .3s 1ms; + animation: ttb-drawer-in .3s 1ms +} + +.el-drawer.btt { + -webkit-animation: btt-drawer-out .3s; + animation: btt-drawer-out .3s; + bottom: 0 +} + +.el-drawer__open .el-drawer.btt { + -webkit-animation: btt-drawer-in .3s 1ms; + animation: btt-drawer-in .3s 1ms +} + +.el-drawer__wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + margin: 0 +} + +.el-drawer__header { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #72767b; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 32px; + padding: 20px 20px 0 +} + +.el-drawer__header > :first-child { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.el-drawer__title { + margin: 0; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + line-height: inherit; + font-size: 1rem +} + +.el-drawer__close-btn { + border: none; + cursor: pointer; + font-size: 20px; + color: inherit; + background-color: transparent +} + +.el-drawer__body { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: auto +} + +.el-drawer__body > * { + box-sizing: border-box +} + +.el-drawer.ltr, .el-drawer.rtl { + height: 100%; + top: 0; + bottom: 0 +} + +.el-drawer.btt, .el-drawer.ttb { + width: 100%; + left: 0; + right: 0 +} + +.el-drawer__container { + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + height: 100%; + width: 100% +} + +.el-drawer-fade-enter-active { + -webkit-animation: el-drawer-fade-in .3s; + animation: el-drawer-fade-in .3s +} + +.el-drawer-fade-leave-active { + animation: el-drawer-fade-in .3s reverse +} + +.el-statistic { + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; + color: #000; + font-size: 14px; + font-variant: tabular-nums; + line-height: 1.5715; + list-style: none; + -webkit-font-feature-settings: "tnum"; + font-feature-settings: "tnum"; + text-align: center +} + +.el-statistic .head { + margin-bottom: 4px; + color: #00073; + font-size: 14px +} + +.el-statistic .con { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.el-statistic .con .number { + font-size: 20px; + padding: 0 4px +} + +.el-statistic .con span { + display: inline-block; + margin: 0; + line-height: 100% +} + +.el-popconfirm__main, .el-skeleton__image { + display: -ms-flexbox; + -webkit-box-align: center; + display: -webkit-box +} + +.el-popconfirm__main { + display: flex; + -ms-flex-align: center; + align-items: center +} + +.el-popconfirm__icon { + margin-right: 5px +} + +.el-popconfirm__action { + text-align: right; + margin: 0 +} + +@-webkit-keyframes el-skeleton-loading { + 0% { + background-position: 100% 50% + } + 100% { + background-position: 0 50% + } +} + +@keyframes el-skeleton-loading { + 0% { + background-position: 100% 50% + } + 100% { + background-position: 0 50% + } +} + +.el-skeleton { + width: 100% +} + +.el-skeleton__first-line, .el-skeleton__paragraph { + height: 16px; + margin-top: 16px; + background: #f2f2f2 +} + +.el-skeleton.is-animated .el-skeleton__item { + background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); + background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); + background-size: 400% 100%; + -webkit-animation: el-skeleton-loading 1.4s ease infinite; + animation: el-skeleton-loading 1.4s ease infinite +} + +.el-skeleton__item { + background: #f2f2f2; + display: inline-block; + height: 16px; + border-radius: 4px; + width: 100% +} + +.el-skeleton__circle { + border-radius: 50%; + width: 36px; + height: 36px; + line-height: 36px +} + +.el-skeleton__circle--lg { + width: 40px; + height: 40px; + line-height: 40px +} + +.el-skeleton__circle--md { + width: 28px; + height: 28px; + line-height: 28px +} + +.el-skeleton__button { + height: 40px; + width: 64px; + border-radius: 4px +} + +.el-skeleton__p { + width: 100% +} + +.el-skeleton__p.is-last { + width: 61% +} + +.el-skeleton__p.is-first { + width: 33% +} + +.el-skeleton__text { + width: 100%; + height: 13px +} + +.el-skeleton__caption { + height: 12px +} + +.el-skeleton__h1 { + height: 20px +} + +.el-skeleton__h3 { + height: 18px +} + +.el-skeleton__h5 { + height: 16px +} + +.el-skeleton__image { + width: unset; + display: flex; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + border-radius: 0 +} + +.el-skeleton__image svg { + fill: #DCDDE0; + width: 22%; + height: 22% +} + +.el-empty { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 40px 0 +} + +.el-empty__image { + width: 160px +} + +.el-empty__image img { + user-select: none; + -o-object-fit: contain; + object-fit: contain +} + +.el-empty__image svg { + fill: #DCDDE0 +} + +.el-empty__description { + margin-top: 20px +} + +.el-empty__description p { + margin: 0; + font-size: 14px; + color: #909399 +} + +.el-empty__bottom, .el-result__title { + margin-top: 20px +} + +.el-descriptions { + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-size: 14px; + color: #303133 +} + +.el-descriptions__header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 20px +} + +.el-descriptions__title { + font-size: 16px; + font-weight: 700 +} + +.el-descriptions--mini, .el-descriptions--small { + font-size: 12px +} + +.el-descriptions__body { + color: #606266; + background-color: #FFF +} + +.el-descriptions__body .el-descriptions__table { + border-collapse: collapse; + width: 100%; + table-layout: fixed +} + +.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: left; + font-weight: 400; + line-height: 1.5 +} + +.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left { + text-align: left +} + +.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center { + text-align: center +} + +.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right { + text-align: right +} + +.el-descriptions .is-bordered { + table-layout: auto +} + +.el-descriptions .is-bordered .el-descriptions-item__cell { + border: 1px solid #EBEEF5; + padding: 12px 10px +} + +.el-descriptions :not(.is-bordered) .el-descriptions-item__cell { + padding-bottom: 12px +} + +.el-descriptions--medium.is-bordered .el-descriptions-item__cell { + padding: 10px +} + +.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell { + padding-bottom: 10px +} + +.el-descriptions--small.is-bordered .el-descriptions-item__cell { + padding: 8px 10px +} + +.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell { + padding-bottom: 8px +} + +.el-descriptions--mini.is-bordered .el-descriptions-item__cell { + padding: 6px 10px +} + +.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell { + padding-bottom: 6px +} + +.el-descriptions-item { + vertical-align: top +} + +.el-descriptions-item__container { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.el-descriptions-item__container .el-descriptions-item__content, .el-descriptions-item__container .el-descriptions-item__label { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline +} + +.el-descriptions-item__container .el-descriptions-item__content { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.el-descriptions-item__label.has-colon::after { + content: ':'; + position: relative; + top: -.5px +} + +.el-descriptions-item__label.is-bordered-label { + font-weight: 700; + color: #909399; + background: #fafafa +} + +.el-descriptions-item__label:not(.is-bordered-label) { + margin-right: 10px +} + +.el-descriptions-item__content { + word-break: break-word; + overflow-wrap: break-word +} + +.el-result { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-direction: column; + flex-direction: column; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 40px 30px +} + +.el-result__icon svg { + width: 64px; + height: 64px +} + +.el-result__title p { + margin: 0; + font-size: 20px; + color: #303133; + line-height: 1.3 +} + +.el-result__subtitle { + margin-top: 10px +} + +.el-result__subtitle p { + margin: 0; + font-size: 14px; + color: #606266; + line-height: 1.3 +} + +.el-result__extra { + margin-top: 30px +} + +.el-result .icon-success { + fill: #67C23A +} + +.el-result .icon-error { + fill: #F56C6C +} + +.el-result .icon-info { + fill: #909399 +} + +.el-result .icon-warning { + fill: #E6A23C +} \ No newline at end of file diff --git a/src/main/resources/static/css/JcPrinter/fonts/element-icons.ttf b/src/main/resources/static/css/JcPrinter/fonts/element-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..91b74de36778b0ff8958d37d07ce70fb3b26f50b GIT binary patch literal 55956 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
%#5t+7yTm^Z{)9pPFdh-)p? z70Lyb71b@_PUHS~9CyvfrBIBY6sik5TZ@D3`-%{avZo>tk4%nDNlxf(>hQldU@{F@ ze6B#R$59h-4LCf;$#i8BOsn$trrrtrEf(C;i3_~}x@iDw;0ZY^`-c@CBEkZ3AfPz~ zTh$sM^$+)VKRN)dG~vd;h{`d9Bu=A_&^a)ugxH7x?g_?KA39Z`gQTcBOc6MAkyTMw0?i2G4Ox3=#$`p!h`_Y`L;Hvi4>H9YH@*6wq=g0d!E$hD* zUDJ1Iucc2L{Nl{|NW@e>b~R3zw?V zp;DWxuKb-Xwua^g+m?6A>z%gJp{QCKj`?1^;e2i~8IP(~-lUsMdJ`5DdektPc&}Zp zXexjEEACjVQVspUS6=S>K}fBP#oS+cyS%AFwVhUsm4om-L7Iu>ZqOJch{=Ihz^nvT z3i~I*uPVYArIbV}Fk0ivdqsc}JHBX_$tk!(g~3eNa22_Nzzg zj|?;fP%gsZ2_7jxhWXu$I6;@y5P5sVA!i6!WprnT96%~uf+GjGQn>9X@+)YjR4jZ!)5kD34BKK9qOKpkC6^i9 zA3`mUdLi@pgvux441?MC3 zkhgk((=V(k4Qqpqj;_XOv>MZ8t{|pPgT|>!{ypivq(VvLjlFGwnFCe9$#dG2Cp{(A zUgIs3ctut4*mBbEk6^aY$8bzOoCiHlEp{Z0Tc&qJ&3nBe&V=h~oNO!KD>nY6i!0xk z3jEwWe!fP6i)hT6#xBRr&O{nPrjRB35Do5rZoKR)r>hizGei#@EcEL_ULxq%BisjP zauGTRf&nBuV4;%~C(e`MxDOUMpZLGX|G)*$!PS}?Co_4U(&)Eoo=(x%gF^hth9NN{ zIS~9fUQY7v{Lm+4C{vXAACH$eS_5y?P9eW%H#`IV@L!M1Ma5XEIFCNeLW@F|#uAvs zmkdC~1})<@5>I^T=Cv5@qhsS|G#+GAG9rOvT+M1GGp? z(q9fIQo1w61lh#!rnW zwG$Osi?3YK6h*e{s_rOmP~ML99U?sMNo&=1%8ES7;`5x=#@^6m?Sk&L-Ib@t8&H$S zR)JPMvt>&{o}IX$?(4-3PCkdX)qB)tv^?B6K65n}b9gY>3sx%W&zSlTKG6JLuGLYh zI_#?5=5+%Nzhd$s0-%HcdZO`)vc&iuFAaKO$(l@VukFZ3c86N(;Azx7{6b)=j4~|Z zb?JAt=ohqR;7gwrvs;*PIwp346){B9v7{lZ<8vgj+zml+L16R`^i02?uqd;hog*MU@HBR4^4R?frnN{O_yUX8L~fs{*oUk#mR=4 z58|M^Um8YTMf>5R{fDlqSe_bz0*#Tt$-Zjql;&2`N6$b1kqO&fr~JqrbmKn?ao@{_Fw+DR7lgv6sk(OJ;S6o^ zbv2szPs0V#*h7~Gmv6iO$Ey0q0}s5RHiiT1(89gV6O=!`@x~t&<^9*sKe@Tp*=&0G zh8tfpnO?fFcSmdOvuMI=doG?a(u6!N*4iBwwm6M@(U?FFqH$=Ivo&nXCy#&uB_BU> zKc)&#c*mFs?P1y96|EpE3IZaR5qQtB3u^4kk_4Y@+HwfLGbzi?3*M&A^o2dQ{H zDb4&_g%~oP&5P#ZAb{JcSuju~h4yh*7~wL=ZbNxl;2ANFLWl-3J8xtO`HeFqzJX{u zQAu*OTHGQ|5kP<`F@GnmKe&_cl&Nt8-+A?SO{VW&ZQLN!x{f;hj{|h}#}{o^lnyu?Re;4%`?`u`(Ngne^}R9Tif~nmrTpP zL3$E8DNObU_eW5#1aYaVv0A)X+JbyuRM#XX)gA#EaYWh*i~IyB1d*>BNoLk`*Mi6L>AKM?ZN{J4cxl`EzH2(;uHNT;WscR^-J! zV(ZENPbKk?dSU?OU(*nD45x6*4;T(XaCsv39L;zQl^@K{5>yXeiI)&9V z@^4g5t9Dx)_(_gZg;n}rt8e0sk5+`I&6*Z=I$mq(ph^1%tMBnXhUKX%e66Qq_C5*B ze;zDXyw1kb4_q!j-QQs8w|9i^sctk@`gl4rwXtz(2bu37@jO(}x;$@j3%k2G zhI5(-s^Sc{;!lim{9Qe$+C?;1C2~b^=ZV4?2jMLm-7LzQuQ=AUk9Tw;k^>R5h~rRW z__^0ZoA#^f{!J;dbQeGWc2&LoJh45!<~KF?k4;U@-eu~z@ZGZ>KWn`FtIwSq~R|ot5{2Cw2YRP2gZgubCgK#HDx(=O%l4JsUjWBS!M4v~&$lWkr?@|ya zlLuFn3hBk9s2taMqUOy+`5ea^iXNbKFND{Dw&XV{cwL0A>Ztl%brQx8L+D-P&-6nF zjQ&nW6zd@&vlw&sla|BKvnL!3C(W>FsYv*l7shWY^_dp>w$3o_oUzrn(Bv!St9f0S zTm1umY&rY+&l@*-m2Y`-i))=TTlvP;na*0Cn^sk7{B>Xf=L-h7v$TrO#~c7FS1+~4 zN+L6s7!PP#ddq}P%(a-XCC_iD+^3X`u)65iJqGD_Pz&pipl?8JLE8j<^kWzSa3P#8 zk$ft64oj244;b#kDj#(y1XhD6U|@4$=d!TqBAVNK7k(roq4?YxsjL)lFR>GicaSV5J980Y)Hjcndt)VXQTQrK zguW$(WARP!Mo58!YNBOsRI$btNg&KQqhE0dl8DT6j^v*Lr_g-(g76-f361N71c91K zsqV^vXvDi7nP^s33EA&v@2k7y7-O^ z4xKceslgg46#jw%s$^55bENf)>t|Te zKJ>NvF662c5;X1hI=R}kw)J>pMVXO%TAA@mX=&$A?WH*^1P_mS2Kv@(yhAh? zPtw@~Kmkcdza>JokI+uH{Oup4?)TU1ZVZ-BbyV3d6c{jxR6gFqla3ZN%ZL#QfQ zZd8D*iJnhWOIU4N{0m~MrcD-Wsja3y_i}xWtrYQE`D3Lwf2`R`JoTj$Cgfh8Frl>G zQ)0^>E4>pYxI;KTl2+4_(xju6sbgPc92k4d&o>U_pUl6BpFif!Q4NYxE65k>w`TO) zTGRw-aw~~H^ioLoqJ9b#Nef$HHD^yO66>N`AZ&`?{+RZZ%APWI@;giIua(G^W=meP z4^x&g4%S)InTMJxdo%Z@()_08c+cj{Js|q{N~i5T2MlQ}y~BH7){e6L>O-k~%rfQ8 z3eUfc#h|`BC?a<~fVjwJ3&#ez0{7+x%9ufIAdM3^tWI>24;#Zg1WJi5_KXxwUZ$u5 zEu?C4R4;YBOh0)1DGpG@Xh9Ql5TtV{QP3f1sn7|e{J;s$5gvq2N~7#5W+^wpGj{^H zX{P99h%GU4Nd}fbgP%J{6^1kLRsOzIi}`SDT8m22NJyqdmaxraq)N?Xq{hw^^dWuQ z18ZawMj|0Sgf$)}n|&IOP+lN6@kI!fA`XF3LVg+i-WFO!$zVVYVE~BIP|^_20zD4V zcV(c)Fqi1^S^9|vMN8qnG|-R8q0CEhK1D7KyT%H#{QJlsjp4S?_$_3!)F2}}Bao$@ z#@Pv$lD3Jd^gDC>;rv>ntuoD>Ou51@0xAv4rc$4pQanyW!{J4b@@tmo{ymgm1dr!a zwH_eC?Yz69)X*Gmw^P}MU!zFpb<7iJx*$+|Bjw9C@@)dg#GoEAfQzAJ--y;5$#Y6g z;_G`PdLg6A4xLL;kWY@XX5e4d$kH`MqaV>{JCGE zJ!8j5>D%IlJ6=|l7j(!BdgA$WWtvXEPIsscMR}s}6_N)@a9Kb~18&9`KURn->VN3| zmAT3RtdC`l|(ME*K=)AQd^8g{8jwM=2Zp3fkd^)W% z8W<*-$>=cxn>mIvsob!Z7o8AoX*~B_iic9E6pgW*fN$xSvnGi(vrZt%2_+Q%HRbb4 z2m-%{*N42%oM1U!@ps$$eMsRL*OOcf}YkFbsMfPRJXM^q?Jw>=_5 zD~4$0t6iK8P2Zp>8>Ua+aGTVgD(MG^{?On#JLKF?1I&zo8Dn@@xnwg|22d_}wg|gP zzgZf5Yt7rbBV&Nv6T!dZtqgOqgU>(i0Z(bEV}(bY#_q=cM{P1mU=3lIxK$0EIE25^ z4Q#ezJua>CLQcgxA1Bo7)SJf5;P_cbjg1j{iW`ec4#_@s{PqO7*K$l5&HU(|;Dcj$ z`h>kO37#cFuNh;sEmkr)R4W4vIG)Xj1Ho!c`Ua^@Em)VO2H2yG;t^o&635Z>GT9BR z;5JOv11u*+P#6rtIe#)p>)wjF4~SZz>d25EEU!x;pXNoOMaz|?xrdcQ2pW7D0x4j9aWF2CaVJ=4;^;+wKv0 zg6vz_{~SmIl%0E z)c;7Cgj4!oFN=&~(*74^_>_4^=PTlO%J&I0K@bBgVN4y&D_W6~#=y{um`q3$3Xf-Z z7$As>b;i2`hfoh7?TJd=Tm`+3i;dM$O^a@dyob=7T~PfTeoiAx^>*;i8t{fyDqwP^<~yx;u5n3F*Ahyd=a+nw1>A>nNQP)R$Z|g@2Gw? z)D-tP=~DQs1Dj@BD_xAQ!h5g~{ueh0gVK7qV!TV3ly9xPVCAx$f+fL`V!7H`Z!bzT_`vrhzwbCv2AYB4IbqM~noxM^)FXl?D zc;eY7&+pk2GfA1dM~LBKA)1Z$SthTGs1Ky~raz1C^O(PL^F07+0q((doTRBNIU+*_A|qT7EOVZ?i0%cwEKc4vVn|AF-w3a^T|K9+hA`lPC~KsdIV0CL0j-KOJypSD~BStv$e$S zk;(@mv{ME(y^Qgd#yJ_a;~C5(ZjT&ae2(HR_!dR^>=8ovizBqs&Rq$XC{0axu5q@N zIa)w17F1@zY@d0)SP7|s6+@(5av5Cfwioad9G})0VAQ&pYDg7|xYl~?t=91yf?ipd zc?mod%>e&SS7Ab?v{aa|FOX`^fiqOXtkVbvTrGhuvKjREBkqun?xY1N{YllfMCR@7?6 zbt^CPt@^yF)ruFT#4EDY1(Cx~u)yWAwqWrbEdKO?$Bam&Obw$s7l&pr8)BU}?CIH2 zVo07xF+kI2FqG#dr%^8vj3va|P42rX>Fx7*KY44ho|}NZVB)Jh!lv?{yzX|tz1RO$ zCSswd?A|14GNRcTS0=24&Cg!L@hYwROt|t~V-Q25s;eIp?F^ zRh=a7KM+RzTs<@at>Jnz^J8-sOcD90GG4DA?UO%vvj=sTTRl2=@905UC|53&%W%(* z-JPs1g>Zulx3U^e2c-RLAke$5ms=((D%b5r^$~{!S8oyX&6V=97(^2=-dXM7^UV}& zn8WBSDi>f;2bJe}1!@ni9jjc0A1zV3Y3wqn*5_IIQ z$2Bl>6vuPxceLa15!(&@lCWsULFDK^kRQktb`I1pP7&E<`EkXv#Ha?z92+}elfuXM zAtiRBVcB+2<<*={Qk7ZSyK`r(B`~yQYo`0K`IgHbYn$~x7|NDvMy+ETCr~o z24~jVpjrmDSbUpL`-L>jM`17$GpAwdTdjrytp31MqpTKrBwkWfW4wZfP6hE$Y1~xC z1%O%PXm0$@<2r3PM+Zm+Ov^%V&h~A5PKUIu;toVVF1IT-B;*UO26ll}6&IvP37YNZ zrQuX{@!GPe|4NN!vT9TRdl>cmyy8QP+K3ZALqGIxgM*1=qm zG`J+{TL1;siK$6Z!h)%$&Yn-zd62YH2`fDASLTmD*FLZ9#<|4oU5s~dV<1{jjy3E? z8J?hn&9&AGEj690t-6V~tK9T4^Xa*)W9~-Uee@$O=0WKfOk9ICoq6v~>|EfcWXng6 z((W7Q9N9VZ>7PgkWa3IU%8H*}r)}?ECu^G%MqHL>f%}4eGu~}{_c|UyvEvNj@oM1R zYg(V4Uu0N<*VVxC-5~kyHG8*uaG6p!!s7(Xa4bP>1!ZD%)dsqqy&J9dMv?fScDW46T!rUC?PqSXoTJBY3^Z7XW;-E6#XPdd6cWy zO-m{ZWv)A4z~XdODPtit%(rL(Uxh=baJ8t0`w$3N1X=KTd(e@|)g>;8^`A~0`oS6- zevM0Nrn~hM5Nc`Xpf1r@y};Z>-{pJevskG5Bl-1>;^2XW3V)Y67E~-YrvA4Cq()O_bQC_EDKk)FD&(88gd=`j2PlRo3;MfELP6+IT4}MY) z?Ra4OmM!M9SNziz`}WbN2hEu+TX2hZ_Vt}JHDJEN6J6?$n6ESsZ(IX!>*_t?x%uqA zeRzfLA2j3JAK0;F3++U59B2IsI};Hvv^4tGY#M4-mTVANUvr_g_AeyCdbyXG9y7su zlL=5R>?FDac77PxG^k){S&fpbINUJ?ITk9n)PK*7B-zL!QQC`h=QeExC6@(}8_J*N$Um zm=<{UE0O4Oy@*i+lRGHCRsGm8p{Xn}l4(FP_Ls^D(ES#Si=Y=-u3SeuTiHBWrBm)fn0cJp}_18orE@ON6fF=ZSW)%uSy#i7lW@!A$& zdVKKp&qlbd$QwKdfRU49ZgA!Ajz?a92-H)ZBbEh!Xi=>7!sT>NeE>PzwWF!RejbDi zQ6IH}()_f=DGeSN#&w_xrVw134qY!g8!8_iJPdSKBOR5vgLE*qar8#zOALrJV8DHU z78qcv3@`u?&VjQ*;zDdMz+MFGDL6EEHhBCTdlRb3&g_GZvzE{Of0lB;FB`lp`~eyT zAF2N+TCley%;jKTi)Ll+=^6$p@C#%F{L;9i8R|>RI?x?2q86UvBjhAI?K!)kE?PTO#zLkxl`<5+iTxT%W!Sau_uZBIH zrL4OpcUrzMi#4IVQ>Qex(aFl#yv9b(7NhYzzK=tGBCKT_wExyHJlisErKseDa1 z@_6MeE+DFVD46$#;2nv*E+58Trkrw%#Mm=VXT(A~@(Sd92$=C9RAZfxVk zJey@JHu$K9|9|eIFIi$U`GPQ;2_aNs+>y+sglJgjc>U%3^-=M3xqA>66)f3u24Q(E zf>X&5Sc<|Ac+pPWF~?CF{>$(F!>CFEUv*Vy%x$1h7NRkB{2TH&^VvVxy~n?`54d*w}yQ10(*+u2XxT z?pPT=CpdWU+Vet}4##^|w(WS|o?g$Yr#Bo}yYi}Q&WD_!0MBtL(*k5^_O_?A2;5~= z)h?<%m%27ASB|j~jP+nD)|@|GAE`ZsTCNKcY3=u6-RVC7mx406UTRtk^fd4-~DkfMBXKPDl|~EbG`J4 zw2U4GKK5Z*UL|4xVzd>yFl@_V4V`_{F5ZpC>y>!GIx@Df)RcO44WoLwW{#r0!G}0>TFC!MjhvM;2&1O?|~K%|5CjmH7^!k zX*a9C!ODw*8Ow6+-DuSt%R6veb;I)B*#I-f4>`|beUh}_S<+Vt)?pn6%K9r22cxL! zvzC2cVwxmDndPOR5U|g@P33CZQ{oNz9*0f+Y)`n#pgi#IlE$_az-aau2XyYk@WxCG zD;1+4B=n*asNS}bcUtwTQh`ZSu3Xd<3^r}U!6@VpuL=7JuAjH@EnNa#4}yc9IPz$F zbGWrN+}!bK;RFx{W@(~az$*-rQWeN$;2JPuQWXlb#A+@;NGKOU>K4tFv@r0Ucjlep zd%1T&+F<+7zMr~eX_U(HH$Uj=YBqn*dVsgOM!N7nG)6QwRO7r>EwOG%vEJifsRl4F z>m1zyR2~}|8oOJ%^byx89Ls>C2kZNMk}+F63C_@h$txdTDrT~S*k^1hdc|n=r!j9= z$a9M)>>;P$bFN>j_2^jnb<7j$^xop(hv$0O4o~)%ET@0@a>Pk??BHM*3^GQU=<197 z`V5Nn&dhj2UAQ)_^Y~@Bu4wZk)^nNG?^)M`RCo_{K&N5td>nnko{>-sR;b}0two#B z@=n4yf2KLLs|ARt7`tBxQ5jOWBb2)=$^+^^|5;nKe>PG z0R1i0pnZLt*W9h;WSWBqbFv<&Oc~YjL%Lq8D5p~x&YZ>SGiD69LO848P2*y`)A?FC zxd$%79??9%b9cHw)3EB;A_J0w8B!qK8#u%L5$f@JpYjm(E%KPU{@`8Pwf&C$h^;|v zTjoOxvBR19A7*q6m$o__xc@$;nfrp_;9{V@FJ@~Wi8P`Q*f%HRTdUAs*OY9r+SXvp zrp*IT_Yc4jQ~2U^wmCxRsSxa(F>G`C}2?*@}~z}y}Lf=P>&;oaT=>f z0Kwv>thyq;-qE9m)Rt8(xb}2N_bqiLJ=Nay22`U+p?;z+*Z~#*S2Vp z0)z$HMvw=30OnDEI?E;X6_8~HxtSN>!1=NB&(DX)0%PwP@IW6}vjMcS$10n=%t-0V zv9Uz3b^W%rJ)Lbk_CXgf>a+lTUl?I8&p8Q)pP)=hoCLnUlXa!txXEiOsJ33}p$yROXZ-qgZI?5ARZC#SzZr!H4Arnb1_qs$MP&d_vJ&KFcYv zqQLkhR&O>!{t%;FsQzOr2kbWUiE{8FiGhFNCe**}}%v65wR{D-_M-)TgBFr-!g;A2^;qSQz_lZf?7G=8C_(c~515rmrsCp+c*thTnVF@QShi=ElAYg6BUOoB4}SV9nIs zA2Q}uU3=(eZl)@Dc?tO9;u#@hFt2}wfVFb;!f2-!Zu`7?vaEjow!(|*k*lvhqKYe} z*S&n#T`#Zu8@i`@3lFS3Ul#NzxH6=1^gA%$IpBca2)pRe{hLRjhu92d5^utmqXyW~ z$zAQqWc#ksW1|NS;8GXM)mSyCNA>;X{rU&TKNt++QX4V9SYs%`Jy;#9oS4VM(2+zp zLfCM^@PjnQk8-J^m!QzOVemNg(&lf@$F6{KC9E#!=D)~WzolP}k8@tgu!tW%`GrS$ zS#d1BLoMgT`Z~)@EF)>5Zq*X}U*z6?Jj~{#e3>lrL`Il~Qb`S$O2S~2FKSl_*+Y)R z*ve%{zk|%ps%wqt5T0}bDXIYt%21fSstYT+x;AumyKOhTDul&Pak1;Zt*5MeAsVRgJzs+7jZ`B(+$Jds4e(}IB}R}>hWuz5ho0-!AR z^Js_qn`??sZ1@De>Wb=a7$%sDr~YBxXYi$h+@^x!7iH(LB56lhC1L*!%?|n_?(wFq{hzwGg0TC=wH>+{eT z1PzzLJ6H~CL3y$m;ex*#ZQ(U^bzI~*4u}Zx9c-vrE^$sJ$pg!*&_uPD>h5B{=@j4v z9b~{8H&lImya>j{dmYS$@o@<23UfjJ$oIg~Ag5#0>0=`&9&<;%*f=&0x?=q~diGfL~z{2sUA6zGi5PjclPgA|O@*@FY{qI-k~ zEx|0UIAn;L=e;BJG0)JhArI{_pArG{5A>V}d`vztw_6FGGq=n8#nrvNt95Z99Ko?% zc#-~U$1c`@SO4H}sL0(6fS?JyptCe|EtHDYzDF9+7xppq2@P!b2>dt%Ft(Mk+ygB+ ze~OD^rPY^JE4?MI3~7NkY(mqz#Fxi;nC0*IB4Y-!Ko6iQq61OzBE7NIA8d<&bwD;$ zpj)iGg0#vKSGhl71dk?^%gobMy(oBY*^(ba7=6!_e_rB+Or>*TBZwGtS>!=gtPCi$orTn+sZ@=i6f7pM_MZRDoUD_D*36yjQ zJS&4QSMA-Uc2%-1!K{EGi*>6zy^$T$K&v2+ay)Ald&BsY`EvH!sjI@+oEav3tzQ9d z)a@7AXHhqnxJMY~s0uStUI(q&{Q?x}s5o#i z%vLqvdlntVES>bJjp~;+PC*lSO2I`P4<5*>YW6^|$%loIwl)ZhZ-l?yf zSEE}yRcNGetTk4sRi|{6Dvy81Obm}PnsYNSP_mC8p2%+MN3x}e7U}5eZLb__@9pVO z4^@t>IIpLrrRTgA>LDw1k1r7D2n5VKyv_Xk1rcrb${+O~dpgX{_TJuhdaVOal$!CT z*@-usIYh5<=!s^p`4W=*DB=q&g}u!?DB$b#1_ItrU*J;+a+*%BfF<+j-)lE%?9Y8C z+P>L_BWhqXXJ;=Y>_v^8s|^gYBQ2;aU_=M~3@qxL!c536qind&iAU+YJE;F~vu1ag zC0CQZ+1t?aOP6LRZO^0ou8Zu@e-Le5=WDiU4qww9<|~Jf5{C01{Rl7cl!hQnvZEt9( zDTH?~MqU_cc+4qlW5Q~?7am)_5u`Zf%6drD9O3 z3gt2b&&C!o1%x)yWD>$M09>W<4>mF~u30Ms`bnfvOFUgffOLMurlPfB3>LD^I`D7@ ze8<7o9JIzJVU~#)e13;;$US?FU>{{m292<%i)sobv zSH{Kf^ZC*D;N;`EMvp_a`8|Ds{ZDQg8MyL-PwiC6ZgV^rfTgg#(Mg-UcK>@#llJd& zYW8#NjgGF?24AZkmI;u`t-LmH-hX|CY2J_<-Rp8AQ7GW@Y#O+7|C8I+x`s$|G}@1% zh!sxF_8oU4t;~+XQ5TYNo~^!fTf3m=#-~~Nx#U0yx8WJ2P|iB#s1-)%Dvw%W72&U0VGZHut*{N@ zA6sENY(HMN!VcVj#|pcZ1LU;A9;KhIbzhh@qIqL7JTV`R$I_{(bSm#Q5=PQU<*ziR z3yEmfidjDgjBGBRPKAdCH&}NrHd02mnn&))^l&~u6`snbli`bynUP4O!a0Y0i?`gfiNy|3ZoMSL3s6PE*80Ry3^~CQ;wjVVU(ChUBdWg zkxvq#i>#V)P6>p=aHz=7u18)mq#lG(KEIWLi?{XotG1+?eo(Y9iH>GjRD9gl?`c2O zPAX|+!|JXB8Uq(KkefWv9{E6Berm$1TQknoYo#^{V$fQF^c}R4R)N{G+q*DKV0x&R z)=(eyW4e3}t)+F?m2nNsejnHNoXKkUav<*8_cff*-U3cj;Mi1RELl(muMBE~Cro3VJWSkFKQm(^a$|Ho^z#YWe^jqQi6zT}#)|2Qht( z(gek5k_?)nX_}!pT~D)=pd_UzO*mhRvXrAd73c`f(G4_DAEuAcjdT;;Ot)a7eU$!$ zZl#aX$LLS#HcW=^ppVm?^a;9)?xsJZd+1*JbNVFRM}I+|qEFNP^Z@-O{TKQSJxHIW zhp0rKqtDY{(Zlp#=@|Vt`T{*d|D7JCFVbJrWAr!lI8@VLqA$}Ebez6IPtsTEYxH;Y z6g^FUPhY2RU=r|6dWN2*Z_#t~ZF-)*L*J!;pns%)qVLi7=>>X`en3B@m*_|IWBLjG zlwPKPrdQ}^^grlT`Z@iA7U-AQk^efqLI0C}MgKx?(*L4=rTQfuBk*i4! zsLg7N+N!pxL1;f$sO@Tp;*ZCSNDSnijAYY=)MV3AJoljj=-QP?Clc{YI^)Zv^U-`d zlFMh~nVc&bPs~R0Mzn!nn9RmgvrZ1-jw6+6moX-LTuI^OQds# zZ!!|iX47-Brrv6d8{w7@YJ!vLxs<0Sxl4u%8Ew{>w-r#lqmW9ZW3x8CX!&%e0biN5 zi$k23UBJXP5sl3{CerzQI_Z@^GM&eYh+>m~cqGLzv~jQrRW3}IU_RUv_kF~BYI>$l8wew4GGSgyT&a-;--5pj_fn( zIU{Qa#>8fv;u;yU=i^Bu>xp8lOLB>^S#L6mHl<_HJcc^Ig!5wD8=ah7jI>r$MdBDc zvq|wr)8b7FG3=Q{G-kMfPOTG(H)bjptqYY&tVD9~pAUfIVqUMiWkP zjSMy90AEp2Eg6rwCZaiGA`0@zrDHK8>jJjsIqt@TSwjR}xqLJm0j>CA>CAj&G94@M zXzpREisV2cM#`6)ivs|Wi2}MQrA6aOTMU(Or6Nf;~S|NKQDWjAS%n*!W_fF2pAd+l-OO*iyz^ z&X${rXYBcGAvWurh{xsuwuVerFwN++?Dj$`@0deJ8F^bQ9Z%Vl0K!QHUp)GkNoAu%Ub;17@DZ`*~v`ot}*hF9nC}Q%I3x zMxBs=YseZgBYp&L`!n$vz`KYxZKuWMz~s&qfQ>-x$dIcVv?0@^*O-jwtLW9ZR6ryj zo%T&e^HDI2XktDW&oyM?jHm#JTil;WGyY)g<2HDb(dl>$qZ=4Js+rE>CdMgr0YK0o z(ldhCC$fdyj1ydB5}4samqYYTL|wU9JO`GX^BzH;r_ozr7Ey=f&(3H*pN+=yPIPA+ zL!9fw>2#87>=c1`3P={s#%3JyEpI+LYeeUw^AYauLWbG@u#34bhZ+QsV;GWw32}(X zS#OniBj7nmCn>q98jz%EO!}5?fa3j&G0C`=;*y4)3(6xbubjFM!pB0rw6ftdIuaC78`*;f*LIGsWmZ$cJhE}M%K(BQobw1wkzY}@FV9ou%twr$%sPI!WjZQD-Aw(aEhfA7;>W6ZI?HTS9-^|Y(@ zDt85OaS%|De_=-r0{7o@E#?36|M>rhgo>Il2ngtpe=h4k3DwAvi$RS|K+0p zq|S#a)oE;N=LIoGXa4i@|K$Y#L=L?Lk!4});_=Vx{g-2afIyi18w6rwZ~R}~Ul0&5 zw*TZCR$*Xk=<#nZQ}}=$p z3j%@wci;?(=aFMWSW#Pr zM-sk`m0uq8xYb`Cmsw(7J!k}vp6qi1VS~jP7&6A5mE-EG{5)pI7l~c<3JjAJf7Ao{ z%?06O$C!E2hN3FRmRCu5Ow%tiyBh2ns`-x@zc75e`(i)8rv=+je8;kh-i@>exF|8Zoy0d%E ze^yR-Rn9=!jEdV-)~sl5yJK;fvbNWAZT=0qvKdpinc}dSaI={~ycm_gm}Gd^0er~R z)M9-DIXmj{IvSw8>#@8WklyP7dhek4qeA$TB>3Zo_|qu(V@mi_%=j`yUn2T(`yTQ; zqHm61jJ91ll zVp~T9dV8jNyJ~v-x_ZZaTgTx12W0$5X#9t){Ks&gcFBydQ8lk&_OJ3ir{DE4*RO$x zAEV#D`xGh<%>8yX{Px|y4AcrzlvS)!*GlBewa-%DN&>&QaZ`s&q%5_vQjbc+EH$-K z*`?3tfsOQ+56~*ljNeyZ-{0)jU)J+W*Qx@kC-zG!MBuUtn9Q>kDG@^I6k_nrv_eJ^ zr!eGUS$Sec8K>psVcB^KMj>irsAO_8bj;%w8dybgGtA7x529$sax)yv(+??V`*Jfp z%zY0BXlQacg0d_npv(DUULP)9)=1cYE2euqQ_K9?BF>tg?x+Ykm43d!xh;gizD4>E3L9epi+%` zorRj_F_Y3X_zqm8;Ac8yye*)KjEtAfl=ZQZHs3>2kw*h$p=Q5Krfd!#1JS9vnGU&7 zfF@M)DYt{^z(%TWmP7vArgG2-ds$sUA8RYfJsuSSWEnX*Av#u9sN1e`z6c^&K4Cge zcG$Z9MfyPnU>b>f)?3)i>LTwTBM_0)kG%=yHoH7MVp|SD?8ESk)+n{SX%tt*Ke0(x zPJEfe6<2d)(auCyWhU`aHdbPp)0JqocQMFBM1?3RR(48~gTs}4b#O7wL`B6uX-XDB znuF7oX0?B@!bC=;C#gzSPNtc|m0@*wvD-vj1u6MbHdeNo)0K6#Z*l%03)oG$!otqk z)?7X?<|=C|@5c7Xy*jpdbI=Z~rdnZb;&1CN{~kk-l?m9GZG;((l|2vG_}hp!DkmEq zcww`KXo9s6Ma;>53FE}NP*2>E#R1jUW@($SDccde(cdUIdIh8xwzJftI8X=r3ftLg z(H?LBr-bdSwHOcFfCM6T_F8NQh(KGBD+?{I19@PV$d!#2{{aIKLG+2Kiln~O5-YJw z7B2F_c1`-A8n`5SWwxepa0R3gyE0r;J;(#Pid~tmX&!6=hs3Uo*Ypm$ff(Xf=4-|W zUqDlFLW4DngFs-DIHAd!?Li+9Qi9NE&FP>3s3t*Zw&s4Y3oMZ!G+gsJNCZAg5Sp$9 z9?Sv7Bngez!VcT#(v7JXLXJ@ z){p&>^Um%ZZtNVhmcz^GoNgQ*JD2Oo>FjHq9mA8;&g~p)TpP=ld(Z70YCIUzmdnoT zoNBxpTbJVjbPhDWjPb~=13D*MAQRlPuR!kz7fc1WtlLpW-(^?8JbO;4hVkq?4_ z+Ce^}E@}x#*;jCPC<`S*{8sH;qa(5_(66nhh$H|eU2+ru1zTZ$%Xa0_QrTx%u3ne6 z1aLV{c&<^Gsf1uTcLc6Mm)!(~Y&!y{vePq?@XRYBr`A(cQi%*ZQm5imZc>TND{`mC zQzOz5?6XIF>!kv~e&tCnzJ1Br2aI~fG{E8?Nc{u<;fe`bD(!M^|ESc8`%~*cP6rd8;|6V2x@2uxge@=KyBC$ zi|`bR5K!rXMgz%-+SGYrU?UxdcEKn0MB{=ow_;1K8@Ik?DUSk+>#z`~?)SGAcL>qe+6j#(>P6M{$6J#k$uU#{R z-s{lpIh;j{n>TN#5M7|;A&LN1S5Gb5Z@ugDY*&{Z*Za%xtn`OuARbR}-%5Hcw^6D#e_2aE~PSe-7MjKb4wJ!33 z(UO00wX^f|aZYJ;{}Bj8$PK4MAY^41k{Y=@QXe(UE}6SS=V6B{B+j9W3ZjN_70#Z8 ze2jW9VXfX0r9)+Z(b4nQx^_;mAkB;{k(_6jbV@{qX~iG>E99ftViOjF*0<}%b3h6d zC08EgJC5_Dkaga%63kZv-zn>M`Ou=?caQ$DJnbbILNgE&t0i--sRVb;I1yO|gu@g*36P2j+4 z$rd6RhpMY$mQ__g$Ig_Ja`Ja{6uWErwOlScZqYlvM(_P_qf)zCTaw)CYQE%s+LMfJ zO(DqM#Jk1j^Keb=>NVQmtFrGoY7?~~*~lS_J>!F28Wfa^A*0z0~`fAN#`t$O( zy5#bxO@mI$t3XMB(*Hh|_>>5ttM0ut`nW@*>ho}!zRS2f%-)y?R=n(3%CY7b>2HW0 zCUP6(X*34R>aaC4FSNhlme{6B#*|YG*;4IPqOqi^{9uphXu)g*6Y$FZ#CSX5$hO04 zZU*T?ERi_mnCy)SKN=OGnQ>#f$!CTI1e2`d>hc19*rtTV5s|VX@nJl)Pv5uK&OE*C z2}Rqb)wQTiw>;sRpVIZU*2EQKPBn@bUhDwoj(VmS);oLJRz%?2cgi;DITjQfPMYJP z9^Xh!_U@qI91`~QR@CE9>JuHaWgcc7BV$9UY}Rc!mM{0O9OkJ6@Ggmq$)v@7#%jHJ z^O&i$E|-7tWIgs-KJJGKiiiZ@%CY)9d0#iZn`OkffC>1oHm92#C+lz9xpG&nr#e2+ z-+I*%4~C>LsU*~z8lsnaf9QcXqOu8+iz1{_%JrR$L-Ho-L>)jGrVSTpzS!KnMUDu4 zLX6me!Ucs$j#b);7sfVojBBtp&o>Xk>vF8FizA+D6J5nX4ZS9IUFSSygS3m zHi(kIix6ZDUj9hVGyQyCXIE;>-N_~qDhN_`+%O|_XfCP^MHPtppE@bzt*L~ z{_Q(lz)u=OkiCOy1~;HcrO%BO2{})w&mH<{FMDjjK%GjrLXRo;UFUpHT z`_V1WfO(#mz+cgGdoqeSvoK#0&rT;eTjHl%skfy~wD8zaL3i^tU?zw6p>+kDOji7x z8hy0SzG~Id#U6)C%6=={;CZP9d0tsTFF1M%@Il};%S8x*-z0^({Jv?T@0We8%{ zt78~Q>;b}GCK$nn2BNpX#bnjM#p^EU?MWI@WrnsTFg19NRP0*^x_3_O@X&j`{uqC` z{r%hbmk?^Aoo=Pj)(Y~1tHjQo&fWVP-bzhR;)kT0d*XmoFff}iy||DZgZx9HrtN@3 z+P-6O11*u%vcV@)xhQ+evUSc_zae=(_m0dd5WS$}w=>tqO_QiYW!mtYfEoC(B#Ti<;t7f~Vs`Xf`N(Q6xm^eE#1-Y3 zT`9C(n+;;oh&(htVZ9)uwhNb6b;(19DVsdvkma1^&tG6A&zB78x#Hk)K~rsGyN}!) zx9wwK7$E1wK4Jkg#D5`ckkJc;c?2_q{eF}Fa6Abw?kkh%v}YPF*o^%OfTjr)2 z$vkbnEmR=&8&M&$jC0~!*Ym6b&#$|9B|Y!hvbKqReN7tp^0t3h?W}g^*O{|&PvOMg zcTrz8tDh1(#@i^7%mnu~4w4M>HY}90`0p!7RHkNc1Qq%QYCC3{NQ{#s=%MxFPi3MS zK2LI(i z(`8yUH)YgFb&}h^?X6Bl@$9z#CE%CFDD1HyUwt53(s%%XTQk=PDj$I+<3m2j04g7V zK1-lDff@BEtPFbqwk`Va&~NmDnKTb_t?sju3!#(DH0!!si*51vbd2e>-1O@VEYpJc zl#{y);fp(%@o1u2l3xB{gdtZ$pr~zZ!{GMKB~bj&bl2>Pk=+Aw!_>-V29EVv?%XzY z(?~;ZZl;NLyK5+Wy7rlErWAlBa?k>Ca+SQtPb_iwQl46)CwSP%q-18b$FVh8t_zoQ>{liC%y|> z>3YN1WMK@~ch4(H`L`FId5=6X%fZHY)ok;8=}vY*C90)u z#4~^%i>K8bV)&fgE6x)J&6Y0}hWEb}?10!ovua#D?;)*~g1Sena|R;34k7+ZKj_o^ zqny~-?P&K1!ajr|9pYgVhVn1?s{s9U@GIIe+O(p0c|h*iW_Ekc^?J2&i%p%b14^V` zx8b9Gb=%QT`l%w%dAG`|r48S5@AvxP1^YG~zwbgg8|}NIDSG|3qpa=9Fh>iMmqQ_o zZMMl$&wduessya*aOG8E*xi$R9_kNCbZR^4$&wRdHm-TG)Q{`>8^=eVC^1tHbd_K~a&#uAI0o0B&j#&Q(-lfAuW{)0$J z{*(Wj1Qz9hEjHWzJSAhBu?;uh>uJw>x2Lo9V}?i^iD#RfWwx&FAtnuy9kGMxM0WK! zfozwL(_*s5+`Oh-2wQU~2JBM_=(}TD=Pi&2hN)K9!n*^M=^`?WhrW104QIP-=Pjq! zs1?dpG09!Y#1I@R4hGh*$b((^=C0zKD|G%>%kB&;bWKBu9Y=6FYH$*Q3DECN1XEI_ z2~l+T#DHBi@HG5cah5C)tAvRg7|6=fz7wNL=p_CNebNlsr^$Q)9O-ErTL2c21%3=% z~Yzh^L<@QvQuEWJOAZoiMs`StnunB{Qk$O6s5<(>5x|!PFXz_vK4s&@n&dQ3JX ztm)8tC&?Mw?qv}ajGfqu1Vp36g2i{6K4q)EW>i#K{fQ~13R)gfCjNnv49Yj8so)k} zF{!I9f~c7JV!5@mGS`QEg_#go7JAg%O06V>I#S-~@939vONBI64+ih*_qZlZBH(wa zvD9w-iXeQh>dJ^!Hp>T6-F|dfe^9lTxY-dO0Z+#*W@!S&8|n^1Ub0ma6&{eXoPbPQDjVXp&vBq$nSso=nfEl8C1@v${QKYX1*X|(bh!x@idwn@x_4O>f) zyFU7drfQZr4hD^3R$+%arp8raXeOgpI=voJb&KZAxu;Jg!LZb(}BF>+H3<)2NQaWa-&3RTIggc1U@!%Ld+ zN!mDIq?0KE62X58Wedq1S{A7OXhxlvh6YKL1>vWu^)jImVH5KNqYMQvB`HEfiqMG2 z2I0mMT!M6(GBQM%j+BLXP5;nh={SMLxzPJFA{7^5I!f(8vGzlC93d`1<`utY+nwnq?y)207lDC(quzEp0}@ zXJ+Bzk;5ATa+?U!(*kj41&U;nT%8gI0W}m-3QdF!CW(8W@nO6#hE9T5412^e_qP8q zuD{(iJ==-Qi`0J%m3=}YOlq{Xu*M!zQ$kC2;{82s!akY1SJB^gm1CjX?%V38i-F@S zLY&kJ~Q`-)%5q%!j%M*jH4ibKgzNI)6}I-USwsL=m_Eo*+Ruvw%*f zADgLC9jdAOVZ+USQtT@4Fg{jX>@Iq zM0uM8==%J$1iqPUU1ioVJnGllmp@wQmR5#JN6sHi_AvdPO00X%=zPat)y5x{;2{$t z9duj$wQ~LDxP_PL=U3#;k=zMB4L8&1T?IbGo&0?5t~PW&KZ<**>guLulwT z2cd0DA+W8;GxCRIr_z zmL=^hD?{-eW*fjOdcs<73vPggQw#UHm0@GgzU~WY)WZH3fn!y;*yy-4o&MeBc(!+; zqc+{0kB@0mQ8odV<&16ntF!M%lG5om1$qxgjt)9BB$YwCp5c$-vO-!#HE1qz)mCD3 zpdnrwji%lJ_&iTVt9!R1 z;c?NTNdQ}{bGn0&5_uacNCQStRu+W5fTj*HSfEV{N5Nj{sk$~Tb(4$s)FJ zcPPF*ES6TK`a~#(9;jy@`GO#L)76ylI~awK0SYwOzwTu)4wgnTQ|C#1$2@UO#5kJZ zH9u)@uU#C8Z{9YN<+sn`*x)D@;@P>cjFOT@!YJby$Ucld=r68&7Ux*qys4Lg^b2dV zJ8$~Uo^-hP5%uwBr^}j*?{EQuvR*BN+G&%lb=DBInmJtRnWiK)`d&bGPacRRIGDup zOgPW(19eG}Wm=McVrC`jcC(L<7@_lKV`u}lww==$z>%;Hto|m zOc>M%Gcc=YaMOfLa}M6qY1q1iZxZ!JU*q8drrP}9FLxIYEh`V%%{u%J%cJp;oOw1Z z%VJ%=&3BgH$tyVL1S^>XY?xZiS+$321B<-(7mzUC_m>lKjK9s^7YBYG=ZZ~7P4QVT zf6*U(HQ9g9b!CaZWa2(i#i;QP@JhtlJufrLGq2~#N5C?>x1wHx9P|J_ z50`d^P9ddnnTMUDDd-wgC$!gePjPK)O7xpH`n+YYb}@#+a!~TD@Uc7!Py4ZdTM=gc z*Nvn}?G{TX`%ihK@o(0eU>PQY`-p-%k(tBoDQFs#nC9@KuWE6XS}}WjsnLl{h?E)u zpCz?$jGSAJ8wtb$r3etJ5!c~S`IpUM$$ok(>ePzZNv6FcGRStOY+Xqrj}7-d%5RNo zjLZjDuu=(WbQb}Bw~LVj%|%X>cAnUc*?t{`nvZQH0a=~;K(yTcI-+wI0m`Xe18Zxh z$s>O9?LcrR$OV)vTF6jFaxlf<6bH%1-o!}Wmhsv%+qbjr>6jR6yb%cP2 z9j0)DzpY1cHMScsO+3q^a5zkN-mrY+OwcB`>T}atq0ASfYZdod&a^rRX-CT74I>Go z;=nHl14`?yj+>xAFh6yvNPs@l5>GZ85BR$0h%Cb>`pyq@vF>hs-ZVeIuq7gnH`5~u ze&|4g4-n>3uiuOOh0AJ^)C&XNNX_DPPxAvntOwn21~;W^r?9P!qt%qz3%zAv>BA+NgAOpuh81?gt}nnhV;V-* z%Kr`Hg>xFQ)PVm{%xo#>iWGq5T++~H!jNDKYLg<{iI4x@d(9-Ud=j1?mB9 zq0fybLmD}W!;XPaOMBN1#Om4JwQs7@Q~{iM^ca8nNP^XkAL?ZHI3G<;pX5n8_n+fu zYMWc$aY#Ig{;|&z$vYYi_W|Ci7D1ww^jqv3927Hg@@Qc|mP{zsx7hLOY zo+5^^pg7n76HkJ}9*QyYQH`6RVfLCV;SRnm8?(-1{N@L);9S><#dNsrjcOj3j%wn$ z@%KPe$3YasyWj{aJoLQ`m)y zT%OvYm-06wu>0s&ha{x|zLz0>GaSy&Fl0PXdj|qq*PcUf)83-*Qcl+MKC+rbIIP{H z0=~gkWh0w?s4Ma=wz`1Clnx27+r=^?{tf5Bk-{Jt7l*cklel{n<3_BfgfRSoq4V2S z9(R;)xpjfGhK*h8d!g`;b>lqGcohGT4t@EP#S({aMjZE$r0yx8(rY1IF4k|(C8em_ zXsKXQ`wW7+@5mp%m^knyG(d=nGQ>pvhic3B;)2)cSRZf7QT*Dqokvu$+nVLXa<1JmSfM zac@$*tg%_oo5ajpFfH)efc63PGBmtHz(M~C~lUE6q5d8MuSK6YqS$a z=v*P4L~>;yrksG7j*jwvSLBS&c8(eA$c1M#g?)Uc?Sf?GCLt%!-I2J=mMrfhW~cG( zPAZqZ<-_l_!)IVYFt|=Hg2$}<-6i4+y4~-)g!H0Za$rGkn5Whm-{1zrcQFA!djsd> z3(SU~KAaCYk2S6oHTQ&s0lYWP<8e^viV&(42>VKGua{RMWcV9)M;%no2C9otZ9AX% ztArWr!yO>XLul<4k{1mJ&SS3yvs5blIoK@vP~m~PBgFo%sU>hPuis*@H3RED%8qc2 z?|7fP5x=&LdRf#U&zq8Kid>D~KzJ@cQ8`hX`dZq7P@U}xOrX2OU{E+urqwet>~$4J zbvAn3nu3>bHzR#aZyQw~1?z_|@%gkleq^vGglfz;^R#a-KBB`{h@82J47X%d;Vsf{ zUA_@zM?FyH?c`?0(N}(F#1%%wyz_fz(AMeGR{QPlcl>GYWuM))b)(JC$rR1E!ou^P zOlst>YWK}D%k3j>Dk!iCroC#`O>F6NLa@HFSO7H2>f;VO7(LyX(^Y zZ63iW{YtGlHBbQKXPBRZaU-I(Kl3ef*O#9l7GKq?H#Qa=Q z5@+wM%5-}N4+{a;Rr{U#l0hNTZA}P9y8Z&4fIzK)0@-`lr}SaZfg4p!azL>36ZdzP zZ_1VS{xcFCnaOH^zMa;`PoI5_Xh#Dqx->9ZRJHE!t#9v7+66ac4^FY#uaHL(PSz$X z#L5e*a{Zt3mL+;_CDj#nXqGcfH$@g>XJR!N@ub5ka&%FG`+IvbPzU$`Y)3I(pWZv> ztYtk1BGMzxunIEDBS{@0`6#grt&&1v$nIez^f{0kh@6zaIJpVMNuqG|ie^6=CxuYB ztok2yP4F$ccII9nFhtcYA}#UmO^*VY2;P54ZhcJn0y!{BaBz{m+$h3G31H$Ht;(+V7aFgXPuwp|Y(JLiPRh*kvUFOx|0 zATAPBbz6`?LT&f5p^n~z>LY2+p;5^b=khxCBZB8UZAlaHJA$2(>j(;EIonADcS@W9 zGN1GWB_u?9WAYCs1G17!H%MwS&ZkTkZPMbi&o|BHsd~)5ZWgs4I4P4q%G&1W1gx9} zR3ashye80}*_akVx8s-uJHw$c7W%H_RD?_W8)4G|vE*5taVOVm=uhqeo)A%8#oUERPxuJ+?W%65frzV2MP=KhY}=p9nNV_UU+ z&ZmX+e;6jKClkj4JmD0GW6<%D$z+f}2 zInWYK^V4T*->xFQzBbac^#zXEXDBanCszCP^5 z9{Z5Q+1WV>Jz6Bz20;$3V#PhHwc01)r`g02z!i%c8!pIgwX<9QbOBkY#GvHtG|0jcaoT7Q((gKxUO)4jJ=%_fSd^0 zQQ9?9qyb%g&!`|D2JlZ$bxu|@MWa=wGxaoc{}9s@N+z|tc-1=%8f*?;wvI9*+?-i3 z_W`q2>eq#vk>i;9E@YMx@)b7c*vkR#uD#@d-=v*PLmwYg1(7Q&` zNy1n?RwkT33Kn$xLPmYphcK)Y@?(Su;CJE46N22IGD?L+BpZ%c&u#MRMY?1N3ZPrq zU1_NvpAwk*MQVNnMkIX8;s7z~=fls=s{Kypm%qao;GLn1r=1DB0sP0Uhy#{ zxdw&X7?(aKE(>qO3c1l82Ny3UDp1#&AoHgh%7Rg*edgQDj3bPPLxQ2^VT}88Cz_$~ z7l|T7hI}^lsQDH)@n)Zp4V*jzNFf6yG?j_5>;;}D-m?d0Jilzqz6+zJ4&Ls&Q?R^E zynoY$4Nw)|{CZ9_zQ1#{OBVuGIJ~+;BmCt5z8EeD=1c?Tk)Qrn`?)5qg~*yDpo@*|IK>$>@J>Rk0Qy$^|2RKPV^rc%*x-*O^zk3izLp6rQ*0 z_-Q;6`9$wFM9h-?xD4TeVL2sIwBs$TRuDu|ZXMyB1a-xUu|T+kKEZvB$J(%*!(hPv zklS55?~1J%#Y$@Ddw$=*y86|VQ5{V`6Ag@JxPY7D_tIGH*$&G(jK5jV-fafM0+Z&$Czpc&FZzyd4gk68!lrq{D- zDbK(?VbErfa*@lyjZA6%&Y>qeRFpn0(Y$%abiK95(`t4p*Eols$7jTCO>OC>&)x2U zhJX|!uibcD`9}6CbA@u+q}{T)P=(RzjAQBdXLia*ZW(qxBs$c(4a1ujQLwU{ zOa*dG1>Nu#)*MYvRo5X@7HOqTRd>;Z(oLhh;h=>+_6R-7BG+sU>UTNXk~)pErNj_| zE;{XT3Et$9e9kkCGudP2?M@%w5N_oUU-|ngN+K_iJE2o77V1x6(hRhUVE9QfF838@ z{=lO+A@EOJ{?cIZ3pxHxM=UeGzf$8ic2k5{P1mmu+kvm2lAjpwoQ+eq`mM&t;m6m% z|9)v=L?V;O?#K=|Xh(WZRj64XAlY}F1)IvG(Y^1`#<4N&@=L(dsV4x>GR0jau`xn) zFbEgWt71Yk_R#VPz`ds08M@4PL3CtmLN1?qFdBK?pV9`6HFRBNO|H_*3OLu%EdhLg4>1SaC&$>Rhz5x~j-ITEH)7u}#)cl_JTLUSCTX2JqE~&`qSrE={qBo$3 zV=!d>n*Bgp9V697`&EbmvN`lArWKlQu*wRfQ`V0Bo`}_RcXW;w&9!h1_8$?~awY#w5P;59sB}ZW^CyijuN^3whUkJcPNxHsGO%t@!&9SCKZ&6r-lo zSh`_#Q(WaaZpT*B9aym6r_;6EU0dq#%Zq4%^9-|p2uH7h@Wx1Ds+Q@&Gb?=hu2ZNq z*)8HDj}&gI*hU{9qy<0!aLuMWvfHi*tn*36BtyoWXylf>S1P6#)&=s zo@w$HPM<2h(M;h#%51Y;XRs?@+PntWOh-=disri8PIY6!`WMeep{(0KwOg(adkU7- zF(=RS8t7Yx{}D5e;t!~No;H>7yR&+O;g(G*X8IT|sgHvrh_~s@7E}6pA?5xI5>Id* z2j(vBlv#Wt{bq#IwP#-LUgCR;?;ImFNo*6fFHH*)oCi1|E&i$0u1z{r_0-P&uC4?N z0D%C5euZn^UOnhZ;C46eR!En_mojnnCI7JNz-i4VbK_)AUst1DX#1tu?zh;HixSET zRtGi+JqU{oph5%BC*wz+WwmtKKy3_()IQdHLngYh6Ri)u@jy8MCJQSiMMEOkX8!3$ zpz%Z+^q`ywt{tjiM28(JoK&`vuqDt6DV~LN%>e)Hm0GLxmqF)&xhWH(A>4Ya3rdMk z$|;+=!TL7&SAK_1GxRDeFAR$Pe7v=UH;IZHi=>y;a#xk|`Yo-M$8X1Qb*%f(anOjV z`5h90=9Vm5!4!XE)|RzEVZVR}{3iD%t?21$Hbj~-894L_6SYj4MLH$82+ig+II%N? zP}*Nj`8Y&0Ij)IoMFZx8VbVtd-;tp|q7syXp>Z|$<4}u&fKrH-Ik<5o(bJXch*Fvk zO`7wqr4|)j8vA>KHM>qAlvI$Whb!r@p-}|OqZf}e(f7akgcai}nKXXud7BJ^Q&%1D ziKh%EiR%8y+|i@!_Ap9-ilIKkCOc^x`pC0Vm+7vqnV3K0NYuYC`Z#u68in^|T{hzL zR(Os91|t69qnNg>tM2?!1Ju4yj(wX(09@LX^JJGCU@jL`z5%cJ%(b=6{?ac%XPH?{ z|7=8gpM!n`3^SDpdMvGGL6TAf!R$Lbt;83Iy%ZoQr3V)f%hceVs}Gvj?R(_%5=OZG zkjCGqAvqNx%1E8Nc@$79*pye)3iN!JfiV zLF$les_t$V?o4_0W>2OO&N=C+XoRVDDIa~DEUF_k!YRmWMN`v&o?b!RWcYbJLD&{wRKdo78c_Xt)^SZgvExSJk{}~ zc1LoA!j{WIGU;lY+rLY%q90x|a)-AzuB&i`3p4OM9iQ|fDTqxk9k~P54J@53nGLGi z6|~>OR>nR^+PD=z_Jc4}tv{B}u)gofD6?B%`XuBy5ODG4S}W)Ji;x&FZGjSm_!zc9 zdpvroF1@Ws-dxY>%9sTQvtIm~&>xP;(hz5a@eW6jCAfq8VnaW37zJU{U{y7}mG>m> zR#m995+&=^VZ`7nO!b7PZ1c+=%V6$xDE z&A9&iVKMBPOJI2pA?ub&$6_1a?3|>U&w+}TkyT1I?4qmW%&?Gl(bQ|S)5o>vI*SWE z^Eh4(HM%M)7@WUc#=_7;9Eqw2j+^mW)uKmZ4k-Pp3i4LVV~1d^lsoyv?xsBgZ(~ik ze+9=LAjuYi)+@@0=x5YUUe);l@8&EU)k1Zc%_!46@*QbLK*)VRCqbAi#mC+%;rL`t zxnTWm_dHfVBcJsl|GMzX+qQNJp!;b6AAr6Pwiw2ZkR(HwJUz&g_pJs=XjH%a@?D5~ zz-K}busXd`IZcj_^_JnKDC)SHbwbZZ{HVJ`xzulCKla^VzWU+nt=h#JUqS}sxx>GZ zB{o@#uV!uJm9*Pn1Y%2)j43J~*DFF9Ktrb01D^+0FD&kPMzudw&(*6m`7=XyM?z;g z92nPmr_vcqxt+AwRz)mSNGc{2+j1B5YjTai*y~4|D8a(j5)Q&{u|UqmG6kApQ9;}b zI9;J2VqB|UhC`JYX{KClFBs#d!+@O0yIjKfvrT8tgHE^m_2C^}`ZWdCh%mvI&}o6G z`2LYbIvwl;k}WNR7P57G*gCG+6o2y~Q_IJu949ZRe);x1f05&=$b5be8TvUqqt;!; zNAT0%Ah97isDXLo26OgCF*cS?JqPBqR>Cd?1d=Q~bmu`5+FHRDR;`rK4>3)x-kd?Bmx1tYVoRK|sT+ID;L9Dx}^-lW;_}3%* zb`OW`pb2rGC*>7!r!8Oi$Ldw`ZRc%WK9>TbZ6ue%W`u@Ncpe^=i}83IdB31qY9~)q zzoAtt6dlN4NGA6UAx(luO}vR_Pm!7@j>e>ROq9E_fcs-GC}JxIl^MH4x($PwTQgp` zYusc|pJH=&E3YX5MIsBE=*j$!BECe+zJQMacFYE#n}R}EHW_(Vj$JI<1gOU{VP&ZX z$0GDP8Q)z|IeKRkHeqP8iSIA;I=L0@btDVOxvs}A)k*;_R?aHMtxIoX$x=KPkBcw< z^rkU;qWbm&=bJHj1F0_E+ipu}1SpRZXu^lr+Y*uv(m!{vhUjP5j0s?f7J;;Xa6f&z zaH_w}5-Iafg-IDmj9Lm}>pd8+pmDK!)c}Ril&Rc(qSju$v+fQCxfAS*Tx;_SuG2lP zZdHhEbUwx%<@WogclH|oz81@|(LuWeEm!tz;z#;27bLosO{UWX_cyQWHvKnJEq~tE zUX_e*>g^f0*<{|{taN`he@;Qh1}^C?gg@I~kh#0I(8(jTuW|Aw|K@S91sDqAwi(;W z&;hM8omYpu=ar`x4?S*mv483khvyU7_5yPIbWSWuquRSLO|A-NG(p&#=@}P7g{&$s)f?<(~nLM(BVfSMGUpl=J|G6_0eT)0l|`0%u17p{qXG_5}un_}qKy39Da!F83b5)#Q_k zsdMpFsR5W1@k2~j-oI)na;Tls>LXx@mAEzA0;tZcsU}?BrJA1#6Nf}^QnBuPXJ;Im zI9O4K|FHde<RXh%dnq#?Q$dj@l%%TygRLpIvLK}|z3 z{{BQ9$ER=n%Il=((Y#2{qL)I?B$Uwz@%^=QPm#)-g?f`rcM=@Dm?mmEo+*m&qjLtz z|5-t4E{bc}1k^S+W&@sIfF?Jg__1dt@eZ`fR?2DOZeIa-7O_wCXQcqHnL&21x z%uH>0IwN0oxQq2>f{PVKR?DZpYJlppYOC9V8H-T=>benjT7ij))qH=3hPHB#9tKoC1aJzAlVS)90p~v z_Eyw@lh53J!Woa_&%U128LQr}XIw98Cxyr33t8)de^=aawcZI;rsmd^LP-#)V`*~v z2EoOw{VDuv@*s#|LV@!blIM)&y%XeR8H^Z%`*+qBI3jR3H0X-Ebfj%50m5lvk;P^7 zisuYilDo6F^9Ykz#DCYc=6IYo{*F=T>p+8lm_@uS_Wp{xINAe6cU+=DatkOH=*^GD zV~WBMf=jwZLiJ3BQ2Fu-V^;9VFeb(BG9}XfTyNk=8~3}qaxES;NcE2Z;;_=!2a}^n zjZa4aHp_9{BV1OCVxe@9ZED>{R2sC*F{hKhugM%lgs*bD3tz(2_8|Ti_%e$p_oq|a zME0jR`(t!;Iz~XlKtFyX!Rda_~q!Dh=+44tpS7C?BH~Ig< zUT{_}lgu2r(G>$UI;})v%|U~G65$(mTg3uIs+CuJ2OQ~!5AMOkbcri5oAbZDqD*wg zD{NdrLnerBj1w|)X5hLK*^WMV*A7!s!O|$Bl7Q`QI4^ER!1vK(9`MH{8M3tSFcuOT zJ~zFyPF4A=ihgCQrPW)A4FvYBnoGs`R9I=|!bP9<#%RtlDUzm9Gn-4eXBmyB>T}y) zj2O9vFvU9?PgRTjpObkrCr$WDX-y4qN$@M(tnxTBi6GI5KN0=ogfHP)IT zgiSXWeWOZF^M~goG^&F&HRpbMj90$VI7HJKB}DuID2@GAOdX}LFf?gaLvZ?o{a$P7 zvShIk{-@{q>h#>v9}qVYgc}{=csAZEk-|>?T~C2)OVTIs^5M5lgw5cC^x_11WEt_= zr-1c_J*`AZtIZdNc%z0(WP5K~vF1eNN}Xkg4vDy_iDfMIb1z`>mrm-!&^~WWz3_0V zJ>}E7j-HpGXJ&b5MrvhQQ>fa`p}Gf2HRN(C52V)8be_5b=^2cpKW{7A*U{1G)KvUU zun(v}oVAc2g$M0q?u+^(0PJ0xZYve;Mgr@m5U#ES{L3XX$?LNfnKCeuf%WhQ`CKvd ztk5+vR?K|XeZq-AODvO*|4&CRu2}b|oV3+4Mdu}kqmtbjLW&UJF zYCyBAR_W>YOd{F01d`?T)AW%&UKZbXMw{~6ygqzbj}Oc|1Izl>>|cZMH(7pIT13V7 zqsFegTRH!B4)qg{628QJQ$17j<-#?g>;=6XAs+6D;NN0U=JPJPYk{(V3+y&iP{uwGeq<*w(S{5rL1stpVq@yFZ`oX+Af#HF6d>HkX0km(v}3OQ(8Wf9#JR zj<7)Dv{_dsX$FLpC$Cc`_VCl6z!(V3l%|(qwH53^?`2JIE3Nuzw#)8j^AvBAi{n6= z)@5`~Zw6GVJ}{fAqD%RcvC`}ALb&r6FG{4VZ5+lJWp^PQh}@!cY92+0Hd%aQZ&@ef zglV@7tbWqOLf9^X%k>s5$s6rpT?<1wV66_t-{qRDOl{Aeb~`rsPzi*!i`=Ax0iBte zT%b#M(&|$PLt0)r6BvT9Ue7uGMfA3E@-pqhR#bwcmsUtVil?LpB2*_ve1s0a+!HPECKTm3r{ZP7jRd+*NM$`M&5F%V=o1Z z5DRX_-5!$%^E*1plQm%u3kTPDL_$#rAU{1XNAP`8ouLQE;~q)FI!0KRi2pfKH=Zp2 zij+IJ+Ge)ZE-%w zaw^d!Mp`o$^xPEw{gECpxFbJ&wAa|XQ-S*Pnz{%5%{Z`@&~%kLhciAqD@F_HWZKZ$ z*2IXYT$A(t3=$mhi#uWm8d4}7!DH{=A;12eBHTq) zVP3+wN>weaDD>?z2wbo$N2Y|RFmQeB8waJ%RUQ*p@69A^mO0ltG}mG1ah@GJmQ=4Z z{q%Su!~>YV{gTt$ZL6lY*Dp=}VzI+(wUZ%1Y9Fc*Do0FN+2&$+kDj4IUpjLi*b8Mt zoPY0Joy4qXJ?^SpOg>gTl>_yo)b*_@m-(0K=SWcrHOd)KtgubY|9o&c@0f7J^+a(- zVjg)ef+$k7N@Oh))r4B8VQJ|vfX;7%Pa!x2nNU(n1>mpxD54|TO|ya~>Nouy=4-=7HNpn zCA+<<*7PNFi8KY9wRfUFx$SOW4~pcdQQ1nw%k*8tIx!ef^05ClQc_(z3Yn1NhnqCA%xvU ziph=*F1v!_z7xh6h#&7z-aWd#6R&81%HAa{u!gK#XC~$%a^2?%S3RWwm|LnVs4FjL z9;#lraoD_z;2ph!4wj2G>7F|K6EB8aVlk3L$!m?R^{Y{>sA&!48ZsDfC)!n-F!9iM zg6v?(iEzoY$FzwZzDd~Z3&d=ByuK>kziO$s+@-K=kY$Lyw>tt8y0mGuW%;78f2{td z)TpNZLqo)ql-8&)=rJUD4Jie=`(wcHvfh+H+xZE>F>IDD#L#WZ0J&%)RAdv2GF$vn z6K?D^VLVZ19s@?y=?$c29$8R^|NP-3&7*lLktm~KszLPFF^QdA^%&V-S3;+!{nPE0 zf%7w~qp@<8!<~DT&9}NLGsTRP`%nNW7L|ot)Mi?|{_iCRPNYW_g=N%~CW8Q_RA|+L zS3p5#vl@>5Z1v0>X>z-RdpwF^IdR#ogsMG}e{XQMAvMa5@pxivn+wNrR4eJJ3H;v# z{Nh9E8?VQM_6QNp&v%OKXtVMW$GHCqqb*$0F1BFhf|%}lehm5s7Z3WL2zJT>eQ2rY zfpB(?^D}kP&dw1a;n(xyxZA;35$ByYdEDurwy3jn(KMD`5Q;`aNf+5E=L^HS@R#y= zd7R)kBb`J!3f#v_;hj`mjB@5uVI%6QYWX22tJIsdRL^R>C1@rLb0g~28@P!G5TXF0 z$XY{erHZ_34np}b!yrIr@}i@`uNy1U(hQl#9jgb@?J0@e@J#A(h@dEs#ZWJwW(fd9YBR&z~Wjx-$OqK^wLs zlt8~=-mtKnmC5GQL(9gMHRY<^kE94!$pC?pC5%zaeS=WBCIf0bF`*3*xrakc^W!Bc z%r(5sH6Qnqk(AwY*kqIol|5A|Hs}E0ssSFA%Ak0~at%9IN%u0(kE!n0@+Em7)IxNx z+cdk{$ZQ3VDGVSNp(B$u|@=1DBNwa>P$Kc|MW(k)lyoiUQ6iuDxGqhU(?6o+Nh^g zE@+&iN4UQ<5sIX!ekr@Fzx)v?!f^S~jk zO|BN_v}vW+rcHCUxJ+i{n)Xeb<_N>}iGo<*zXH-|I;%P(`B3#Wxk5gqe5vF_uBgg6 zA>js0THCQ6=54cLnKUB$gINmLT{BOCi^RZBabQN0v1Hog;=F0bMP@%I3eU;A$OBHx z8zw$aO>bBx5L{9y^fdJ-tfnZuQ+kKCy(3vaFxyIxv5C6MX8ynmf^;9okaNJ!!OTL_{n)( zyo_E2QrW7PKNVfxG{veEV5$UEY@vdnptvjWm1U=5&!MR>Y9)TPD0pBNGm11BZ|c=B zBr!EKaFIf3syPEv@;jcX;*O26sHmg_r{eo06cznPQPGDKwd)LAAdSr6+$fXABPgoR zCNYGCmzb`GXrLVb*B7Bhw*!SThr57rtvCb~Uk=9v;oRj5xJ3iSRagbU{CNf;heZn~ z*Y#PXGA@5fvEjC({Z_A1kn#zsa3~5}%C|Ygedfp$N{rCy{8&1Nu^+&@Md@azN6b@~ zO_t#D>ZiypD@*?tR)XLW6oC0%R%t7gUMVGboW6B0ii8;+aP91rfR>Ld`4OqHeQk`NX)QglRgR070 z)$P@VlJF;Mvv|^&L${1i+<4@obI$4T%tQ#|A{tBmHRRUlHpe-$L?cznSE1yzb=Za)|t# zSbss{Mx*=_;OG9EO)8hOygv8p@_Jz&4WWC|DlIFCh}h&PCB>A;eXL*9Q9w6C$zhcRXMMes3RZ_K@Flx)p)AW( z`o5LHg=4HzCBBpG=PU%2upEnV~;h{w?l_Q0RP;yH<>2BiyV zjrVfuDI$FU)E^$XbSGawC&OUINLdpT^uU%a2Pi%8f`)f9m1&ewqjzLBK;nwIVpCB| zt%A>2^Md51{AA>jLfc*SAGD^xf081YI8aC_mJNN}+Gnkz{H5)5}fr%wHw0(z+=&`C8YR{1Yz#`Khs=U~j@uP{kyTSki|XjTDbv{Qx|j=+j; zu)y{K^$JbEdvu~d0!X_!;&SDpjA)2-u^3IcS$07QZoiAz3e zG|3M!g0s$KBs*N3zvptVs6@Nzt$~41GvCcL^WD8-(u0~ie>UgAEmkqkym1`5FsunQ z`UVoO8++cVU*2-S+F*XC=beV-E!S8ZOmt!jJOlqqPbNuYizRTLNwg40oBYQXQ~frR zXr1K0iZi6IY^~%NMYCkJ3QlH2LpZthjKNvkH5Y-9?@oQQaU^sT5Xk?T_P5}0)6M39 zS=ol-RQJN4uusgXZ!{Qu=NhSTqHDsh^TL@)sQ4u@+*rr95TdKJ{FoX%) zSuHkspTr#FW~z;v1#Xy8EK$HB6mV-_G=sr_p0tMauN?F9R~7Xyj17KW;GX^XIsRIM zgwr{#hyF0~AW(`@Sg=*IHdfv9F?ULxm{R(a*M)mAN&kyFoFVLD)p*a<80(od+)euw zLd$+gF=83Mm=J%b4tEgh#@RoV>WcVps*ye}kCXg3qpNTtkMmPSzkgIjDK^R^D%IgP zrqPZu0U?6ke<{L(#2N{1@Q?t>8$ANKGoB(oDZzP><@;=gjNmFM`5AIwQS8B50_NQ&ytIqmN&yU)JX$%=Ua_rNmJRMM`HAqMGt1o ze|dp0%(N&1hO2~$@N#fY@a573>f8W_egt#tBS53baLoIH&-VrT3=)}N0H*x5(fDn^ zm147_;!`;RP16iqC$2$Sh%0kq$(S+574%hG%wSt#B<89xO1YXB^yo#4FS-|guL50T z-NPCJKnbHZN)B_c_Q$IZ1?*O6r!e<=EKT6r2U#GR;A5I~)fy2(Q2buMA^u9-4kND~ zFs*joNSa6d8zg!cn;7UC86m~be$`y}Z%2>36_i5qhfh8EYrXgb(oQxzUwHG}<2TPW z$PsbYaOgjde(q(R_{6PW`+>>zx2GQc3z6@??S-xu!`z#XpDR?gBhnog)4;-f^+nQb z?5kre5X%Mhv1BeR7EegP1eYXLz47AW+jC^$;%jrj4lpfhiH(+tzlVSFlQ6H>PXQk^ zvVGPfg3w7^dP6eq^634!c-9|4br{~@-mu8MP+&ym!w!dh*i826^<-aj2WhF7uhHw} zYwBA_2f0*|B3XJcLusaT9sO2@kc^mUE?rk2)8TH8x>!9u*qm5jk`!L=KVVKvtbSIY ztSVP6AYYGbfC-DPllI{*DEQN(JtCP4KwS`nj|0zKERA&@LT`yfou&1iWHvt)C8V!F z*%6a8zzz8ikQ^^Rue2}c;V>cuix-E|CfofGP$G9VL0O}gWsXb$6cgOR06j68C8PxC zjAUy#!9)8MIbJ&tke$SkUJYk=6~=F|`HH&Cg~BRfC%`yag$c}}qQZ2kYR=>-Dq+;= zRVy_ET2U{jOt6IN!3-57|I*Xr4%JyqCQDt&-P3dDq{}-8CI5^DJN#>y;g<%hFLxq` z$uS#4X&8Q(7L-rr52~{wUgcU+@{&KO&YO6Z>jLL;^UAbE|MhIUqE}OK4(=B?C8Fsd z91WpPJkB?y2=M(Vl4Qpz2<26dY3M?RSOU1*Aag~w{+oDQ?1hmyjeE2cV|j;nz^ggjLct&4ySTv2ggKcLJs7#w zC?*MR-wD+FgmrWZn*i%-8Y8@#U)>e(zibuu2Xf!K_RUO7;PFJe%xLM?R z4=RYDVwhCoOS66TI@qpy>e3j_mU8X^_)*ljC{L6CB%-85;Xx%8bA&=Ima>Z+*Je>k zv*|MMq1;&tK9Yx{Aq& zF_u;=r!8cXJ*gHyg%nN{UJc7{hJQVtGKV~*+Z{5e#>)yP^0?NPtl7kjG7(ymHr9DO zbsMz^2Bvt$PCQ4mg_%(HZJ&aMzj!WS2A8EW`X@<^DEUFB{1ULuevM#p9y9q8+mUt0e9^3hRpcS_#b z*9W)A?0CFwds2QE1znQpl;3stq+9JEpB-V(<(EcB;S=(?lzjfc(OG?cWH!8>NWcfU zBMpAwaoAgXyWJWeMAX;JRc!x^6RhTY5$XA+;E#O~)GFxlp{q9~LNhr;p9|v`ib~*D zBB;I)MuRh_iP``lI|WvH1OstT$A z#iEj%{6!^qe7gv!9XPgm>~oft{0u?65#*wwhkB5s{6dtETby@3q8Yj{Y%*LSf=UpK zjv&KuZG2D;6AbUCbow&1n*j|bLP?;~gAX!I<+!Rn#*m=+LbWcJm&@&FwaP|e6~#C- z%!ND%DGMV3)iW5~AjCbTPvz+~J@SKvU(FO< zR=TXz&uB9M02402y*5aZsp$cy|JrKDjof&I5=WkUYG~FrVO?w1bn4noSuH;HpA{b# zR|~jrx`o*xgj~Rr6azU=AO~!Ko^<1C0N<-GPQ3V0QHv+-CE%*H1R6}LXJgU-XQD{E)fp$Ha=zdLSF>P zPlXq+_Fqz>d1^SffaW~+3GYK+BF84PJ-`63@POHsUUgucjI7uzInsCNc8M{PA~tue)00ODY1BIh@>2evGp0}(oHn>Y-8~JHh*gE#_542 zJ?BS*zFB9@i&>kV?OM|wTy@Tnu7ZPzx`(ph(byZ~HO{qLQib9}B(6+KRqRz0KyfFuGF;>IM)+%ok76@p@TW#G!wl5% zcrE?CP!F7ZZp!d(r0GAV4&c^w#njQ+%5opdMNXy_VSC24ZpB_8%IHivt+3@w%!)wS_VfM%4+1A72 zC2N&8FR9`QoxokU3&P|X6lbenKw^kujAl`ToAN5d4ioCcJWHeHVbS_WOUUwhbJK%m z1XKz5;&A`RJd5RF61CZ$u@Vw50x@SOIA>=*YD}gCea>{$az>SPNUBdV5`ZEq5)%a zR)IlCV>FtMM&p!ZOfG|&tkXBO#LjLZc&WFDYmH5@o{?(E{@Bvn0)O)73|{kWvxVv` z#MjiOBmL8z7Is5#l|N`m8cE-zv0GmavB;zI@NFKepo;qI$fa0i`Ifp#%`y*ehyDJl zcy0A)ch=?{h#CSOW}ty4C@*=co)C>u8lavg52VpX9=@fjq-PS1fG=Gxz@3c=Ss+aq zt);1|TrZ3MukC%cDCU8d<{=>yY=J8BCDj1%GW}T1IeD9TcxdR-@UUxmQPP^NMhNqi zvWX25DOou@yvy&MF|$1y^358ZQJ$Lxn49RQ+l;=*W$!3pvm@2p!N#aCp;2Jc5PGte zH-B|dNuv-g4QqFK#i?g5)4a*{cJ#hxiy>Vx5oC%0THJwCh@iKsE9UaB70a;*O5rsX4U-|ah>-*fG}(gfMD?y}ENNs?%I z#jQQ{!wI(|KF2@w^{qSa3bXvKt?u zCyMle8!vl{?q9cVKV>PoXxcls-ulk8uaG0^El8C--(mBDVP)XPq2CRtaxf%~$y_1{ z-Ji`RbAfCi7ZA%-1JKcl!G_(t8wPU^=GLr%r0VJt?PAUAq}9dM(&qeTzaJ9qh5VSt zQ9?_rj3CFmm_G*UcCbfCl887yisK~-6^2)&j+5D)^6!U;fKFX>LX!WJ-}(djSw62B z7Z@ubSoS?kGqs$N#h%SE9!U&DsKWTag}wbm7~M%R*~WbAI8#4P!{g)sUtQN18b=Yv zcV=#HFL%3px4ZWzIon(=m&-M^sYx%_)8$yE7^2pw~M(z(0PQHz`Ma1D?JTp6LU2ljS_NE%1S$GB3gj`hbD1!;47=6Bc%J zJvKLeV>KRMy)iu(Ykt^~B@SP$$5(&md*Fx8T%cc4pd}XtZ9`atG;Jv1!n8H|!r{8W%Z6f{PX-x4d!HMmfj=eJs|CF8G0m2|9FI!%-T)Xa!y4~>AP6zo$Y;5VHZpwIzu1jt%;tybq97uY(uYqc5|){)xYmghlt57vQF zF)yO|l|c7V$$NoikkQQZpj-2uE!n;~IO-u9-qkoxD@CM6BiN2(UT-fxIfZv2Rm*GB zMQF{VOQTEvf6QyyyrU!of&Fv`HgA4EZTv#qGoOhV2s|4IQb_OzlM&ZO?rEbvXR0GU z$B(cGEA|k}$k@!Ty9bEd{Pe{J03A(xgS_qDbkCEgUh&42%}stB@#ctNYriKACLQ>~ z@)aT+34kvn%v&A57b@gRYr0;4_#|cUF!JW`Dj^01U6p*0ss>x~vyYMFT2q_-0G~qu1wflB;BRMZ7yp;;-;X^^r5>tTaGsa#5ab@M1W?MqmX@Af zj_-*tM~Ifz$zeUM5f6vy;=2oUb&G53h~5Z}XqC%;&GNzbbt?tbtf@@mC=Q>=H*kTE}Lf;D7!kJ7(jUxlIIrHlNTtxa8g}72L-7& ze*R8{9W3uLfocV)oM2D#>5RPr3~Dl>SY`~J%{TXLAPxHmB@~HAnWdXPj=I^PzpUQ&yO@A zMb;s8$5h=_UR)!in$b?H<`glse$_D4e$BYfld!*EZQ)vfvo{#{bDsugK`2L3X`mki zKDrkWQ`F%r$h@xZMF%Ac{{wQ1EV4jchr(5|>lzt8V=_7HI+28Isy)_&2$Kmrc>9HO zqf_>`=aV}%GsMDL;+p%@ndAHEyS!LNkEVx|M0mFxQs}+oGmAN*#N}UQrflQI-;)y& zMyt`W+3(K3JUXRDt!yMNt3AhO-sC6yKE#wlW;~JM#~$K!we-fb$l5MQV|Z7sI8*@| zMmf)ACWgN85d#tL&+~vA%#fM@0|g)`)C@5FTH{l|1}FjajT}E=)7&5K<@rzHSp5)949E_&BQ;_m(Q9;UVAWnGbe< zOdTO%H*2{4^402dM+sffV__PK$BM?>-KQ(1V+XEJQzD1LD@G)mkadMjsB-+M>yo({ zg~>Z)J)BGSXh~UTcDt@IsQaUrT=(@$)#oEoUMOQkViTofb9eWRM8*jV>+)rOie80< zzKZJPiHlYDHq-@mCbcJ%xiFLd10vsvod5uMoMT{QU|;~^O#A7&@%%Pl8Ms*(K;Xvn zy=@5k|4bGJ<^~{_gMkSo3IH~J3rYZZoMT{QU|??e-@p*V!Tv7Aupj&&S|GL|0wHK2s3IUDq9Yh1awFO#6eN};_9coYCMKXJ{wH21wkPx`WGI>` z4k=tIqAB1iE-Iud@+(#=z${KIek|ZEDlLL7;4V-uh%V+YBrm=&7%+4&+%Y6E=rT+) zm@@1$WHazINHm-^5;d+h{5DWFpf?sbsyHk-dN}wwHaUhl(mEbGdOEf{06Q!@cstfS zJUoaz+&w@&ay`;M96oM7%0D(glt17=I6!JZ(m@VEK0$s#zCsW}q(bmROhd3k>O@{d zltk=BGDUzz%0?zeU`D`42uCnSSVyKv97tG5m`Kn`8cAA7j!DKz{7O1XY)Yg`;!6xm zI!lgBI!s7RR!n3}a!jsF@J%93kWIW!7*149XimIN@J}*Nc2BrZ^iWPvdQi4e08utk zc2S~Hyiwdz7*aw~h*GXn;8Pk?FjHDnic`W<`cxoPJXCB{npCn>&Q%&!I#p6tdR3ZL z=2kRTh*r8*-d6%wgjeiXMp(vpoMT{QU|^JF=waYv00AZ-<^nvc1-N6DcL<;RKw36VTFd z3Oar}g9NcPGvE9>GalOjuJ8#Dr|X7xVh>$rCvK4Mgq!4h;TE|s+(r*0;STjDVIPl} z3ioi0oD;m(1+zY0ggsp1Rk%TZ6K;~d5Jp zS{~IlHhE%l=j&8wI(G}b-lvh3OhTw_xiz^O1w&EhI@k7hMtN9|ol8_=O{Qk1YDgZ&N>f;9L~!&gC@gWL-y(+L$4F}LSf`QFGFp`{7}wZSi|YQr zXaBR1(W2zUYLenl2rxXWnb)zZJKv+kfzKIJb=*bKEazmTnQT@~O34aEeYT?#QxCAI zy9!J&;GLY+2lX3fKVSxHu>b&goNZPGnB%$;-rs8qZT9WnJt{N0?OvIgnHdyWNz~Yu zPm(t;S7v5rW@ct)W@cvQj^reJ_u714>=|h^8vMr_!AAS*Zv5XLPD6lAgoqF$L5dE# z=%J4RwlKstPQng$aR`TTGETv%B!4>2g0tdmI6KaPbK+b$H_n6e;(RziE`ST-Lbxz4 zf{P-<#c*+40(&@uOX5JcThrk#UOd)Z1 z%ut|21%(<%p|dwfd!7?9=Ip&g?r;ZxG(O9`{Mz4ARdGV;~{t`9)^eG5qKmX zg-7Etcq|@=$KwfjBA$dN<0*J5o`$F68F(h1g=gbAcrKoY=i>!cr9Ls*W(R%Bi@8J<1KhA-iEj19e5|+g?HmUcrV_E_u~WjAU=c-<0JSe zK8BCu6Zj-Pg-_!%_$)q$&*KaDBEEz#<16?ozJ{;k8~7%^g>U0K_%6PO@8bvfA%27( z<0tqjeukgp7x*Q9gVRjg3~vKl8cOM!OBdlrpmVu zcyqL2TBL<43R$aqP%F!<%8b>rHfbq~S!M<6xC6PC)huxot;Af7$3nzPvuYy3S}+~4 zx-LY_r$XyRch0QPr6^PtO*E@TUyHGp6QN1H-kGRTA?)(@Y}^#Z;Dn{#l5;z8OLw^{ z^45rMdwIs2y5sNh)KuBbbDgz&NiK{L+D4|CFx|0?6wOI}JZdzV(w$XuOxG(t>$*o~ zYNe`#PbHs;DjX}7$GJ4qY%g>#?}8w<5Mw)7G33&$z{T1h&=>89xt9jKsPCRYtrrw;1McB~w zaZ?qF&qDXuw5smVe<|xIrz`SoIAVMjkCe5l?6D1*nXEd6Q|(gI^^{-i&Lyd@ z)m-R^Duz!J|IGFxD@&n!tYEryH}YA(WaN|L%t}=a+c>ZJKFjkpb7)0mvZ7)tJ-xkN zTxLD03&urC<;2y#(1Wqm#%4_B*-TOZwW_C!Y%gw!s1!LX693HhI)>uw4c#myPe;s% z5u^4nigTe;s#fdxE^W+&CsSjY&Zt)gT-6K8EpJLu*`DjF%ut7jYGCHlxjt$rCDkUA zWytC7ROPB9S9Rzj(&tihDnVaVTUwN4`pTi*<({j$b@h)36pl@sa70zQl$B%I z2BS;%I|r$tcWt99XJU4+me$HhC+7&una(K$#;}Rl=2K=fcf}GXhJGPeE8N&x^B(AW zo;_aFpY?lP&wDbaDxwlkSGI(z78QX^RSE9w2%r}Fu(;{=g=|a%)^1ew&x-rv)P$Z|yNGau-3Yn#bOGA)s z`umh~MNuWNU~!Aj3A0u+ZWBtUq!E`MQv`8japDPCQIRptr*V6#Z`n++Ia_2d-A(P_ z|48c4*HIlGWKJWQDnVA%hy7LaW`sHEirHST`qmWr;9!9|ez@jZ;5y*j9!^{wgf&}Z z8YFItE|o0V_RxxJk93zDS+Ux1%_8!+ zZcF?5VJLspUofc|(MA}LU2X=pDr1vPwA0)Mj#yVg^m3sX5E|As&F_ZFVUdzd zL-<{iu%+fQ?odH!+aYPH!HNr_xGG(CoQ8r;dL}EGru?|i0=kO6MhtB^sG*nZ?b!I> z_nlxx?z_WuQ=3)NM^!7RgWMrPbJAC9RVwF2&!5yj1azXQoXK4hD42D_i|(W5p!wvC zT1$4@G?37uw3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},y={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+a,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var n=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?n-1:n)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[a,u],MMM:[a,h("monthNamesShort")],MMMM:[a,h("monthNames")],a:[a,function(e,t,n){var i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var n,i=(t+"").match(/([+-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),e.timezoneOffset="+"===i[0]?n:-n)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,o.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(e,t,n){var i=n||o.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=o.masks[t]||t||o.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(s,function(t){return t in g?g[t](e,i):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},o.parse=function(e,t,n){var i=n||o.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=o.masks[t]||t,e.length>1e3)return null;var r={},a=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(s,function(e){if(y[e]){var t=y[e];return a.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var f=1;fe?u():!0!==t&&(r=setTimeout(i?function(){r=void 0}:u,void 0===i?e-a:e))}}},function(e,t,n){(function(e,i){var r;(function(){var o,s=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",l="Expected a function",u="__lodash_hash_undefined__",c=500,h="__lodash_placeholder__",d=1,f=2,p=4,m=1,v=2,g=1,y=2,b=4,_=8,w=16,x=32,C=64,k=128,S=256,D=512,E=30,$="...",T=800,M=16,N=1,P=2,O=1/0,I=9007199254740991,A=1.7976931348623157e308,F=NaN,L=4294967295,V=L-1,B=L>>>1,z=[["ary",k],["bind",g],["bindKey",y],["curry",_],["curryRight",w],["flip",D],["partial",x],["partialRight",C],["rearg",S]],R="[object Arguments]",H="[object Array]",j="[object AsyncFunction]",W="[object Boolean]",q="[object Date]",Y="[object DOMException]",K="[object Error]",U="[object Function]",G="[object GeneratorFunction]",X="[object Map]",Z="[object Number]",J="[object Null]",Q="[object Object]",ee="[object Proxy]",te="[object RegExp]",ne="[object Set]",ie="[object String]",re="[object Symbol]",oe="[object Undefined]",se="[object WeakMap]",ae="[object WeakSet]",le="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",he="[object Float64Array]",de="[object Int8Array]",fe="[object Int16Array]",pe="[object Int32Array]",me="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",ye="[object Uint32Array]",be=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,Ce=/[&<>"']/g,ke=RegExp(xe.source),Se=RegExp(Ce.source),De=/<%-([\s\S]+?)%>/g,Ee=/<%([\s\S]+?)%>/g,$e=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Me=/^\w*$/,Ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Pe=/[\\^$.*+?()[\]{}|]/g,Oe=RegExp(Pe.source),Ie=/^\s+|\s+$/g,Ae=/^\s+/,Fe=/\s+$/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ve=/\{\n\/\* \[wrapped with (.+)\] \*/,Be=/,? & /,ze=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Re=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,je=/\w*$/,We=/^[-+]0x[0-9a-f]+$/i,qe=/^0b[01]+$/i,Ye=/^\[object .+?Constructor\]$/,Ke=/^0o[0-7]+$/i,Ue=/^(?:0|[1-9]\d*)$/,Ge=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Xe=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Je="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",et="[\\ud800-\\udfff]",tt="["+Qe+"]",nt="["+Je+"]",it="\\d+",rt="[\\u2700-\\u27bf]",ot="[a-z\\xdf-\\xf6\\xf8-\\xff]",st="[^\\ud800-\\udfff"+Qe+it+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",at="\\ud83c[\\udffb-\\udfff]",lt="[^\\ud800-\\udfff]",ut="(?:\\ud83c[\\udde6-\\uddff]){2}",ct="[\\ud800-\\udbff][\\udc00-\\udfff]",ht="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+ot+"|"+st+")",ft="(?:"+ht+"|"+st+")",pt="(?:"+nt+"|"+at+")"+"?",mt="[\\ufe0e\\ufe0f]?"+pt+("(?:\\u200d(?:"+[lt,ut,ct].join("|")+")[\\ufe0e\\ufe0f]?"+pt+")*"),vt="(?:"+[rt,ut,ct].join("|")+")"+mt,gt="(?:"+[lt+nt+"?",nt,ut,ct,et].join("|")+")",yt=RegExp("['’]","g"),bt=RegExp(nt,"g"),_t=RegExp(at+"(?="+at+")|"+gt+mt,"g"),wt=RegExp([ht+"?"+ot+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tt,ht,"$"].join("|")+")",ft+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tt,ht+dt,"$"].join("|")+")",ht+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",it,vt].join("|"),"g"),xt=RegExp("[\\u200d\\ud800-\\udfff"+Je+"\\ufe0e\\ufe0f]"),Ct=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,kt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],St=-1,Dt={};Dt[ce]=Dt[he]=Dt[de]=Dt[fe]=Dt[pe]=Dt[me]=Dt[ve]=Dt[ge]=Dt[ye]=!0,Dt[R]=Dt[H]=Dt[le]=Dt[W]=Dt[ue]=Dt[q]=Dt[K]=Dt[U]=Dt[X]=Dt[Z]=Dt[Q]=Dt[te]=Dt[ne]=Dt[ie]=Dt[se]=!1;var Et={};Et[R]=Et[H]=Et[le]=Et[ue]=Et[W]=Et[q]=Et[ce]=Et[he]=Et[de]=Et[fe]=Et[pe]=Et[X]=Et[Z]=Et[Q]=Et[te]=Et[ne]=Et[ie]=Et[re]=Et[me]=Et[ve]=Et[ge]=Et[ye]=!0,Et[K]=Et[U]=Et[se]=!1;var $t={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Tt=parseFloat,Mt=parseInt,Nt="object"==typeof e&&e&&e.Object===Object&&e,Pt="object"==typeof self&&self&&self.Object===Object&&self,Ot=Nt||Pt||Function("return this")(),It=t&&!t.nodeType&&t,At=It&&"object"==typeof i&&i&&!i.nodeType&&i,Ft=At&&At.exports===It,Lt=Ft&&Nt.process,Vt=function(){try{var e=At&&At.require&&At.require("util").types;return e||Lt&&Lt.binding&&Lt.binding("util")}catch(e){}}(),Bt=Vt&&Vt.isArrayBuffer,zt=Vt&&Vt.isDate,Rt=Vt&&Vt.isMap,Ht=Vt&&Vt.isRegExp,jt=Vt&&Vt.isSet,Wt=Vt&&Vt.isTypedArray;function qt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Yt(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r-1}function Jt(e,t,n){for(var i=-1,r=null==e?0:e.length;++i-1;);return n}function wn(e,t){for(var n=e.length;n--&&ln(t,e[n],0)>-1;);return n}var xn=fn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Cn=fn({"&":"&","<":"<",">":">",'"':""","'":"'"});function kn(e){return"\\"+$t[e]}function Sn(e){return xt.test(e)}function Dn(e){var t=-1,n=Array(e.size);return e.forEach(function(e,i){n[++t]=[i,e]}),n}function En(e,t){return function(n){return e(t(n))}}function $n(e,t){for(var n=-1,i=e.length,r=0,o=[];++n",""":'"',"'":"'"});var In=function e(t){var n,i=(t=null==t?Ot:In.defaults(Ot.Object(),t,In.pick(Ot,kt))).Array,r=t.Date,Je=t.Error,Qe=t.Function,et=t.Math,tt=t.Object,nt=t.RegExp,it=t.String,rt=t.TypeError,ot=i.prototype,st=Qe.prototype,at=tt.prototype,lt=t["__core-js_shared__"],ut=st.toString,ct=at.hasOwnProperty,ht=0,dt=(n=/[^.]+$/.exec(lt&<.keys&<.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ft=at.toString,pt=ut.call(tt),mt=Ot._,vt=nt("^"+ut.call(ct).replace(Pe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gt=Ft?t.Buffer:o,_t=t.Symbol,xt=t.Uint8Array,$t=gt?gt.allocUnsafe:o,Nt=En(tt.getPrototypeOf,tt),Pt=tt.create,It=at.propertyIsEnumerable,At=ot.splice,Lt=_t?_t.isConcatSpreadable:o,Vt=_t?_t.iterator:o,on=_t?_t.toStringTag:o,fn=function(){try{var e=Bo(tt,"defineProperty");return e({},"",{}),e}catch(e){}}(),An=t.clearTimeout!==Ot.clearTimeout&&t.clearTimeout,Fn=r&&r.now!==Ot.Date.now&&r.now,Ln=t.setTimeout!==Ot.setTimeout&&t.setTimeout,Vn=et.ceil,Bn=et.floor,zn=tt.getOwnPropertySymbols,Rn=gt?gt.isBuffer:o,Hn=t.isFinite,jn=ot.join,Wn=En(tt.keys,tt),qn=et.max,Yn=et.min,Kn=r.now,Un=t.parseInt,Gn=et.random,Xn=ot.reverse,Zn=Bo(t,"DataView"),Jn=Bo(t,"Map"),Qn=Bo(t,"Promise"),ei=Bo(t,"Set"),ti=Bo(t,"WeakMap"),ni=Bo(tt,"create"),ii=ti&&new ti,ri={},oi=hs(Zn),si=hs(Jn),ai=hs(Qn),li=hs(ei),ui=hs(ti),ci=_t?_t.prototype:o,hi=ci?ci.valueOf:o,di=ci?ci.toString:o;function fi(e){if($a(e)&&!ga(e)&&!(e instanceof gi)){if(e instanceof vi)return e;if(ct.call(e,"__wrapped__"))return ds(e)}return new vi(e)}var pi=function(){function e(){}return function(t){if(!Ea(t))return{};if(Pt)return Pt(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function mi(){}function vi(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function gi(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function yi(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Ai(e,t,n,i,r,s){var a,l=t&d,u=t&f,c=t&p;if(n&&(a=r?n(e,i,r,s):n(e)),a!==o)return a;if(!Ea(e))return e;var h=ga(e);if(h){if(a=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!l)return no(e,a)}else{var m=Ho(e),v=m==U||m==G;if(wa(e))return Xr(e,l);if(m==Q||m==R||v&&!r){if(a=u||v?{}:Wo(e),!l)return u?function(e,t){return io(e,Ro(e),t)}(e,function(e,t){return e&&io(t,ol(t),e)}(a,e)):function(e,t){return io(e,zo(e),t)}(e,Ni(a,e))}else{if(!Et[m])return r?e:{};a=function(e,t,n){var i,r,o,s=e.constructor;switch(t){case le:return Zr(e);case W:case q:return new s(+e);case ue:return function(e,t){var n=t?Zr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case ce:case he:case de:case fe:case pe:case me:case ve:case ge:case ye:return Jr(e,n);case X:return new s;case Z:case ie:return new s(e);case te:return(o=new(r=e).constructor(r.source,je.exec(r))).lastIndex=r.lastIndex,o;case ne:return new s;case re:return i=e,hi?tt(hi.call(i)):{}}}(e,m,l)}}s||(s=new xi);var g=s.get(e);if(g)return g;s.set(e,a),Oa(e)?e.forEach(function(i){a.add(Ai(i,t,n,i,e,s))}):Ta(e)&&e.forEach(function(i,r){a.set(r,Ai(i,t,n,r,e,s))});var y=h?o:(c?u?Po:No:u?ol:rl)(e);return Kt(y||e,function(i,r){y&&(i=e[r=i]),$i(a,r,Ai(i,t,n,r,e,s))}),a}function Fi(e,t,n){var i=n.length;if(null==e)return!i;for(e=tt(e);i--;){var r=n[i],s=t[r],a=e[r];if(a===o&&!(r in e)||!s(a))return!1}return!0}function Li(e,t,n){if("function"!=typeof e)throw new rt(l);return rs(function(){e.apply(o,n)},t)}function Vi(e,t,n,i){var r=-1,o=Zt,a=!0,l=e.length,u=[],c=t.length;if(!l)return u;n&&(t=Qt(t,gn(n))),i?(o=Jt,a=!1):t.length>=s&&(o=bn,a=!1,t=new wi(t));e:for(;++r-1},bi.prototype.set=function(e,t){var n=this.__data__,i=Ti(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this},_i.prototype.clear=function(){this.size=0,this.__data__={hash:new yi,map:new(Jn||bi),string:new yi}},_i.prototype.delete=function(e){var t=Lo(this,e).delete(e);return this.size-=t?1:0,t},_i.prototype.get=function(e){return Lo(this,e).get(e)},_i.prototype.has=function(e){return Lo(this,e).has(e)},_i.prototype.set=function(e,t){var n=Lo(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},wi.prototype.add=wi.prototype.push=function(e){return this.__data__.set(e,u),this},wi.prototype.has=function(e){return this.__data__.has(e)},xi.prototype.clear=function(){this.__data__=new bi,this.size=0},xi.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},xi.prototype.get=function(e){return this.__data__.get(e)},xi.prototype.has=function(e){return this.__data__.has(e)},xi.prototype.set=function(e,t){var n=this.__data__;if(n instanceof bi){var i=n.__data__;if(!Jn||i.length0&&n(a)?t>1?Wi(a,t-1,n,i,r):en(r,a):i||(r[r.length]=a)}return r}var qi=ao(),Yi=ao(!0);function Ki(e,t){return e&&qi(e,t,rl)}function Ui(e,t){return e&&Yi(e,t,rl)}function Gi(e,t){return Xt(t,function(t){return ka(e[t])})}function Xi(e,t){for(var n=0,i=(t=Yr(t,e)).length;null!=e&&nt}function er(e,t){return null!=e&&ct.call(e,t)}function tr(e,t){return null!=e&&t in tt(e)}function nr(e,t,n){for(var r=n?Jt:Zt,s=e[0].length,a=e.length,l=a,u=i(a),c=1/0,h=[];l--;){var d=e[l];l&&t&&(d=Qt(d,gn(t))),c=Yn(d.length,c),u[l]=!n&&(t||s>=120&&d.length>=120)?new wi(l&&d):o}d=e[0];var f=-1,p=u[0];e:for(;++f=a)return l;var u=n[i];return l*("desc"==u?-1:1)}}return e.index-t.index}(e,t,n)})}function yr(e,t,n){for(var i=-1,r=t.length,o={};++i-1;)a!==e&&At.call(a,l,1),At.call(e,l,1);return e}function _r(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;Yo(r)?At.call(e,r,1):Vr(e,r)}}return e}function wr(e,t){return e+Bn(Gn()*(t-e+1))}function xr(e,t){var n="";if(!e||t<1||t>I)return n;do{t%2&&(n+=e),(t=Bn(t/2))&&(e+=e)}while(t);return n}function Cr(e,t){return os(es(e,t,Ml),e+"")}function kr(e){return ki(fl(e))}function Sr(e,t){var n=fl(e);return ls(n,Ii(t,0,n.length))}function Dr(e,t,n,i){if(!Ea(e))return e;for(var r=-1,s=(t=Yr(t,e)).length,a=s-1,l=e;null!=l&&++ro?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=i(o);++r>>1,s=e[o];null!==s&&!Aa(s)&&(n?s<=t:s=s){var c=t?null:Co(e);if(c)return Tn(c);a=!1,r=bn,u=new wi}else u=t?[]:l;e:for(;++i=i?e:Mr(e,t,n)}var Gr=An||function(e){return Ot.clearTimeout(e)};function Xr(e,t){if(t)return e.slice();var n=e.length,i=$t?$t(n):new e.constructor(n);return e.copy(i),i}function Zr(e){var t=new e.constructor(e.byteLength);return new xt(t).set(new xt(e)),t}function Jr(e,t){var n=t?Zr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Qr(e,t){if(e!==t){var n=e!==o,i=null===e,r=e==e,s=Aa(e),a=t!==o,l=null===t,u=t==t,c=Aa(t);if(!l&&!c&&!s&&e>t||s&&a&&u&&!l&&!c||i&&a&&u||!n&&u||!r)return 1;if(!i&&!s&&!c&&e1?n[r-1]:o,a=r>2?n[2]:o;for(s=e.length>3&&"function"==typeof s?(r--,s):o,a&&Ko(n[0],n[1],a)&&(s=r<3?o:s,r=1),t=tt(t);++i-1?r[s?t[a]:a]:o}}function fo(e){return Mo(function(t){var n=t.length,i=n,r=vi.prototype.thru;for(e&&t.reverse();i--;){var s=t[i];if("function"!=typeof s)throw new rt(l);if(r&&!a&&"wrapper"==Io(s))var a=new vi([],!0)}for(i=a?i:n;++i1&&_.reverse(),d&&cl))return!1;var c=s.get(e);if(c&&s.get(t))return c==t;var h=-1,d=!0,f=n&v?new wi:o;for(s.set(e,t),s.set(t,e);++h-1&&e%1==0&&e1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return Kt(z,function(n){var i="_."+n[0];t&n[1]&&!Zt(e,i)&&e.push(i)}),e.sort()}(function(e){var t=e.match(Ve);return t?t[1].split(Be):[]}(i),n)))}function as(e){var t=0,n=0;return function(){var i=Kn(),r=M-(i-n);if(n=i,r>0){if(++t>=T)return arguments[0]}else t=0;return e.apply(o,arguments)}}function ls(e,t){var n=-1,i=e.length,r=i-1;for(t=t===o?i:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,Ps(e,n)});function Bs(e){var t=fi(e);return t.__chain__=!0,t}function zs(e,t){return t(e)}var Rs=Mo(function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,r=function(t){return Oi(t,e)};return!(t>1||this.__actions__.length)&&i instanceof gi&&Yo(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:zs,args:[r],thisArg:o}),new vi(i,this.__chain__).thru(function(e){return t&&!e.length&&e.push(o),e})):this.thru(r)});var Hs=ro(function(e,t,n){ct.call(e,n)?++e[n]:Pi(e,n,1)});var js=ho(vs),Ws=ho(gs);function qs(e,t){return(ga(e)?Kt:Bi)(e,Fo(t,3))}function Ys(e,t){return(ga(e)?Ut:zi)(e,Fo(t,3))}var Ks=ro(function(e,t,n){ct.call(e,n)?e[n].push(t):Pi(e,n,[t])});var Us=Cr(function(e,t,n){var r=-1,o="function"==typeof t,s=ba(e)?i(e.length):[];return Bi(e,function(e){s[++r]=o?qt(t,e,n):ir(e,t,n)}),s}),Gs=ro(function(e,t,n){Pi(e,n,t)});function Xs(e,t){return(ga(e)?Qt:dr)(e,Fo(t,3))}var Zs=ro(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]});var Js=Cr(function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ko(e,t[0],t[1])?t=[]:n>2&&Ko(t[0],t[1],t[2])&&(t=[t[0]]),gr(e,Wi(t,1),[])}),Qs=Fn||function(){return Ot.Date.now()};function ea(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,So(e,k,o,o,o,o,t)}function ta(e,t){var n;if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var na=Cr(function(e,t,n){var i=g;if(n.length){var r=$n(n,Ao(na));i|=x}return So(e,i,t,n,r)}),ia=Cr(function(e,t,n){var i=g|y;if(n.length){var r=$n(n,Ao(ia));i|=x}return So(t,i,e,n,r)});function ra(e,t,n){var i,r,s,a,u,c,h=0,d=!1,f=!1,p=!0;if("function"!=typeof e)throw new rt(l);function m(t){var n=i,s=r;return i=r=o,h=t,a=e.apply(s,n)}function v(e){var n=e-c;return c===o||n>=t||n<0||f&&e-h>=s}function g(){var e=Qs();if(v(e))return y(e);u=rs(g,function(e){var n=t-(e-c);return f?Yn(n,s-(e-h)):n}(e))}function y(e){return u=o,p&&i?m(e):(i=r=o,a)}function b(){var e=Qs(),n=v(e);if(i=arguments,r=this,c=e,n){if(u===o)return function(e){return h=e,u=rs(g,t),d?m(e):a}(c);if(f)return Gr(u),u=rs(g,t),m(c)}return u===o&&(u=rs(g,t)),a}return t=ja(t)||0,Ea(n)&&(d=!!n.leading,s=(f="maxWait"in n)?qn(ja(n.maxWait)||0,t):s,p="trailing"in n?!!n.trailing:p),b.cancel=function(){u!==o&&Gr(u),h=0,i=c=r=u=o},b.flush=function(){return u===o?a:y(Qs())},b}var oa=Cr(function(e,t){return Li(e,1,t)}),sa=Cr(function(e,t,n){return Li(e,ja(t)||0,n)});function aa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new rt(l);var n=function(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var s=e.apply(this,i);return n.cache=o.set(r,s)||o,s};return n.cache=new(aa.Cache||_i),n}function la(e){if("function"!=typeof e)throw new rt(l);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}aa.Cache=_i;var ua=Kr(function(e,t){var n=(t=1==t.length&&ga(t[0])?Qt(t[0],gn(Fo())):Qt(Wi(t,1),gn(Fo()))).length;return Cr(function(i){for(var r=-1,o=Yn(i.length,n);++r=t}),va=rr(function(){return arguments}())?rr:function(e){return $a(e)&&ct.call(e,"callee")&&!It.call(e,"callee")},ga=i.isArray,ya=Bt?gn(Bt):function(e){return $a(e)&&Ji(e)==le};function ba(e){return null!=e&&Da(e.length)&&!ka(e)}function _a(e){return $a(e)&&ba(e)}var wa=Rn||jl,xa=zt?gn(zt):function(e){return $a(e)&&Ji(e)==q};function Ca(e){if(!$a(e))return!1;var t=Ji(e);return t==K||t==Y||"string"==typeof e.message&&"string"==typeof e.name&&!Na(e)}function ka(e){if(!Ea(e))return!1;var t=Ji(e);return t==U||t==G||t==j||t==ee}function Sa(e){return"number"==typeof e&&e==Ra(e)}function Da(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=I}function Ea(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function $a(e){return null!=e&&"object"==typeof e}var Ta=Rt?gn(Rt):function(e){return $a(e)&&Ho(e)==X};function Ma(e){return"number"==typeof e||$a(e)&&Ji(e)==Z}function Na(e){if(!$a(e)||Ji(e)!=Q)return!1;var t=Nt(e);if(null===t)return!0;var n=ct.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==pt}var Pa=Ht?gn(Ht):function(e){return $a(e)&&Ji(e)==te};var Oa=jt?gn(jt):function(e){return $a(e)&&Ho(e)==ne};function Ia(e){return"string"==typeof e||!ga(e)&&$a(e)&&Ji(e)==ie}function Aa(e){return"symbol"==typeof e||$a(e)&&Ji(e)==re}var Fa=Wt?gn(Wt):function(e){return $a(e)&&Da(e.length)&&!!Dt[Ji(e)]};var La=_o(hr),Va=_o(function(e,t){return e<=t});function Ba(e){if(!e)return[];if(ba(e))return Ia(e)?Pn(e):no(e);if(Vt&&e[Vt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Vt]());var t=Ho(e);return(t==X?Dn:t==ne?Tn:fl)(e)}function za(e){return e?(e=ja(e))===O||e===-O?(e<0?-1:1)*A:e==e?e:0:0===e?e:0}function Ra(e){var t=za(e),n=t%1;return t==t?n?t-n:t:0}function Ha(e){return e?Ii(Ra(e),0,L):0}function ja(e){if("number"==typeof e)return e;if(Aa(e))return F;if(Ea(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ea(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Ie,"");var n=qe.test(e);return n||Ke.test(e)?Mt(e.slice(2),n?2:8):We.test(e)?F:+e}function Wa(e){return io(e,ol(e))}function qa(e){return null==e?"":Fr(e)}var Ya=oo(function(e,t){if(Zo(t)||ba(t))io(t,rl(t),e);else for(var n in t)ct.call(t,n)&&$i(e,n,t[n])}),Ka=oo(function(e,t){io(t,ol(t),e)}),Ua=oo(function(e,t,n,i){io(t,ol(t),e,i)}),Ga=oo(function(e,t,n,i){io(t,rl(t),e,i)}),Xa=Mo(Oi);var Za=Cr(function(e,t){e=tt(e);var n=-1,i=t.length,r=i>2?t[2]:o;for(r&&Ko(t[0],t[1],r)&&(i=1);++n1),t}),io(e,Po(e),n),i&&(n=Ai(n,d|f|p,$o));for(var r=t.length;r--;)Vr(n,t[r]);return n});var ul=Mo(function(e,t){return null==e?{}:function(e,t){return yr(e,t,function(t,n){return el(e,n)})}(e,t)});function cl(e,t){if(null==e)return{};var n=Qt(Po(e),function(e){return[e]});return t=Fo(t),yr(e,n,function(e,n){return t(e,n[0])})}var hl=ko(rl),dl=ko(ol);function fl(e){return null==e?[]:yn(e,rl(e))}var pl=uo(function(e,t,n){return t=t.toLowerCase(),e+(n?ml(t):t)});function ml(e){return Cl(qa(e).toLowerCase())}function vl(e){return(e=qa(e))&&e.replace(Ge,xn).replace(bt,"")}var gl=uo(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}),yl=uo(function(e,t,n){return e+(n?" ":"")+t.toLowerCase()}),bl=lo("toLowerCase");var _l=uo(function(e,t,n){return e+(n?"_":"")+t.toLowerCase()});var wl=uo(function(e,t,n){return e+(n?" ":"")+Cl(t)});var xl=uo(function(e,t,n){return e+(n?" ":"")+t.toUpperCase()}),Cl=lo("toUpperCase");function kl(e,t,n){return e=qa(e),(t=n?o:t)===o?function(e){return Ct.test(e)}(e)?function(e){return e.match(wt)||[]}(e):function(e){return e.match(ze)||[]}(e):e.match(t)||[]}var Sl=Cr(function(e,t){try{return qt(e,o,t)}catch(e){return Ca(e)?e:new Je(e)}}),Dl=Mo(function(e,t){return Kt(t,function(t){t=cs(t),Pi(e,t,na(e[t],e))}),e});function El(e){return function(){return e}}var $l=fo(),Tl=fo(!0);function Ml(e){return e}function Nl(e){return lr("function"==typeof e?e:Ai(e,d))}var Pl=Cr(function(e,t){return function(n){return ir(n,e,t)}}),Ol=Cr(function(e,t){return function(n){return ir(e,n,t)}});function Il(e,t,n){var i=rl(t),r=Gi(t,i);null!=n||Ea(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=Gi(t,rl(t)));var o=!(Ea(n)&&"chain"in n&&!n.chain),s=ka(e);return Kt(r,function(n){var i=t[n];e[n]=i,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=no(this.__actions__)).push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,en([this.value()],arguments))})}),e}function Al(){}var Fl=go(Qt),Ll=go(Gt),Vl=go(rn);function Bl(e){return Uo(e)?dn(cs(e)):function(e){return function(t){return Xi(t,e)}}(e)}var zl=bo(),Rl=bo(!0);function Hl(){return[]}function jl(){return!1}var Wl=vo(function(e,t){return e+t},0),ql=xo("ceil"),Yl=vo(function(e,t){return e/t},1),Kl=xo("floor");var Ul,Gl=vo(function(e,t){return e*t},1),Xl=xo("round"),Zl=vo(function(e,t){return e-t},0);return fi.after=function(e,t){if("function"!=typeof t)throw new rt(l);return e=Ra(e),function(){if(--e<1)return t.apply(this,arguments)}},fi.ary=ea,fi.assign=Ya,fi.assignIn=Ka,fi.assignInWith=Ua,fi.assignWith=Ga,fi.at=Xa,fi.before=ta,fi.bind=na,fi.bindAll=Dl,fi.bindKey=ia,fi.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return ga(e)?e:[e]},fi.chain=Bs,fi.chunk=function(e,t,n){t=(n?Ko(e,t,n):t===o)?1:qn(Ra(t),0);var r=null==e?0:e.length;if(!r||t<1)return[];for(var s=0,a=0,l=i(Vn(r/t));sr?0:r+n),(i=i===o||i>r?r:Ra(i))<0&&(i+=r),i=n>i?0:Ha(i);n>>0)?(e=qa(e))&&("string"==typeof t||null!=t&&!Pa(t))&&!(t=Fr(t))&&Sn(e)?Ur(Pn(e),0,n):e.split(t,n):[]},fi.spread=function(e,t){if("function"!=typeof e)throw new rt(l);return t=null==t?0:qn(Ra(t),0),Cr(function(n){var i=n[t],r=Ur(n,0,t);return i&&en(r,i),qt(e,this,r)})},fi.tail=function(e){var t=null==e?0:e.length;return t?Mr(e,1,t):[]},fi.take=function(e,t,n){return e&&e.length?Mr(e,0,(t=n||t===o?1:Ra(t))<0?0:t):[]},fi.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?Mr(e,(t=i-(t=n||t===o?1:Ra(t)))<0?0:t,i):[]},fi.takeRightWhile=function(e,t){return e&&e.length?zr(e,Fo(t,3),!1,!0):[]},fi.takeWhile=function(e,t){return e&&e.length?zr(e,Fo(t,3)):[]},fi.tap=function(e,t){return t(e),e},fi.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new rt(l);return Ea(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),ra(e,t,{leading:i,maxWait:t,trailing:r})},fi.thru=zs,fi.toArray=Ba,fi.toPairs=hl,fi.toPairsIn=dl,fi.toPath=function(e){return ga(e)?Qt(e,cs):Aa(e)?[e]:no(us(qa(e)))},fi.toPlainObject=Wa,fi.transform=function(e,t,n){var i=ga(e),r=i||wa(e)||Fa(e);if(t=Fo(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:Ea(e)&&ka(o)?pi(Nt(e)):{}}return(r?Kt:Ki)(e,function(e,i,r){return t(n,e,i,r)}),n},fi.unary=function(e){return ea(e,1)},fi.union=$s,fi.unionBy=Ts,fi.unionWith=Ms,fi.uniq=function(e){return e&&e.length?Lr(e):[]},fi.uniqBy=function(e,t){return e&&e.length?Lr(e,Fo(t,2)):[]},fi.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Lr(e,o,t):[]},fi.unset=function(e,t){return null==e||Vr(e,t)},fi.unzip=Ns,fi.unzipWith=Ps,fi.update=function(e,t,n){return null==e?e:Br(e,t,qr(n))},fi.updateWith=function(e,t,n,i){return i="function"==typeof i?i:o,null==e?e:Br(e,t,qr(n),i)},fi.values=fl,fi.valuesIn=function(e){return null==e?[]:yn(e,ol(e))},fi.without=Os,fi.words=kl,fi.wrap=function(e,t){return ca(qr(t),e)},fi.xor=Is,fi.xorBy=As,fi.xorWith=Fs,fi.zip=Ls,fi.zipObject=function(e,t){return jr(e||[],t||[],$i)},fi.zipObjectDeep=function(e,t){return jr(e||[],t||[],Dr)},fi.zipWith=Vs,fi.entries=hl,fi.entriesIn=dl,fi.extend=Ka,fi.extendWith=Ua,Il(fi,fi),fi.add=Wl,fi.attempt=Sl,fi.camelCase=pl,fi.capitalize=ml,fi.ceil=ql,fi.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=ja(n))==n?n:0),t!==o&&(t=(t=ja(t))==t?t:0),Ii(ja(e),t,n)},fi.clone=function(e){return Ai(e,p)},fi.cloneDeep=function(e){return Ai(e,d|p)},fi.cloneDeepWith=function(e,t){return Ai(e,d|p,t="function"==typeof t?t:o)},fi.cloneWith=function(e,t){return Ai(e,p,t="function"==typeof t?t:o)},fi.conformsTo=function(e,t){return null==t||Fi(e,t,rl(t))},fi.deburr=vl,fi.defaultTo=function(e,t){return null==e||e!=e?t:e},fi.divide=Yl,fi.endsWith=function(e,t,n){e=qa(e),t=Fr(t);var i=e.length,r=n=n===o?i:Ii(Ra(n),0,i);return(n-=t.length)>=0&&e.slice(n,r)==t},fi.eq=fa,fi.escape=function(e){return(e=qa(e))&&Se.test(e)?e.replace(Ce,Cn):e},fi.escapeRegExp=function(e){return(e=qa(e))&&Oe.test(e)?e.replace(Pe,"\\$&"):e},fi.every=function(e,t,n){var i=ga(e)?Gt:Ri;return n&&Ko(e,t,n)&&(t=o),i(e,Fo(t,3))},fi.find=js,fi.findIndex=vs,fi.findKey=function(e,t){return sn(e,Fo(t,3),Ki)},fi.findLast=Ws,fi.findLastIndex=gs,fi.findLastKey=function(e,t){return sn(e,Fo(t,3),Ui)},fi.floor=Kl,fi.forEach=qs,fi.forEachRight=Ys,fi.forIn=function(e,t){return null==e?e:qi(e,Fo(t,3),ol)},fi.forInRight=function(e,t){return null==e?e:Yi(e,Fo(t,3),ol)},fi.forOwn=function(e,t){return e&&Ki(e,Fo(t,3))},fi.forOwnRight=function(e,t){return e&&Ui(e,Fo(t,3))},fi.get=Qa,fi.gt=pa,fi.gte=ma,fi.has=function(e,t){return null!=e&&jo(e,t,er)},fi.hasIn=el,fi.head=bs,fi.identity=Ml,fi.includes=function(e,t,n,i){e=ba(e)?e:fl(e),n=n&&!i?Ra(n):0;var r=e.length;return n<0&&(n=qn(r+n,0)),Ia(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&ln(e,t,n)>-1},fi.indexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:Ra(n);return r<0&&(r=qn(i+r,0)),ln(e,t,r)},fi.inRange=function(e,t,n){return t=za(t),n===o?(n=t,t=0):n=za(n),function(e,t,n){return e>=Yn(t,n)&&e=-I&&e<=I},fi.isSet=Oa,fi.isString=Ia,fi.isSymbol=Aa,fi.isTypedArray=Fa,fi.isUndefined=function(e){return e===o},fi.isWeakMap=function(e){return $a(e)&&Ho(e)==se},fi.isWeakSet=function(e){return $a(e)&&Ji(e)==ae},fi.join=function(e,t){return null==e?"":jn.call(e,t)},fi.kebabCase=gl,fi.last=Cs,fi.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=i;return n!==o&&(r=(r=Ra(n))<0?qn(i+r,0):Yn(r,i-1)),t==t?function(e,t,n){for(var i=n+1;i--;)if(e[i]===t)return i;return i}(e,t,r):an(e,cn,r,!0)},fi.lowerCase=yl,fi.lowerFirst=bl,fi.lt=La,fi.lte=Va,fi.max=function(e){return e&&e.length?Hi(e,Ml,Qi):o},fi.maxBy=function(e,t){return e&&e.length?Hi(e,Fo(t,2),Qi):o},fi.mean=function(e){return hn(e,Ml)},fi.meanBy=function(e,t){return hn(e,Fo(t,2))},fi.min=function(e){return e&&e.length?Hi(e,Ml,hr):o},fi.minBy=function(e,t){return e&&e.length?Hi(e,Fo(t,2),hr):o},fi.stubArray=Hl,fi.stubFalse=jl,fi.stubObject=function(){return{}},fi.stubString=function(){return""},fi.stubTrue=function(){return!0},fi.multiply=Gl,fi.nth=function(e,t){return e&&e.length?vr(e,Ra(t)):o},fi.noConflict=function(){return Ot._===this&&(Ot._=mt),this},fi.noop=Al,fi.now=Qs,fi.pad=function(e,t,n){e=qa(e);var i=(t=Ra(t))?Nn(e):0;if(!t||i>=t)return e;var r=(t-i)/2;return yo(Bn(r),n)+e+yo(Vn(r),n)},fi.padEnd=function(e,t,n){e=qa(e);var i=(t=Ra(t))?Nn(e):0;return t&&it){var i=e;e=t,t=i}if(n||e%1||t%1){var r=Gn();return Yn(e+r*(t-e+Tt("1e-"+((r+"").length-1))),t)}return wr(e,t)},fi.reduce=function(e,t,n){var i=ga(e)?tn:pn,r=arguments.length<3;return i(e,Fo(t,4),n,r,Bi)},fi.reduceRight=function(e,t,n){var i=ga(e)?nn:pn,r=arguments.length<3;return i(e,Fo(t,4),n,r,zi)},fi.repeat=function(e,t,n){return t=(n?Ko(e,t,n):t===o)?1:Ra(t),xr(qa(e),t)},fi.replace=function(){var e=arguments,t=qa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},fi.result=function(e,t,n){var i=-1,r=(t=Yr(t,e)).length;for(r||(r=1,e=o);++iI)return[];var n=L,i=Yn(e,L);t=Fo(t),e-=L;for(var r=vn(i,t);++n=s)return e;var l=n-Nn(i);if(l<1)return i;var u=a?Ur(a,0,l).join(""):e.slice(0,l);if(r===o)return u+i;if(a&&(l+=u.length-l),Pa(r)){if(e.slice(l).search(r)){var c,h=u;for(r.global||(r=nt(r.source,qa(je.exec(r))+"g")),r.lastIndex=0;c=r.exec(h);)var d=c.index;u=u.slice(0,d===o?l:d)}}else if(e.indexOf(Fr(r),l)!=l){var f=u.lastIndexOf(r);f>-1&&(u=u.slice(0,f))}return u+i},fi.unescape=function(e){return(e=qa(e))&&ke.test(e)?e.replace(xe,On):e},fi.uniqueId=function(e){var t=++ht;return qa(e)+t},fi.upperCase=xl,fi.upperFirst=Cl,fi.each=qs,fi.eachRight=Ys,fi.first=bs,Il(fi,(Ul={},Ki(fi,function(e,t){ct.call(fi.prototype,t)||(Ul[t]=e)}),Ul),{chain:!1}),fi.VERSION="4.17.14",Kt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(e){fi[e].placeholder=fi}),Kt(["drop","take"],function(e,t){gi.prototype[e]=function(n){n=n===o?1:qn(Ra(n),0);var i=this.__filtered__&&!t?new gi(this):this.clone();return i.__filtered__?i.__takeCount__=Yn(n,i.__takeCount__):i.__views__.push({size:Yn(n,L),type:e+(i.__dir__<0?"Right":"")}),i},gi.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}}),Kt(["filter","map","takeWhile"],function(e,t){var n=t+1,i=n==N||3==n;gi.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Fo(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}}),Kt(["head","last"],function(e,t){var n="take"+(t?"Right":"");gi.prototype[e]=function(){return this[n](1).value()[0]}}),Kt(["initial","tail"],function(e,t){var n="drop"+(t?"":"Right");gi.prototype[e]=function(){return this.__filtered__?new gi(this):this[n](1)}}),gi.prototype.compact=function(){return this.filter(Ml)},gi.prototype.find=function(e){return this.filter(e).head()},gi.prototype.findLast=function(e){return this.reverse().find(e)},gi.prototype.invokeMap=Cr(function(e,t){return"function"==typeof e?new gi(this):this.map(function(n){return ir(n,e,t)})}),gi.prototype.reject=function(e){return this.filter(la(Fo(e)))},gi.prototype.slice=function(e,t){e=Ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new gi(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=Ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},gi.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},gi.prototype.toArray=function(){return this.take(L)},Ki(gi.prototype,function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),r=fi[i?"take"+("last"==t?"Right":""):t],s=i||/^find/.test(t);r&&(fi.prototype[t]=function(){var t=this.__wrapped__,a=i?[1]:arguments,l=t instanceof gi,u=a[0],c=l||ga(t),h=function(e){var t=r.apply(fi,en([e],a));return i&&d?t[0]:t};c&&n&&"function"==typeof u&&1!=u.length&&(l=c=!1);var d=this.__chain__,f=!!this.__actions__.length,p=s&&!d,m=l&&!f;if(!s&&c){t=m?t:new gi(this);var v=e.apply(t,a);return v.__actions__.push({func:zs,args:[h],thisArg:o}),new vi(v,d)}return p&&m?e.apply(this,a):(v=this.thru(h),p?i?v.value()[0]:v.value():v)})}),Kt(["pop","push","shift","sort","splice","unshift"],function(e){var t=ot[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);fi.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(ga(r)?r:[],e)}return this[n](function(n){return t.apply(ga(n)?n:[],e)})}}),Ki(gi.prototype,function(e,t){var n=fi[t];if(n){var i=n.name+"";ct.call(ri,i)||(ri[i]=[]),ri[i].push({name:t,func:n})}}),ri[po(o,y).name]=[{name:"wrapper",func:o}],gi.prototype.clone=function(){var e=new gi(this.__wrapped__);return e.__actions__=no(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=no(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=no(this.__views__),e},gi.prototype.reverse=function(){if(this.__filtered__){var e=new gi(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},gi.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=ga(e),i=t<0,r=n?e.length:0,o=function(e,t,n){for(var i=-1,r=n.length;++i=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},fi.prototype.plant=function(e){for(var t,n=this;n instanceof mi;){var i=ds(n);i.__index__=0,i.__values__=o,t?r.__wrapped__=i:t=i;var r=i;n=n.__wrapped__}return r.__wrapped__=e,t},fi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof gi){var t=e;return this.__actions__.length&&(t=new gi(this)),(t=t.reverse()).__actions__.push({func:zs,args:[Es],thisArg:o}),new vi(t,this.__chain__)}return this.thru(Es)},fi.prototype.toJSON=fi.prototype.valueOf=fi.prototype.value=function(){return Rr(this.__wrapped__,this.__actions__)},fi.prototype.first=fi.prototype.head,Vt&&(fi.prototype[Vt]=function(){return this}),fi}();Ot._=In,(r=function(){return In}.call(t,n,t,i))===o||(i.exports=r)}).call(this)}).call(this,n(37),n(89)(e))},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,o,s,a,l;for(s in t)if(r=e[s],o=t[s],r&&n.test(s))if("class"===s&&("string"==typeof r&&(l=r,e[s]=r={},r[l]=!0),"string"==typeof o&&(l=o,t[s]=o={},o[l]=!0)),"on"===s||"nativeOn"===s||"hook"===s)for(a in o)r[a]=i(r[a],o[a]);else if(Array.isArray(r))e[s]=r.concat(o);else if(Array.isArray(o))e[s]=[r].concat(o);else for(a in o)r[a]=o[a];else e[s]=t[s];return e},{})}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0;var i,r=n(57),o=(i=r)&&i.__esModule?i:{default:i};t.default=o.default||function(e){for(var t=1;t0?i:n)(e)}},function(e,t,n){var i=n(30)("keys"),r=n(23);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(15),r=n(6),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n(22)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,n){var i=n(11).f,r=n(8),o=n(14)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(14)},function(e,t,n){var i=n(6),r=n(15),o=n(22),s=n(35),a=n(11).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){e.exports=!n(12)&&!n(17)(function(){return 7!=Object.defineProperty(n(39)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(16),r=n(6).document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,t,n){var i=n(8),r=n(13),o=n(63)(!1),s=n(29)("IE_PROTO");e.exports=function(e,t){var n,a=r(e),l=0,u=[];for(n in a)n!=s&&i(a,n)&&u.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~o(u,n)||u.push(n));return u}},function(e,t,n){var i=n(42);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(27);e.exports=function(e){return Object(i(e))}},function(e,t,n){"use strict";var i=n(22),r=n(25),o=n(45),s=n(10),a=n(33),l=n(70),u=n(34),c=n(73),h=n(14)("iterator"),d=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,p,m,v,g){l(n,t,p);var y,b,_,w=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],E=D||w(m),$=m?C?w("entries"):E:void 0,T="Array"==t&&S.entries||D;if(T&&(_=c(T.call(new e)))!==Object.prototype&&_.next&&(u(_,x,!0),i||"function"==typeof _[h]||s(_,h,f)),C&&D&&"values"!==D.name&&(k=!0,E=function(){return D.call(this)}),i&&!g||!d&&!k&&S[h]||s(S,h,E),a[t]=E,a[x]=f,m)if(y={values:C?E:w("values"),keys:v?E:w("keys"),entries:$},g)for(b in y)b in S||o(S,b,y[b]);else r(r.P+r.F*(d||k),t,y);return y}},function(e,t,n){e.exports=n(10)},function(e,t,n){var i=n(19),r=n(71),o=n(31),s=n(29)("IE_PROTO"),a=function(){},l=function(){var e,t=n(39)("iframe"),i=o.length;for(t.style.display="none",n(72).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("" +); + +document.write( + "" +); + + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + +document.write( + "" +); + + +var bCanclePrint = false; +var base64Data = ""; +var readerPrintData = new FileReader(); +var readerPrinterInfo = new FileReader(); +var strPrintData; +var strPrinterInfo; +var allPrinters; +var pageIndex = 1; + + +var app = new Vue({ + el: '#app', + data: { + form: { + paperType: '1', + density: '3', + pageCount: '1', + quantityCount: '2', + printMode: '1' + }, + formLabelWidth: "120px", + options: [], + tags: [], + isInit: false, + isInitApi: false, + isDraw: false, + isEditTag: false, + editIndex: 0, + dialogInitDrawingBoardParam: false, + dialogDrawLableTextParam: false, + dialogDrawLableBarCodeParam: false, + dialogDrawLableQrCodeParam: false, + dialogDrawLableLineParam: false, + dialogDrawLableGraphParam: false, + dialogDrawLableImageParam: false, + value: '', + imgSrc: '', + initSdkParam: {//初始化数据 + "fontDir": "", + }, + InitDrawingBoardParam: { + "width": 50, + "height": 30, + "rotate": 0, + "path": "ZT001.ttf", + "verticalShift": 0, + "HorizontalShift": 0 + }, + DrawLableTextParam: { + "x": 1.0, + "y": 1.0, + "height": 10, + "width": 50, + "value": "", + "fontFamily": "宋体", + "rotate": 0, + "fontSize": 4.0, + "textAlignHorizonral": 0, + "textAlignVertical": 0, + "letterSpacing": 1.0, + "lineSpacing": 1.0, + "lineMode": 0, + "fontStyle": [false, false, false, false], + }, + DrawLableBarCodeParam: { + "x": 20.0, + "y": 10.0, + "height": 10, + "width": 50, + "value": document.getElementById("materialQrCode").value, + "codeType": 20, + "rotate": 0, + "fontSize": 4.0, + "textHeight": 0, + "textPosition": 0, + }, + DrawLableQrCodeParam: { + "x": 20.0, + "y": 10.0, + "height": 10, + "width": 10, + "value": document.getElementById("materialQrCode").value, + "rotate": 0, + "codeType": 31, + }, + DrawLableLineParam: { + "x": 2.0, + "y": 2.0, + "height": 2, + "width": 50, + "rotate": 0, + "lineType": 2, + "dashwidth": [1, 1], + }, + DrawLableGraphParam: { + "x": 2.0, + "y": 5.0, + "height": 30, + "width": 40, + "rotate": 0, + "graphType": 3, + "cornerRadius": 0, + "lineWidth": 4, + "lineType": 2, + "dashwidth": [1, 1], + }, + DrawLableImageParam: { + "x": 2.0, + "y": 2.0, + "height": 10, + "width": 50, + "rotate": 0, + "imageProcessingType": 0, + "imageProcessingValue": 127, + "imageData": "", + "imgSrc": '' + }, + DrawLableGraphParamDemo: { + "x": 2.0, + "y": 2.0, + "width": 46, + "height": 26, + "rotate": 0, + "graphType": 3, + "cornerRadius": 0, + "lineWidth": 0.5, + "lineType": 1, + "dashwidth": [1, 1], + }, + + }, + mounted() { + // 初始化打印服务 + getInstance(); + }, + methods: { + // 初始化 + initSdkApi() { + initSdk(this.initSdkParam); + this.isInitApi = true + }, + // 选择打印机 + selectPrinterApi() { + let printerName = ''; + for (let index = 0; index < this.options.length; index++) { + if (this.value === this.options[index].value) printerName = this.options[index].label + } + selectPrinter(printerName, parseInt(this.value), (data => { + var arrParse = JSON.parse(JSON.stringify(data)); + if (!arrParse.resultAck.result) { + return; + } else if (isJSON(arrParse.resultAck.info)) { + //选择成功,打印机连接成功 + console.log(data) + } + + })); + }, + // 重新获取打印机 + refreshPrinters() { + getAllPrinters(data => { + let arrParse = JSON.parse(JSON.stringify(data)); + if (isJSON(arrParse.resultAck.info)) { + allPrinters = JSON.parse(arrParse.resultAck.info); + let allPrintersName = Object.keys(allPrinters); + let allPrintersValue = Object.values(allPrinters); + this.options = []; + for (i = 0; i < allPrintersName.length; i++) { + let newopt = {}; + newopt.label = allPrintersName[i]; + newopt.value = allPrintersValue[i]; + this.options.push(newopt) + } + } + }); + }, + // 初始化画板 + InitDrawingBoardApi() { + this.dialogInitDrawingBoardParam = true; + this.isDraw = false; + this.imgSrc = ""; + }, + handleClose(index) { + this.tags.splice(index, 1); + }, + clickTag(tag, index) { + this.isEditTag = true; + this.editIndex = index; + switch (tag.name) { + case "文本": + this.DrawLableTextParam = {...tag}; + this.dialogDrawLableTextParam = true; + break; + case "一维码": + this.DrawLableBarCodeParam = {...tag}; + this.dialogDrawLableBarCodeParam = true; + break; + case "二维码": + this.DrawLableQrCodeParam = {...tag}; + this.dialogDrawLableQrCodeParam = true; + break; + case "线条": + this.DrawLableLineParam = {...tag}; + this.dialogDrawLableLineParam = true; + break; + case "形状": + this.DrawLableGraphParam = {...tag}; + this.dialogDrawLableGraphParam = true; + break; + case "图片": + this.DrawLableImageParam = {...tag}; + this.dialogDrawLableImageParam = true; + break; + } + }, + // 初始化画布 + InitDrawingBoardPar(callbackFunction) { + if (!this.InitDrawingBoardParam.width || !this.InitDrawingBoardParam.height) { + this.$message({ + message: '请选填写画板宽高', + type: 'warning' + }); + return + } + this.InitDrawingBoardParam.width = Number(this.InitDrawingBoardParam.width); + this.InitDrawingBoardParam.height = Number(this.InitDrawingBoardParam.height); + // 创建画板 + /** + * 1.绘制元素前,必须先初始化画板,否则会引起崩溃! + 2.初始化画板时会清空画板上次绘制的内容! + */ + InitDrawingBoard(this.InitDrawingBoardParam, callbackFunction); + this.dialogInitDrawingBoardParam = false; + this.isInit = true + }, + // 一维码 + DrawLableBarCodeApi() { + this.DrawLableBarCodeParam.width = Number(this.DrawLableBarCodeParam.width); + this.DrawLableBarCodeParam.height = Number(this.DrawLableBarCodeParam.height); + this.DrawLableBarCodeParam.x = Number(this.DrawLableBarCodeParam.x); + this.DrawLableBarCodeParam.y = Number(this.DrawLableBarCodeParam.y); + this.DrawLableBarCodeParam.name = "条形码"; + DrawLableBarCode(this.DrawLableBarCodeParam); + if (this.isEditTag) { + this.$set(this.tags, this.editIndex, this.DrawLableBarCodeParam); + } else { + this.tags.push(this.DrawLableBarCodeParam) + } + this.dialogDrawLableBarCodeParam = false; + this.isDraw = true + }, + // 二维码 + DrawLableQrCodeApi() { + + this.DrawLableQrCodeParam.width = Number(this.DrawLableQrCodeParam.width); + this.DrawLableQrCodeParam.height = Number(this.DrawLableQrCodeParam.width); + this.DrawLableQrCodeParam.x = Number(this.DrawLableQrCodeParam.x); + this.DrawLableQrCodeParam.y = Number(this.DrawLableQrCodeParam.y); + this.DrawLableQrCodeParam.name = "二维码"; + //DrawLableQrCode(this.DrawLableQrCodeParam); + if (this.isEditTag) { + this.$set(this.tags, this.editIndex, this.DrawLableQrCodeParam); + } else { + this.tags.push(this.DrawLableQrCodeParam) + } + this.dialogDrawLableQrCodeParam = false; + this.isDraw = true + }, + DragList(List) { + List.forEach(res => { + + }) + }, + // 预览时进行绘制 + generateImagePreviewImagepi() { + let List = [...this.tags]; + // 创建画布 + InitDrawingBoard(this.InitDrawingBoardParam, (data => { + List.forEach(res => { + switch (res.name) { + case "文本": + DrawLableText(res); + break; + case "条形码": + DrawLableBarCode(res); + break; + case "二维码": + DrawLableQrCode(res); + break; + case "线条": + DrawLableLine(res); + break; + case "形状": + DrawLableGraph(res); + break; + case "图片": + DrawLableImage(res); + break; + } + }); + // 标签预览 + generateImagePreviewImage(generateImagePreviewImageParam['displayScale'], + (data => { + var arrParse = JSON.parse(JSON.stringify(data)); + //var Epc = document.getElementById('searchRfidBox'); + var base64Data = arrParse.resultAck.info; + var obj = JSON.parse(base64Data); + var data = obj.ImageData; + var imgDisplay = document.getElementById('base64image'); + var errorCode = obj.errorCode; + + this.imgSrc = "data:image/jpeg;base64," + data; + // self.isInit = false + })) + })); + }, + //清空 + emptyImagePreviewImage() { + this.imgSrc = ""; + this.tags = []; + this.isDraw = false + }, + DrawLableTextApiDemo(DrawLableTextParamDemo, callbackFunction) { + DrawLableText(DrawLableTextParamDemo, callbackFunction); + }, + DrawLableGraphApiDemo(callbackFunction) { + DrawLableGraph(this.DrawLableGraphParamDemo, callbackFunction); + }, + + DrawLableLineApiDemo(DrawLableLineParamDemo, callbackFunction) { + DrawLableLine(DrawLableLineParamDemo, callbackFunction); + }, + DrawLableBarCodeApiDemo(drawLableBarCodeParamDemo, callableFunction) { + DrawLableBarCode(drawLableBarCodeParamDemo, callableFunction) + }, + + /** + * 开始打印任务 + * @param {*} pageCount 页数 + * @param {*} quantityCount 份数 + * @param {*} density 浓度 + * @param {*} paperType 纸张类型 + * @param {*} paperType 材质 + * @param {*} paperType 打印模式 + */ + startPrintJob(index) { + let { + pageCount = "1", + quantityCount = "1", + density = "3", + paperType = "1", + printMode = "1" + } = this.form; + const self = this; + switch (index) { + case 1: + quantityCount = 1; + break; + case 2: + quantityCount = 1; + pageCount = 2; + break; + case 4: + pageCount = 2; + break; + } + if (this.value === "") { + self.$message({ + message: '请选择连接打印机', + type: 'warning' + }); + return; + } + if (!this.form.quantityCount && (index === 3 || index === 4)) { + self.$message({ + message: '请选填写打印份数', + type: 'warning' + }); + return; + } + // 初始化画板 + InitDrawingBoard(this.InitDrawingBoardParam, (data1 => { + // 添加文字 + this.DrawLableBarCodeApiDemo(this.DrawLableBarCodeParam, (data => { + // 提交数据 + var totalCount = parseInt(pageCount) * parseInt(quantityCount); + startJob(parseInt(density), parseInt(paperType), parseInt(printMode), totalCount, function (data) { + bCanclePrint = false; + var arrParse = JSON.parse(JSON.stringify(data)); + if (arrParse.resultAck.result !== 0) { + self.$message({ + message: '打印失败!', + type: 'warning' + }); + return; + } + var intPageCount = parseInt(pageCount); + var intQuantityCount = parseInt(quantityCount); + self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, intPageCount, intQuantityCount); + }); + })) + })) + + + }, + /** + * 提交打印数据 + * @param {string} printData 打印数据 + * @param {string} printerInfo 打印机信息 + * @param {number} pageIndex 页序号 + * @param {number} pageCount 页数 + * @param {number} quantityCount 单页的份数 + */ + sendCommitJob(printData, pageIndex, pageCount, quantityCount) { + if (bCanclePrint) { + return; + } + const self = this; + var jsonObj = {"printerImageProcessingInfo": {"printQuantity": quantityCount}}; + commitJob(null, JSON.stringify(jsonObj), function (data) { + var arrParse = JSON.parse(JSON.stringify(data)); + var resultInfo = "commitJob ok"; + if (arrParse.resultAck.printQuantity === pageCount && arrParse.resultAck.onPrintPageCompleted === quantityCount) { + //所有⻚数据的所有份数打印完成 + endJob(function (data) { + // 停止打印 + var arrParse = JSON.parse(JSON.stringify(data)); + if (String(arrParse.resultAck.info).indexOf("endJob ok") > -1) { + // document.getElementById("printId").disabled = false; + } + }); + return; + } + + //异常导致打印取消 + if (arrParse.resultAck.errorCode !== 0 && (arrParse.resultAck.cacheStatus === "cancel")) { + // document.getElementById("printId").disabled = false; + return; + } + + //异常导致打印暂停 + if (arrParse.resultAck.errorCode !== 0 && (arrParse.resultAck.cacheStatus === "pause")) { + cancleJobApi(); + return; + } + + //当前⻚所有份数打印完成,但是未打印完所有⻚数据,继续发送下⼀⻚数据 + if (String(arrParse.resultAck.info).indexOf(resultInfo) > -1 && pageIndex !== pageCount) { + pageIndex++; + setTimeout(function () { + // 初始化画板 + InitDrawingBoard(self.InitDrawingBoardParam, (data1 => { + // 添加文字 + self.DrawLableBarCodeApiDemo(self.DrawLableBarCodeParam, (data => { + self.sendCommitJob(self.DrawLableTextParamDemo, pageIndex, pageCount, quantityCount); + })) + + }))// 提交数据 + }, 500); + } + }); + } + }, +}); \ No newline at end of file diff --git a/src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js b/src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js new file mode 100644 index 00000000..3323526a --- /dev/null +++ b/src/main/resources/static/js/JcPrinter/jcPrinterSdk_api_third.js @@ -0,0 +1,662 @@ +//websocket +var g_websocket; + +/* //响应数据 */ +var ackJsonData; + +/** websocket(打印服务)连接状态*/ +var websocketConnectStatus = false; +/**SDK初始化状态 */ +var initSdkStatus = false; +/**设备状态 */ +var deviceStatus = false; +/**消息列表 */ +var MessageList = {}; + +/**通过websocket发送消息 */ +function sendMsg(msg, callback) { + console.log('sendMsg', msg.apiName); + MessageList[msg.apiName] = callback; + var data = JSON.stringify(msg); + var tryTimes = 10; + for (var i = 0; i < tryTimes; i++) { + if (g_websocket.readyState === 1) { + g_websocket.send(data); + return; + } + } +} + +//初始化打印服务 +//1.1 获取接口实例JCAPI.getInstance(单例模式) +function getInstance() { + if ('WebSocket' in window) { + g_websocket = websocketLifePeriod(); + } else { + console.log('unsupported websocket'); + //return false; + g_websocket = null; + return false; + } + + //保持在线 + setInterval(function () { + if (g_websocket.readyState === 2 || g_websocket.readyState === 3) { + getInstance(); + } + }, 3000); + + return true; +} + +//1.1.1 打开链接及回调 +function websocketLifePeriod() { + + let websocket; + websocket = new WebSocket('ws://127.0.0.1:37989'); + //websocket.binaryType = 'arraybuffer'; + websocket.onerror = function (evt) {//since there is an error, sockets will close so... + sok.onclose = function (e) { + console.log("WebSocket Error: ", e); + } + }; + + websocket.proxy_read_timeout = 10000; + websocket.binaryType = "arraybuffer"; + + websocket.onopen = connectCallback; + + websocket.onclose = closeCallback; + + websocket.onmessage = readCallback; + + websocket.onerror = errorCallback; + + console.log(websocket); + + return websocket; +} + +//1.1.2 websocket连接回调 +function connectCallback(e) { + ackJsonData = ''; + console.log('websocket connect success'); + websocketConnectStatus = true; + init(); +} + +//1.1.3 关闭连接回调 +function closeCallback(e) { + websocketConnectStatus = false; + console.log( + 'websocket closed: ' + e.code + ' ' + e.reason + ' ' + e.wasClean + ); + // globalwebsocket = websocket; + g_websocket.close(); + //websocketLifePeriod(); + if (e.code === 1005) { + // globalwebsocket = websocket; + } + console.log('closed'); + ackJsonData = ''; +} + + +//1.1.4 读回调 +function readCallback(e) { + var callBackInfo = e.data; + console.log('readCallback', callBackInfo); + ackJsonData = callBackInfo; + + var callbackName; + + if (isJSON(ackJsonData)) { + var arrParse = JSON.parse(ackJsonData); + + //接口回调 + if (!!MessageList[arrParse.apiName]) { + + MessageList[arrParse.apiName](arrParse); + } + + //回调分发 + if (arrParse.apiName === 'printStatus') { + if (arrParse['resultAck']['online'] === 'online') { + deviceStatus = true; + } else { + deviceStatus = false; + } + } else { + if (arrParse['resultAck']['callback'] !== undefined) { + callbackName = arrParse['resultAck']['callback']['name']; + + if (callbackName === 'onConnectSuccess') { + var printerName = arrParse['resultAck']['callback']['printerName']; + onConnectSuccess(printerName); + } else if (callbackName === 'onDisConnect') { + var printerName = arrParse['resultAck']['callback']['printerName']; + onDisConnect(printerName); + } else if (callbackName === 'onCoverStatusChange') { + var coverStatus = arrParse['resultAck']['callback']['coverStatus']; + onCoverStatusChange(coverStatus); + } else if (callbackName === 'onElectricityChange') { + var powerLever = arrParse['resultAck']['callback']['powerLever']; + onElectricityChange(powerLever); + } else if (callbackName === 'onPaperStatusChange') { + var paperStatus = arrParse['resultAck']['callback']['paperStatus']; + onPaperStatusChange(paperStatus); + } else if (callbackName === 'onPrintPageCompleted') { + onPrintPageCompleted(); + } else if (callbackName === 'onPrintProgress') { + onPrintProgress(); + } else if (callbackName === 'onAbnormalResponse') { + onAbnormalResponse(); + } else { + console.log('unknow callback api!'); + } + } + } + + ackJsonData = ''; + } +} + +//1.1.5 错误回调 +function errorCallback(e) { + //如果出现连接、处理、接收、发送数据失败的时候触发onerror事件 + console.log(e.data); +} + +//封装初始化SDK/获取打印机列表/选择打印机 +function init() { + initSdk(this.initSdkParam, function (data) { + var arrParse = JSON.parse(JSON.stringify(data)); + if (arrParse.resultAck.result !== 0) { + // 如果初始化失败 + this.$message.error("初始化打印服务失败,请重试"); + setTimeout(function () { + var index = parent.layer.getFrameIndex(window.name); + parent.layer.close(index); + }, 500); + return; + } + + getAllPrinters((data) => { + let arrParse = JSON.parse(JSON.stringify(data)); + + if (!arrParse.resultAck.result) { + this.$message.error("打印机获取失败,请重试"); + setTimeout(function () { + var index = parent.layer.getFrameIndex(window.name); + parent.layer.close(index); + }, 500); + return; + } else if (isJSON(arrParse.resultAck.info)) { + allPrinters = JSON.parse(arrParse.resultAck.info); + let allPrintersName = Object.keys(allPrinters); + let allPrintersValue = Object.values(allPrinters); + this.options = []; + // 将其保存到数据中供前端展示 + for (i = 0; i < allPrintersName.length; i++) { + let newopt = {}; + newopt.label = allPrintersName[i]; + newopt.value = allPrintersValue[i]; + this.options.push(newopt) + } + // 选中打印机 + selectPrinter(allPrintersName[0], parseInt(allPrintersValue[0]), (data => { + initSdkStatus = true; + var arrParse = JSON.parse(JSON.stringify(data)); + if (!arrParse.resultAck.result) { + return; + } else if (isJSON(arrParse.resultAck.info)) { + //选择成功,打印机连接成功 + console.log(data) + } + })) + } + }) + + }) +} + +//1.2 断开websocket连接 +function unInitPrintInstance() { + g_websocket.close(); +} + +//2.1 打印机连接成功回调onConnectSuccess +function onConnectSuccess(printerName) { + console.log('打印机连接成功!'); + initSdkStatus = true; + deviceStatus = true; +} + +//2.2 打印机断开回调onDisConnect +function onDisConnect(printerName) { + console.log('打印机断开!'); + initSdkStatus = false; +} + +//2.3 打印机上盖变化回调onCoverStatusChange +function onCoverStatusChange(coverStatus) { + console.log('打印机盒盖有变化!'); +} + +//2.4 打印机电量变化回调onElectricityChange() +function onElectricityChange(powerLever) { + console.log('打印机电量有变化!'); +} + +//2.5 打印机纸张状态变化回调onPaperStatusChange +function onPaperStatusChange(paperStatus) { + console.log('打印机纸张状态有变化!'); +} + +//3.1 页打印成功回调onPrintPageCompleted +function onPrintPageCompleted() { + console.log('页打印状态有变化!'); +} + +//3.2 打印进度回调onPrintProgress +function onPrintProgress() { + console.log('打印进度有变化!'); +} + +//3.3 打印异常回调onAbnormalResponse +function onAbnormalResponse() { + console.log('打印异常!'); +} + +//获取所有当前PC上连接的精臣打印机 +//4.1 获取打印机列表getAllPrinters() +function getAllPrinters(callbackFunction) { + //刷新设备时,关闭设备 + //closePrinter(); + var jsonObj = {apiName: 'getAllPrinters'}; + var allDevice = {}; + + sendMsg(jsonObj, callbackFunction); +} + +//5. 图片打印 +/*base64Data--图片base64数据 +nPrintCount--打印数量 +bDenoise--降噪*/ +function picturePrint(base64Data, nPrintCount, bDenoise, callbackFunction) { + var jsonObj = { + apiName: 'picturePrint', + parameter: { + data: base64Data, + nPrintCount: nPrintCount, + bDenoise: bDenoise + } + }; + + sendMsg(jsonObj, callbackFunction); +} + +//6.选择并打开需要使用的打印机名称,及端口号 +function selectPrinter(printerName, port, callbackFunction) { + var jsonObj = { + apiName: 'selectPrinter', + parameter: {printerName: printerName, port: port} + }; + sendMsg(jsonObj, callbackFunction); +} + +//7.停止打印 +function stopPrint(callbackFunction) { + var jsonObj = {apiName: 'stopPrint'}; + sendMsg(jsonObj, callbackFunction); +} + +//8.关闭打印端口 +function closePrinter(callbackFunction) { + var jsonObj = {apiName: 'closePrinter'}; + sendMsg(jsonObj, callbackFunction); +} + +//9.设置打印浓度 +//nDensity--范围为getDensityScopeApi查询范围 +function setPrintDensity(nDensity, callbackFunction) { + var jsonObj = { + apiName: 'setPrintDensity', + parameter: {nDensity: nDensity} + }; + sendMsg(jsonObj, callbackFunction); +} + +//10.设置打印速度 +//nSpeed--范围为getSpeedScopeApi查询的范围 +function setPrintSpeed(nSpeed, callbackFunction) { + var jsonObj = {apiName: 'setPrintSpeed', parameter: {nSpeed: nSpeed}}; + sendMsg(jsonObj, callbackFunction); +} + +//11.设置打印标贴类型 +//nType--间隙:01,黑标:02,连续纸:03,定位孔:04,透明纸:05,随机打印:06 +function setPrintLabelType(nType, callbackFunction) { + var jsonObj = {apiName: 'setPrintLabelType', parameter: {nType: nType}}; + sendMsg(jsonObj, callbackFunction); +} + + +//12.设置关机时间 +//nType--1:15分钟,2:30分钟,3:60分钟,4:never +function setPrinterAutoShutDownTime(nType, callbackFunction) { + var jsonObj = { + apiName: 'setPrinterAutoShutDownTime', + parameter: {nType: nType} + }; + sendMsg(jsonObj, callbackFunction); +} + +//13.复位打印机 +function setPrinterReset(callbackFunction) { + var jsonObj = {apiName: 'setPrinterReset'}; + sendMsg(jsonObj, callbackFunction); +} + +//14. 纸张标定 +function setPrintPaperPos(nType, callbackFunction) { + var jsonObj = { + apiName: 'setPrintPaper', + parameter: {nType: nType} + }; + sendMsg(jsonObj, callbackFunction); +} + +//15.获取打印速度 +function getPrintSpeed(callbackFunction) { + var jsonObj = {apiName: 'getPrintSpeed'}; + sendMsg(jsonObj, callbackFunction); +} + +//15.获取打印机电量 +function getPower(callbackFunction) { + var jsonObj = {apiName: 'getPower'}; + sendMsg(jsonObj, callbackFunction); +} + +//16.获取标贴类型 +function getPrintLabelType(callbackFunction) { + var jsonObj = {apiName: 'getPrintLabelType'}; + + sendMsg(jsonObj, callbackFunction); +} + +//17.获取打印浓度 +function getPrintDensity(callbackFunction) { + var jsonObj = {apiName: 'getPrintDensity'}; + sendMsg(jsonObj, callbackFunction); +} + +//18.获取打印机语言 +function getPrinterLanguageType(callbackFunction) { + var jsonObj = {apiName: 'getPrinterLanguageType'}; + sendMsg(jsonObj, callbackFunction); +} + +//19.查询关机时间 +function getPrinterAutoShutDownTime(callbackFunction) { + var jsonObj = {apiName: 'getPrinterAutoShutDownTime'}; + sendMsg(jsonObj, callbackFunction); +} + +//20.获取打印机序列号 +function getPrinterSn(callbackFunction) { + var jsonObj = {apiName: 'getPrinterSn'}; + sendMsg(jsonObj, callbackFunction); +} + +//21.获取硬件版本 +function getPrinterHardwareVersion(callbackFunction) { + var jsonObj = {apiName: 'getPrinterHardwareVersion'}; + var responseData = {}; + sendMsg(jsonObj, callbackFunction); +} + +//22.获取软件版本 +function getPrinterSoftwareVersion(callbackFunction) { + var jsonObj = {apiName: 'getPrinterSoftwareVersion'}; + sendMsg(jsonObj, callbackFunction); +} + +//23. 获取打印机语言 +function setPrinterLanguageType(nType, callbackFunction) { + var jsonObj = { + apiName: 'setPrinterLanguageType', + parameter: {nType: nType} + }; + sendMsg(jsonObj, callbackFunction); +} + +//24.获取打速度印范围 +function getSpeedScope(callbackFunction) { + var jsonObj = {apiName: 'getSpeedScope'}; + sendMsg(jsonObj, callbackFunction); + return getResult(5, 'getSpeedScope', 'set printer language timeout!'); +} + +//25. 获取已开启的打印机 +function getConnectPrinter(callbackFunction) { + var jsonObj = {apiName: 'getConnectPrinter'}; + sendMsg(jsonObj, callbackFunction); + return getResult(5, 'getConnectPrinter', 'get connect printer timeout!'); +} + +//26.获取打印机型号 +function getPrinterType(callbackFunction) { + var jsonObj = {apiName: 'getPrinterType'}; + sendMsg(jsonObj, callbackFunction); +} + +//27.获取浓度范围 +function getDensityScope(callbackFunction) { + var jsonObj = {apiName: 'getDensityScope'}; + sendMsg(jsonObj, callbackFunction); +} + +//28. 获取打印模式 1-热敏 2-热转印 +function getPrinterMode(callbackFunction) { + var jsonObj = {apiName: 'getPrintMode'}; + sendMsg(jsonObj, callbackFunction); +} + +//29.获取打印机mac地址 +function getMacAddress(callbackFunction) { + var jsonObj = {apiName: 'getMacAddress'}; + sendMsg(jsonObj, callbackFunction); +} + +//30.设置打印模式 +//nType-1热敏,2碳带 +function setPrintMode(nType, callbackFunction) { + var jsonObj = {apiName: 'setPrintMode', parameter: {nType: nType}}; + sendMsg(jsonObj, callbackFunction); +} + +/** + * 31.开始打印任务 + * @param {number} printDensity 打印浓度 + * @param {number} printLabelType 纸张类型 + * @param {number} printMaterial 材质 + * @param {number} printMode 打印模式 + * @param {number} count 总打印张数 + * @param {*} callbackFunction 回调函数 + */ +function startJob(printDensity, printLabelType, printMode, count, callbackFunction) { + var jsonObj = { + apiName: 'startJob', + parameter: { + printDensity: printDensity, + printLabelType: printLabelType, + printMode: printMode, + count: count + } + }; + sendMsg(jsonObj, callbackFunction); +} + +//32.提交打印任务commitJob +function commitJob(printData, printerImageProcessingInfo, callbackFunction) { + var printDataJson = eval('(' + printData + ')'); + var printerImageProcessingInfoJson = eval('(' + printerImageProcessingInfo + ')'); + var jsonObj = { + apiName: 'commitJob', + parameter: { + printData: printDataJson, + printerImageProcessingInfo: printerImageProcessingInfoJson['printerImageProcessingInfo'], + } + }; + sendMsg(jsonObj, callbackFunction); +} + +//33.结束打印任务endJob +function endJob(callbackFunction) { + var jsonObj = {apiName: 'endJob'}; + sendMsg(jsonObj, callbackFunction); +} + +//33.取消打印任务cancleJob +function cancleJob(callbackFunction) { + var jsonObj = {apiName: 'stopPrint'}; + sendMsg(jsonObj, callbackFunction); +} + +//34.1 创建画板 +function InitDrawingBoard(json, callbackFunction) { + var jsonObj = { + apiName: 'InitDrawingBoard', + parameter: json + }; + console.log("画布宽度:" + json.width); + console.log("画布高度:" + json.height); + console.log("画布旋转角度:" + json.rotate); + sendMsg(jsonObj, callbackFunction); +} + +//34.2 绘制文本 +function DrawLableText(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableText', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.3 绘制一维码 +function DrawLableBarCode(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableBarCode', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.4 绘制二维码 +function DrawLableQrCode(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableQrCode', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.5 绘制线条 +function DrawLableLine(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableLine', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.6 绘制图形 +function DrawLableGraph(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableGraph', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.7 绘制图像 +function DrawLableImage(json, callbackFunction) { + var jsonObj = { + apiName: 'DrawLableImage', + parameter: json + }; + + sendMsg(jsonObj, callbackFunction); +} + +//34.8 生成预览图 +function generateImagePreviewImage(displayScale, callbackFunction) { + var jsonObj = { + apiName: 'generateImagePreviewImage', + displayScale: displayScale + }; + + sendMsg(jsonObj, callbackFunction); +} + +//35. 初始化SDK +function initSdk(json, callbackFunction) { + var jsonObj = { + apiName: 'initSdk', + parameter: json + }; + sendMsg(jsonObj, callbackFunction); +} + + +//36. 获取调用结果 +function getResult(tryTime, apiName, errInfo) { + tryTimes = tryTime; + + let result = {}; + while (tryTimes--) { + if (!isJSON(ackJsonData)) continue; + + var arrParse = JSON.parse(ackJsonData); + if (arrParse['apiName'] === apiName) { + result = arrParse['resultAck']; + break; + } + } + + if (tryTimes <= 0) { + result['result'] = false; + result['errorCode'] = 0x12; + result['info'] = errInfo; + } + return result; +} + +//37. 判断字符串是否为JSON +function isJSON(str) { + if (typeof str == 'string') { + try { + var obj = JSON.parse(str); + if (typeof obj == 'object' && obj) { + return true; + } else { + return false; + } + + } catch (e) { + //console.log('error:'+str+'!!!'+e); + return false; + } + + } + + console.log('It is not a string!'); +} diff --git a/src/main/resources/static/js/JcPrinter/jquery.js b/src/main/resources/static/js/JcPrinter/jquery.js new file mode 100644 index 00000000..b86de89a --- /dev/null +++ b/src/main/resources/static/js/JcPrinter/jquery.js @@ -0,0 +1,10993 @@ +/*! + * jQuery JavaScript Library v3.6.3 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2022-12-20T21:28Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket trac-14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.3", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.9 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2022-12-19 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + + // `qSA` may not throw for unrecognized parts using forgiving parsing: + // https://drafts.csswg.org/selectors/#forgiving-selector + // like the `:has()` pseudo-class: + // https://drafts.csswg.org/selectors/#relational + // `CSS.supports` is still expected to return `false` then: + // https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn + // https://drafts.csswg.org/css-conditional-4/#dfn-support-selector + if ( support.cssSupportsSelector && + + // eslint-disable-next-line no-undef + !CSS.supports( "selector(:is(" + newSelector + "))" ) ) { + + // Support: IE 11+ + // Throw to get to the same code path as an error directly in qSA. + // Note: once we only support browser supporting + // `CSS.supports('selector(...)')`, we can most likely drop + // the `try-catch`. IE doesn't implement the API. + throw new Error(); + } + + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + // Support: Chrome 105+, Firefox 104+, Safari 15.4+ + // Make sure forgiving mode is not used in `CSS.supports( "selector(...)" )`. + // + // `:is()` uses a forgiving selector list as an argument and is widely + // implemented, so it's a good one to test against. + support.cssSupportsSelector = assert( function() { + /* eslint-disable no-undef */ + + return CSS.supports( "selector(*)" ) && + + // Support: Firefox 78-81 only + // In old Firefox, `:is()` didn't use forgiving parsing. In that case, + // fail this test as there's no selector to test against that. + // `CSS.supports` uses unforgiving parsing + document.querySelectorAll( ":is(:jqfake)" ) && + + // `*` is needed as Safari & newer Chrome implemented something in between + // for `:has()` - it throws in `qSA` if it only contains an unsupported + // argument but multiple ones, one of which is supported, are fine. + // We want to play safe in case `:is()` gets the same treatment. + !CSS.supports( "selector(:is(*,:jqfake))" ); + + /* eslint-enable */ + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + if ( !support.cssSupportsSelector ) { + + // Support: Chrome 105+, Safari 15.4+ + // `:has()` uses a forgiving selector list as an argument so our regular + // `try-catch` mechanism fails to catch `:has()` with arguments not supported + // natively like `:has(:contains("Foo"))`. Where supported & spec-compliant, + // we now use `CSS.supports("selector(:is(SELECTOR_TO_BE_TESTED))")`, but + // outside that we mark `:has` as buggy. + rbuggyQSA.push( ":has" ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + + // Support: IE <9 only + // IE doesn't have `contains` on `document` so we need to check for + // `documentElement` presence. + // We need to fall back to `a` when `documentElement` is missing + // as `ownerDocument` of elements within `